7 changed files with 1147 additions and 9 deletions
			
			
		| @ -0,0 +1,167 @@ | |||
| <template> | |||
|   <el-dialog | |||
|     class="HIS-dialog" | |||
|     :visible.sync="visible" | |||
|     width="60%" | |||
|     title="HIS查询" | |||
|   > | |||
|     <el-form ref="dataFormHis" :inline="true" :model="dataFormHis" class="demo-form-inline" :rules="dataRule" @keyup.enter.native="findHandle(2)"> | |||
|       <el-form-item prop="patientId"> | |||
|         <el-input v-model="dataFormHis.patientId" placeholder="请输入登记号" clearable /> | |||
|       </el-form-item> | |||
|       <el-form-item prop="patientName"> | |||
|         <el-input v-model="dataFormHis.patientName" placeholder="请输入姓名" clearable /> | |||
|       </el-form-item> | |||
|       <el-form-item prop="patientIdNumber"> | |||
|         <el-input v-model="dataFormHis.patientIdNumber" placeholder="请输入身份证号" clearable /> | |||
|       </el-form-item> | |||
|       <el-col :span="6"> | |||
|         <el-form-item> | |||
|           <el-button type="primary" @click="findHandle(2)">查询</el-button> | |||
|           <el-button @click="visible = !visible">取消</el-button> | |||
|         </el-form-item> | |||
|       </el-col> | |||
|     </el-form> | |||
|     <el-table v-loading="loading" :data="tableData" style="margin-bottom: 32px" height="500"> | |||
|       <template slot="empty"> | |||
|         <span style="color: #969799;">{{ tableText }}</span> | |||
|       </template> | |||
|       <el-table-column property="patientId" label="登记号" /> | |||
|       <el-table-column property="patientName" label="患者姓名" /> | |||
|       <el-table-column property="patientIdNumber" label="身份证号" /> | |||
|       <el-table-column property="patientPhone" label="联系电话" /> | |||
|       <el-table-column property="zlProject" label="医疗项目" width="140" /> | |||
|       <el-table-column property="remark" label="备注" width="140" /> | |||
|       <!--      <el-table-column property="patientAddress" label="家庭地址" />--> | |||
|       <el-table-column label="操作" width="80"> | |||
|         <template slot-scope="scope"> | |||
|           <p class="introduce" @click="introduceHandle(scope.row)">引入</p> | |||
|         </template> | |||
|       </el-table-column> | |||
|     </el-table> | |||
|   </el-dialog> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| export default { | |||
|   data() { | |||
|     return { | |||
|       visible: false, | |||
|       dataFormHis: { | |||
|         patientId: '', | |||
|         patientName: '', | |||
|         patientIdNumber: '' | |||
|       }, | |||
|       dataForm: {}, | |||
|       tableData: [], | |||
|       tableText: '请查询所需数据', | |||
|       loading: false | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule() { | |||
|       return { | |||
|         patientId: [ | |||
|           { message: '请输入登记号', trigger: 'blur' } | |||
|         ], | |||
|         patientName: [ | |||
|           { message: '请输入姓名', trigger: 'blur' } | |||
|         ], | |||
|         patientIdNumber: [ | |||
|           { message: '请输入身份证号', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     } | |||
|   }, | |||
|   methods: { | |||
|     init() { | |||
|       this.visible = true | |||
|       this.$nextTick(() => { | |||
|         this.tableText = '请查询所需数据' | |||
|         this.$refs.dataFormHis.resetFields() // 重置表单 | |||
|         this.tableData = [] | |||
|       }) | |||
|     }, | |||
|     // His查询按钮 | |||
|     async findHandle(flag) { | |||
|       if (flag === 2 && !this.dataFormHis.patientId && !this.dataFormHis.patientName && !this.dataFormHis.patientIdNumber) { | |||
|         return this.$message.error('搜索内容不能为空') | |||
|       } | |||
|       this.loading = true | |||
|       const { data: res } = await this.$http.get('/patient/getHisPatient', { | |||
|         params: this.dataFormHis | |||
|       }) | |||
|       if (res.code === 0) { | |||
|         this.loading = false | |||
|         this.tableData = res.data | |||
|         if (res.data.length <= 0 && flag === 2) { | |||
|           this.tableText = '查询成功,未查询到相关数据' | |||
|         } else if (res.data.length <= 0 && flag === 1) { | |||
|           this.tableText = '请查询所需数据' | |||
|         } | |||
|       } else { | |||
|         this.loading = false | |||
|         this.tableText = res.msg | |||
|         this.$message.error(res.msg) | |||
|       } | |||
|     }, | |||
|     // 点击引入按钮 | |||
|     async introduceHandle(scopwRow) { | |||
|       this.dataFormHis.patientId = scopwRow.patientId | |||
|       this.dataFormHis.patientName = scopwRow.patientName | |||
|       this.visible = false | |||
|       // this.$parent.addOrUpdateHandle('', scopwRow, 'HIS引入') | |||
|       await this.doLeadIn() | |||
|     }, | |||
|     async doLeadIn() { | |||
|       this.loading = true | |||
|       const { data: res } = await this.$http.get('/lenses/doLeadIn', { | |||
|         params: this.dataFormHis | |||
|       }) | |||
|       if (res.code === 0) { | |||
|         this.loading = false | |||
|         this.$parent.getDataListInitial() | |||
|       } else { | |||
|         this.loading = false | |||
|         this.$message.error(res.msg) | |||
|       } | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .HIS-dialog { | |||
|   box-sizing: border-box; | |||
|   .cycle-display { | |||
|     .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
|     .el-input-number { | |||
|       width: 100px; | |||
|       margin-right: 16px; | |||
|     } | |||
|   } | |||
|   .introduce { | |||
|     color: #1F78FF; | |||
|     cursor: pointer; | |||
|   } | |||
| } | |||
| 
 | |||
| </style> | |||
| <style lang="scss"> | |||
| .HIS-dialog { | |||
| .el-form { | |||
|   display: flex; | |||
| } | |||
|   .el-dialog__header { | |||
|     margin-bottom:12px | |||
|   } | |||
|     .el-dialog__body { | |||
|         padding-right: 30px; | |||
|     } | |||
|     .formItemOne .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
| 
 | |||
| } | |||
| </style> | |||
| @ -0,0 +1,113 @@ | |||
| <template> | |||
|   <el-dialog | |||
|     class="patientDialog" | |||
|     :visible.sync="visible" | |||
|     width="30%" | |||
|     title="修改身份证" | |||
|     @close="closedDialog" | |||
|   > | |||
|     <el-form ref="dataForm" :model="dataForm" :rules="dataRule"> | |||
|       <el-form-item label="身份证号:" label-width="90px" prop="newIdNumber" class="formItemOne"> | |||
|         <el-input v-model="dataForm.newIdNumber" placeholder="请输入患者身份证号" /> | |||
|       </el-form-item> | |||
|     </el-form> | |||
|     <template slot="footer"> | |||
|       <el-button @click="visible = false">{{ $t('cancel') }}</el-button> | |||
|       <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> | |||
|     </template> | |||
|   </el-dialog> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import debounce from 'lodash/debounce' | |||
| export default { | |||
|   props: { | |||
|     patientTypeList: { | |||
|       type: Array, | |||
|       default: () => [] | |||
|     } | |||
|   }, | |||
|   data() { | |||
|     return { | |||
|       visible: false, | |||
|       dataForm: { | |||
|         newIdNumber: '', | |||
|         oldIdNumber: '', | |||
|         drgsName: window.localStorage.getItem('identity') | |||
|       } | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule() { | |||
|       return { | |||
|         newIdNumber: [ | |||
|           { required: true, message: '请输入身份证号', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     } | |||
|   }, | |||
|   methods: { | |||
|     init() { | |||
|       this.visible = true | |||
|       this.$nextTick(() => { | |||
|         this.$refs.dataForm.resetFields() // 重置表单 | |||
|       }) | |||
|     }, | |||
|     // 表单提交 | |||
|     dataFormSubmitHandle: debounce(function() { | |||
|       this.$refs.dataForm.validate((valid) => { | |||
|         if (!valid) { | |||
|           return false | |||
|         } | |||
|         this.$http.post('/pat/Manage/updateIdNumber', this.dataForm).then(({ data: res }) => { | |||
|           if (res.code !== 0) { | |||
|             return this.$message.error(res.msg) | |||
|           } | |||
|           this.$message({ | |||
|             message: this.$t('prompt.success'), | |||
|             type: 'success', | |||
|             duration: 500, | |||
|             onClose: () => { | |||
|               this.visible = false | |||
|               this.$emit('refreshDataList') | |||
|             } | |||
|           }) | |||
|         }).catch(() => {}) | |||
|       }) | |||
|     }, 1000, { leading: true, trailing: false }), | |||
| 
 | |||
|     // 关闭dialog | |||
|     closedDialog() { | |||
|       this.$emit('editPatidVisible') | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .patientDialog { | |||
|   .cycle-display { | |||
|     .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
|     .el-input-number { | |||
|       width: 100px; | |||
|       margin-right: 16px; | |||
|     } | |||
|   } | |||
| } | |||
| 
 | |||
| </style> | |||
| <style lang="scss"> | |||
| .patientDialog { | |||
|   .el-dialog__header { | |||
|     margin-bottom:12px | |||
|   } | |||
|     .el-dialog__body { | |||
|         padding-right: 30px; | |||
|     } | |||
|     .formItemOne .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
| 
 | |||
| } | |||
| </style> | |||
| @ -0,0 +1,233 @@ | |||
| <template> | |||
|   <div class="patient-info"> | |||
|     <template> | |||
|       <div v-if="!detailViewVisible"> | |||
|         <div class="patient-info-head"> | |||
|           <el-form :inline="true" :model="dataForm" class="demo-form-inline" @keyup.enter.native="getDataListInitial()"> | |||
|             <el-form-item label="登记号:"> | |||
|               <el-input v-model="dataForm.patientId" size="small" clearable placeholder="登记号" @clear="getDataListInitial()" /> | |||
|             </el-form-item> | |||
|             <el-form-item label="患者姓名:"> | |||
|               <el-input v-model="dataForm.patientName" placeholder="患者姓名" size="small" clearable @clear="getDataListInitial()" /> | |||
|             </el-form-item> | |||
|             <el-form-item label="身份证:"> | |||
|               <el-input v-model="dataForm.patientIdNumber" size="small" clearable placeholder="身份证" @clear="getDataListInitial()" /> | |||
|             </el-form-item> | |||
|             <el-form-item prop="dateRange" label="就诊时间" class="form-item-date"> | |||
|               <el-date-picker | |||
|                 v-model="nextVisitTime" | |||
|                 size="small" | |||
|                 type="daterange" | |||
|                 range-separator="-" | |||
|                 start-placeholder="开始日期" | |||
|                 end-placeholder="结束日期" | |||
|                 value-format="yyyy-MM-dd" | |||
|                 @change="dateChange" | |||
|               /> | |||
|             </el-form-item> | |||
|             <el-form-item style="flex:1"> | |||
|               <el-button type="primary" icon="el-icon-search" size="small" @click="getDataListInitial()">查询</el-button> | |||
|             </el-form-item> | |||
|           </el-form> | |||
|         </div> | |||
|         <div style="display: flex;justify-content: flex-end;background-color: white;padding: 16px 16px 0"> | |||
|           <div> | |||
|             <el-button type="primary" size="small" @click="HISHandle"> | |||
|               <svg-icon icon-class="icon-HIS-up" style="font-size:12px;" /> | |||
|               <span style="padding-left:5px;vertical-align: middle;">HIS引入</span> | |||
|             </el-button> | |||
|           </div> | |||
|         </div> | |||
|         <div class="patient-info-content"> | |||
|           <el-table | |||
|             ref="multipleTable" | |||
|             :data="dataList" | |||
|             tooltip-effect="dark" | |||
|             style="width: 100%" | |||
|             @sort-change="dataListSortChangeHandle" | |||
|           > | |||
|             <el-table-column prop="patientId" label="登记号 " header-align="center" align="center" /> | |||
|             <el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" /> | |||
|             <el-table-column prop="patientSex" label="患者性别" header-align="center" align="center" /> | |||
|             <el-table-column label="出生日期" header-align="center" align="center"> | |||
|               <template slot-scope="scope"> | |||
|                 {{ scope.row.patientBirthday ? $options.filters.dateFilterTwo( scope.row.patientBirthday): '- ' }} | |||
|               </template> | |||
|             </el-table-column> | |||
|             <el-table-column prop="operation" label="操作" header-align="center" align="center"> | |||
|               <template slot-scope="scope"> | |||
|                 <span | |||
|                   style="color: #1890ff; padding-right: 8px" | |||
|                   class="operation-details" | |||
|                   @click="browseClick(scope.row)" | |||
|                 >离焦眼镜</span> | |||
|               </template> | |||
|             </el-table-column> | |||
|           </el-table> | |||
|           <el-pagination background layout="total,prev, pager, next" :total="total" :current-page.sync="page" @current-change="pageCurrentChangeHandle" /> | |||
|         </div> | |||
|       </div> | |||
|       <!-- 弹窗, 新增 / 修改 --> | |||
|       <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataListInitial" /> | |||
|       <!-- HIS引入弹框 --> | |||
|       <his-add v-if="HisAddVisible" ref="HisAddRef" /> | |||
|       <out-detail v-if="detailViewVisible" :is-search="'3'" :patient-id="patientId"></out-detail> | |||
|     </template> | |||
|   </div> | |||
| </template> | |||
| <script> | |||
| import checked from '@/mixins/checked' | |||
| import headTemplate from '@/components/head' | |||
| import mixinViewModule from '@/mixins/view-module' | |||
| import AddOrUpdate from './patient-add-or-update' | |||
| import hisAdd from './HIS-add' | |||
| import outDetail from './outDetail' | |||
| export default { | |||
|   components: { | |||
|     headTemplate, | |||
|     AddOrUpdate, | |||
|     outDetail, | |||
|     hisAdd | |||
|   }, | |||
|   mixins: [checked, mixinViewModule], | |||
|   data() { | |||
|     return { | |||
|       mixinViewModuleOptions: { | |||
|         getDataListURL: '/lenses/page', | |||
|         // getDataListURL: '/patient/page', | |||
|         getDataListIsPage: true | |||
|       }, | |||
|       nextVisitTime: [], | |||
|       detailViewVisible: false, | |||
|       HisAddVisible: false, | |||
|       dataForm: { | |||
|         // platform: 3, | |||
|         patientId: '', | |||
|         beginDate: '', | |||
|         endDate: '', | |||
|         // searchType: '0', | |||
|         patientName: '', | |||
|         patientStatus: '', | |||
|         patientIdNumber: '' | |||
|       }, | |||
|       addGroupVisible: false, | |||
|       patientId: '', | |||
|       patientIdNumber: '', | |||
|       detailId: '' | |||
|     } | |||
|   }, | |||
|   created() { | |||
|   }, | |||
|   methods: { | |||
|     reFresh() { | |||
|       this.pageCurrentChangeHandle(this.page) | |||
|     }, | |||
|     // 浏览 | |||
|     browseClick(scopeRow) { | |||
|       this.detailViewVisible = true | |||
|       this.patientId = scopeRow.patientId | |||
|       this.patientIdNumber = scopeRow.patientIdNumber | |||
|       // this.$router.push({ | |||
|       //   path: '/patientInfo', | |||
|       //   query: { | |||
|       //     info: this.$Base64.encode(JSON.stringify({ | |||
|       //       patientIdNumber: scopeRow.patientIdNumber, | |||
|       //       patientId: scopeRow.patientId | |||
|       //     })) | |||
|       //   } | |||
|       // }) | |||
|     }, | |||
|     // 日期改变时 | |||
|     dateChange(e) { | |||
|       this.dataForm.beginDate = e ? e[0] : '' | |||
|       this.dataForm.endDate = e ? e[1] : '' | |||
|       this.getDataListInitial() | |||
|     }, | |||
|     // His引入 | |||
|     HISHandle() { | |||
|       this.HisAddVisible = true | |||
|       this.$nextTick(() => { | |||
|         this.$refs.HisAddRef.init() | |||
|       }) | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .patient-info { | |||
|   width: 100%; | |||
|   height: 100%; | |||
|   .patient-info-head, | |||
|   .patient-info-content { | |||
|     background: #fff; | |||
|     .head { | |||
|       padding-bottom: 10px; | |||
|     } | |||
|   } | |||
|   .patient-info-content { | |||
|     padding: 16px; | |||
|     margin-bottom: 45px; | |||
|   } | |||
|   .patient-info-head { | |||
|     margin-bottom: 16px; | |||
|     padding: 10px 16px; | |||
|   } | |||
|   .operation-delete, | |||
|   .operation-details { | |||
|     cursor: pointer; | |||
|   } | |||
| } | |||
| </style> | |||
| <style lang="scss"> | |||
| .patient-info { | |||
|   .patient-info-head { | |||
|     .el-form { | |||
|       display: flex; | |||
|       justify-content: space-between; | |||
|     } | |||
|     .el-form-item { | |||
|       display: flex; | |||
|     } | |||
|     .el-form-item__label { | |||
|       min-width: 75px; | |||
|     } | |||
|     .el-form-item { | |||
|       margin-bottom: 0; | |||
|       width: 25%; | |||
|     } | |||
|     .el-form-item__content, | |||
|     .el-select, | |||
|     .el-range-editor--small.el-input__inner { | |||
|       width: 100%; | |||
|     } | |||
|     .form-item-date .el-form-item__content { | |||
|         min-width: 180px; | |||
|       } | |||
|   } | |||
|   .el-select { | |||
|     width: 100%; | |||
|   } | |||
|   .detail-view { | |||
|     height: 100%; | |||
|     background: #0c1016; | |||
|     padding: 0; | |||
|   } | |||
|   .detail-view .el-dialog .el-dialog__header > .el-dialog__title{ | |||
|     color: #FFFFFF; | |||
|   } | |||
|   .detail-view .el-dialog > .el-dialog__header{ | |||
|     width: 100%; | |||
|     height: 48px; | |||
|     line-height: 48px; | |||
|     text-align: center; | |||
|     background: linear-gradient(180deg,#0c1016, #2c3543 100%); | |||
|     padding: 0; | |||
|   } | |||
|   .detail-view .el-dialog > .el-dialog__body{ | |||
|     height: calc(100% - 48px); | |||
|     flex: 1; | |||
|     background: #0c1016; | |||
|     padding: 0; | |||
|   } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,328 @@ | |||
| <template> | |||
|   <div class="see-doctor"> | |||
|     <div class="header"> | |||
|       <img :src="require('@/assets/img/back-l.png')" alt="" style="margin-right: 8px;cursor: pointer" @click="backList"> | |||
|       <img :src="require('@/assets/img/boy.png')" alt=""> | |||
|       <p class="head-t"> | |||
|         <span class="head-r">{{ patientInfoObj.patientName }}</span> | |||
|         <span class="head-r">{{ patientInfoObj.patientSex }}</span> | |||
|         <span v-if="patientInfoObj.patientAge" class="head-r">{{ patientInfoObj.patientAge }}岁</span> | |||
|         <img v-if="patientInfoObj.patientId" class="icon-a" :src="require('@/assets/img/pid.png')" alt="" style="margin-right: 6px;vertical-align: text-top"> | |||
|         <span style="vertical-align: text-bottom">{{ patientInfoObj.patientId }}</span> | |||
|       </p> | |||
|       <p class="head-b"> | |||
|         <img v-if="patientInfoObj.patientId" :src="require('@/assets/img/id.png')" alt="" style="margin-right: 6px;vertical-align: middle"> | |||
|         <span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientId }}</span> | |||
|         <img v-if="patientInfoObj.patientPhone" :src="require('@/assets/img/phone.png')" alt="" style="margin-right: 6px;vertical-align: middle"> | |||
|         <span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientPhone }}</span> | |||
|         <img v-if="patientInfoObj.patientAddress" :src="require('@/assets/img/position.png')" alt="" style="margin-right: 6px;vertical-align: middle"> | |||
|         <span style="vertical-align: middle">{{ patientInfoObj.patientAddress }}</span> | |||
|       </p> | |||
|     </div> | |||
|     <div class="see-docto-right"> | |||
|       <el-tabs v-model="activeName" type="card" @tab-click="TabClick"> | |||
|         <el-tab-pane label="初诊" name="1"> | |||
|           <el-table | |||
|             :data="tableData5" | |||
|             :default-expand-all="true" | |||
|             :span-method="objectSpanMethod" | |||
|             style="width: 100%" | |||
|           > | |||
|             <el-table-column | |||
|               label="初诊信息" | |||
|               width="180" | |||
|               prop="id" | |||
|             /> | |||
|             <el-table-column | |||
|               label="眼别" | |||
|               prop="name" | |||
|             /> | |||
|             <el-table-column | |||
|               label="球镜" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="柱镜" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="轴向" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="矫正视力" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="瞳距" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="瞳高" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="眼轴" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="备注" | |||
|               prop="desc" | |||
|             /> | |||
|           </el-table> | |||
|         </el-tab-pane> | |||
|         <el-tab-pane label="复诊" name="2"> | |||
|           <el-table | |||
|             :data="tableData5" | |||
|             :default-expand-all="true" | |||
|             :span-method="objectSecondMethod" | |||
|             style="width: 100%" | |||
|           > | |||
|             <el-table-column | |||
|               label="复诊信息" | |||
|               width="180" | |||
|               prop="id" | |||
|             /> | |||
|             <el-table-column | |||
|               label="眼别" | |||
|               prop="name" | |||
|             /> | |||
|             <el-table-column | |||
|               label="球镜" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="柱镜" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="轴向" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="矫正视力" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="瞳距" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="瞳高" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="眼轴" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="联合光度" | |||
|               prop="desc" | |||
|             /> | |||
|             <el-table-column | |||
|               label="备注" | |||
|               prop="desc" | |||
|             /> | |||
|           </el-table> | |||
|         </el-tab-pane> | |||
|         <el-tab-pane label="眼轴折线图" name="3"> | |||
|         </el-tab-pane> | |||
|       </el-tabs> | |||
|     </div> | |||
|   </div> | |||
| </template> | |||
| <script> | |||
| 
 | |||
| export default { | |||
|   components: { | |||
|   }, | |||
|   props: { | |||
|     patientId: { | |||
|       type: String, | |||
|       default: '' | |||
|     }, | |||
|     onlyRead: { | |||
|       type: Boolean, | |||
|       default: false | |||
|     }, | |||
|     isSearch: { | |||
|       type: String, | |||
|       default: '' | |||
|     } | |||
|   }, | |||
|   data() { | |||
|     return { | |||
|       tableData5: [{ | |||
|         id: '日期:2023.07.03', | |||
|         name: '左眼', | |||
|         category: '江浙小吃', | |||
|         desc: '1.2', | |||
|         address: '上海市', | |||
|         shop: '王小虎', | |||
|         shopId: '10333' | |||
|       }, | |||
|       { | |||
|         id: '日期', | |||
|         name: '右眼', | |||
|         category: '江浙小吃', | |||
|         desc: '1.5', | |||
|         address: '上海市路', | |||
|         shop: '王小虎', | |||
|         shopId: '10333' | |||
|       }], | |||
|       patientInfo: [], | |||
|       patientInfoObj: {}, | |||
|       activeName: '1', | |||
|       pageParams: {} | |||
|     } | |||
|   }, | |||
|   mounted() { | |||
|   }, | |||
|   created() { | |||
|     this.getPatientInfo() | |||
|   }, | |||
|   methods: { | |||
|     backList() { | |||
|       this.$parent.detailViewVisible = false | |||
|       this.$parent.reFresh() | |||
|     }, | |||
|     objectSpanMethod({ row, column, rowIndex, columnIndex }) { | |||
|       if (columnIndex === 0 || columnIndex === 9) { | |||
|         if (rowIndex % 2 === 0) { | |||
|           return { | |||
|             rowspan: 2, | |||
|             colspan: 1 | |||
|           } | |||
|         } else { | |||
|           return { | |||
|             rowspan: 0, | |||
|             colspan: 0 | |||
|           } | |||
|         } | |||
|       } | |||
|     }, | |||
|     objectSecondMethod({ row, column, rowIndex, columnIndex }) { | |||
|       if (columnIndex === 0 || columnIndex === 10) { | |||
|         if (rowIndex % 2 === 0) { | |||
|           return { | |||
|             rowspan: 2, | |||
|             colspan: 1 | |||
|           } | |||
|         } else { | |||
|           return { | |||
|             rowspan: 0, | |||
|             colspan: 0 | |||
|           } | |||
|         } | |||
|       } | |||
|     }, | |||
|     // 获取患者信息 | |||
|     async getPatientInfo() { | |||
|       this.$http.get('/patient/getPatientInfo', { | |||
|         params: { | |||
|           patientId: this.patientId | |||
|         } | |||
|       }).then(({ data: res }) => { | |||
|         if (res.code !== 0) { | |||
|           return this.$message.error(res.msg) | |||
|         } else { | |||
|           this.patientInfoObj = res.data | |||
|         } | |||
|       }).catch(() => {}) | |||
|     }, | |||
|     TabClick(tab, event) { | |||
|       if (tab.name === 'okLensRgp') { | |||
|         this.$refs.okLensRgp.init() | |||
|       } | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .see-doctor { | |||
|   width: 100%; | |||
|   height: 100%; | |||
|   .header{ | |||
|     width: 100%; | |||
|     height: 88px; | |||
|     padding: 8px; | |||
|     position: relative; | |||
|     margin-bottom: 16px; | |||
|     box-sizing: border-box; | |||
|     background: #FFFFFF; | |||
|     border-radius: 4px; | |||
|     .head-t{ | |||
|       position: absolute; | |||
|       left: 155px; | |||
|       top: 20px; | |||
|     } | |||
|     .head-b{ | |||
|       position: absolute; | |||
|       left: 155px; | |||
|       bottom: 20px; | |||
|       font-size: 14px; | |||
|     } | |||
|     .head-r{ | |||
|       margin-right: 16px; | |||
|       font-weight: 500; | |||
|       font-size: 20px; | |||
|       color: rgba(0, 0, 0, 0.88); | |||
|     } | |||
|   } | |||
|   .mr16{ | |||
|     margin-right: 16px; | |||
|   } | |||
|   .see-docto-right{ | |||
|     height: calc( 100vh - 90px - 82px); | |||
|     overflow: hidden; | |||
|   } | |||
| } | |||
| </style> | |||
| 
 | |||
| <style lang="scss"> | |||
| .see-doctor { | |||
|   .el-tabs__nav { | |||
|     z-index:0; | |||
|   } | |||
|   .el-tabs__header { | |||
|     margin: 0; | |||
|   } | |||
|   .el-tabs__nav { | |||
|     background: #fff; | |||
|   } | |||
|   .el-tabs__content { | |||
|     padding: 16px; | |||
|     background: #fff; | |||
|     height: calc( 100vh - 145px - 32px - 42px); | |||
|   } | |||
|   .el-tabs--card>.el-tabs__header .el-tabs__nav { | |||
|   border: 1px solid #f0f0f0; | |||
|   } | |||
|   .el-tab-pane{ | |||
|     height: 100%; | |||
|   } | |||
|   .detail-view { | |||
|     height: 100%; | |||
|     background: #0c1016; | |||
|     padding: 0; | |||
|   } | |||
|   .detail-view .el-dialog .el-dialog__header > .el-dialog__title{ | |||
|     color: #FFFFFF; | |||
|   } | |||
|   .detail-view .el-dialog > .el-dialog__header{ | |||
|     width: 100%; | |||
|     height: 48px; | |||
|     line-height: 48px; | |||
|     text-align: center; | |||
|     background: linear-gradient(180deg,#0c1016, #2c3543 100%); | |||
|     padding: 0; | |||
|   } | |||
|   .detail-view .el-dialog > .el-dialog__body{ | |||
|     height: 100%; | |||
|     flex: 1; | |||
|     background: #0c1016; | |||
|     padding: 0; | |||
|   } | |||
| } | |||
| 
 | |||
| </style> | |||
| @ -0,0 +1,296 @@ | |||
| <template> | |||
|   <el-dialog | |||
|     class="patientDialog" | |||
|     :visible.sync="visible" | |||
|     width="40%" | |||
|     :title="dataForm.title" | |||
|     @close="closeDialog" | |||
|   > | |||
|     <el-form ref="dataForm" :model="dataForm" :rules="dataRule"> | |||
|       <el-form-item label="登记号:" label-width="120px" prop="patientId" class="formItemOne"> | |||
|         <el-input v-model="dataForm.patientId" placeholder="请输入登记号" /> | |||
|       </el-form-item> | |||
|       <el-form-item label="患者姓名:" label-width="120px" prop="patientName"> | |||
|         <el-input v-model="dataForm.patientName" placeholder="请输入姓名" /> | |||
|       </el-form-item> | |||
|       <el-form-item label="身份证号:" label-width="120px" prop="patientIdNumber"> | |||
|         <el-input v-model="dataForm.patientIdNumber" placeholder="请输入身份证号" @change="handleBirth" /> | |||
|       </el-form-item> | |||
|       <el-form-item label="出生日期:" label-width="120px" prop="patientBirthday"> | |||
|         <el-date-picker | |||
|           v-model="dataForm.patientBirthday" | |||
|           align="right" | |||
|           type="date" | |||
|           placeholder="选择日期" | |||
|           value-format="yyyy-MM-dd" | |||
|         /> | |||
|       </el-form-item> | |||
|       <el-form-item label="性别:" label-width="120px" prop="gender"> | |||
|         <el-radio-group v-model="dataForm.patientSex" size="medium"> | |||
|           <el-radio-button label="男">男</el-radio-button> | |||
|           <el-radio-button label="女">女</el-radio-button> | |||
|           <el-radio-button label="保密">保密</el-radio-button> | |||
|         </el-radio-group> | |||
|       </el-form-item> | |||
|       <el-form-item label="联系电话:" label-width="120px" prop="patientPhone"> | |||
|         <el-input v-model="dataForm.patientPhone" placeholder="请输入手机号" /> | |||
|       </el-form-item> | |||
|       <el-form-item label="家庭地址:" label-width="120px" prop="patientAddress"> | |||
|         <el-input v-model="dataForm.patientAddress" placeholder="请输入地址" /> | |||
|       </el-form-item> | |||
|       <div style="border-bottom: 1px solid #ccc;margin-bottom: 20px" /> | |||
|       <el-form-item required label="患者来源:" prop="patientSource" label-width="120px"> | |||
|         <el-select v-model="dataForm.patientSource" placeholder="请选择患者来源"> | |||
|           <el-option | |||
|             v-for="item in sourceList" | |||
|             :key="item.value" | |||
|             :label="item.name" | |||
|             :value="item.value" | |||
|           /> | |||
|         </el-select> | |||
|       </el-form-item> | |||
|       <el-form-item label="门诊医师:" prop="mzDoctorId" label-width="120px"> | |||
|         <el-select v-model="dataForm.mzDoctorId" placeholder="请选择门诊医师"> | |||
|           <el-option | |||
|             v-for="item in mzDoctorList" | |||
|             :key="item.id" | |||
|             :label="item.realName" | |||
|             :value="item.employeeId | |||
|             " | |||
|           /> | |||
|         </el-select> | |||
|       </el-form-item> | |||
|       <el-form-item label="视光医师" prop="sgDoctorId" label-width="120px"> | |||
|         <el-select v-model="dataForm.sgDoctorId" placeholder="请选择视光医师"> | |||
|           <el-option | |||
|             v-for="item in sgDoctorList" | |||
|             :key="item.id" | |||
|             :label="item.realName" | |||
|             :value="item.employeeId | |||
|             " | |||
|           /> | |||
|         </el-select> | |||
|       </el-form-item> | |||
|       <el-form-item label="眼别:" prop="zlEye" label-width="120px"> | |||
|         <el-select v-model="dataForm.zlEye" placeholder="请选择眼别"> | |||
|           <el-option v-for="item in zlEyeList" :key="item.value" :label="item.name" :value="item.value" /> | |||
|         </el-select> | |||
|       </el-form-item> | |||
|       <el-form-item label="医疗项目:" label-width="120px" prop="zlProjectCode"> | |||
|         <el-select v-model="dataForm.zlProjectCode" multiple placeholder="请选择医疗项目"> | |||
|           <el-option | |||
|             v-for="item in projectList" | |||
|             :key="item.itemId" | |||
|             :label="item.itemName" | |||
|             :value="item.itemId | |||
|             " | |||
|           /> | |||
|         </el-select> | |||
|       </el-form-item> | |||
|       <el-form-item label="备注:" label-width="120px" prop="remarks"> | |||
|         <el-input v-model="dataForm.remark" type="textarea" /> | |||
|       </el-form-item> | |||
|     </el-form> | |||
|     <template slot="footer"> | |||
|       <el-button @click="visible = false">{{ $t('cancel') }}</el-button> | |||
|       <el-button :disabled="disabled" type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> | |||
|     </template> | |||
|   </el-dialog> | |||
| </template> | |||
| 
 | |||
| <script> | |||
| import debounce from 'lodash/debounce' | |||
| import { isMobile, isIDNumber } from '@/utils/validate' | |||
| export default { | |||
|   data() { | |||
|     return { | |||
|       disabled: false, | |||
|       visible: false, | |||
|       dataForm: { | |||
|         registerType: 1, | |||
|         // platform: 3, | |||
|         patientId: '', | |||
|         patientName: '', | |||
|         patientIdNumber: '', | |||
|         patientSex: '男', | |||
|         patientPhone: '', | |||
|         patientAddress: '', | |||
|         patientBirthday: '', | |||
|         mzDoctorId: '', // 门诊医师 | |||
|         sgDoctorId: '', // 视光医师 | |||
|         patientSource: '', | |||
|         zlEye: 'ou', | |||
|         zlProjectCode: [], | |||
|         visitId: '', | |||
|         remark: '' | |||
|       }, | |||
|       zlEyeList: [ | |||
|         { name: '左眼', value: 'os' }, | |||
|         { name: '右眼', value: 'od' }, | |||
|         { name: '双眼', value: 'ou' } | |||
|       ], | |||
|       sourceList: [{ | |||
|         name: '门诊', | |||
|         value: '门诊' | |||
|       }, { | |||
|         name: '住院', | |||
|         value: '住院' | |||
|       } | |||
|       ], | |||
|       params: {}, | |||
|       mzDoctorList: [], | |||
|       sgDoctorList: [], | |||
|       projectList: [] | |||
|     } | |||
|   }, | |||
|   computed: { | |||
|     dataRule() { | |||
|       var validataMobile = (rule, value, callback) => { | |||
|         if (value && !isMobile(value)) { | |||
|           return callback(new Error('您输入的手机号格式不正确')) | |||
|         } | |||
|         callback() | |||
|       } | |||
|       var validataIDNumber = (rule, value, callback) => { | |||
|         if (value && !isIDNumber(value)) { | |||
|           return callback(new Error('您输入的身份证格式不正确')) | |||
|         } else if (!value) { | |||
|           return callback(new Error('请输入身份证号')) | |||
|         } | |||
|         callback() | |||
|       } | |||
|       return { | |||
|         patientId: [ | |||
|           { required: true, message: '请输入登记号', trigger: 'blur' } | |||
|         ], | |||
|         patientName: [ | |||
|           { required: true, message: '请输入患者姓名', trigger: 'blur' } | |||
|         ], | |||
|         patientIdNumber: [ | |||
|           { validator: validataIDNumber, trigger: 'blur' } | |||
|         ], | |||
|         sgDoctorId: [ | |||
|           { required: false, message: '请选择视光医师', trigger: 'blur' } | |||
|         ], | |||
|         patientSource: [ | |||
|           { required: true, message: '请选择患者来源', trigger: 'blur' } | |||
|         ] | |||
|       } | |||
|     } | |||
|   }, | |||
|   methods: { | |||
|     init() { | |||
|       this.visible = true | |||
|       this.dataForm.registerType = 1 | |||
|       this.getDoctorList('视光医师') | |||
|       this.getDoctorList('门诊医师') | |||
|       this.getProject() | |||
|       this.$nextTick(() => { | |||
|         this.$refs.dataForm.resetFields() // 重置表单 | |||
|         if (this.params.patientId && this.dataForm.title !== 'HIS引入') { | |||
|           this.dataForm = { | |||
|             title: this.dataForm.title, | |||
|             ...this.params | |||
|           } | |||
|         } else if (this.dataForm.title === 'HIS引入') { | |||
|           this.getHisInfo() | |||
|         } | |||
|       }) | |||
|     }, | |||
|     handleBirth(value) { | |||
|       if (value) { | |||
|         const year = value.substr(6, 4) | |||
|         const month = value.substr(10, 2) | |||
|         const day = value.substr(12, 2) | |||
|         this.dataForm.patientBirthday = `${year}-${month}-${day}` | |||
|       } | |||
|     }, | |||
|     // 获取医师列表 | |||
|     getDoctorList(val) { | |||
|       this.$http.get('/sys/user', { params: { position: val }}).then(data => { | |||
|         if (val === '视光医师') { | |||
|           this.sgDoctorList = data.data.data | |||
|         } else { | |||
|           this.mzDoctorList = data.data.data | |||
|         } | |||
|         // this.dataForm.sgDoctorId = JSON.parse(window.sessionStorage.getItem('qg-userData')).employeeId | |||
|       }) | |||
|     }, | |||
|     // 获取项目列表 | |||
|     getProject() { | |||
|       this.$http.get('/patient/getZlItemDict', { params: { type: this.dataForm.platform }}).then(data => { | |||
|         this.projectList = data.data.data | |||
|       }) | |||
|     }, | |||
|     // 获取His信息 | |||
|     getHisInfo() { | |||
|       this.dataForm = { ...this.dataForm, ...this.params } | |||
|       this.dataForm.revisitCycles = this.dataForm.revisitCycles ? this.dataForm.revisitCycles : '1' | |||
|       this.dataForm.revisitCyclesUnit = this.dataForm.revisitCyclesUnit ? this.dataForm.revisitCyclesUnit : '3' | |||
|       this.dataForm.registerType = 0 | |||
|     }, | |||
|     // 表单提交 | |||
|     dataFormSubmitHandle: debounce(function() { | |||
|       this.disabled = true | |||
|       this.$refs.dataForm.validate((valid) => { | |||
|         if (!valid) { | |||
|           this.disabled = false | |||
|           return false | |||
|         } | |||
|         this.dataForm.zlProjectCode = this.dataForm.zlProjectCode.length && this.dataForm.zlProjectCode.join(',') | |||
|         this.$http[!this.dataForm.id ? 'post' : 'put']('/patient/savePatient', this.dataForm) | |||
|           .then(({ data: res }) => { | |||
|             if (res.code !== 0) { | |||
|               return this.$message.error(res.msg) | |||
|             } | |||
|             this.$message({ | |||
|               message: this.$t('prompt.success'), | |||
|               type: 'success', | |||
|               duration: 500, | |||
|               onClose: () => { | |||
|                 this.visible = false | |||
|                 this.$emit('refreshDataList') | |||
|               } | |||
|             }) | |||
|           }) | |||
|           .catch(() => {}) | |||
|           .finally(() => { this.disabled = false }) | |||
|       }) | |||
|     }, 1000, { leading: true, trailing: false }), | |||
|     // 关闭弹框 | |||
|     closeDialog() { | |||
|       this.$emit('closeDialog') | |||
|     } | |||
|   } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .patientDialog { | |||
|   .cycle-display { | |||
|     .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
|     .el-input-number { | |||
|       width: 100px; | |||
|       margin-right: 16px; | |||
|     } | |||
|   } | |||
| } | |||
| 
 | |||
| </style> | |||
| <style lang="scss"> | |||
| .patientDialog { | |||
|   .el-dialog__header { | |||
|     margin-bottom:12px | |||
|   } | |||
|     .el-dialog__body { | |||
|         padding-right: 30px; | |||
|     } | |||
|     .formItemOne .el-form-item__content { | |||
|       display: flex; | |||
|     } | |||
|     .el-date-editor.el-input, .el-date-editor.el-input__inner { | |||
|       width: 100%; | |||
|     } | |||
| } | |||
| </style> | |||
					Loading…
					
					
				
		Reference in new issue