diff --git a/public/index.html b/public/index.html index 7daca5d..2c3beee 100644 --- a/public/index.html +++ b/public/index.html @@ -1,30 +1,31 @@ - - - - - - 绿道质控 - - - - + + + + + + 绿道质控 + + + + - - -
- - - - - + + +
+ + + + + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index bbfd752..ba6cd40 100644 --- a/src/App.vue +++ b/src/App.vue @@ -145,7 +145,7 @@ firstAidId } = this.patientData; if (!firstAidId) return; - // this.queryMessage(); + this.queryMessage(); await this.handMessageQuery(); this.request = 0; diff --git a/src/api/index.js b/src/api/index.js index 0402ed5..2d2433b 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -307,6 +307,31 @@ export const queryPatient = (params) => axios.post(`${proxyUrl1}/home/queryPatient`, { ...params }); + +export const queryDitResult = (params) => + axios.post(`${proxyUrl1}/home/queryDitResult`, { + ...params + }); +export const queryOntResult = (params) => + axios.post(`${proxyUrl1}/home/queryOntResult`, { + ...params + }); +export const queryOptResult = (params) => + axios.post(`${proxyUrl1}/home/queryOptResult`, { + ...params + }); +export const queryXgzlBfzResult = (params) => + axios.post(`${proxyUrl1}/home/queryXgzlBfzResult`, { + ...params + }); +export const queryXgzlLv = (params) => + axios.post(`${proxyUrl1}/home/queryXgzlLv`, { + ...params + }); + + + + // 介入手术记录/总报告/DNT时间表 export const operationLog = (params) => axios.post(`${proxyUrl1}/interfere/operationLog`, { @@ -331,4 +356,20 @@ export const createPatient = (params) => export const exportRsPdf = (params) => axios.post(`${proxyUrl1}/admin/export/exportRsPdf`, { ...params + }); +export const exportDntPdf = (params) => + axios.post(`${proxyUrl1}/admin/export/exportDntPdf`, { + ...params + }); +export const exportRsgcbPdf = (params) => + axios.post(`${proxyUrl1}/admin/export/exportRsgcbPdf`, { + ...params + }); +export const exportAll = (params) => + axios.post(`${proxyUrl1}/admin/export/exportAll`, { + ...params + }); +export const exportJrPdf = (params) => + axios.post(`${proxyUrl1}/admin/export/exportJrPdf`, { + ...params }); \ No newline at end of file diff --git a/src/assets/less/common.less b/src/assets/less/common.less index f55903d..29bd672 100644 --- a/src/assets/less/common.less +++ b/src/assets/less/common.less @@ -124,6 +124,16 @@ margin-bottom: 12px; border-radius: 20px; } + +.throm-common-button { + width: 60% !important; + margin: 0 auto; + // margin-bottom: 12px; + border-radius: 20px; + .ant-btn { + margin-top: 12px; + } +} .common-slider{ width: 100%; display: flex; diff --git a/src/layouts/BasicLayout.less b/src/layouts/BasicLayout.less index d762cea..30264a1 100644 --- a/src/layouts/BasicLayout.less +++ b/src/layouts/BasicLayout.less @@ -130,6 +130,10 @@ .action{ padding: 0 .2rem; font-weight: bold; + color: red; + display: flex; + flex-direction: column; + align-items: center; } } @@ -149,8 +153,8 @@ position: relative; .global-layout-content{ - height: calc(100vh - 66px); - // overflow-y: auto; + height: calc(100vh - 56px); + overflow-y: hidden; padding: 10px; position: relative; } diff --git a/src/layouts/BasicLayout.vue b/src/layouts/BasicLayout.vue index 24a55aa..1107216 100644 --- a/src/layouts/BasicLayout.vue +++ b/src/layouts/BasicLayout.vue @@ -48,7 +48,7 @@ )
-
+
@@ -59,13 +59,16 @@ -
- 退出急救 -
-
-
终止急救
-
暂停急救
+
+
+ 退出急救 +
+
+
终止急救
+
暂停急救
+
+
diff --git a/src/views/Patient/components/patient-detail.vue b/src/views/Patient/components/patient-detail.vue index 3bfb993..61cb38f 100644 --- a/src/views/Patient/components/patient-detail.vue +++ b/src/views/Patient/components/patient-detail.vue @@ -236,7 +236,7 @@ msg } = res; if (code === 200) { - + this.home.queryAid(data.firstAidId, false); // this.setPatientData({ ...this.patientDataCur, firstAidId: data.firstAidId }) this.authEdit = false @@ -410,6 +410,8 @@ + + \ No newline at end of file diff --git a/src/views/document/components/inspect.vue b/src/views/document/components/inspect.vue index 66293e3..fd4255d 100644 --- a/src/views/document/components/inspect.vue +++ b/src/views/document/components/inspect.vue @@ -108,7 +108,7 @@ + + \ No newline at end of file diff --git a/src/views/statistics/index.vue b/src/views/statistics/index.vue index 34afe81..7c10801 100644 --- a/src/views/statistics/index.vue +++ b/src/views/statistics/index.vue @@ -11,7 +11,7 @@ - + + +
+
+
+ + 指标 +
+
+ + + + + + + +
+
+
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
@@ -39,7 +77,7 @@ - +
- +
- +
@@ -73,7 +111,7 @@ - + { + _this.$nextTick(() => { + _this.init() + }) + }, 100) + }, methods: { init(filed) { @@ -223,6 +212,13 @@ this.getData9() this.getData10() break; + case "queryParams3": + this.getData11() + this.getData12() + this.getData13() + this.getData14() + this.getData15() + break; default: this.getData1() this.getData2() @@ -234,6 +230,11 @@ this.getData8() this.getData9() this.getData10() + this.getData11() + this.getData12() + this.getData13() + this.getData14() + this.getData15() break; } @@ -281,7 +282,7 @@ var myChart = echarts.init(chartDom); var option = { title: { - text: '病历统计', + text: '患者总数', left: 'left' }, color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], @@ -388,7 +389,7 @@ var option = { title: { - text: '数据对比', + text: '患者统计', left: 'left' }, color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], @@ -462,6 +463,7 @@ }, // 静脉溶栓统计- 数据对比 async getData4() { + return var chartDom = this.$refs.jmrsboxrt var myChart = echarts.init(chartDom); @@ -527,7 +529,7 @@ option && myChart.setOption(option); }, - // 静脉溶栓统计- sICH发生率 + // 静脉溶栓统计- sICH发生率 静脉溶栓并发症发生率 async getData5() { var chartDom = this.$refs.jmrsboxlb var myChart = echarts.init(chartDom); @@ -561,7 +563,7 @@ var option = { title: { - text: 'slCH发生率', + text: '静脉溶栓并发症发生率', left: 'left' }, color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], @@ -582,6 +584,7 @@ }, // 静脉溶栓统计- DNT分布 async getData6() { + return var chartDom = this.$refs.jmrsboxrb var myChart = echarts.init(chartDom); @@ -650,7 +653,8 @@ async getData7() { var chartDom = this.$refs.xgnboxlt var myChart = echarts.init(chartDom); - const res = await querySichResult({ + // const res = await querySichResult({ + const res = await queryXgzlLv({ param: this.queryParams3 }) @@ -667,7 +671,7 @@ type: 'line', areaStyle: {}, data: newlist.map(a => ({ - value: a['bfNum'], + value: a['total'], itemStyle: { borderRadius: [20, 20, 0, 0] }, @@ -695,7 +699,7 @@ var option = { title: { - text: '血管内治疗率', + text: '血管内治疗再通率', left: 'left' }, color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], @@ -716,7 +720,7 @@ option && myChart.setOption(option); }, // 血管内治疗统计- 数据对比 - async getData8() { + async _getData8() { var chartDom = this.$refs.xgnboxrt var myChart = echarts.init(chartDom); @@ -780,6 +784,61 @@ option && myChart.setOption(option); }, + // 血管内治疗统计- (2) 血管内治疗并发症发生率 + async getData8() { + var chartDom = this.$refs.xgnboxrt; + chartDom.style.width = '100%'; // 强制设置宽度 + var myChart = echarts.init(chartDom); + const res = await queryXgzlBfzResult({ + param: this.queryParams3 + }) + + var xdata = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + + var series = [{ + type: 'line', + areaStyle: {}, + data: newlist.map(a => ({ + value: a['bfNum'], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + })) + }]; + + var option = { + title: { + text: '血管内治疗并发症发生率', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, // 血管内治疗统计- DPT async getData9() { var chartDom = this.$refs.xgnboxlb @@ -914,12 +973,350 @@ option && myChart.setOption(option); }, + + // 指标- DNT + async getData11() { + var chartDom = this.$refs.zbboxlt + var myChart = echarts.init(chartDom); + const res = await queryDntResult({ + param: this.queryParams4 + }) + + var items = ['≤45min', '≤60min', '>60min'] + var xdata = []; + var series = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + items.forEach(i => { + var item = { + name: i, + type: 'bar', + barWidth: 5, + data: [], + } + var filed = "" + if (i == '≤45min') filed = "dy45" + else if (i == '≤60min') filed = "dy60" + else if (i == '>60min') filed = "other" + newlist.forEach(a => { + var itemdata = { + value: a[filed], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + } + item.data.push(itemdata) + }) + series.push(item) + }) + var option = { + title: { + text: 'DNT分布', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, + // 指标- DPT + async getData12() { + var chartDom = this.$refs.zbboxrt + var myChart = echarts.init(chartDom); + + const res = await queryDptResult({ + param: this.queryParams4 + }) + + var items = ['≤45min', '≤60min', '>60min'] + var xdata = []; + var series = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + items.forEach(i => { + var item = { + name: i, + type: 'bar', + barWidth: 5, + data: [], + } + var filed = "" + if (i == '≤45min') filed = "dy45" + else if (i == '≤60min') filed = "dy60" + else if (i == '>60min') filed = "other" + newlist.forEach(a => { + var itemdata = { + value: a[filed], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + } + item.data.push(itemdata) + }) + series.push(item) + }) + var option = { + title: { + text: 'DPT分布', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, + // 指标- DIT + async getData13() { + var chartDom = this.$refs.zbboxlb + var myChart = echarts.init(chartDom); + + const res = await queryDitResult({ + param: this.queryParams4 + }) + + var items = ['≤45min', '≤60min', '>60min'] + var xdata = []; + var series = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + items.forEach(i => { + var item = { + name: i, + type: 'bar', + barWidth: 5, + data: [], + } + var filed = "" + if (i == '≤45min') filed = "dy45" + else if (i == '≤60min') filed = "dy60" + else if (i == '>60min') filed = "other" + newlist.forEach(a => { + var itemdata = { + value: a[filed], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + } + item.data.push(itemdata) + }) + series.push(item) + }) + + var option = { + title: { + text: 'DIT分布', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, + // 指标- ONT + async getData14() { + var chartDom = this.$refs.zbboxrb + var myChart = echarts.init(chartDom); + + const res = await queryOntResult({ + param: this.queryParams4 + }) + + var items = ['≤45min', '≤60min', '>60min'] + var xdata = []; + var series = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + items.forEach(i => { + var item = { + name: i, + type: 'bar', + barWidth: 5, + data: [], + } + var filed = "" + if (i == '≤45min') filed = "dy45" + else if (i == '≤60min') filed = "dy60" + else if (i == '>60min') filed = "other" + newlist.forEach(a => { + var itemdata = { + value: a[filed], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + } + item.data.push(itemdata) + }) + series.push(item) + }) + + var option = { + title: { + text: 'ONT分布', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, + // 指标- OPT + async getData15() { + var chartDom = this.$refs.zbboxlbb + var myChart = echarts.init(chartDom); + const res = await queryOptResult({ + param: this.queryParams4 + }) + + var items = ['≤45min', '≤60min', '>60min'] + var xdata = []; + var series = []; + const newlist = res.data.map(a => { + xdata.push(dayjs(a.time).format('YYYY-MM-DD')) + return { + ...a, + time: dayjs(a.time).format('YYYY-MM-DD') + } + }) + items.forEach(i => { + var item = { + name: i, + type: 'bar', + barWidth: 5, + data: [], + } + var filed = "" + if (i == '≤45min') filed = "dy45" + else if (i == '≤60min') filed = "dy60" + else if (i == '>60min') filed = "other" + newlist.forEach(a => { + var itemdata = { + value: a[filed], + itemStyle: { + borderRadius: [20, 20, 0, 0] + }, + label: { + show: true, + position: 'top' + }, + } + item.data.push(itemdata) + }) + series.push(item) + }) + + var option = { + title: { + text: 'OPT分布', + left: 'left' + }, + color: ['#6F7FF6', '#F3D37C', '#5AD0A5', '#008660'], + legend: { + left: 'right' + }, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: xdata + }], + yAxis: [{ + type: 'value' + }], + series: series + }; + + option && myChart.setOption(option); + }, + + } } \ No newline at end of file diff --git a/src/views/thrombolysis/components/throm-before1.vue b/src/views/thrombolysis/components/throm-before1.vue index 612cc54..71d4e23 100644 --- a/src/views/thrombolysis/components/throm-before1.vue +++ b/src/views/thrombolysis/components/throm-before1.vue @@ -1,7 +1,7 @@ - +
- - - - + + + + @@ -78,20 +41,10 @@
- - + + {{ item }} @@ -101,19 +54,10 @@
得分
- +
-
+
{{ item.text @@ -122,47 +66,23 @@ - +
- + - +
@@ -170,14 +90,17 @@
-
- 下一步 +
+ 下一步
-