7 changed files with 487 additions and 44 deletions
			
			
		| @ -0,0 +1,413 @@ | |||||
|  | <template> | ||||
|  |   <div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> | ||||
|  |     <div class="btnBox"> | ||||
|  |       <div v-if="!onlyRead && isPlatform"> | ||||
|  |         <el-button v-print="'#reportForm'" size="small" @click="handlePrint">打印</el-button> | ||||
|  |         <template v-if="isCreator"> | ||||
|  |           <el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> | ||||
|  |           <el-button type="danger" size="small" @click="formDelete">删除</el-button> | ||||
|  |         </template> | ||||
|  |       </div> | ||||
|  |       <div v-if="creator" style="margin: 10px 0;text-align: left;color: #409EFF"> | ||||
|  |         <div> | ||||
|  |           操作者:{{ creator.doctorName }} | ||||
|  |         </div> | ||||
|  |         <div> | ||||
|  |           工号:{{ creator.doctorCode }} | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |     <div style="width: 840px"> | ||||
|  |       <div id="reportForm" style="width: 100%;padding-right: 8px;text-align: left"> | ||||
|  |         <div v-if="!isDev" class="flex j-c" style="padding-bottom: 8px"> | ||||
|  |           <img width="650" src="@/assets/img/xianganlogo2.jpg"> | ||||
|  |         </div> | ||||
|  |         <p style="color:#000000;font-size:24px;font-weight: 700;letter-spacing: 10px;text-align:center;margin-bottom: 10px;word-spacing: 3px"> | ||||
|  |           视力筛查报告单 | ||||
|  |         </p> | ||||
|  |         <div class="flex"> | ||||
|  |           <div class="flex a-c">登记号:<el-input v-model="confirmData.patientId" style="flex: 1" /></div> | ||||
|  |           <div class="flex" style="width: 240px">姓名:<el-input v-model="confirmData.patientName" style="flex: 1" /></div> | ||||
|  |           <div class="flex" style="width: 240px">性别:<el-input v-model="confirmData.patientSex" style="flex: 1" /></div> | ||||
|  |           <div class="flex a-c">年龄:<el-input v-model="confirmData.patientAge" style="flex: 1" /></div> | ||||
|  |         </div> | ||||
|  |         <table class="treatAction"> | ||||
|  |           <tbody> | ||||
|  |             <tr> | ||||
|  |               <td> | ||||
|  |                 瞳孔 | ||||
|  |               </td> | ||||
|  |               <td colspan="2"> | ||||
|  |                 <el-select v-model="confirmData.tk" filterable allow-create placeholder="" clearable> | ||||
|  |                   <el-option | ||||
|  |                     v-for="item in tkList" | ||||
|  |                     :key="item.id" | ||||
|  |                     :label="item.name" | ||||
|  |                     :value="item.name" | ||||
|  |                   /> | ||||
|  |                 </el-select> | ||||
|  |               </td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>眼别</td> | ||||
|  |               <td>右眼</td> | ||||
|  |               <td>左眼</td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>屈光不正度(D)</td> | ||||
|  |               <td> | ||||
|  |                 <div class="flex"> | ||||
|  |                   <el-input v-model="confirmData.qgbzdSphOd" placeholder="" /> | ||||
|  |                   <span>/</span> | ||||
|  |                   <el-input v-model="confirmData.qgbzdCylOd" placeholder="" /> | ||||
|  |                   <span>/</span> | ||||
|  |                   <el-input v-model="confirmData.qgbzdAxisOd" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </td> | ||||
|  |               <td> | ||||
|  |                 <div class="flex"> | ||||
|  |                   <el-input v-model="confirmData.qgbzdSphOs" placeholder="" /> | ||||
|  |                   <span>/</span> | ||||
|  |                   <el-input v-model="confirmData.qgbzdCylOs" placeholder="" /> | ||||
|  |                   <span>/</span> | ||||
|  |                   <el-input v-model="confirmData.qgbzdAxisOs" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>眼位</td> | ||||
|  |               <td><el-input v-model="confirmData.ywOd" /></td> | ||||
|  |               <td><el-input v-model="confirmData.ywOs" /></td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>瞳孔大小(mm)</td> | ||||
|  |               <td> | ||||
|  |                 <el-input v-model="confirmData.tkdxOd" /> | ||||
|  |               </td> | ||||
|  |               <td> | ||||
|  |                 <el-input v-model="confirmData.tkdxOs" /> | ||||
|  |               </td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>结果</td> | ||||
|  |               <td colspan="2"> | ||||
|  |                 <el-checkbox-group v-model="jgSelect"> | ||||
|  |                   <el-checkbox label="正常" /> | ||||
|  |                   <el-checkbox label="远视" /> | ||||
|  |                   <el-checkbox label="近视" /> | ||||
|  |                   <el-checkbox label="散光" /> | ||||
|  |                   <el-checkbox label="屈光不正" /> | ||||
|  |                   <el-checkbox label="斜视" /> | ||||
|  |                   <el-checkbox label="其他"> | ||||
|  |                     其他<el-input v-model="confirmData.jgOther" /> | ||||
|  |                   </el-checkbox> | ||||
|  |                 </el-checkbox-group> | ||||
|  |               </td> | ||||
|  |             </tr> | ||||
|  |             <tr> | ||||
|  |               <td>建议</td> | ||||
|  |               <td colspan="2"> | ||||
|  |                 <el-select v-model="confirmData.jy" filterable allow-create placeholder="" clearable> | ||||
|  |                   <el-option | ||||
|  |                     v-for="item in jyList" | ||||
|  |                     :key="item.id" | ||||
|  |                     :label="item.name" | ||||
|  |                     :value="item.name" | ||||
|  |                   /> | ||||
|  |                 </el-select> | ||||
|  |               </td> | ||||
|  |             </tr> | ||||
|  |           </tbody> | ||||
|  |         </table> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'ScreenReport', | ||||
|  |   props: { | ||||
|  |     onlyRead: { | ||||
|  |       type: Boolean, | ||||
|  |       default: false | ||||
|  |     }, | ||||
|  |     isDev: { | ||||
|  |       type: Boolean | ||||
|  |     }, | ||||
|  |     isPlatform: { | ||||
|  |       type: Boolean, | ||||
|  |       default: true | ||||
|  |     }, | ||||
|  |     patientId: { | ||||
|  |       type: String | ||||
|  |     }, | ||||
|  |     caseId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     isCreator: { | ||||
|  |       type: Boolean, | ||||
|  |       default: true | ||||
|  |     }, | ||||
|  |     // 操作者 | ||||
|  |     creator: { | ||||
|  |       type: Object | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       origin: {}, | ||||
|  |       originForm: {}, | ||||
|  |       tkList: [ | ||||
|  |         { | ||||
|  |           name: '正常', | ||||
|  |           id: 1 | ||||
|  |         }, { | ||||
|  |           name: '复方托吡卡胺', | ||||
|  |           id: 2 | ||||
|  |         }, { | ||||
|  |           name: '赛飞杰', | ||||
|  |           id: 3 | ||||
|  |         }, { | ||||
|  |           name: '阿托品', | ||||
|  |           id: 4 | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       jyList: [ | ||||
|  |         { | ||||
|  |           name: '随访', | ||||
|  |           id: '1' | ||||
|  |         }, { | ||||
|  |           name: '进一步检查', | ||||
|  |           id: '2' | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       jgSelect: [], | ||||
|  |       confirmData: { | ||||
|  |         tk: '正常', | ||||
|  |         jg: '', | ||||
|  |         jgOther: '', | ||||
|  |         jy: '', | ||||
|  |         tkdxOd: '', | ||||
|  |         tkdxOs: '', | ||||
|  |         ywOd: '', | ||||
|  |         ywOs: '', | ||||
|  |         qgbzdSphOd: '', | ||||
|  |         qgbzdSphOs: '', | ||||
|  |         qgbzdCylOd: '', | ||||
|  |         qgbzdCylOs: '', | ||||
|  |         qgbzdAxisOd: '', | ||||
|  |         qgbzdAxisOs: '', | ||||
|  |         jzNumber: '', | ||||
|  |         patientName: '', | ||||
|  |         patientAge: '', | ||||
|  |         patientSex: '', | ||||
|  |         patientId: '', | ||||
|  |         idList: [] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     caseId(val) { | ||||
|  |       if (val) { | ||||
|  |         this.getReportInfo() | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     this.getReportInfo() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     async getPatientData() { | ||||
|  |       const { data: res } = await this.$http.get( | ||||
|  |         '/slscbg/getSlscbgInfo', | ||||
|  |         { | ||||
|  |           params: { | ||||
|  |             patientId: this.patientId | ||||
|  |           } | ||||
|  |         } | ||||
|  |       ) | ||||
|  |       if (res.code === 0) { | ||||
|  |         this.confirmData.patientId = res.data.patientId | ||||
|  |         this.confirmData.patientAge = res.data.patientAge | ||||
|  |         this.confirmData.patientSex = res.data.patientSex | ||||
|  |         this.confirmData.patientName = res.data.patientName | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 获取详情数据展示 | ||||
|  |     handleResValue(val, change) { | ||||
|  |       if (!val) { | ||||
|  |         return | ||||
|  |       } | ||||
|  |       change.forEach(item => { | ||||
|  |         item.isSelect = false | ||||
|  |         item.remark = '' | ||||
|  |       }) | ||||
|  |       const list = val.split('/') | ||||
|  |       change.forEach(item => { | ||||
|  |         list.forEach(lis => { | ||||
|  |           if (lis === item.name) { | ||||
|  |             item.isSelect = true | ||||
|  |           } | ||||
|  |           if (lis.includes('其他') && item.name === '其他:') { | ||||
|  |             item.isSelect = true | ||||
|  |             item.remark = lis.split(':')[1] | ||||
|  |           } | ||||
|  |         }) | ||||
|  |         // 如果未选中,默认后面注释不保存 | ||||
|  |         if (!item.isSelect && item.name === '其他:') { | ||||
|  |           item.remark = '' | ||||
|  |         } | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     handlePrint() { | ||||
|  |       if (!this.isCreator) { | ||||
|  |         return | ||||
|  |       } | ||||
|  |       this.handleSaveTable() | ||||
|  |     }, | ||||
|  |     // 保存 | ||||
|  |     handleSaveTable() { | ||||
|  |       this.confirmData.jg = this.jgSelect.join('/') | ||||
|  |       this.confirmData.jzNumber = window.sessionStorage.getItem('jzNumber') | ||||
|  |       this.$http.post('/slscbg/saveSlscbg', { | ||||
|  |         caseId: this.caseId, | ||||
|  |         ...this.confirmData | ||||
|  |       }).then(() => { | ||||
|  |         this.getReportInfo() | ||||
|  |         this.$emit('handleSaveTable') | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     getReportInfo() { | ||||
|  |       const params = { | ||||
|  |         patientId: this.patientId, | ||||
|  |         caseId: this.caseId | ||||
|  |       } | ||||
|  |       this.$http.get('/slscbg/getSlscbgInfo', { params }).then(data => { | ||||
|  |         const res = data.data.data | ||||
|  |         this.setData(res) | ||||
|  |       }) | ||||
|  |     }, | ||||
|  |     setData(res) { | ||||
|  |       this.confirmData = res | ||||
|  |       this.jgSelect = this.confirmData.jg.split('/') | ||||
|  |       if (!res.jzNumber) { | ||||
|  |         this.getPatientData() | ||||
|  |         const userData = JSON.parse(window.sessionStorage.getItem('qg-userData')) | ||||
|  |         this.confirmData.operator = userData.signImgBase | ||||
|  |         this.confirmData.operateDate = this.$moment().format('YYYY-MM-DD') | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     // 获取项目id列表 | ||||
|  |     async queryProject() { | ||||
|  |       const project = window.sessionStorage.getItem('projectItem') ? JSON.parse(window.sessionStorage.getItem('projectItem')) : [] | ||||
|  |       const { data: res } = await this.$http.get( | ||||
|  |         '/patient/getZlItemDict', | ||||
|  |         { | ||||
|  |           params: { | ||||
|  |             caseName: '报告' | ||||
|  |           } | ||||
|  |         } | ||||
|  |       ) | ||||
|  |       if (res.code === 0) { | ||||
|  |         const data = res.data || [] | ||||
|  |         const list = [] | ||||
|  |         if (data.length) { | ||||
|  |           for (let i = 0; i < data.length; i++) { | ||||
|  |             for (let j = 0; j < project.length; j++) { | ||||
|  |               if (data[i].itemId === project[j].porjectCode) { | ||||
|  |                 list.push(project[j].id) | ||||
|  |               } | ||||
|  |             } | ||||
|  |           } | ||||
|  |           this.confirmData.idList = list | ||||
|  |         } | ||||
|  |       } else { | ||||
|  |         this.$message.error(res.msg) | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     formDelete() { | ||||
|  |       this.$confirmFun('确定删除吗?').then(() => { | ||||
|  |         this.$http.post('/slscbg/delSlscbgInfo', { | ||||
|  |           id: this.caseId | ||||
|  |         }).then(() => { | ||||
|  |           this.$message.success('删除成功') | ||||
|  |           this.$emit('formDelete', 'del') | ||||
|  |         }) | ||||
|  |       }) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | #operation-record{ | ||||
|  |   background: #fff; | ||||
|  |   padding: 10px 20px 50px 20px; | ||||
|  |   page-break-after:always; | ||||
|  |   height: 100%; | ||||
|  |   overflow: auto; | ||||
|  | } | ||||
|  | .btnBox{ | ||||
|  |   position: fixed; | ||||
|  |   z-index: 999; | ||||
|  |   right: 90px; | ||||
|  | } | ||||
|  | .check { | ||||
|  |   cursor: pointer; | ||||
|  |   user-select: none; | ||||
|  |   display: flex; | ||||
|  |   input{ | ||||
|  |     -webkit-appearance: checkbox !important; | ||||
|  |     margin-right: 5px; | ||||
|  |   } | ||||
|  | } | ||||
|  | .flex{ | ||||
|  |   display: flex; | ||||
|  | } | ||||
|  | .a-c{ | ||||
|  |   align-items: center; | ||||
|  | } | ||||
|  | .j-b{ | ||||
|  |   justify-content: space-between; | ||||
|  | } | ||||
|  | .treatAction{ | ||||
|  |   width: 100%; | ||||
|  |   margin-top: 10px; | ||||
|  |   tr td,tr th{ | ||||
|  |     border: 1px solid #ccc; | ||||
|  |     padding: 5px; | ||||
|  |   } | ||||
|  |   td{ | ||||
|  |     width: 25%; | ||||
|  |     text-align: center; | ||||
|  |   } | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border: none; | ||||
|  |   height: 26px !important; | ||||
|  |   line-height: 26px !important; | ||||
|  |   text-align: center; | ||||
|  |   font-size: 16px; | ||||
|  | } | ||||
|  | ::v-deep .el-input__icon{ | ||||
|  |   line-height: 26px !important; | ||||
|  | } | ||||
|  | ::v-deep .el-checkbox-group{ | ||||
|  |   text-align: left; | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border-bottom: 1px solid #ccc; | ||||
|  |   border-radius: 0; | ||||
|  |   padding: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-input__prefix { | ||||
|  |   display: none; | ||||
|  | } | ||||
|  | ::v-deep .el-checkbox__label{ | ||||
|  |   font-size: 16px !important; | ||||
|  | } | ||||
|  | </style> | ||||
					Loading…
					
					
				
		Reference in new issue