diff --git a/src/App.vue b/src/App.vue index f8331cb..bbfd752 100644 --- a/src/App.vue +++ b/src/App.vue @@ -210,7 +210,7 @@ haveFlagInspect, finishStatus, } = res.data; - console.log('firstAidInspectDataDtos: ', haveFlagInspect); + // console.log('firstAidInspectDataDtos: ', haveFlagInspect); // if(finishStatus == 1){ // this.setTimerData({}) // this.request = 0 diff --git a/src/api/index.js b/src/api/index.js index a58d0d7..0402ed5 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -327,7 +327,8 @@ export const createPatient = (params) => axios.post(`${proxyUrl1}/firstAid/createPatient`, { ...params }); -// export const eduitPatient = (params) => -// axios.post(`${proxyUrl1}/firstAid/eduitPatient`, { -// ...params -// }); \ No newline at end of file + +export const exportRsPdf = (params) => + axios.post(`${proxyUrl1}/admin/export/exportRsPdf`, { + ...params + }); \ No newline at end of file diff --git a/src/components/w-upload/w-upload.vue b/src/components/w-upload/w-upload.vue new file mode 100644 index 0000000..b9a82eb --- /dev/null +++ b/src/components/w-upload/w-upload.vue @@ -0,0 +1,179 @@ + + + + + \ No newline at end of file diff --git a/src/config/home.js b/src/config/home.js index ba23852..b4ee0ff 100644 --- a/src/config/home.js +++ b/src/config/home.js @@ -14,7 +14,12 @@ async function updateAidCode(param, type) { const { code, data, msg } = res; if (code === 200) { // message.success('更新成功') - queryAid(firstAidId, type); + if(param.finishStatus ==1){ + store.commit('patient/setPatientData', {}); + store.commit('patient/setWriteAble', false); + } else{ + queryAid(firstAidId, type); + } } else { message.error(msg); } diff --git a/src/layouts/BasicLayout.less b/src/layouts/BasicLayout.less index 35930b8..d762cea 100644 --- a/src/layouts/BasicLayout.less +++ b/src/layouts/BasicLayout.less @@ -23,14 +23,14 @@ .sider-header-icon{ display: inline-block; text-align: center; - width: 1.8rem; - height: 1.8rem; - line-height: 1.8rem; + width: 2.8rem; + height: 2.8rem; + line-height: 2.8rem; background-color: #659aff; border-radius: 50px; overflow: hidden; color: #FFFFFF; - font-size: 1rem; + font-size: 1.8rem; } } @@ -88,24 +88,51 @@ background-color: #FFFFFF !important; .patient-box{ display: flex; - justify-content: center; + justify-content: flex-start; + padding: 0 20px; + box-sizing: border-box; + .paitent-title{ + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + font-size: 1.5rem; + font-weight: bold; + margin-right: 1rem; + } .patient-info { - // background-color: #fff; - // border-radius: 5px; - // padding: 12px; - font-size: 1rem; + height: 100%; + display: flex; + align-items: center; + font-size: 1.5rem; .lable { - color: #AAAAAA; - padding: 0 .5rem 0 1rem; - + // color: #AAAAAA; + padding: 0 .5rem 0 0.3rem; } - .text { color: #000000; - padding: 0 2rem 0 0; + // padding: 0 1rem 0 0; + &.text-red{ + color: red; + } + &.mr-sm{ + margin-right: .5rem; + } + } + } + .patient-action{ + display: flex; + font-size: 1.5rem; + padding: 0 .2rem; + align-items: center; + margin-left: 1rem; + .action{ + padding: 0 .2rem; + font-weight: bold; } } + } .layout-sider-header-row-title{ @@ -125,6 +152,7 @@ height: calc(100vh - 66px); // overflow-y: auto; padding: 10px; + position: relative; } .ant-drawer-body{ diff --git a/src/layouts/BasicLayout.vue b/src/layouts/BasicLayout.vue index 9fe918d..24a55aa 100644 --- a/src/layouts/BasicLayout.vue +++ b/src/layouts/BasicLayout.vue @@ -27,26 +27,46 @@
-
- 姓名: - {{patientData.patientName || '-'}} - 性别: - {{patientData.patientGender == 1 ? '女' : patientData.patientGender == 0 ? '男' : '-'}} - 年龄: - {{patientData.patientAge || '-'}} - 证件号: +
卒中急救质控系统
+
+ +
+ 退出急救 +
+
+
终止急救
+
暂停急救
+
+
{ + console.log('beforeRouteEnter', to) if (to.fullPath == '/document') { vm.current = 1 vm.current_ = 1 @@ -163,6 +185,15 @@ } else if (to.fullPath == '/firstaid/patientList') { vm.current = 0 vm.current_ = 0 + if (vm.patientData?.firstAidId) { + vm.$router.replace('/firstaid/thrombolysis') + } + } else if (to.fullPath == '/firstaid/thrombolysis') { + vm.current = 0 + vm.current_ = 0 + if (!vm.patientData?.firstAidId) { + vm.$router.replace('/firstaid/patientList') + } } else { vm.current = 0 vm.current_ = 0 @@ -182,17 +213,19 @@ if (item.path == 'person') { if (this.visible) this.onClose() else this.showPersion() - } else if(item.path == '/firstaid/patientList'){ + } else if (item.path == '/firstaid/patientList') { this.visible = false; this.onClickPat() - }else { + } else { this.visible = false; this.$router.push(item.path) } }, async onClickPat() { - const {firstAidId} = this.patientData - if(firstAidId){ + const { + firstAidId + } = this.patientData + if (firstAidId) { const res = await messageQuery(firstAidId); const { code, @@ -203,18 +236,37 @@ const { finishStatus, } = res.data; - if(finishStatus == 0){ - if(this.$route.name != 'Thrombolysis') this.$router.push('/firstaid/thrombolysis') - }else{ + if (finishStatus == 0) { + if (this.$route.name != 'Thrombolysis') this.$router.push('/firstaid/thrombolysis') + } else { this.setPatientData({}); this.setPatientDataCur({}); - if(this.$route.name != 'PatientList') this.$router.replace('/firstaid/patientList') + if (this.$route.name != 'PatientList') this.$router.replace('/firstaid/patientList') } - + } + } else { + this.setPatientData({}); + this.setPatientDataCur({}); + if (this.$route.name != 'PatientList') this.$router.replace('/firstaid/patientList') } - - + + + }, + async handleTermin(status) { + this.$message.info('结束急救,类型: ' + status) + // this.termVisible = true; + + this.onTermClose() + }, + showDrawer() { + this.termVisible = true; + }, + onTermClose() { + this.termVisible = false; + }, + getContainer() { + return document.getElementById('globalLayoutContent') }, async showPersion() { this.visible = true; diff --git a/src/views/document/index.vue b/src/views/document/index.vue index 602f4a5..68af8ef 100644 --- a/src/views/document/index.vue +++ b/src/views/document/index.vue @@ -224,7 +224,7 @@ key: 'operation', fixed: 'right', align: 'center', - width: 300, + width: 380, scopedSlots: { customRender: 'action' }, diff --git a/src/views/thrombolysis/components/throm-before3.vue b/src/views/thrombolysis/components/throm-before3.vue index fb0881c..9c19c86 100644 --- a/src/views/thrombolysis/components/throm-before3.vue +++ b/src/views/thrombolysis/components/throm-before3.vue @@ -3,28 +3,24 @@
- -
-
+ + +
-
- - 上传院前CT图片 +
+ + 下一步
@@ -40,6 +36,7 @@ } from '@/config/setting.js'; import emptyImage from '@/assets/images/slice/empty.png' import ThromInterfereImageDcm from './throm-interfere-image-dcm.vue' + import WUpload from '@/components/w-upload/w-upload.vue' import { queryFirstAidInspectData, queryVideo @@ -76,7 +73,8 @@ }, props: ['outside'], components: { - ThromInterfereImageDcm + ThromInterfereImageDcm, + WUpload }, computed: { ...mapState('patient', ['patientData', 'writeAble']), @@ -135,6 +133,15 @@ this.list = data.list } }, + handleUpload({ + name, + url + }) { + console.log('upload end', 'http://116.204.114.73:20007' + url) //_doc/upload/ + this.fileList.push(url); + const index = this.tabList.findIndex(a => a.key == 'ct') + this.tabList[index].tab = `院前CT (${this.fileList.length}张)` + }, openCamera() { if (this.writeAble) { this.$message.success('患者已审核,内容不可更改') @@ -148,14 +155,17 @@ // } const cmr = plus.camera.getCamera(); if (!cmr) { - this.$message.success('没有可用的摄像头'); - return; + this.$message.success('没有可用的摄像头'); + return; } - const res = cmr.supportedImageResolutions.length > 0 ? cmr.supportedImageResolutions[0] : { width: 640, height: 480 }; // 默认分辨率; + const res = cmr.supportedImageResolutions.length > 0 ? cmr.supportedImageResolutions[0] : { + width: 640, + height: 480 + }; // 默认分辨率; const fmt = cmr.supportedImageFormats.length > 0 ? cmr.supportedImageFormats[0] : 'jpeg'; if (!res || !fmt) { - plus.nativeUI.toast('摄像头不支持该格式或分辨率'); - return; + plus.nativeUI.toast('摄像头不支持该格式或分辨率'); + return; } // const res = cmr.supportedImageResolutions[0]; // const fmt = cmr.supportedImageFormats[0]; @@ -204,11 +214,11 @@ ); }, onFileChange(event) { - const file = event.target.files[0]; - if (file) { - // 处理图片文件 - this.compressImage(file); - } + const file = event.target.files[0]; + if (file) { + // 处理图片文件 + this.compressImage(file); + } }, //显示图片 showPics(url, name) { @@ -286,6 +296,17 @@ align-items: center; } + + .image-box { + padding: .5rem; + box-sizing: border-box; + + img { + width: 100%; + height: 100%; + } + } + } .btns { diff --git a/src/views/thrombolysis/components/throm-report.vue b/src/views/thrombolysis/components/throm-report.vue index 3431804..be83962 100644 --- a/src/views/thrombolysis/components/throm-report.vue +++ b/src/views/thrombolysis/components/throm-report.vue @@ -109,63 +109,6 @@
{{item.record ? item.record.answer[0] : ''}}
- -
@@ -183,117 +126,105 @@ - 导出 + 导出
-
- - + + - + - - - - - - - - - - + + - - - - - + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - +
姓名:{{patient.patientName}} 性别:{{patient.patientGenderString}} 年龄:{{patient.patientAge}}诊断:{{patient.firstAidZlTypeString}}观察者:诊断: {{patient.firstAidZlType}}观察者:
发病时间:{{queryItemInfo('XGZL-CCWC-TIME').toString()}}用药时间:{{}}用药时间:{{queryItemInfo('RYPG-CBZD').toString()}}
溶栓药物:{{queryItemInfo('JMRS-RSYW').toString()}}剂量:用法用量:
血压(BP):心率(HR):血样饱和度(HR):格拉斯评分:NIHSS:剂量:{{queryItemInfo('JMRS-JDJL').toString()}}用法用量:
时间点血压(BP)心率(HR)血样饱和度(HR)格拉斯评分NIHSS
用药前{{queryItemInfo('JMRS-Q-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-Q-NIHSS').toString()}}
15min{{queryItemInfo('JMRS-15-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-15-NIHSS').toString()}}
30min{{queryItemInfo('JMRS-30-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-30-NIHSS').toString()}}
45min{{queryItemInfo('JMRS-45-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-45-NIHSS').toString()}}
60min{{queryItemInfo('JMRS-60-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-60-NIHSS').toString()}}
75min{{queryItemInfo('JMRS-75-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-75-NIHSS').toString()}}
90min{{queryItemInfo('JMRS-90-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-90-NIHSS').toString()}}
105min{{queryItemInfo('JMRS-105-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-105-NIHSS').toString()}}
120min{{queryItemInfo('JMRS-120-SYSTOLIC-PRESSURE').toString()}} {{queryItemInfo('JMRS-120-NIHSS').toString()}}
@@ -304,9 +235,166 @@ 导出
-
-
- +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
姓名:{{patient.patientName}}性别:{{patient.patientGenderString}}年龄:{{patient.patientAge}}血糖(BS):{{queryItemInfo('RYPG-BLOOD-SUGAR').toString()}}血压(BP):{{queryItemInfo('JMRS-Q-SYSTOLIC-PRESSURE').toString()}} +
一线:二线:NIHSS:{{queryItemInfo('JMRS-Q-NIHSS').toString()}}
溶栓流程具体时间采集方式备注
发病时间{{queryItemInfo('JBXX-FBSJ').toString()}}
到院时间{{queryItemInfo('JBXX-FBSJ').toString()}}质控平车:
启动绿道时间{{queryItemInfo('RYPG-GR-TIME').toString()}}可视化信息竖屏:
呼叫时间{{queryItemInfo('JBXX-TZCZYS-TIME').toString()}}
一线到场时间{{queryItemInfo('JBXX-CZYSDC-TIME').toString()}}
采血开始时间{{queryItemInfo('RYPG-BLOOD-TIME').toString()}}质控平车
血样报告时间{{queryItemInfo('RYPG-BLOOD-REPORT-TIME').toString()}}
心电开始时间{{queryItemInfo('RYPG-ECG-TIME').toString()}}
到达CT时间{{queryItemInfo('RYPG-CT-DD-TIME').toString()}}质控平车
CT检查开始时间{{queryItemInfo('RYPG-CT-JCKS-TIME').toString()}}质控平车
CT检查完毕时间{{queryItemInfo('RYPG-CT-JCWB-TIME').toString()}}
到达核磁时间{{queryItemInfo('JMRS-HC-TIME').toString()}}
二线医生到场时间{{queryItemInfo('JBXX-SNYSDC-TIME').toString()}}
谈话开始时间{{queryItemInfo('JMRS-TH-TIME').toString()}}
签署知情同意书时间{{queryItemInfo('JMRS-ZQTY-TIME').toString()}}
到达溶栓区时间{{queryItemInfo('JMRS-RSQ-TIME').toString()}}
静脉溶栓开始时间{{queryItemInfo('JMRS-TIME').toString()}}
静脉溶栓结束时间{{queryItemInfo('JMRS-END-TIME').toString()}}
进入介入室时间{{queryItemInfo('JMRS-DDJRS').toString()}}
置鞘时间{{queryItemInfo('XGZL-CCWC-TIME').toString()}}
血管再通时间{{queryItemInfo('XGZL-SH-SCXGZTSJ').toString()}}
进入病房时间{{queryItemInfo('JMRS-DDBF').toString()}}
@@ -334,6 +422,7 @@ +
@@ -342,6 +431,9 @@ mapMutations, mapState } from 'vuex'; + import { + apiUrl + } from '@/config/setting.js'; import { getNextNode, messageQuery, @@ -349,7 +441,8 @@ queryLog, operationLog, getCtInfoPath, - operationLogEx + operationLogEx, + exportRsPdf } from 'api'; import dayjs from 'dayjs'; import duration from 'dayjs/plugin/duration'; @@ -431,6 +524,10 @@ dataSource: { type: Object, default: () => ({}) + }, + firstAidId: { + type: String, + default: "", } }, computed: { @@ -496,23 +593,28 @@ //TODU if (this.reportType == 'modal') { console.log(this.dataSource) - this.patient = this.dataSource + // this.patient = this.dataSource + this.init(this.dataSource.firstAidId); } else { - if (!this.patientData) return; - this.patient = this.patientData + // if (!this.patientData) return; + // this.patient = this.patientData + if (this.firstAidId) { + this.init(this.firstAidId); + await this.getMessageQuery(this.firstAidId); + } } - const { - firstAidId - } = this.patient; - firstAidId && this.init(firstAidId); - await this.getMessageQuery(); + // const { + // firstAidId + // } = this.patient; + console.log('report firstAidId', this.firstAidId) + }, methods: { ...mapMutations('patient', ['setNextNodeData', 'setTimerData']), - async getMessageQuery() { - const { - firstAidId - } = this.patientData; + async getMessageQuery(firstAidId) { + // const { + // firstAidId + // } = this.patientData; const res = await messageQuery(firstAidId); const { code, @@ -533,11 +635,7 @@ onSubmit() { // this.$emit('next') }, - async getData() { - const { - firstAidId - } = this.patientData - + async getData(firstAidId) { const resLog = await queryLog({ firstAidId }) @@ -585,7 +683,18 @@ name: 'Record', }); }, + async handleExport() { + console.log('this.patient.firstAidId', this.patient.firstAidId) + const res = await exportRsPdf({ + firstAidId: this.patient.firstAidId + }) + if (res.code == 200) { + console.log('http://116.204.114.73:20007' + res.data) + this.$refs.downloadRef.setAttribute('href', 'http://116.204.114.73:20007' + res.data) + this.$refs.downloadRef.click() + } + }, checkReport(modalRef) { console.log('modalRef', this.patient) // const { @@ -626,6 +735,7 @@ const res = await queryAidRecord(firstAidId) console.log(res) + this.patient = res.data // if (this.patientData) { // const { // recordValDict @@ -640,7 +750,7 @@ // firstAidId // } = this.patientData; this.getNextNode(firstAidId); - this.getData() + this.getData(firstAidId) }, async getNextNode(firstAidId) { let res = await getNextNode({ @@ -662,9 +772,12 @@ async exportRecord() { const { firstAidId - } = this.patientData + } = this.patient - const res = await queryLog({ + // const res = await queryLog({ + // firstAidId + // }) + const res = await exportRsPdf({ firstAidId }) const { @@ -680,8 +793,12 @@ }, toDownLoad(path) { try { - document.getElementById('exportFirst').href = path; - document.getElementById('exportFirst').download = '.xlsx'; + // document.getElementById('exportFirst').href = path; + // document.getElementById('exportFirst').download = '.xlsx'; + + this.$refs.downloadRef.setAttribute('href', 'http://116.204.114.73:20007' + path) + this.$refs.downloadRef.setAttribute('download', '.xlsx') + this.$refs.downloadRef.click() } catch (e) { //TODO handle the exception console.log(e.message) diff --git a/src/views/thrombolysis/components/throm-result-firstInfo.vue b/src/views/thrombolysis/components/throm-result-firstInfo.vue index e14cd49..1dd0520 100644 --- a/src/views/thrombolysis/components/throm-result-firstInfo.vue +++ b/src/views/thrombolysis/components/throm-result-firstInfo.vue @@ -233,7 +233,7 @@