6 changed files with 474 additions and 265 deletions
			
			
		| @ -0,0 +1,48 @@ | |||||
|  | <template> | ||||
|  |   <div class="notice-book"> | ||||
|  |     <el-tabs v-model="activeName" @tab-click="tabClick"> | ||||
|  |       <el-tab-pane label="角膜塑形镜" name="first"> | ||||
|  |         <notice-book :patient-id="patientId" /> | ||||
|  |       </el-tab-pane> | ||||
|  |       <el-tab-pane label="RGP 知情同意书" name="second"> | ||||
|  |       </el-tab-pane> | ||||
|  |     </el-tabs> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | <script> | ||||
|  | import noticeBook from './notice-book' // 告知书 | ||||
|  | 
 | ||||
|  | export default { | ||||
|  |   components: { | ||||
|  |     noticeBook, | ||||
|  |   }, | ||||
|  |   props: { | ||||
|  |     patientId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       activeName: 'first', | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     this.getNoticeName() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     tabClick() { | ||||
|  | 
 | ||||
|  |     }, | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .notice-book { | ||||
|  |   width: 100%; | ||||
|  |   height: 100%; | ||||
|  | 
 | ||||
|  | } | ||||
|  | </style> | ||||
| @ -0,0 +1,356 @@ | |||||
|  | <template> | ||||
|  |   <div class="notice-book"> | ||||
|  |     <!-- 告知书头部 --> | ||||
|  |     <head-template head-left=""> | ||||
|  |       <el-button type="primary" size="small" @click="saveEditNotice()">保存</el-button> | ||||
|  |       <el-button v-print="'#noticePrint'" size="small">打印</el-button> | ||||
|  |     </head-template> | ||||
|  |     <div id="noticePrint" class="notice-content"> | ||||
|  |       <div class="notice-box"> | ||||
|  |         <div id="notice-three" class="notice_tip" style="page-break-after:always"> | ||||
|  |           <h3 style="text-align: center;margin-bottom: 32px;"> | ||||
|  |             角膜塑形镜矫正知情同意书 | ||||
|  |           </h3> | ||||
|  |           <p>为使患者详细了解RGP 矫正近视的特点、 使用方法和相关注意事项,医院必须向患者说明以下内容:</p> | ||||
|  |           <p style="font-weight: bold">一、适应症:</p> | ||||
|  |           <p>1.希望利用 RGP 来控制近视不断加深的青少年近视患者(离焦 RGP);</p> | ||||
|  |           <p>2.近视,远视,散光,屈光参差;其中高度近视, 远视和散光可优先虑选择;</p> | ||||
|  |           <p>3.圆锥角膜及角膜瘢痕所致的高度近视不规则散光;</p> | ||||
|  |           <p> | ||||
|  |             4.眼外伤,手术后无晶状体眼; | ||||
|  |           </p>  | ||||
|  |           <p> | ||||
|  |             5.角膜屈光手术或角膜移植手术后屈光异常; | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             6.青少年近视快速进展者(离焦RGP)。 | ||||
|  |           </p> | ||||
|  |           <p style="font-weight: bold">二、禁忌症:</p> | ||||
|  |           <p> | ||||
|  |             RGP有如下常见禁忌症, 医院及配戴者需谨慎排除: | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             1.眼表活动性疾患或影响接触镜的全身性疾病等所有接触镜禁忌症。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             6.<span style="color: red">关于0K镜破碎的优惠条款:</span>配戴者需将<span style="color: red">原包装及完整的碎片(镜片上要有完整编码)</span>交还验配单位后方可享受以下优惠:自镜片交付日算起<span style="font-weight: bold">30</span>天内,可享受<span style="color: red">免费</span>换片一次<span style="color: red">(已享受免费换片的新片,如再次破碎,无法再免费换片);</span><span style="font-weight: bold">31天~90天内</span>破碎,<span style="color: red">按原价的半价</span>补片。如镜片丢失、碎片无完整编码、粉碎性损坏、无法交还原镜片及包装、碎片缺少部分大于1/4整片等,验配单位不提供免费换片。<span style="color: red">患者收到取镜通知,30天内未取镜,则视为自动放弃该项优惠。</span> | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             7.自镜片交付日算起90天内,按要求复查的配戴者,如果出现适配不理想的情况,经验配单位鉴定需调整镜片设计参数重新订片的,配戴者无需承担二次配镜的镜片购买费用;如经验配单位鉴定无法消除且必须终止矫正的,在配戴者退回完好无损的镜片和原包装后,双方共同承担损失,验配机构返还配戴者镜片费用<span style="font-weight: bold">百分之五十</span>的款项; | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             8.配戴者在<span style="color: red">订单已发出或取镜后30天内</span>要求退片的,在配戴者交回完好的原镜片及原包装,将退还配戴者镜片费用<span style="color: red">百分之五十</span>的款项;超过30天,一律视为配戴者已主动放弃退片权利,验配单位有权不受理退片申请。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             9.体检的配戴者镜片一旦订片概不受理退片。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             10.验配单位对配戴角膜塑形镜的人员进行试戴评估,以便评估配戴者是否适合配戴角膜塑形镜。但是,鉴于个体条件的差异性、使用习惯、卫生条件以及其他外部环境的影响,上述评估效果仅在试戴时确定配戴者是否适合配戴,并非确定配戴以后任何时期是否适合配戴的有效依据,因此,验配单位无法保证正式配戴过程中不出现排异性、不适配或其他不良反应。 | ||||
|  |           <p> | ||||
|  |             11.镜片常规使用寿命为<span style="color: red">1年~1.5年。</span>夜间常规配戴时间<span style="color: red">7-10小时,不超过12小时。</span> | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             12.常规复查时间:<span style="color: red">复查都要挂号,到1楼或2楼眼视光中心</span> 进行复查:<span style="color: red">到片取镜时学习摘戴方法(不用挂号),戴镜后的第1天早上复查(起床不摘镜)、第1周、第1个月必须按期复查,若无特殊情况,以后每3个月至少复查一次;</span>严格遵守医嘱,按时复查,这是保障角膜塑形术疗效及规避相关问题的前提;否则,验配单位具有免责权利。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             13.配戴初期出现轻微的眼刺激症状或异物感,一过性的结膜充血或轻微的视物叠影,晨起后分泌物稍增多,摘镜后眼睛轻度干涩等均为正常现象,随着矫正期的延续会逐渐缓解或消失。<span style="color: red">戴镜期间如果感冒、发烧,或出现持续性眼红、眼痛、畏光、流泪等症状,必须先停戴,然后及时到医院就诊,</span>并遵循医师处理。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             14.为保证矫正的安全有效及镜片的使用寿命,须使用和镜片性能相配套的护理产品和附件,若擅自使用未经验配单位认可的物品接触镜片导致的意外事件或不良反应,由配戴者自行负责。 | ||||
|  |           </p> | ||||
|  |           <p> | ||||
|  |             15.矫正期间,若发现发生与配戴角膜塑形镜无关的眼疾或其他疾病,并因此导致终止矫正,配戴者应自己承担全部责任。 | ||||
|  |           </p> | ||||
|  |           <div style="margin-top: 30px"> | ||||
|  |             <div style="position: relative"> | ||||
|  |               <span style="margin-right: 8px;vertical-align: middle;">是否已阅读<span style="font-weight: bold">此页告知书</span>,并同意配戴<span style="font-weight: bold">角膜塑形镜(OK镜)</span></span> | ||||
|  |               <span v-if="isCkeck" style="display:inline-block;width: 16px;height: 16px;border: solid 1px #ccc;border-radius: 50%;position: absolute;top: 5px" @click="selectRadio('1')" /> | ||||
|  |               <img v-else style="position: absolute;top: 5px" :src="require('@/assets/img/radio.png')" alt=""> | ||||
|  |               <span style="margin: 0 16px 0 24px;vertical-align: middle">是</span> | ||||
|  |               <span v-if="!isCkeck" style="display:inline-block;width: 16px;height: 16px;border: solid 1px #ccc;border-radius: 50%;position: absolute;top: 5px" @click="selectRadio('2')" /> | ||||
|  |               <img v-else style="position: absolute;top: 5px" :src="require('@/assets/img/radio.png')" alt=""> | ||||
|  |               <span style="margin-left: 24px;vertical-align: middle">否</span> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  |           <div style="width: 100%;display: flex;justify-content: space-around;margin-top: 35px;"> | ||||
|  |             <div @click="signClick(1)"> | ||||
|  |               <span>医生/验光师:</span> | ||||
|  |               <img v-if="optomFlag" :src="require('@/assets/img/signature.png')" alt=""> | ||||
|  |               <img v-else style="width: 80px;height: 40px;" :src="doctorSign"> | ||||
|  |             </div> | ||||
|  |             <div @click="signClick(2)"> | ||||
|  |               <span>配戴者:</span> | ||||
|  |               <img v-if="wearerFlag" :src="require('@/assets/img/signature.png')" alt=""> | ||||
|  |               <img v-else style="width: 80px;height: 40px;" :src="patientSign"> | ||||
|  |             </div> | ||||
|  |             <div @click="signClick(3)"> | ||||
|  |               <span>监护人:</span> | ||||
|  |               <img v-if="guardianFlag" :src="require('@/assets/img/signature.png')" alt=""> | ||||
|  |               <img v-else style="width: 80px;height: 40px;" :src="guardianSign"> | ||||
|  |             </div> | ||||
|  |           </div> | ||||
|  |         </div> | ||||
|  |       </div> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | <script> | ||||
|  | import headTemplate from '@/components/head' | ||||
|  | export default { | ||||
|  |   components: { | ||||
|  |     headTemplate | ||||
|  |   }, | ||||
|  |   props: { | ||||
|  |     patientId: { | ||||
|  |       type: String, | ||||
|  |       default: '' | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   data() { | ||||
|  |     return { | ||||
|  |       isCkeck: false, | ||||
|  |       isNew: '', | ||||
|  |       noticeData: {}, | ||||
|  |       isAgree: '1' // 1是 2否 | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     optomFlag: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.optomFlag | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     wearerFlag: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.wearerFlag | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     guardianFlag: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.guardianFlag | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     readFlag: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.readFlag | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     wearerOrGuardianFlag: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.wearerOrGuardianFlag | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     doctorSign: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.doctorSign | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     patientSign: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.patientSign | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     guardianSign: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.guardianSign | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     readerSign: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.readerSign | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     wearerOrGuardianSign: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.wearerOrGuardianSign | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     doctorSignDate: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.doctorSignDate | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |     wearerOrGuardianSignDate: { | ||||
|  |       get() { | ||||
|  |         return this.$store.getters.wearerOrGuardianSignDate | ||||
|  |       }, | ||||
|  |       set(val) { | ||||
|  | 
 | ||||
|  |       } | ||||
|  |     }, | ||||
|  |   }, | ||||
|  |   created() { | ||||
|  |   }, | ||||
|  |   mounted() { | ||||
|  |     this.getNoticeName() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     selectRadio(index) { | ||||
|  |       this.isCkeck = !this.isCkeck | ||||
|  |       this.isAgree = index | ||||
|  |     }, | ||||
|  |     signClick(index) { | ||||
|  |       this.$store.commit('beginSign', index) | ||||
|  |     }, | ||||
|  |     handlePrint() { | ||||
|  |       this.printPage('notice-one') | ||||
|  |       this.printPage('notice-two') | ||||
|  |     }, | ||||
|  |     // 获取告知书签名 | ||||
|  |     getNoticeName() { | ||||
|  |       const params = { | ||||
|  |         patientId: this.patientId, | ||||
|  |       } | ||||
|  |       this.$http.get('/hospital/notice/getNoticeSign', { params: params }).then(({ data: res }) => { | ||||
|  |         if (res.code !== 0) { | ||||
|  |           return this.$message.error(res.msg) | ||||
|  |         } | ||||
|  |         if (res.data) { | ||||
|  |           this.noticeData = res.data | ||||
|  |           this.isAgree = res.data.isAgree | ||||
|  |           this.isNew = res.data.isNew | ||||
|  |           this.isCkeck = this.isAgree === '2' | ||||
|  |           this.$store.commit('optomFlag', !res.data.doctorSign) | ||||
|  |           this.$store.commit('wearerFlag', !res.data.patientSign) | ||||
|  |           this.$store.commit('guardianFlag', !res.data.guardianSign) | ||||
|  |           this.$store.commit('readFlag', !res.data.readerSign) | ||||
|  |           this.$store.commit('wearerOrGuardianFlag', !res.data.wearerOrGuardianSign) | ||||
|  |           this.$store.commit('doctorSign', res.data.doctorSign) | ||||
|  |           this.$store.commit('patientSign', res.data.patientSign) | ||||
|  |           this.$store.commit('guardianSign', res.data.guardianSign) | ||||
|  |           this.$store.commit('readerSign', res.data.readerSign) | ||||
|  |           this.$store.commit('wearerOrGuardianSign', res.data.wearerOrGuardianSign) | ||||
|  |           this.$store.commit('doctorSignDate', res.data.doctorSignDate) | ||||
|  |           this.$store.commit('wearerOrGuardianSignDate', res.data.wearerOrGuardianSignDate) | ||||
|  |         } else { | ||||
|  |           this.isAgree = '1' | ||||
|  |           this.isNew = 3 | ||||
|  |           this.isCkeck = false | ||||
|  |           this.$store.commit('optomFlag', true) | ||||
|  |           this.$store.commit('wearerFlag', true) | ||||
|  |           this.$store.commit('guardianFlag', true) | ||||
|  |           this.$store.commit('readFlag', true) | ||||
|  |           this.$store.commit('wearerOrGuardianFlag', true) | ||||
|  |           this.$store.commit('doctorSign', '') | ||||
|  |           this.$store.commit('patientSign', '') | ||||
|  |           this.$store.commit('guardianSign', '') | ||||
|  |           this.$store.commit('readerSign', '') | ||||
|  |           this.$store.commit('wearerOrGuardianSign', '') | ||||
|  |           this.$store.commit('doctorSignDate', '') | ||||
|  |           this.$store.commit('wearerOrGuardianSignDate', '') | ||||
|  |         } | ||||
|  |       }).catch(() => {}) | ||||
|  |     }, | ||||
|  |     // 保存、修改告知书 | ||||
|  |     saveEditNotice() { | ||||
|  |       const params = { | ||||
|  |         isNew: 3, | ||||
|  |         patientId: this.patientId, | ||||
|  |         drgsName: window.localStorage.getItem('identity'), | ||||
|  |         doctorSign: this.doctorSign, | ||||
|  |         guardianSign: this.guardianSign, | ||||
|  |         patientSign: this.patientSign, | ||||
|  |         readerSign: this.readerSign, | ||||
|  |         wearerOrGuardianSign: this.wearerOrGuardianSign, | ||||
|  |         doctorSignDate: this.doctorSignDate, | ||||
|  |         wearerOrGuardianSignDate: this.wearerOrGuardianSignDate, | ||||
|  |         isAgree: this.isAgree | ||||
|  |       } | ||||
|  |       this.$http.post('/hospital/notice', params).then(({ data: res }) => { | ||||
|  |         if (res.code !== 0) { | ||||
|  |           return this.$message.error(res.msg) | ||||
|  |         } else { | ||||
|  |           this.$message.success('保存成功!') | ||||
|  |           this.getNoticeName() | ||||
|  |         } | ||||
|  |       }).catch(() => {}) | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
|  | <style lang="scss" scoped> | ||||
|  | .notice-book { | ||||
|  |   width: 100%; | ||||
|  |   height: 100%; | ||||
|  |   display:flex; | ||||
|  |   flex-direction: column; | ||||
|  |   .notice-content{ | ||||
|  |     width: 100%; | ||||
|  |     flex:1; | ||||
|  |     overflow-y: auto; | ||||
|  | 
 | ||||
|  |     .notice-box{ | ||||
|  |       width: 100%; | ||||
|  |       height: 100%; | ||||
|  |       display: flex; | ||||
|  |       justify-content: space-between; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     .notice_tip{ | ||||
|  |       width: 100%; | ||||
|  |       height: fit-content; | ||||
|  |       border: 1px solid #000; | ||||
|  |       padding: 64px 32px; | ||||
|  |       margin-right: 16px; | ||||
|  | 
 | ||||
|  |       .title{ | ||||
|  |         text-align: center; | ||||
|  |         margin-bottom: 32px; | ||||
|  |       } | ||||
|  | 
 | ||||
|  |       p{ | ||||
|  |         font-size: 14px; | ||||
|  |       } | ||||
|  |       .signature{ | ||||
|  |         width: 100%; | ||||
|  |         display: flex; | ||||
|  |         justify-content: space-around; | ||||
|  |         margin-top: 35px; | ||||
|  |       } | ||||
|  |       .read{ | ||||
|  |         margin-top: 32px; | ||||
|  |       } | ||||
|  |       .read_18{ | ||||
|  |         font-size: 18px; | ||||
|  |       } | ||||
|  |       .radios{ | ||||
|  |         margin-right: 8px; | ||||
|  |         vertical-align: middle; | ||||
|  |       } | ||||
|  |     } | ||||
|  |   } | ||||
|  | } | ||||
|  | </style> | ||||
					Loading…
					
					
				
		Reference in new issue