17 changed files with 2604 additions and 725 deletions
			
			
		| @ -0,0 +1,93 @@ | |||||
|  | <template> | ||||
|  |   <table> | ||||
|  |     <tbody> | ||||
|  |       <tr> | ||||
|  |         <td rowspan="2" style="width: 30%" /> | ||||
|  |         <td class="table_title">翔安医院</td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td>个案管理信息表</td> | ||||
|  |       </tr> | ||||
|  |       <tr><td colspan="2" style="font-weight: bold">无效联系记录</td></tr> | ||||
|  |       <tr> | ||||
|  |         <td colspan="2"> | ||||
|  |           <el-radio v-model="radio" label="1">拒接</el-radio> | ||||
|  |           <el-radio v-model="radio" label="2">未接</el-radio> | ||||
|  |           <el-radio v-model="radio" label="3">空号</el-radio> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |     </tbody> | ||||
|  |   </table> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'Invalid', | ||||
|  |   props: { | ||||
|  |     followId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     jsonText: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       radio: '0' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     jsonText(val) { | ||||
|  |       if (val) { | ||||
|  |         const data = val && JSON.parse(val) | ||||
|  |         this.radio = data.radio | ||||
|  |       } else { | ||||
|  |         this.radio = '0' | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     if (this.jsonText) { | ||||
|  |       this.radio = this.jsonText && JSON.parse(this.jsonText).radio | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     addOrUpdateHandle() { | ||||
|  |       const jsonText = JSON.stringify({ | ||||
|  |         radio: this.radio | ||||
|  |       }) | ||||
|  |       const dataForm = { | ||||
|  |         flag: '7', | ||||
|  |         name: '无效联系', | ||||
|  |         patientId: this.patientId, | ||||
|  |         platform: this.platform, | ||||
|  |         id: this.followId, | ||||
|  |         updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') | ||||
|  |       } | ||||
|  |       const params = { | ||||
|  |         jsonText: jsonText, | ||||
|  |         ...dataForm | ||||
|  |       } | ||||
|  |       return this.$http.post('/case/update', params) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | table{ | ||||
|  |   width: 100%; | ||||
|  |   margin-top: 20px; | ||||
|  |   font-size: 16px; | ||||
|  |   .table_title{ | ||||
|  |     font-size: 22px !important; | ||||
|  |   } | ||||
|  |   tr td{ | ||||
|  |     border: 1px solid #ccc; | ||||
|  |     text-align: center; | ||||
|  |     padding: 10px 0; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,356 @@ | |||||
|  | <template> | ||||
|  |   <div> | ||||
|  |     <table> | ||||
|  |       <tbody> | ||||
|  |         <tr> | ||||
|  |           <td rowspan="2" style="width: 30%" /> | ||||
|  |           <td class="table_title" colspan="2">翔安医院</td> | ||||
|  |         </tr> | ||||
|  |         <tr> | ||||
|  |           <td colspan="2">个案管理信息表</td> | ||||
|  |         </tr> | ||||
|  |         <tr><td colspan="3" style="font-weight: bold">门诊随访记录</td></tr> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"> | ||||
|  |             <div class="flex">随访日期: | ||||
|  |               <el-date-picker | ||||
|  |                 v-model="patientData.followDate" | ||||
|  |                 type="date" | ||||
|  |               /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"> | ||||
|  |             <div class="flex a-c" style="width: 380px"> | ||||
|  |               主诉:<el-input v-model="patientData.mainSuit" style="flex: 1" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |         <tr><td colspan="3"> | ||||
|  |           <div class="flex a-c"> | ||||
|  |             诊断: | ||||
|  |             <div class="flex" style="width: 180px">眼别:<el-input v-model="patientData.eyeLevel" style="flex: 1;margin-right: 15px" /></div> | ||||
|  |             <div class="flex" style="width: 280px">疾病诊断:<el-input v-model="patientData.diagnose" style="flex: 1;margin-right: 15px" /></div> | ||||
|  |           </div> | ||||
|  |         </td></tr> | ||||
|  |         <!--    常规检查--> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"><div class="flex">常规检查</div></td> | ||||
|  |         </tr> | ||||
|  |         <tr v-for="(check,index) in checks" :key="index" class="content_input"> | ||||
|  |           <td>{{ check.name }}</td> | ||||
|  |           <td> | ||||
|  |             <div v-if="check.OD==='OD'">{{ check.OD }}</div> | ||||
|  |             <div v-else> | ||||
|  |               <el-input v-model="check.OD" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |           <td> | ||||
|  |             <div v-if="check.OS==='OS'">{{ check.OS }}</div> | ||||
|  |             <div v-else> | ||||
|  |               <el-input v-model="check.OS" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |         <!--    裂隙灯检查--> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"><div class="flex">裂隙灯检查</div></td> | ||||
|  |         </tr> | ||||
|  |         <tr v-for="(check,index) in slitChecks" :key="index+check.name" class="content_input"> | ||||
|  |           <td> | ||||
|  |             <el-checkbox v-if="check.name!=='检查内容'" v-model="check.isSelect">{{ check.name }}</el-checkbox> | ||||
|  |             <div v-else>{{ check.name }}</div> | ||||
|  |           </td> | ||||
|  |           <td> | ||||
|  |             <div v-if="check.OD==='OD'">{{ check.OD }}</div> | ||||
|  |             <div v-else> | ||||
|  |               <el-input v-model="check.OD" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |           <td> | ||||
|  |             <div v-if="check.OS==='OS'">{{ check.OS }}</div> | ||||
|  |             <div v-else> | ||||
|  |               <el-input v-model="check.OS" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |         <!--    诊断措施--> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"> | ||||
|  |             <div class="flex">诊断措施: | ||||
|  |               <div v-for="(item,idx) in diaMeasures" :key="idx+'_'+idx" style="margin-right: 15px"> | ||||
|  |                 <el-input v-model="item.cure" :placeholder="item.placeholder" style="flex: 1;margin-right: 15px" /> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |         <!--      复查--> | ||||
|  |         <tr> | ||||
|  |           <td colspan="3"> | ||||
|  |             <div class="flex">复查备注(计划)</div> | ||||
|  |             <div class="flex" style="margin-top: 10px"> | ||||
|  |               <el-radio v-model="patientData.period" label="week">按计划随访</el-radio> | ||||
|  |               <el-radio v-model="patientData.period" label="month">临时调整</el-radio> | ||||
|  |               日期:<el-date-picker v-model="patientData.periodDate" type="date" /> | ||||
|  |             </div> | ||||
|  |           </td> | ||||
|  |         </tr> | ||||
|  |       </tbody> | ||||
|  |     </table> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'OutFollow', | ||||
|  |   props: { | ||||
|  |     patientId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     platform: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     followId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     jsonText: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       initData: {}, | ||||
|  |       patientData: { | ||||
|  |         followDate: '', | ||||
|  |         mainSuit: '', | ||||
|  |         eyeLevel: '', | ||||
|  |         diagnose: '', | ||||
|  |         period: '', | ||||
|  |         periodDate: '' | ||||
|  |       }, | ||||
|  |       // 常规检查 | ||||
|  |       checks: [ | ||||
|  |         { | ||||
|  |           name: '检查内容', | ||||
|  |           OD: 'OD', | ||||
|  |           OS: 'OS' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '视力', | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '眼压', | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: 'C/D', | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       slitChecks: [ | ||||
|  |         { | ||||
|  |           name: '检查内容', | ||||
|  |           OD: 'OD', | ||||
|  |           OS: 'OS' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '结膜/滤过泡', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '角膜', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '中央前房', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '周边前房', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '虹膜', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '瞳孔', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '直径', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '对光反射', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '晶体', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '盘沿', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '神经纤维层', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '动态房角镜', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '静态房角镜', | ||||
|  |           isSelect: false, | ||||
|  |           OD: '', | ||||
|  |           OS: '' | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       diaMeasures: [ | ||||
|  |         { | ||||
|  |           placeholder: '降压用药', | ||||
|  |           cure: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           placeholder: '手术', | ||||
|  |           cure: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           placeholder: '激光', | ||||
|  |           cure: '' | ||||
|  |         } | ||||
|  |       ] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     jsonText(val) { | ||||
|  |       if (val) { | ||||
|  |         const data = JSON.parse(this.jsonText) | ||||
|  |         this.patientData = data.patientData | ||||
|  |         this.checks = data.checks | ||||
|  |         this.slitChecks = data.slitChecks | ||||
|  |         this.diaMeasures = data.diaMeasures | ||||
|  |       } else { | ||||
|  |         this.patientData = this.initData.patientData | ||||
|  |         this.checks = this.initData.checks | ||||
|  |         this.slitChecks = this.initData.slitChecks | ||||
|  |         this.diaMeasures = this.initData.diaMeasures | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     // 初始化赋空 | ||||
|  |     const data = { | ||||
|  |       patientData: this.patientData, | ||||
|  |       checks: this.checks, | ||||
|  |       slitChecks: this.slitChecks, | ||||
|  |       diaMeasures: this.diaMeasures | ||||
|  |     } | ||||
|  |     this.initData = JSON.parse(JSON.stringify(data)) | ||||
|  |     // 赋值 | ||||
|  |     if (this.jsonText) { | ||||
|  |       const data = JSON.parse(this.jsonText) | ||||
|  |       this.patientData = data.patientData | ||||
|  |       this.checks = data.checks | ||||
|  |       this.slitChecks = data.slitChecks | ||||
|  |       this.diaMeasures = data.diaMeasures | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     addOrUpdateHandle() { | ||||
|  |       const jsonText = JSON.stringify({ | ||||
|  |         patientData: this.patientData, | ||||
|  |         checks: this.checks, | ||||
|  |         slitChecks: this.slitChecks, | ||||
|  |         diaMeasures: this.diaMeasures | ||||
|  |       }) | ||||
|  |       const dataForm = { | ||||
|  |         id: this.followId, | ||||
|  |         flag: '7', | ||||
|  |         name: '门诊随访', | ||||
|  |         patientId: this.patientId, | ||||
|  |         platform: this.platform, | ||||
|  |         updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') | ||||
|  |       } | ||||
|  |       const params = { | ||||
|  |         jsonText: jsonText, | ||||
|  |         ...dataForm | ||||
|  |       } | ||||
|  |       return this.$http.post('/case/update', params) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .flex{ | ||||
|  |   display: flex; | ||||
|  | } | ||||
|  | table{ | ||||
|  |   width: 100%; | ||||
|  |   margin-top: 20px; | ||||
|  |   .table_title{ | ||||
|  |     font-size: 22px !important; | ||||
|  |   } | ||||
|  |   tr td{ | ||||
|  |     border: 1px solid #ccc; | ||||
|  |     text-align: center; | ||||
|  |     padding: 10px; | ||||
|  |   } | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border: none; | ||||
|  |   height: 26px !important; | ||||
|  |   line-height: 26px !important; | ||||
|  |   text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border-bottom: 1px solid #ccc; | ||||
|  |   border-radius: 0; | ||||
|  |   padding: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-input__prefix { | ||||
|  |   display: none; | ||||
|  | } | ||||
|  | .content_input{ | ||||
|  |   ::v-deep .el-input__inner{ | ||||
|  |     width: 150px; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,212 @@ | |||||
|  | <template> | ||||
|  |   <table> | ||||
|  |     <tbody> | ||||
|  |       <tr> | ||||
|  |         <td rowspan="2" style="width: 30%" /> | ||||
|  |         <td class="table_title" colspan="2">翔安医院</td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td colspan="2">个案管理信息表</td> | ||||
|  |       </tr> | ||||
|  |       <tr><td colspan="3" style="font-weight: bold">电话随访记录</td></tr> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c"> | ||||
|  |             <div class="flex a-c"> | ||||
|  |               随访日期:<el-date-picker | ||||
|  |                 v-model="followData.followDate" | ||||
|  |                 type="date" | ||||
|  |               /> | ||||
|  |             </div> | ||||
|  |             <div class="flex a-c">上次复查注意事项:<el-input v-model="followData.followDesc" style="flex: 1" /></div> | ||||
|  |           </div> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c"> | ||||
|  |             主诉:<el-input v-model="followData.mainSuit" style="flex: 1" /> | ||||
|  |           </div></td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c"> | ||||
|  |             诊断:眼别:<el-input v-model="followData.eyeLevel" style="flex: 1;margin-right: 15px" /> | ||||
|  |             疾病诊断:<el-input v-model="followData.diagnose" style="flex: 1;margin-right: 15px" /> | ||||
|  |             后缀:<el-input v-model="followData.suffix" style="flex: 1" /> | ||||
|  |           </div> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |       <!--      常规检查--> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3">常规检查</td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td>检查内容</td> | ||||
|  |         <td>OD</td> | ||||
|  |         <td>OS</td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td>视力</td> | ||||
|  |         <td><el-input v-model="followData.OD.vision" style="flex: 1" /></td> | ||||
|  |         <td><el-input v-model="followData.OD.pressure" style="flex: 1" /></td> | ||||
|  |       </tr> | ||||
|  |       <tr> | ||||
|  |         <td>眼压</td> | ||||
|  |         <td><el-input v-model="followData.OS.vision" style="flex: 1" /></td> | ||||
|  |         <td><el-input v-model="followData.OS.pressure" style="flex: 1" /></td> | ||||
|  |       </tr> | ||||
|  |       <!--      处理选择--> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           处理选择: | ||||
|  |           <el-radio v-model="followData.selection" label="again">继续随访</el-radio> | ||||
|  |           <el-radio v-model="followData.selection" label="add">加药</el-radio> | ||||
|  |           <el-radio v-model="followData.selection" label="sub">减药</el-radio> | ||||
|  |           <el-radio v-model="followData.selection" label="goin">预约入院手术</el-radio> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |       <!--      用药--> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c">用药:<el-input v-model="followData.pharmacy" style="flex: 1" /></div> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |       <!--      备注--> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c">备注: | ||||
|  |             <el-radio v-model="followData.notes" label="suspicious">可疑进展</el-radio> | ||||
|  |             <el-radio v-model="followData.notes" label="confirm">确认进展</el-radio> | ||||
|  |           </div> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |       <!--    复查备注--> | ||||
|  |       <tr> | ||||
|  |         <td colspan="3"> | ||||
|  |           <div class="flex a-c">复查备注(计划): | ||||
|  |             <el-radio v-model="followData.schedule" label="onSchedule">按计划随访</el-radio> | ||||
|  |             <div style="width: 180px"><el-input v-model="followData.period" style="flex: 1" placeholder="请输入周期" /></div> | ||||
|  |             <el-radio v-model="followData.periodCircle" label="week">周</el-radio> | ||||
|  |             <el-radio v-model="followData.periodCircle" label="month">月</el-radio> | ||||
|  |           </div> | ||||
|  |         </td> | ||||
|  |       </tr> | ||||
|  |     </tbody> | ||||
|  |   </table> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'PhoneFollow', | ||||
|  |   props: { | ||||
|  |     followId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     }, | ||||
|  |     jsonText: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       initData: {}, | ||||
|  |       followData: { | ||||
|  |         followDate: '', | ||||
|  |         followDesc: '', | ||||
|  |         mainSuit: '', | ||||
|  |         eyeLevel: '', | ||||
|  |         diagnose: '', // 疾病诊断 | ||||
|  |         suffix: '', // 后缀 | ||||
|  |         OD: { | ||||
|  |           vision: '', | ||||
|  |           pressure: '' | ||||
|  |         }, | ||||
|  |         OS: { | ||||
|  |           vision: '', | ||||
|  |           pressure: '' | ||||
|  |         }, | ||||
|  |         selection: '', // 处理选择 | ||||
|  |         pharmacy: '', | ||||
|  |         notes: '', // 备注 | ||||
|  |         schedule: '', | ||||
|  |         period: '', // 周期 | ||||
|  |         periodCircle: '' // 周期单选 | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     jsonText(val) { | ||||
|  |       if (val) { | ||||
|  |         this.followData = JSON.parse(this.jsonText) | ||||
|  |       } else { | ||||
|  |         this.followData = this.initData | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     this.initData = JSON.parse(JSON.stringify(this.followData)) | ||||
|  |     if (this.jsonText) { | ||||
|  |       this.followData = JSON.parse(this.jsonText) | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     addOrUpdateHandle() { | ||||
|  |       const jsonText = JSON.stringify({ | ||||
|  |         ...this.followData | ||||
|  |       }) | ||||
|  |       const dataForm = { | ||||
|  |         flag: '7', | ||||
|  |         name: '电话随访', | ||||
|  |         patientId: this.patientId, | ||||
|  |         platform: this.platform, | ||||
|  |         id: this.followId, | ||||
|  |         updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') | ||||
|  |       } | ||||
|  |       const params = { | ||||
|  |         jsonText: jsonText, | ||||
|  |         ...dataForm | ||||
|  |       } | ||||
|  |       return this.$http.post('/case/update', params) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .flex{ | ||||
|  |   display: flex; | ||||
|  | } | ||||
|  | .a-c{ | ||||
|  |   align-items: center; | ||||
|  | } | ||||
|  | table{ | ||||
|  |   width: 100%; | ||||
|  |   margin-top: 20px; | ||||
|  |   font-size: 16px; | ||||
|  |   .table_title{ | ||||
|  |     font-size: 22px !important; | ||||
|  |   } | ||||
|  |   tr td{ | ||||
|  |     border: 1px solid #ccc; | ||||
|  |     text-align: center; | ||||
|  |     padding: 10px; | ||||
|  |   } | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border: none; | ||||
|  |   height: 26px !important; | ||||
|  |   line-height: 26px !important; | ||||
|  |   text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border-bottom: 1px solid #ccc; | ||||
|  |   border-radius: 0; | ||||
|  |   padding: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-input__prefix { | ||||
|  |   display: none; | ||||
|  | } | ||||
|  | </style> | ||||
| @ -1,117 +1,118 @@ | |||||
| // system入口
 | // system入口
 | ||||
| import Vue from 'vue' |  | ||||
| import Element from 'element-ui' |  | ||||
|  | import Vue from "vue"; | ||||
|  | import Element from "element-ui"; | ||||
| // import 'lib-flexible/flexible'
 | // import 'lib-flexible/flexible'
 | ||||
| import App from './App.vue' |  | ||||
| import router from './router' |  | ||||
| import store from './store' |  | ||||
| import http from './utils/request' |  | ||||
| import jQuery from 'jquery' |  | ||||
| import 'element-ui/lib/theme-chalk/index.css' |  | ||||
| import '@/icons' |  | ||||
| import '@/assets/scss/aui.scss' |  | ||||
| import '@/assets/scss/reset.scss' |  | ||||
| import i18n from '@/i18n' |  | ||||
| import * as filters from '@/filters' |  | ||||
| import renRadioGroup from '@/components/ren-radio-group' |  | ||||
| import renDeptTree from '@/components/ren-dept-tree' |  | ||||
| import { hasPermission, getDictLabel } from '@/utils' |  | ||||
| import cloneDeep from 'lodash/cloneDeep' |  | ||||
| import 'xe-utils' |  | ||||
| import VXETable from 'vxe-table' |  | ||||
| import 'vxe-table/lib/index.css' |  | ||||
|  | import App from "./App.vue"; | ||||
|  | import router from "./router"; | ||||
|  | import store from "./store"; | ||||
|  | import http from "./utils/request"; | ||||
|  | import jQuery from "jquery"; | ||||
|  | import "element-ui/lib/theme-chalk/index.css"; | ||||
|  | import "@/icons"; | ||||
|  | import "@/assets/scss/aui.scss"; | ||||
|  | import "@/assets/scss/reset.scss"; | ||||
|  | import i18n from "@/i18n"; | ||||
|  | import * as filters from "@/filters"; | ||||
|  | import renRadioGroup from "@/components/ren-radio-group"; | ||||
|  | import renDeptTree from "@/components/ren-dept-tree"; | ||||
|  | import { hasPermission, getDictLabel } from "@/utils"; | ||||
|  | import cloneDeep from "lodash/cloneDeep"; | ||||
|  | import "xe-utils"; | ||||
|  | import VXETable from "vxe-table"; | ||||
|  | import "vxe-table/lib/index.css"; | ||||
| // import echarts from 'echarts'
 | // import echarts from 'echarts'
 | ||||
| import * as echarts from 'echarts' |  | ||||
| import moment from 'moment' |  | ||||
| import VueChatScroll from 'vue-chat-scroll' |  | ||||
|  | import * as echarts from "echarts"; | ||||
|  | import moment from "moment"; | ||||
|  | import VueChatScroll from "vue-chat-scroll"; | ||||
|  | import "default-passive-events"; | ||||
| 
 | 
 | ||||
| // import jsNSV from '@/utils/js-NSV.js'
 | // import jsNSV from '@/utils/js-NSV.js'
 | ||||
| 
 | 
 | ||||
| import Base64 from '@/utils/base64.js' |  | ||||
| Vue.prototype.$Base64 = Base64 |  | ||||
|  | import Base64 from "@/utils/base64.js"; | ||||
|  | Vue.prototype.$Base64 = Base64; | ||||
| 
 | 
 | ||||
| import Print from 'vue-print-nb' |  | ||||
| Vue.use(Print) |  | ||||
|  | import Print from "vue-print-nb"; | ||||
|  | Vue.use(Print); | ||||
| 
 | 
 | ||||
| import { confirm } from '@/utils/confirm' |  | ||||
| Vue.prototype.$confirmFun = confirm |  | ||||
|  | import { confirm } from "@/utils/confirm"; | ||||
|  | Vue.prototype.$confirmFun = confirm; | ||||
| 
 | 
 | ||||
| // import VueDragResize from 'vue-drag-resize'
 | // import VueDragResize from 'vue-drag-resize'
 | ||||
| // Vue.component('vue-drag-resize', VueDragResize)
 | // Vue.component('vue-drag-resize', VueDragResize)
 | ||||
| 
 | 
 | ||||
| // 裁切工具
 | // 裁切工具
 | ||||
| import VueCropper from 'vue-cropper' |  | ||||
| Vue.use(VueCropper) |  | ||||
|  | import VueCropper from "vue-cropper"; | ||||
|  | Vue.use(VueCropper); | ||||
| 
 | 
 | ||||
| import Recorder from 'js-audio-recorder' |  | ||||
|  | import Recorder from "js-audio-recorder"; | ||||
| const recorder = new Recorder({ | const recorder = new Recorder({ | ||||
|   sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
 |   sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
 | ||||
|   sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
 |   sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
 | ||||
|   numChannels: 1 // 声道,支持 1 或 2, 默认是1
 |  | ||||
| // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
 |  | ||||
| }) |  | ||||
| Vue.prototype.$recorder = recorder |  | ||||
|  |   numChannels: 1, // 声道,支持 1 或 2, 默认是1
 | ||||
|  |   // compiling: false,(0.x版本中生效,1.x增加中)  // 是否边录边转换,默认是false
 | ||||
|  | }); | ||||
|  | Vue.prototype.$recorder = recorder; | ||||
| 
 | 
 | ||||
| // 全局监听DOM元素
 | // 全局监听DOM元素
 | ||||
| import ElementResizeDetectorMaker from 'element-resize-detector' |  | ||||
| Vue.prototype.$erd = ElementResizeDetectorMaker() |  | ||||
|  | import ElementResizeDetectorMaker from "element-resize-detector"; | ||||
|  | Vue.prototype.$erd = ElementResizeDetectorMaker(); | ||||
| 
 | 
 | ||||
| import animejs from 'animejs' |  | ||||
| Vue.prototype.$anime = animejs |  | ||||
|  | import animejs from "animejs"; | ||||
|  | Vue.prototype.$anime = animejs; | ||||
| 
 | 
 | ||||
| moment.locale('zh-cn') // 设置语言 或 moment.lang('zh-cn');
 |  | ||||
|  | moment.locale("zh-cn"); // 设置语言 或 moment.lang('zh-cn');
 | ||||
| 
 | 
 | ||||
| Vue.use(Element, { | Vue.use(Element, { | ||||
|   size: 'default', |  | ||||
|   i18n: (key, value) => i18n.t(key, value) |  | ||||
| }) |  | ||||
|  |   size: "default", | ||||
|  |   i18n: (key, value) => i18n.t(key, value), | ||||
|  | }); | ||||
| 
 | 
 | ||||
| Object.keys(filters).forEach(key => { |  | ||||
|   Vue.filter(key, filters[key]) |  | ||||
| }) |  | ||||
|  | Object.keys(filters).forEach((key) => { | ||||
|  |   Vue.filter(key, filters[key]); | ||||
|  | }); | ||||
| 
 | 
 | ||||
| // 全局组件
 | // 全局组件
 | ||||
| Vue.use(renRadioGroup) |  | ||||
| Vue.use(renDeptTree) |  | ||||
| Vue.use(VueChatScroll) |  | ||||
| Vue.use(VXETable) |  | ||||
|  | Vue.use(renRadioGroup); | ||||
|  | Vue.use(renDeptTree); | ||||
|  | Vue.use(VueChatScroll); | ||||
|  | Vue.use(VXETable); | ||||
| 
 | 
 | ||||
| // DICOM
 | // DICOM
 | ||||
| import cornerstone from 'cornerstone-core' |  | ||||
| import cornerstoneMath from 'cornerstone-math' |  | ||||
| import cornerstoneTools from 'cornerstone-tools' |  | ||||
| import Hammer from 'hammerjs' |  | ||||
| import dicomParser from 'dicom-parser' |  | ||||
| import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader' |  | ||||
| import cornerstoneWebImageLoader from 'cornerstone-web-image-loader' |  | ||||
| 
 |  | ||||
| cornerstoneTools.external.cornerstone = cornerstone |  | ||||
| cornerstoneTools.external.Hammer = Hammer |  | ||||
| cornerstoneTools.external.cornerstoneMath = cornerstoneMath |  | ||||
| cornerstoneWADOImageLoader.external.dicomParser = dicomParser |  | ||||
| cornerstoneWADOImageLoader.external.cornerstoneMath = cornerstoneMath |  | ||||
| cornerstoneWADOImageLoader.external.cornerstone = cornerstone |  | ||||
| cornerstoneWebImageLoader.external.cornerstone = cornerstone |  | ||||
| cornerstone.registerImageLoader('http', cornerstoneWADOImageLoader.loadImage) |  | ||||
| cornerstone.registerImageLoader('https', cornerstoneWADOImageLoader.loadImage) |  | ||||
| cornerstone.registerImageLoader('http', cornerstoneWebImageLoader.loadImage) |  | ||||
| Vue.prototype.$cornerstone = cornerstone |  | ||||
| Vue.prototype.$cornerstoneTools = cornerstoneTools |  | ||||
|  | import cornerstone from "cornerstone-core"; | ||||
|  | import cornerstoneMath from "cornerstone-math"; | ||||
|  | import cornerstoneTools from "cornerstone-tools"; | ||||
|  | import Hammer from "hammerjs"; | ||||
|  | import dicomParser from "dicom-parser"; | ||||
|  | import cornerstoneWADOImageLoader from "cornerstone-wado-image-loader"; | ||||
|  | import cornerstoneWebImageLoader from "cornerstone-web-image-loader"; | ||||
|  | 
 | ||||
|  | cornerstoneTools.external.cornerstone = cornerstone; | ||||
|  | cornerstoneTools.external.Hammer = Hammer; | ||||
|  | cornerstoneTools.external.cornerstoneMath = cornerstoneMath; | ||||
|  | cornerstoneWADOImageLoader.external.dicomParser = dicomParser; | ||||
|  | cornerstoneWADOImageLoader.external.cornerstoneMath = cornerstoneMath; | ||||
|  | cornerstoneWADOImageLoader.external.cornerstone = cornerstone; | ||||
|  | cornerstoneWebImageLoader.external.cornerstone = cornerstone; | ||||
|  | cornerstone.registerImageLoader("http", cornerstoneWADOImageLoader.loadImage); | ||||
|  | cornerstone.registerImageLoader("https", cornerstoneWADOImageLoader.loadImage); | ||||
|  | cornerstone.registerImageLoader("http", cornerstoneWebImageLoader.loadImage); | ||||
|  | Vue.prototype.$cornerstone = cornerstone; | ||||
|  | Vue.prototype.$cornerstoneTools = cornerstoneTools; | ||||
| 
 | 
 | ||||
| // 挂载全局
 | // 挂载全局
 | ||||
| Vue.prototype.$http = http |  | ||||
| Vue.prototype.$ = jQuery |  | ||||
| Vue.prototype.$hasPermission = hasPermission |  | ||||
| Vue.prototype.$getDictLabel = getDictLabel |  | ||||
| Vue.prototype.$moment = moment |  | ||||
| Vue.prototype.$echarts = echarts |  | ||||
| 
 |  | ||||
| Vue.config.productionTip = false |  | ||||
|  | Vue.prototype.$http = http; | ||||
|  | Vue.prototype.$ = jQuery; | ||||
|  | Vue.prototype.$hasPermission = hasPermission; | ||||
|  | Vue.prototype.$getDictLabel = getDictLabel; | ||||
|  | Vue.prototype.$moment = moment; | ||||
|  | Vue.prototype.$echarts = echarts; | ||||
|  | 
 | ||||
|  | Vue.config.productionTip = false; | ||||
| // 保存整站vuex本地储存初始状态
 | // 保存整站vuex本地储存初始状态
 | ||||
| window.SITE_CONFIG.storeState = cloneDeep(store.state) |  | ||||
|  | window.SITE_CONFIG.storeState = cloneDeep(store.state); | ||||
| new Vue({ | new Vue({ | ||||
|   i18n, |   i18n, | ||||
|   router, |   router, | ||||
|   store, |   store, | ||||
|   render: h => h(App) |  | ||||
| }).$mount('#app') |  | ||||
|  |   render: (h) => h(App), | ||||
|  | }).$mount("#app"); | ||||
|  | |||||
| @ -0,0 +1,341 @@ | |||||
|  | <template> | ||||
|  |   <div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> | ||||
|  |     <div class="btnBox"> | ||||
|  |       <el-button v-print="'#threeFunc'" size="small">打印</el-button> | ||||
|  |       <el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> | ||||
|  |     </div> | ||||
|  |     <div id="threeFunc" style="width: 840px;padding-right: 8px"> | ||||
|  |       <p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> | ||||
|  |         眼科激光手术患者知情同意书 | ||||
|  |       </p> | ||||
|  |       <!--患者信息--> | ||||
|  |       <div class="flex"> | ||||
|  |         <div class="flex a-c item">姓名:<el-input v-model="patient.patientName" style="flex: 1" placeholder="" /></div> | ||||
|  |         <div class="flex a-c item">年龄:<el-input v-model="patient.age" style="flex: 1" placeholder="" />岁</div> | ||||
|  |         <div class="flex a-c item">性别:<el-input v-model="patient.sex" style="flex: 1" placeholder="" /></div> | ||||
|  |         <div class="flex a-c item">眼别:<el-input v-model="patient.eyeLevel" style="flex: 1" placeholder="" /></div> | ||||
|  |       </div> | ||||
|  |       <!--术前判断--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle"> | ||||
|  |           一、术前诊断: | ||||
|  |         </div> | ||||
|  |         <div v-for="(item, index) in judgement" :key="index" class="judgeItem"> | ||||
|  |           {{ `${index+1}. ${item.name}:` }} | ||||
|  |           <el-input v-if="item.isEdit" v-model="item.remark" style="flex: 1" /> | ||||
|  |           <template v-else> | ||||
|  |             <div v-for="(judge,idx) in item.symptom" :key="idx" class="flex a-c"> | ||||
|  |               <el-checkbox v-model="judge.isSelected" class="checkboxItem" /> | ||||
|  |               {{ judge.title }} | ||||
|  |               <el-input v-if="judge.isEdit" v-model="judge.remark" style="flex: 1" /> | ||||
|  |             </div> | ||||
|  |           </template> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!--麻醉方式选择--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">二、麻醉方式选择:</div> | ||||
|  |         <div class="flex"> | ||||
|  |           <div v-for="(sel,i) in modeSelect" :key="i" style="margin-right: 30px"><el-checkbox v-model="sel.isSelected" class="checkboxItem" />{{ sel.name }}</div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!--拟行激光术名称--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">三、拟行激光术名称:</div> | ||||
|  |         <div class="proposed"> | ||||
|  |           <div v-for="(item,i) in proposedName" :key="i" style="margin-right: 35px"><el-checkbox v-model="item.isSelected" class="checkboxItem" /> | ||||
|  |             {{ item.name }} | ||||
|  |             <span v-if="item.area">( | ||||
|  |               <span v-for="(area,index) in item.area" :key="`${index}_${i}`" class="areaItem"><el-checkbox v-model="area.isSelected" class="checkboxItem" />{{ area.name }}</span> | ||||
|  |               )</span> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!--      术中可能发生的并发症及处理--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">四、术中可能发生的并发症及处理:</div> | ||||
|  |         <div v-for="(item,index) in intraoperation" :key="index"> | ||||
|  |           {{ `${index+1}. ${item}` }} | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!--      术后视力预后--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">五、术后视力预后</div> | ||||
|  |         <div>取决于眼内情况,若眼底条件太差或者出现并发症,激光治疗后视力可能恢复不良。</div> | ||||
|  |       </div> | ||||
|  |       <!--      术后可能发生下列并发症--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">六、术后可能发生下列并发症</div> | ||||
|  |         <div class="proposed"> | ||||
|  |           <div v-for="(post,idx) in postoperative" :key="idx" class="postItem" style="margin-right: 30px"> | ||||
|  |             {{ `${idx+1},${post}` }} | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |         <div class="btnBox"> | ||||
|  |           <div> | ||||
|  |             <div class="flex a-c">主诊/谈话医生签名:<el-input v-model="doctor.name" style="flex: 1" /></div> | ||||
|  |             <div class="flex a-c">日期:<el-input v-model="doctor.dateTime" style="flex: 1" /></div> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |       <!--      术前患者--> | ||||
|  |       <div> | ||||
|  |         <div class="formTitle">七、术前患者(或家属、单位意见):</div> | ||||
|  |         <div class="proposed"> | ||||
|  |           医生已和我详细讨论了治疗计划、手术方式、治疗目的以及术后可能的效果。我已详细阅读以上内容,并完全理解和接受手术可能出现的风险和并发症,我同意医生的治疗并接受手术。 | ||||
|  |         </div> | ||||
|  |         <div class="btnBox"> | ||||
|  |           <div> | ||||
|  |             <div class="flex a-c">患者或直系亲属签名:<el-input v-model="patientInfo.name" style="flex: 1" /></div> | ||||
|  |             <div class="flex a-c">日期:<el-input v-model="patientInfo.dateTime" style="flex: 1" /></div> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'InformedConsent', | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       // 患者信息 | ||||
|  |       patient: { | ||||
|  |         patientName: '', | ||||
|  |         age: '', | ||||
|  |         sex: '', | ||||
|  |         eyeLevel: '' | ||||
|  |       }, | ||||
|  |       // 主诊医生 | ||||
|  |       doctor: { | ||||
|  |         name: '', | ||||
|  |         dateTime: '' | ||||
|  |       }, | ||||
|  |       patientInfo: { | ||||
|  |         name: '', | ||||
|  |         dateTime: '' | ||||
|  |       }, | ||||
|  |       // 术前判断 | ||||
|  |       judgement: [ | ||||
|  |         { | ||||
|  |           name: '白内障', | ||||
|  |           symptom: [{ | ||||
|  |             title: '后发性', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '其他', | ||||
|  |             isSelected: false, | ||||
|  |             isEdit: true, | ||||
|  |             remark: '' | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: '青光眼', | ||||
|  |           symptom: [{ | ||||
|  |             title: '闭角型', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '开角型', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '其他', | ||||
|  |             isSelected: false, | ||||
|  |             remark: '', | ||||
|  |             isEdit: true | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: '眼底病', | ||||
|  |           symptom: [{ | ||||
|  |             title: '糖尿病视网膜病变', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '视网膜裂孔', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '视网膜变性', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '黄斑部疾病', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '其他', | ||||
|  |             isSelected: false, | ||||
|  |             isEdit: true, | ||||
|  |             remark: '' | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: '视网膜血管性病变', | ||||
|  |           symptom: [{ | ||||
|  |             title: '视网膜静脉阻塞(中央)', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '视网膜静脉阻塞(分支)', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             title: '视网膜静脉周围炎', | ||||
|  |             isSelected: false | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: "Coat's 病", | ||||
|  |           symptom: [{ | ||||
|  |             title: '', | ||||
|  |             isSelected: false | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: '其他', | ||||
|  |           isEdit: true, | ||||
|  |           remark: '', | ||||
|  |           symptom: [] | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       // 麻醉方式选择 | ||||
|  |       modeSelect: [ | ||||
|  |         { | ||||
|  |           name: '表麻', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '局麻', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '局麻+镇静', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '基础麻醉', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '其他', | ||||
|  |           isSelected: false, | ||||
|  |           isEdit: true, | ||||
|  |           remark: '' | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       // 拟行激光术名称 | ||||
|  |       proposedName: [ | ||||
|  |         { | ||||
|  |           name: '激光后囊切开术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光前囊切开术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光周边虹膜切除', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光房角成形术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光睫状体光凝术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光断线', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '视网膜光凝术', | ||||
|  |           isSelected: false, | ||||
|  |           area: [{ | ||||
|  |             name: '局部', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             name: '全', | ||||
|  |             isSelected: false | ||||
|  |           }, { | ||||
|  |             name: '黄斑区', | ||||
|  |             isSelected: false | ||||
|  |           }] | ||||
|  |         }, { | ||||
|  |           name: '激光瞳孔成形术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光瞳孔残膜切开术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光虹膜黏连剖除术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '玻璃体条索切开术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '激光倒睫术', | ||||
|  |           isSelected: false | ||||
|  |         }, { | ||||
|  |           name: '其他', | ||||
|  |           isSelected: false | ||||
|  |         } | ||||
|  |       ], | ||||
|  |       // 术中 | ||||
|  |       intraoperation: ['麻醉意外:需进行抢救或暂停手术', '出血:需要压迫止血,推迟或暂停手术', '其他无法预计的并发症', '术中可能会根据具体情况变更手术方式'], | ||||
|  |       postoperative: ['暂时性眼压升高', '损伤人工晶体', '角膜内皮损伤', '虹膜炎症反应', '玻璃体前界膜破裂', '视功能损伤', '渗出性视网膜脱离', '黄斑水肿', '脉络膜脱离', '虹膜(视网膜、脉络膜)出血', '其他'] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     handleSaveTable() { | ||||
|  |       const data = { | ||||
|  |         patient: this.patient, | ||||
|  |         doctor: this.doctor, | ||||
|  |         patientInfo: this.patientInfo, | ||||
|  |         judgement: this.judgement, | ||||
|  |         modeSelect: this.modeSelect, | ||||
|  |         proposedName: this.proposedName | ||||
|  |       } | ||||
|  |       console.log(data) | ||||
|  |       this.$emit('save', data) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .flex{ | ||||
|  |   display: flex; | ||||
|  | } | ||||
|  | .a-c{ | ||||
|  |   align-items: center; | ||||
|  | } | ||||
|  | .item{ | ||||
|  |   &:not(:last-child){ | ||||
|  |     margin-right: 15px; | ||||
|  |   } | ||||
|  | } | ||||
|  | .formTitle{ | ||||
|  |   font-weight: bold; | ||||
|  |   margin-top: 10px; | ||||
|  | } | ||||
|  | .areaItem{ | ||||
|  |   &:not(:last-child){ | ||||
|  |     margin-right: 10px; | ||||
|  |   } | ||||
|  | } | ||||
|  | .judgeItem{ | ||||
|  |   display: flex; | ||||
|  |   align-items: center; | ||||
|  |   div{ | ||||
|  |     margin: 0 5px; | ||||
|  |   } | ||||
|  | } | ||||
|  | .checkboxItem{ | ||||
|  |   margin-right: 5px; | ||||
|  | } | ||||
|  | .proposed{ | ||||
|  |   display: flex; | ||||
|  |   flex-wrap: wrap; | ||||
|  | } | ||||
|  | .btnBox{ | ||||
|  |   display: flex; | ||||
|  |   justify-content: flex-end; | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border: none; | ||||
|  |   height: 26px !important; | ||||
|  |   line-height: 26px !important; | ||||
|  |   text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border-bottom: 1px solid #ccc; | ||||
|  |   border-radius: 0; | ||||
|  |   padding: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-input__prefix { | ||||
|  |   display: none; | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,609 @@ | |||||
|  | <template> | ||||
|  |   <div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> | ||||
|  |     <div class="btnBox"> | ||||
|  |       <el-button v-print="'#threeFunc'" size="small">打印</el-button> | ||||
|  |       <el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> | ||||
|  |     </div> | ||||
|  |     <div id="threeFunc" style="width: 840px;padding-right: 8px"> | ||||
|  |       <p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> | ||||
|  |         青少年儿童屈光发育档案 | ||||
|  |       </p> | ||||
|  |       <div class="operation-record-table"> | ||||
|  |         <el-table :data="headData" :span-method="headSpanMethod" border style="width: 820px; margin-top: 20px"> | ||||
|  |           <el-table-column label="" width="" align="center" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <span>{{ scope.row.name }}</span> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false" prop="type"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '姓名'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.patientName" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '身高'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.height" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '是否戴镜'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.isMirror" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '姓名'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   性别 | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '身高'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   体重 | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '是否戴镜'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   戴镜习惯 | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '姓名'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.sex" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '身高'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.weight" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '是否戴镜'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.mirrorHabit" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '姓名'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   出生日期 | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '身高'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   何时发现视力下降 | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '姓名'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.birthday" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '身高'"> | ||||
|  |                 <div class="width-100 center"> | ||||
|  |                   <el-input v-model="scope.row.time" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |         </el-table> | ||||
|  |         <el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 820px"> | ||||
|  |           <el-table-column label="" width="" align="center" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <span>{{ scope.row.name }}</span> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false" prop="type"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '戴镜类型'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-checkbox-group v-model="scope.row.mirrorType"> | ||||
|  |                     <el-checkbox label="框架" /> | ||||
|  |                     <el-checkbox label="OK镜" /> | ||||
|  |                     <el-checkbox label="RGP" /> | ||||
|  |                     <el-checkbox label="软镜" /> | ||||
|  |                   </el-checkbox-group> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '旧镜参数'"> | ||||
|  |                 <div class="width-120 center"> | ||||
|  |                   OD:<el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '父母是否近视'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-checkbox-group v-model="scope.row.shortsighte"> | ||||
|  |                     <el-checkbox label="父亲" /> | ||||
|  |                     <el-checkbox label="母亲" /> | ||||
|  |                     <el-checkbox label="父亲和母亲" /> | ||||
|  |                     <el-checkbox label="均无" /> | ||||
|  |                   </el-checkbox-group> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '户外活动时间'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-checkbox-group v-model="scope.row.outTime"> | ||||
|  |                     <el-checkbox label="<1h" /> | ||||
|  |                     <el-checkbox label="1h-2h" /> | ||||
|  |                     <el-checkbox label=">2h" /> | ||||
|  |                   </el-checkbox-group> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '备注'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.note" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '项目'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   OD | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '裸眼/旧镜视力'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '是否散瞳'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-checkbox-group v-model="scope.row.mydriasis"> | ||||
|  |                     <el-checkbox label="未散瞳" /> | ||||
|  |                     <el-checkbox label="美多丽" /> | ||||
|  |                     <el-checkbox label="阿托品" /> | ||||
|  |                     <el-checkbox label="其他" /> | ||||
|  |                   </el-checkbox-group> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '主觉验光'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" style="width: 100px" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '眼位'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '眼压/mmHg'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '角膜曲率/D'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '角膜厚度/μm'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '处方'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.od" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '建议'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-checkbox-group v-model="scope.row.suggest"> | ||||
|  |                     <el-checkbox label="框架" /> | ||||
|  |                     <el-checkbox label="OK镜" /> | ||||
|  |                     <el-checkbox label="RGP" /> | ||||
|  |                     <el-checkbox label="软镜" /> | ||||
|  |                     <el-checkbox label="其他" /> | ||||
|  |                   </el-checkbox-group> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '眼轴/眼底照/地形图'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.type" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |           <el-table-column label="" width="" :resizable="false"> | ||||
|  |             <template slot-scope="scope"> | ||||
|  |               <div v-if="scope.row.name == '旧镜参数'"> | ||||
|  |                 <div class="width-120 center"> | ||||
|  |                   OS:<el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '项目'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   OS | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '裸眼/旧镜视力'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '主觉验光'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" style="width: 100px" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '眼位'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '眼压/mmHg'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '角膜曲率/D'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '角膜厚度/μm'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |               <div v-if="scope.row.name == '处方'"> | ||||
|  |                 <div class="width-180 center"> | ||||
|  |                   <el-input v-model="scope.row.os" placeholder="" /> | ||||
|  |                 </div> | ||||
|  |               </div> | ||||
|  |             </template> | ||||
|  |           </el-table-column> | ||||
|  |         </el-table> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   props: { | ||||
|  |     archiveCaseCRFItem: { | ||||
|  |       type: Object, | ||||
|  |       default: () => { } | ||||
|  |     }, | ||||
|  |     formContent: { | ||||
|  |       type: Object, | ||||
|  |       default: () => { } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       dataForm: { | ||||
|  |         yghcValue: '', | ||||
|  |         operationListValueOD: [] | ||||
|  |       }, | ||||
|  |       headData: [ | ||||
|  |         { | ||||
|  |           name: '个人基础信息', | ||||
|  |           type: '' | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '姓名', | ||||
|  |           patientName: '', | ||||
|  |           sex: '', | ||||
|  |           birthday: '', | ||||
|  |           type: '' | ||||
|  |         }, { | ||||
|  |           name: '身高', | ||||
|  |           height: '', | ||||
|  |           weight: '', | ||||
|  |           time: '' | ||||
|  |         }, { | ||||
|  |           name: '是否戴镜', | ||||
|  |           isMirror: '', | ||||
|  |           mirrorHabit: '', | ||||
|  |           type: '' | ||||
|  |         }], | ||||
|  |       tableData: [ | ||||
|  |         { | ||||
|  |           name: '戴镜类型', | ||||
|  |           mirrorType: [] | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           name: '旧镜参数', | ||||
|  |           od: '', | ||||
|  |           os: '', | ||||
|  |           type: '' | ||||
|  |         }, { | ||||
|  |           name: '父母是否近视', | ||||
|  |           shortsighte: [] | ||||
|  |         }, { | ||||
|  |           name: '户外活动时间', | ||||
|  |           outTime: [], | ||||
|  |           type: '' | ||||
|  |         }, { | ||||
|  |           name: '备注', | ||||
|  |           note: '' | ||||
|  |         }, { | ||||
|  |           name: '综合检查信息', | ||||
|  |           type: '1' | ||||
|  |         }, { | ||||
|  |           name: '项目' | ||||
|  |         }, { | ||||
|  |           name: '裸眼/旧镜视力', | ||||
|  |           od: '', | ||||
|  |           os: '' | ||||
|  |         }, { | ||||
|  |           name: '是否散瞳', | ||||
|  |           mydriasis: [] | ||||
|  |         }, { | ||||
|  |           name: '主觉验光', | ||||
|  |           od: '', | ||||
|  |           os: '', | ||||
|  |           vaod: '', | ||||
|  |           vaos: '', | ||||
|  |           type: '2' | ||||
|  |         }, { | ||||
|  |           name: '眼位', | ||||
|  |           od: '', | ||||
|  |           os: '', | ||||
|  |           type: '' | ||||
|  |         }, { | ||||
|  |           name: '眼压/mmHg', | ||||
|  |           od: '', | ||||
|  |           os: '' | ||||
|  |         }, { | ||||
|  |           name: '角膜曲率/D', | ||||
|  |           od: '', | ||||
|  |           os: '' | ||||
|  |         }, { | ||||
|  |           name: '角膜厚度/μm', | ||||
|  |           od: '', | ||||
|  |           os: '' | ||||
|  |         }, { | ||||
|  |           name: '处方', | ||||
|  |           od: '', | ||||
|  |           os: '' | ||||
|  |         }, { | ||||
|  |           name: '建议', | ||||
|  |           suggest: [] | ||||
|  |         }, { | ||||
|  |           name: '眼轴/眼底照/地形图', | ||||
|  |           type: '' | ||||
|  |         }] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     operationRecord: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.operationRecord | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   watch: { | ||||
|  |     operationRecord: { | ||||
|  |       handler(value) { | ||||
|  |         console.log(value) | ||||
|  |       }, | ||||
|  |       deep: true, | ||||
|  |       immediate: true | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |     // this.printPage('threeFunc') | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     setData() { | ||||
|  |       this.headData = this.formContent.a | ||||
|  |       this.tableData = this.formContent.b | ||||
|  |     }, | ||||
|  |     //   签名 | ||||
|  |     singHandle(text) { | ||||
|  |       const value = { | ||||
|  |         text: text, | ||||
|  |         pageName: 'operationRecord' | ||||
|  |       } | ||||
|  |       this.$store.commit('beginSign', value) | ||||
|  |     }, | ||||
|  |     objectSpanMethod({ row, column, rowIndex, columnIndex }) { | ||||
|  |       if (columnIndex === 0) { | ||||
|  |         if (rowIndex === 5) { | ||||
|  |           return { | ||||
|  |             rowspan: 1, | ||||
|  |             colspan: 3 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } else if (columnIndex === 1) { | ||||
|  |         if (rowIndex === 0 || rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 8 || rowIndex === 15 || rowIndex === 16) { | ||||
|  |           return { | ||||
|  |             rowspan: 1, | ||||
|  |             colspan: 2 | ||||
|  |           } | ||||
|  |         } else if (rowIndex === 5) { | ||||
|  |           return { | ||||
|  |             rowspan: 0, | ||||
|  |             colspan: 0 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } else if (columnIndex === 2) { | ||||
|  |         if (rowIndex === 0 || rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 5 || rowIndex === 8 || rowIndex === 15 || rowIndex === 16) { | ||||
|  |           return { | ||||
|  |             rowspan: 0, | ||||
|  |             colspan: 0 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     headSpanMethod({ row, column, rowIndex, columnIndex }) { | ||||
|  |       if (columnIndex === 0) { | ||||
|  |         if (rowIndex === 0) { | ||||
|  |           return { | ||||
|  |             rowspan: 1, | ||||
|  |             colspan: 6 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } else if (columnIndex === 1 || columnIndex === 3) { | ||||
|  |         if (rowIndex === 3) { | ||||
|  |           return { | ||||
|  |             rowspan: 1, | ||||
|  |             colspan: 2 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } else if (columnIndex === 1 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4 || columnIndex === 5) { | ||||
|  |         if (rowIndex === 0) { | ||||
|  |           return { | ||||
|  |             rowspan: 0, | ||||
|  |             colspan: 0 | ||||
|  |           } | ||||
|  |         } | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     handlePrint() { | ||||
|  |       this.printPage('threeFunc') | ||||
|  |     }, | ||||
|  |     handleSaveTable() { | ||||
|  |       const data = { | ||||
|  |         a: this.headData, | ||||
|  |         b: this.tableData | ||||
|  |       } | ||||
|  |       this.$emit('save', data) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss"> | ||||
|  | 
 | ||||
|  | #operation-record { | ||||
|  |   //height: 93%; | ||||
|  |   // overflow: auto; | ||||
|  |   .btnBox{ | ||||
|  |     display: flex; | ||||
|  |     justify-content: flex-end; | ||||
|  |   } | ||||
|  |   .el-table--border{ | ||||
|  |     border-right: 1px solid #EBEEF5; | ||||
|  |   } | ||||
|  |   .operation-record-table { | ||||
|  |     //width: 100%; | ||||
|  |     width: 840px !important; | ||||
|  |     padding-right: 8px; | ||||
|  |     .operation-text { | ||||
|  |       font-weight: 700; | ||||
|  |     } | ||||
|  |     .text { | ||||
|  |       font-weight: 700; | ||||
|  |     } | ||||
|  |     .sign { | ||||
|  |       cursor: pointer; | ||||
|  |       color: #46a1ff; | ||||
|  |       font-weight: 400; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .center { | ||||
|  |     text-align: center; | ||||
|  |   } | ||||
|  |   .left { | ||||
|  |     text-align: left; | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .width-50 { | ||||
|  |     .el-input { | ||||
|  |       width: 50px; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .width-70 { | ||||
|  |     .el-input { | ||||
|  |       width: 70px; | ||||
|  |     } | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .width-100 { | ||||
|  |     .el-input { | ||||
|  |       width: 100px; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .width-120 { | ||||
|  |     .el-input { | ||||
|  |       width: 120px; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .width-180 { | ||||
|  |     .el-input { | ||||
|  |       width: 180px; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .el-input__inner { | ||||
|  |     border: none; | ||||
|  |     height: 26px !important; | ||||
|  |     line-height: 26px !important; | ||||
|  |     text-align: center; | ||||
|  |   } | ||||
|  | 
 | ||||
|  |   .el-input__inner { | ||||
|  |     border-bottom: 1px solid #ccc; | ||||
|  |     border-radius: 0; | ||||
|  |     padding: 0; | ||||
|  |   } | ||||
|  |   .el-input__prefix { | ||||
|  |     display: none; | ||||
|  |   } | ||||
|  |   //.el-date-editor.el-input, | ||||
|  |   //.el-date-editor.el-input__inner { | ||||
|  |   //  width: 140px; | ||||
|  |   //} | ||||
|  |   //.el-input__suffix { | ||||
|  |   //  top: -7px; | ||||
|  |   //} | ||||
|  |   //.el-checkbox__input.is-checked + .el-checkbox__label { | ||||
|  |   //  color: #606266; | ||||
|  |   //} | ||||
|  |   //.el-checkbox__input.is-checked .el-checkbox__inner, | ||||
|  |   //.el-checkbox__input.is-indeterminate .el-checkbox__inner { | ||||
|  |   //  background: #767676; | ||||
|  |   //  border-color: #767676; | ||||
|  |   //} | ||||
|  |   //.el-checkbox__inner:hover, | ||||
|  |   //.el-checkbox__inner { | ||||
|  |   //  border-color: #767676; | ||||
|  |   //} | ||||
|  |   //.el-radio__input.is-checked + .el-radio__label { | ||||
|  |   //  color: #606266; | ||||
|  |   //} | ||||
|  |   //.el-radio__input.is-checked .el-radio__inner { | ||||
|  |   //  background: #767676; | ||||
|  |   //  border-color: #767676; | ||||
|  |   //} | ||||
|  |   //.el-radio { | ||||
|  |   //  margin-right: 8px; | ||||
|  |   //  display: block; | ||||
|  |   //} | ||||
|  |   //.el-radio__inner { | ||||
|  |   //  border: 1px solid #767676 !important; | ||||
|  |   //} | ||||
|  |   //.el-radio__inner:hover { | ||||
|  |   //  border-color: #767676; | ||||
|  |   //} | ||||
|  |   .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell { | ||||
|  |     background: none !important; | ||||
|  |   } | ||||
|  |   .has-gutter { | ||||
|  |     display: none; | ||||
|  |     .cell { | ||||
|  |       font-weight: 700; | ||||
|  |     } | ||||
|  |     .el-table__cell { | ||||
|  |       background: #ced4d9; | ||||
|  |     } | ||||
|  |   } | ||||
|  |   .el-table__header-wrapper{ | ||||
|  |     display: none; | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,253 @@ | |||||
|  | <template> | ||||
|  |   <div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> | ||||
|  |     <div class="btnBox"> | ||||
|  |       <el-button v-print="'#threeFunc'" size="small">打印</el-button> | ||||
|  |       <el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> | ||||
|  |     </div> | ||||
|  |     <div id="threeFunc" style="width: 840px;padding-right: 8px"> | ||||
|  |       <p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> | ||||
|  |         眼科激光手术患者知情同意书 | ||||
|  |       </p> | ||||
|  |       <!--患者信息--> | ||||
|  |       <div> | ||||
|  |         <div class="flex"> | ||||
|  |           <div class="flex a-c item">姓名:<el-input v-model="patient.patientName" style="flex: 1" /></div> | ||||
|  |           <div class="flex a-c item">年龄:<el-input v-model="patient.age" style="flex: 1" />岁</div> | ||||
|  |           <div class="flex a-c item">性别:<el-input v-model="patient.sex" style="flex: 1" /></div> | ||||
|  |           <div class="flex a-c item">病例号:<el-input v-model="patient.caseNo" style="flex: 1" /></div> | ||||
|  |         </div> | ||||
|  |         <div class="flex"> | ||||
|  |           <div class="flex a-c">联系电话:<el-input v-model="patient.phone" style="flex: 1" /></div> | ||||
|  |           <div class="flex a-c item">家庭住址:<el-input v-model="patient.address" style="flex: 1" /></div> | ||||
|  |         </div> | ||||
|  |         <div class="flex a-c item">诊断:<el-input v-model="patient.diagnose" style="flex: 1" /></div> | ||||
|  |       </div> | ||||
|  |       <!--      治疗前--> | ||||
|  |       <div class="subTitle">治疗前</div> | ||||
|  |       <table class="treatAction"> | ||||
|  |         <thead> | ||||
|  |           <tr> | ||||
|  |             <th colspan="2">OD</th> | ||||
|  |             <th colspan="2">OS</th> | ||||
|  |           </tr> | ||||
|  |         </thead> | ||||
|  |         <tbody> | ||||
|  |           <tr> | ||||
|  |             <td> | ||||
|  |               <div class="flex a-c">{{ beforeTreat.OD.eye.name }}:<el-input v-model="beforeTreat.OD.eye.level" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">{{ beforeTreat.OD.illness.name }}:<el-input v-model="beforeTreat.OD.illness.desc" style="flex: 1" /></div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="descImg">示意图</div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="flex a-c">{{ beforeTreat.OS.eye.name }}:<el-input v-model="beforeTreat.OS.eye.level" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">{{ beforeTreat.OS.illness.name }}:<el-input v-model="beforeTreat.OS.illness.desc" style="flex: 1" /></div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="descImg">示意图</div> | ||||
|  |             </td> | ||||
|  |           </tr> | ||||
|  |         </tbody> | ||||
|  |       </table> | ||||
|  |       <!--      激光治疗--> | ||||
|  |       <div class="subTitle">激光治疗</div> | ||||
|  |       <table class="treatAction"> | ||||
|  |         <thead> | ||||
|  |           <tr> | ||||
|  |             <th colspan="2">OD</th> | ||||
|  |             <th colspan="2">OS</th> | ||||
|  |           </tr> | ||||
|  |         </thead> | ||||
|  |         <tbody> | ||||
|  |           <tr v-for="(item,index) in treatData" :key="index"> | ||||
|  |             <td> | ||||
|  |               <div class="flex a-c">日期:<el-input v-model="item.OD.data" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">次数:<el-input v-model="item.OD.order" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">视力:<el-input v-model="item.OD.vision" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">光斑大小:<el-input v-model="item.OD.flareSize" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">功率:<el-input v-model="item.OD.power" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">点数:<el-input v-model="item.OD.count" style="flex: 1" /></div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="descImg">示意图</div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="flex a-c">日期:<el-input v-model="item.OS.data" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">次数:<el-input v-model="item.OS.order" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">视力:<el-input v-model="item.OS.vision" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">光斑大小:<el-input v-model="item.OS.flareSize" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">功率:<el-input v-model="item.OS.power" style="flex: 1" /></div> | ||||
|  |               <div class="flex a-c">点数:<el-input v-model="item.OS.count" style="flex: 1" /></div> | ||||
|  |             </td> | ||||
|  |             <td> | ||||
|  |               <div class="descImg">示意图</div> | ||||
|  |             </td> | ||||
|  |           </tr> | ||||
|  |         </tbody> | ||||
|  |       </table> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | export default { | ||||
|  |   name: 'LaserSurgery', | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       // 患者信息 | ||||
|  |       patient: { | ||||
|  |         patientName: '', | ||||
|  |         age: '', | ||||
|  |         sex: '', | ||||
|  |         caseNo: '', | ||||
|  |         phone: '', | ||||
|  |         address: '', | ||||
|  |         diagnose: '' | ||||
|  |       }, | ||||
|  |       beforeTreat: { | ||||
|  |         OD: { | ||||
|  |           eye: { | ||||
|  |             name: '视力1', | ||||
|  |             level: '' | ||||
|  |           }, | ||||
|  |           illness: { | ||||
|  |             name: '疾病分期', | ||||
|  |             desc: '' | ||||
|  |           } | ||||
|  |         }, | ||||
|  |         OS: { | ||||
|  |           eye: { | ||||
|  |             name: '视力2', | ||||
|  |             level: '' | ||||
|  |           }, | ||||
|  |           illness: { | ||||
|  |             name: '疾病分期', | ||||
|  |             desc: '' | ||||
|  |           } | ||||
|  |         } | ||||
|  |       }, | ||||
|  |       treatData: [ | ||||
|  |         { | ||||
|  |           OD: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           }, | ||||
|  |           OS: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           } | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           OD: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           }, | ||||
|  |           OS: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           } | ||||
|  |         }, | ||||
|  |         { | ||||
|  |           OD: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           }, | ||||
|  |           OS: { | ||||
|  |             date: '', | ||||
|  |             order: '', | ||||
|  |             vision: '', | ||||
|  |             flareSize: '', | ||||
|  |             power: '', | ||||
|  |             count: '' | ||||
|  |           } | ||||
|  |         } | ||||
|  |       ] | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     handleSaveTable() { | ||||
|  |       const data = { | ||||
|  |         treat: this.treatData, | ||||
|  |         beforeTreat: this.beforeTreat | ||||
|  |       } | ||||
|  |       // console.log(data) | ||||
|  |       this.$emit('save', data) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | 
 | ||||
|  | <style lang="scss" scoped> | ||||
|  | .flex{ | ||||
|  |   display: flex; | ||||
|  | } | ||||
|  | .a-c{ | ||||
|  |   align-items: center; | ||||
|  | } | ||||
|  | .item{ | ||||
|  |   flex: 1; | ||||
|  |   &:not(:last-child){ | ||||
|  |     margin-right: 15px; | ||||
|  |   } | ||||
|  | } | ||||
|  | .subTitle{ | ||||
|  |   text-align: center; | ||||
|  |   font-size: 16px; | ||||
|  |   font-weight: 500; | ||||
|  |   margin-top: 30px; | ||||
|  | } | ||||
|  | .descImg{ | ||||
|  |   font-size: 12px; | ||||
|  |   height: 140px; | ||||
|  | } | ||||
|  | .treatAction{ | ||||
|  |   width: 100%; | ||||
|  |   tr td,tr th{ | ||||
|  |     border: 1px solid #ccc; | ||||
|  |     padding: 5px; | ||||
|  |   } | ||||
|  |   td{ | ||||
|  |     width: 25%; | ||||
|  |   } | ||||
|  | } | ||||
|  | .btnBox{ | ||||
|  |   display: flex; | ||||
|  |   justify-content: flex-end; | ||||
|  | } | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border: none; | ||||
|  |   height: 26px !important; | ||||
|  |   line-height: 26px !important; | ||||
|  |   text-align: center; | ||||
|  | } | ||||
|  | 
 | ||||
|  | ::v-deep .el-input__inner { | ||||
|  |   border-bottom: 1px solid #ccc; | ||||
|  |   border-radius: 0; | ||||
|  |   padding: 0; | ||||
|  | } | ||||
|  | ::v-deep .el-input__prefix { | ||||
|  |   display: none; | ||||
|  | } | ||||
|  | </style> | ||||
					Loading…
					
					
				
		Reference in new issue