Bläddra i källkod

医保入出院审核

lighter 3 år sedan
förälder
incheckning
3b5cf38304

+ 40 - 0
src/api/medical-insurance/si-admiss-apply.js

@@ -0,0 +1,40 @@
+import request from '../../utils/request'
+
+export function selectAdmissApply(data) {
+  return request({
+    url: '/siAdmissApply/selectAdmissApply',
+    method: 'post',
+    data,
+  })
+}
+
+export function submitAdmissApply(data) {
+  return request({
+    url: '/siAdmissApply/submitAdmissApply',
+    method: 'post',
+    data,
+  })
+}
+
+export function selectPatientInfo(data) {
+  return request({
+    url: '/siAdmissApply/selectPatientInfo',
+    method: 'post',
+    data,
+  })
+}
+
+export function selectUnhandledApplies() {
+  return request({
+    url: '/siAdmissApply/selectUnhandledApplies',
+    method: 'get',
+  })
+}
+
+export function handleApply(data) {
+  return request({
+    url: '/siAdmissApply/handleApply',
+    method: 'post',
+    data,
+  })
+}

+ 0 - 24
src/api/yibao/patient.js

@@ -40,30 +40,6 @@ export function getIdCardInfo(inpatientNo, admissTimes) {
   })
 }
 
-export function getCancelRegisterRequests(inpatientNo, admissTimes, requestType) {
-  return request({
-    url: '/patient/getCancelRegisterRequests',
-    method: 'get',
-    params: { inpatientNo, admissTimes, requestType },
-  })
-}
-
-export function submitCancelRegisterRequest(data) {
-  return request({
-    url: '/patient/submitCancelRegisterRequest',
-    method: 'post',
-    data,
-  })
-}
-
-export function revokeYbsf(inpatientNo, admissTimes) {
-  return request({
-    url: '/patient/revokeYbsf',
-    method: 'get',
-    params: { inpatientNo, admissTimes },
-  })
-}
-
 export function submitSiPatientInfo(data) {
   return request({
     url: '/patient/submitSiPatientInfo',

+ 90 - 0
src/components/inpatient/IdentifyImage.vue

@@ -0,0 +1,90 @@
+<template>
+  <div style="position: fixed; top: 12px; right: 12px">
+    <el-button type="primary" icon="el-icon-plus" @click="zoomInIdCard" circle title="放大"></el-button>
+    <el-button type="primary" icon="el-icon-refresh" @click="resetIdCard" circle title="还原"></el-button>
+    <el-button type="danger" icon="el-icon-close" @click="closeIdCard" circle title="关闭"></el-button>
+  </div>
+  <img id="idCardImg" :style="idCardImgStyle" :src="identifyImageFile" />
+</template>
+
+<script>
+import { watch, ref, onMounted } from 'vue'
+import { getIdCardInfo } from '@/api/yibao/patient'
+export default {
+  props: {
+    timestamp: {
+      type: Number,
+      required: true,
+    },
+    patNo: {
+      type: String,
+      required: true,
+    },
+    times: {
+      type: Number,
+      required: true,
+    },
+  },
+  emits: ['close'],
+  setup(props, ctx) {
+    const identifyImageFile = ref('')
+    const idCardImgStyle = ref({
+      width: '856px',
+      height: '540px',
+      borderRadius: '4px',
+      w: 856,
+      h: 540,
+    })
+    const zoomInIdCard = () => {
+      idCardImgStyle.value.w = idCardImgStyle.value.w * 1.2
+      idCardImgStyle.value.h = idCardImgStyle.value.h * 1.2
+      idCardImgStyle.value.width = idCardImgStyle.value.w + 'px'
+      idCardImgStyle.value.height = idCardImgStyle.value.h + 'px'
+    }
+    const resetIdCard = () => {
+      idCardImgStyle.value.w = 856
+      idCardImgStyle.value.h = 540
+      idCardImgStyle.value.width = '856px'
+      idCardImgStyle.value.height = '540px'
+    }
+    const closeIdCard = () => {
+      identifyImageFile.value = null
+      resetIdCard()
+      ctx.emit('close')
+    }
+    const checkIdInfo = () => {
+      getIdCardInfo(props.patNo, props.times).then((res) => {
+        if (res.idCard.length > 0) {
+          identifyImageFile.value = 'data:image/png;base64,' + res.idCard[0].fileSfz
+        } else {
+          if (res.scanFile.length > 0) {
+            identifyImageFile.value = 'data:image/png;base64,' + res.scanFile[0].fileSfz
+          }
+        }
+      })
+    }
+    watch(
+      () => props.timestamp,
+      () => {
+        checkIdInfo()
+      }
+    )
+
+    onMounted(() => {
+      checkIdInfo()
+    })
+    return {
+      identifyImageFile,
+      idCardImgStyle,
+      zoomInIdCard,
+      resetIdCard,
+      closeIdCard,
+    }
+  },
+}
+</script>
+
+<style scoped>
+.affix-container {
+}
+</style>

+ 9 - 0
src/data/index.js

@@ -35,6 +35,15 @@ export const trueMedTypes = [
   { code: '42', name: '工伤住院' },
 ]
 
+export const needVerifyMedTypes = [
+  { code: '2102', name: '单病种住院' },
+  { code: '2106', name: '生育平产(居民)' },
+  { code: '2107', name: '生育剖宫产(居民)' },
+  { code: '22', name: '外伤住院' },
+  { code: '52', name: '生育住院(职工)' },
+  { code: '42', name: '工伤住院' },
+]
+
 export const sexes = [
   { code: 0, name: '未知' },
   { code: 1, name: '男' },

+ 6 - 0
src/router/modules/dashboard.js

@@ -50,6 +50,11 @@ const route = [
           },
         ],
       },
+      {
+        path: 'inpatient/admissVerification',
+        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmissVerification.vue')),
+        meta: { title: '入院登记审核', icon: 'iconfont icon-yibaoshenhe' },
+      },
       {
         path: 'inpatient/medInsVerification',
         component: createNameComponent(() => import('@/views/medical-insurance/inpatient/MedInsVerification.vue')),
@@ -124,6 +129,7 @@ const route = [
     children: [
       {
         path: 'inspectionReportIndex',
+        name: 'inspectionReportIndex',
         component: createNameComponent(() => import('@/views/examination/InspectionReportIndex.vue')),
         meta: { title: '检验报告', icon: 'iconfont icon-jianyanbaogao' },
       },

+ 14 - 2
src/views/examination/InspectionReportIndex.vue

@@ -187,10 +187,11 @@
 </template>
 
 <script>
-import { computed, reactive, ref } from 'vue'
+import { computed, onActivated, reactive, ref } from 'vue'
 import { shortcuts } from '@/data/shortcuts'
 import { queryInspectionDetail, queryInspectionsIndex } from '@/api/inspections'
 import store from '@/store'
+import router from '@/router'
 import { ElMessage } from 'element-plus'
 import { initLodop, getLodop } from '@/utils/c-lodop'
 export default {
@@ -198,7 +199,7 @@ export default {
     const type = ref(1)
     const types = initTypes()
     const content = ref(null)
-    const datePeriod = ref(null)
+    const datePeriod = ref([])
     const placeHolder = computed(() => {
       return '请输入' + ptntType.value
     })
@@ -226,6 +227,17 @@ export default {
     const halfSize = ref(0)
     const halfBacSize = ref(0)
 
+    onActivated(() => {
+      const params = router.currentRoute.value.params
+      if (params.patNo && params.start && params.end) {
+        type.value = 1
+        content.value = params.patNo
+        datePeriod.value[0] = params.start
+        datePeriod.value[1] = params.end
+        queryIndex()
+      }
+    })
+
     const queryIndex = () => {
       if (!content.value) {
         ElMessage({

+ 111 - 62
src/views/medical-insurance/inpatient/AdmRegistration.vue

@@ -14,7 +14,7 @@
       </el-dropdown>
       &nbsp;
       <el-button type="success" icon="el-icon-top" @click="checkRegisterDatetime">医保入院登记</el-button>
-      <el-button type="success" icon="el-icon-bottom" @click="beforeCancelRegister">取消入院登记</el-button>
+      <el-button type="danger" icon="el-icon-bottom" @click="beforeCancelRegister">取消入院登记</el-button>
       <el-button type="success" icon="el-icon-s-claim" @click="xiangMuLuRuRouter">项目录入</el-button>
       <el-button type="danger" icon="el-icon-warning" @click="yiZhuTuiFeiClick" v-if="greatestRole < 8">医嘱退费</el-button>
     </el-header>
@@ -230,6 +230,17 @@
         </el-col>
       </el-row>
     </el-dialog>
+    <el-dialog title="医保入院登记申请" v-model="showAdmissApplyForm" width="500px">
+      <div style="margin-bottom: 20px">
+        登记时间:
+        <el-date-picker v-model="admissApply.admissDatetime" type="datetime" placeholder="请选择医保登记开始时间"></el-date-picker>
+      </div>
+      <el-input type="textarea" v-model="admissApply.inputComment" placeholder="请输入申请理由"></el-input>
+      <div style="width: 450px; text-align: right; margin-top: 30px">
+        <el-button type="info" icon="el-icon-close" @click="cancelAdmissApply">取消</el-button>
+        <el-button type="success" icon="el-icon-check" @click="confirmAdmissApply">提交</el-button>
+      </div>
+    </el-dialog>
     <el-dialog title="人员信息" v-model="showPsnInsuinfo" width="65%">
       <el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
       <div v-if="injuryMode">
@@ -273,7 +284,7 @@
 
 <script>
 import { computed, onActivated, onDeactivated, onMounted, ref, watchEffect } from 'vue'
-import { getCancelRegisterRequests, submitCancelRegisterRequest, revokeYbsf, submitSiPatientInfo, getZyInYbDiags, saveZyInYbDiags } from '@/api/yibao/patient'
+import { submitSiPatientInfo, getZyInYbDiags, saveZyInYbDiags } from '@/api/yibao/patient'
 import { searchData, getAllSpecialDiags } from '@/api/yibao/dictionary'
 import store from '@/store'
 import { cptSex } from '@/utils/computed'
@@ -288,6 +299,7 @@ import { clone } from '@/utils/clone'
 import { getDiagTypes, getMedTypesByFlag, getMatnTypes } from '@/api/medical-insurance/si-dict'
 import { obtainBasicPersonInfo, checkRegisterDate } from '@/api/medical-insurance/si-query'
 import { cancelInjuryRegister, getPersonBaseinfo, admissRegistration } from '@/api/medical-insurance/si-injury'
+import { selectAdmissApply, submitAdmissApply } from '@/api/medical-insurance/si-admiss-apply'
 import { baseinfo } from '@/data/inpatient'
 import Xmlr from '@/components/inpatient/XiangMuLuRu.vue'
 import YiZhuTuiFei from '@/components/inpatient/YiZhuTuiFei.vue'
@@ -564,15 +576,95 @@ export default {
       patient.value.ybRegisterDate = formatDatetime(patient.value.ybRegisterDate)
     }
 
+    const admissApply = ref({})
+    const showAdmissApplyForm = ref(false)
     const checkRegisterDatetime = () => {
       if (nullPatient()) {
         return
       }
       checkRegisterDate(patient.value.inpatientNo, patient.value.admissTimes).then(() => {
-        getPsnInsuinfo()
+        selectAdmissApply(patient.value).then((res) => {
+          if (null === res.status) {
+            admissApply.value.patNo = patient.value.inpatientNo
+            admissApply.value.times = patient.value.admissTimes
+            admissApply.value.ledgerSn = patient.value.ledgerSn
+            admissApply.value.admissDatetime = patient.value.ybRegisterDate
+            admissApply.value.inputComment = '人证相符。'
+            showAdmissApplyForm.value = true
+          } else {
+            switch (res.status) {
+              case 0:
+                ElMessageBox.alert('医保科尚未处理此患者的医保入院申请,请耐心等候或者致电医保科(内线电话:2102)。', '提示', {
+                  type: 'warning',
+                })
+                break
+              case 1:
+                getPsnInsuinfo()
+                break
+              case 2:
+                ElMessageBox.alert('医保科驳回了此患者的医保入院申请,驳回意见为【' + res.handleComment + '】', '提示', {
+                  type: 'error',
+                  confirmButtonText: '我知道了',
+                  cancelButtonText: '重新提交',
+                  showCancelButton: true,
+                }).catch(() => {
+                  admissApply.value.patNo = patient.value.inpatientNo
+                  admissApply.value.times = patient.value.admissTimes
+                  admissApply.value.ledgerSn = patient.value.ledgerSn
+                  admissApply.value.admissDatetime = patient.value.ybRegisterDate
+                  showAdmissApplyForm.value = true
+                })
+                break
+            }
+          }
+        })
       })
     }
 
+    const cancelAdmissApply = () => {
+      admissApply.value = {}
+      showAdmissApplyForm.value = false
+    }
+
+    const confirmAdmissApply = () => {
+      if (!admissApply.value.admissDatetime) {
+        ElMessage({
+          message: '医保入院登记时间不能为空!',
+          type: 'error',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
+      if (!admissApply.value.inputComment) {
+        ElMessage({
+          message: '申请理由不能为空!',
+          type: 'error',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
+      admissApply.value.admissDatetime = formatDatetime(admissApply.value.admissDatetime)
+      ElMessageBox.confirm('是否确认提交入院登记申请?', '提示', {
+        type: 'warning',
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      })
+        .then(() => {
+          submitAdmissApply(admissApply.value).then((res) => {
+            ElMessage({
+              message: res,
+              type: 'success',
+              duration: 2500,
+              showClose: true,
+            })
+            showAdmissApplyForm.value = false
+          })
+        })
+        .catch(() => {})
+    }
+
     const psnBaseinfo = ref({})
     const showPsnInsuinfo = ref(false)
     const injuryinfo = ref([])
@@ -662,70 +754,23 @@ export default {
 
     const beforeCancelRegister = () => {
       if (nullPatient()) return
-      getCancelRegisterRequests(patient.value.inpatientNo, patient.value.admissTimes, 1).then((res) => {
-        if (res.length > 0) {
-          const req = res[res.length - 1]
-          if (req.statusFlag === 2) {
-            // 审核通过
-            if (injuryMode.value) {
-              cancelInjuryRegister(patient.value).then(() => {
-                ElMessageBox.alert('取消入院登记成功。', '提示', {
-                  type: 'success',
-                })
-              })
-            } else {
-              revokeAdmission(patient.value).then(() => {
-                ElMessageBox.alert('取消入院登记成功。', '提示', {
-                  type: 'success',
-                })
-              })
-            }
-          } else if (req.statusFlag === 1) {
-            ElMessage({
-              message: '医保科尚未处理您的请求,请耐心等待医保科审核结果。',
-              type: 'warning',
-              duration: 2500,
-              showClose: true,
-            })
-          } else {
-            ElMessageBox.confirm(req.ybRemark, '审核不通过,请重新提交请求。', {
-              type: 'error',
-              confirmButtonText: '确定',
-              cancelButtonText: '取消',
+      ElMessageBox.confirm('确定取消此患者的医保入院登记?', '提示', {
+        type: 'warning',
+      }).then(() => {
+        if (injuryMode.value) {
+          cancelInjuryRegister(patient.value).then(() => {
+            ElMessageBox.alert('取消入院登记成功。', '提示', {
+              type: 'success',
             })
-              .then(() => inputBox())
-              .catch(() => {})
-          }
+          })
         } else {
-          inputBox()
-        }
-      })
-    }
-    const inputBox = () => {
-      ElMessageBox.prompt('请输入取消医保登记理由,以提交医保科审核。', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-      })
-        .then(({ value }) => {
-          const indata = {
-            inpatientNo: patient.value.inpatientNo,
-            admissTimes: patient.value.admissTimes,
-            name: patient.value.name,
-            sex: patient.value.sex,
-            remark: value,
-            inputName: store.state.user.info.name,
-            requestType: 1,
-          }
-          submitCancelRegisterRequest(indata).then(() => {
-            ElMessage({
-              message: '提交成功。',
+          revokeAdmission(patient.value).then(() => {
+            ElMessageBox.alert('取消入院登记成功。', '提示', {
               type: 'success',
-              duration: 2500,
-              showClose: true,
             })
           })
-        })
-        .catch(() => {})
+        }
+      })
     }
 
     // 项目录入
@@ -782,6 +827,10 @@ export default {
       showPsnInsuinfo,
       injuryinfo,
       injuryMode,
+      admissApply,
+      showAdmissApplyForm,
+      cancelAdmissApply,
+      confirmAdmissApply,
       openDiagDialog,
       fetchZyYbDiags,
       deleteYbDiag,

+ 587 - 0
src/views/medical-insurance/inpatient/AdmissVerification.vue

@@ -0,0 +1,587 @@
+<template>
+  <el-container>
+    <el-header style="height: 38px; margin-top: 5px">
+      <el-select v-model="medType" placeholder="医疗类别" style="width: 145px" clearable>
+        <el-option v-for="item in needVerifyMedTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
+      </el-select>
+      <el-select v-model="statusFlag" placeholder="审核状态" style="width: 100px" clearable>
+        <el-option v-for="item in statusFlags" :key="item.code" :label="item.name" :value="item.code"></el-option>
+      </el-select>
+      <el-select v-model="bizAppyType" placeholder="业务申请类型" style="width: 145px">
+        <el-option v-for="item in bizAppyTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
+      </el-select>
+      <el-select v-show="injuryMode" v-model="patient.injuryArea" placeholder="工伤参保地" style="width: 120px">
+        <el-option v-for="item in injuryAreas" :key="item.code" :label="item.name" :value="item.code"></el-option>
+      </el-select>
+      <el-button style="margin-left: 10px" type="primary" icon="el-icon-location" @click="getPsnInsuinfo(0)">定点信息查询</el-button>
+      <el-button style="margin-left: 10px" type="primary" icon="el-icon-tickets" @click="getPsnInsuinfo(1)">待遇检查</el-button>
+      <el-button type="primary" icon="el-icon-user" @click="checkIdCard">身份信息</el-button>
+      <el-button type="success" icon="el-icon-check" @click="beforeHandleApply(true)">审核通过</el-button>
+      <el-button type="danger" icon="el-icon-close" @click="beforeHandleApply(false)">审核不通过</el-button>
+    </el-header>
+    <el-main>
+      <el-container>
+        <el-aside width="245px">
+          <el-table :height="tableHeight" :data="cptApplies" stripe highlight-current-row @row-click="handleClickOverview">
+            <el-table-column label="姓名" width="70">
+              <template #default="scope">
+                <div style="display: flex; align-items: center">
+                  <img class="sex-icon" :src="scope.row.gender === 1 ? maleIcon : femaleIcon" />
+                  {{ scope.row.name }}
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="住院号" width="65" align="center">
+              <template #default="scope">
+                <span v-html="getStatusFlag(scope.row.status, scope.row.patNo)"></span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="wardName" label="病房" width="110"></el-table-column>
+          </el-table>
+        </el-aside>
+        <el-main>
+          <el-tag>患者基本信息</el-tag>
+          <el-descriptions :column="4" border>
+            <el-descriptions-item>
+              <template #label> 住院号 </template>
+              {{ patient.inpatientNo }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 住院次数 </template>
+              {{ patient.admissTimes }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 身份证号 </template>
+              {{ patient.socialNo }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 姓名 </template>
+              {{ patient.name }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 性别 </template>
+              {{ patient.sex === 1 ? '男' : '女' }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 病区 </template>
+              {{ patient.admissWardName }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 小科室 </template>
+              {{ patient.smallDeptName }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 入院医生 </template>
+              {{ patient.admissPhysicianName }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 管床医生 </template>
+              {{ patient.referPhysicianName }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 床位 </template>
+              {{ patient.bedNo }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template #label> 入院日期 </template>
+              {{ patient.admissDate }}
+            </el-descriptions-item>
+          </el-descriptions>
+          <div style="margin-top: 8px">
+            <el-tag>入院登记申请信息</el-tag>
+            <el-descriptions :column="4" border>
+              <el-descriptions-item>
+                <template #label> 登记时间 </template>
+                {{ currentApply.admissDatetime }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 医疗类别 </template>
+                {{ currentApply.medTypeName }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 参保地区 </template>
+                {{ currentApply.admdvsName }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 申请人 </template>
+                {{ currentApply.inputName }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 申请时间 </template>
+                {{ currentApply.inputDatetime }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 申请理由 </template>
+                {{ currentApply.inputComment }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 处理人 </template>
+                {{ currentApply.handleStaffName }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 处理时间 </template>
+                {{ currentApply.handleDatetime }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template #label> 处理意见 </template>
+                {{ currentApply.handleComment }}
+              </el-descriptions-item>
+            </el-descriptions>
+          </div>
+          <div style="height: 8px"></div>
+          <el-tag>医保入院诊断</el-tag>
+          <el-table :data="zyInYbDiags" stripe>
+            <el-table-column prop="diagNo" label="诊断序号"></el-table-column>
+            <el-table-column prop="property" label="诊断属性"></el-table-column>
+            <el-table-column prop="icdCode" label="诊断编码"></el-table-column>
+            <el-table-column prop="icdText" label="诊断名称"></el-table-column>
+            <el-table-column label="诊断类别">
+              <template #default="scope">
+                {{ getDiagTypeName(scope.row.diagType) }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="opDate" label="诊断时间"></el-table-column>
+          </el-table>
+
+          <el-dialog title="人员信息" v-model="showPsnInsuinfo" width="65%">
+            <el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
+            <div v-if="injuryMode">
+              <el-table :data="injuryinfo" @row-click="handleClickInjuryinfo" stripe height="180">
+                <el-table-column label="电脑号" prop="indiId"></el-table-column>
+                <el-table-column label="工伤个人业务序号" prop="serialPers"></el-table-column>
+                <el-table-column label="工伤认定号" prop="identifyCode"></el-table-column>
+                <el-table-column label="认定申请时间" prop="identyDate"></el-table-column>
+                <el-table-column label="受伤部位" prop="injuryPart"></el-table-column>
+                <el-table-column label="报告时间" prop="reportDate"></el-table-column>
+                <el-table-column label="事故发生时间" prop="accidentDate"></el-table-column>
+                <el-table-column label="事故详细情况" prop="accidentDetail"></el-table-column>
+              </el-table>
+            </div>
+            <div v-else>
+              <el-table :data="psnBaseinfo.insuinfo" @row-click="handleClickInsuinfo" stripe height="180">
+                <el-table-column label="余额" prop="balc"></el-table-column>
+                <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
+                <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
+                <el-table-column label="参保状态" prop="psnInsuStasName"></el-table-column>
+                <el-table-column label="个人参保日期" prop="psnInsuDate"></el-table-column>
+                <el-table-column label="暂停参保日期" prop="pausInsuDate"></el-table-column>
+                <el-table-column label="公务员标志" prop="cvlservFlagName"></el-table-column>
+                <el-table-column label="参保地医保区划" prop="insuplcAdmdvs"></el-table-column>
+                <el-table-column label="参保地名称" prop="insuplcAdmdvsName"></el-table-column>
+                <el-table-column label="单位名称" prop="empName"></el-table-column>
+              </el-table>
+              <div style="height: 16px"></div>
+              <el-tag>身份信息</el-tag>
+              <el-table :data="psnBaseinfo.idetinfo" stripe height="180">
+                <el-table-column label="人员身份类别" prop="psnIdetTypeName"></el-table-column>
+                <el-table-column label="人员类别等级" prop="psnTypeLv"></el-table-column>
+                <el-table-column label="备注" prop="memo"></el-table-column>
+                <el-table-column label="开始时间" prop="begntime"></el-table-column>
+                <el-table-column label="结束时间" prop="endtime"></el-table-column>
+              </el-table>
+            </div>
+          </el-dialog>
+          <el-dialog title="人员待遇信息" v-model="showTrtInfos" width="65%">
+            <el-table :data="trtInfos" stripe height="360">
+              <el-table-column label="人员编号" prop="psnNo"></el-table-column>
+              <el-table-column label="待遇检查类型" prop="trtChkTypeName"></el-table-column>
+              <el-table-column label="基金支付类型" prop="fundPayTypeName"></el-table-column>
+              <el-table-column label="基金款项待遇享受标志" prop="trtEnjymntFlagName"></el-table-column>
+              <el-table-column label="开始日期" prop="begndate"></el-table-column>
+              <el-table-column label="结束日期" prop="enddate"></el-table-column>
+              <el-table-column label="待遇检查结果" prop="trtChkRslt"></el-table-column>
+            </el-table>
+          </el-dialog>
+          <el-dialog title="人员定点信息" v-model="showFixMedins" width="65%">
+            <el-table :data="fixMedins" stripe>
+              <el-table-column prop="psnNo" label="人员编号"></el-table-column>
+              <el-table-column prop="insutypeName" label="险种类型"></el-table-column>
+              <el-table-column prop="fixSrtNo" label="定点排序号"></el-table-column>
+              <el-table-column prop="fixmedinsCode" label="定点医药机构编号"></el-table-column>
+              <el-table-column prop="fixmedinsName" label="定点医药机构名称"></el-table-column>
+              <el-table-column prop="begndate" label="开始日期"></el-table-column>
+              <el-table-column prop="enddate" label="结束日期"></el-table-column>
+              <el-table-column prop="memo" label="备注"></el-table-column>
+            </el-table>
+          </el-dialog>
+          <el-dialog v-model="showIdCardImg" title="身份信息" :close-on-click-modal="false" fullscreen :show-close="false">
+            <IdentifyImage :timestamp="timestamp" :pat-no="currentApply.patNo" :times="currentApply.times" @close="showIdCardImg = false"></IdentifyImage>
+          </el-dialog>
+        </el-main>
+      </el-container>
+    </el-main>
+  </el-container>
+</template>
+
+<script>
+import { computed, onActivated, onMounted, ref } from 'vue'
+import store from '@/store'
+import maleIcon from '@/assets/male-icon.png'
+import femaleIcon from '@/assets/female-icon.png'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { getBizAppyTypes, getDiagTypes } from '@/api/medical-insurance/si-dict'
+import { checkPersonTreatment, obtainBasicPersonInfo, checkRegisterDate, queryPersonnelAssignmentInfo } from '@/api/medical-insurance/si-query'
+import { getPersonBaseinfo, admissRegistration } from '@/api/medical-insurance/si-injury'
+import { admissRegister } from '@/api/medical-insurance/si-inpatient'
+import { statusFlags, needVerifyMedTypes } from '../../../data/index'
+import { selectUnhandledApplies, selectPatientInfo, handleApply } from '../../../api/medical-insurance/si-admiss-apply'
+import IdentifyImage from '../../../components/inpatient/IdentifyImage.vue'
+export default {
+  components: {
+    IdentifyImage,
+  },
+  setup() {
+    const patient = ref({})
+    const windowSize = store.state.app.windowSize
+    const tableHeight = windowSize.h - 50
+    const bizAppyType = ref(null)
+    const bizAppyTypes = ref([])
+    const psnBaseinfo = ref({})
+    const fixMedins = ref([])
+    const showFixMedins = ref(false)
+    const trtInfos = ref([])
+    const showTrtInfos = ref(false)
+    const showPsnInsuinfo = ref(false)
+    const insuRowClickFlag = ref(null)
+    const zyInYbDiags = ref([])
+    const injuryinfo = ref([])
+    const injuryAreas = initInjuryAreas()
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
+    const currentApply = ref({})
+    const medType = ref(null)
+    const statusFlag = ref('')
+    const allApplies = ref([])
+    const cptApplies = computed(() => {
+      return allApplies.value.filter((itm) => {
+        if ('' !== statusFlag.value) {
+          return medType.value ? itm.medType === medType.value && itm.status === statusFlag.value : itm.status === statusFlag.value
+        } else {
+          return medType.value ? itm.medType === medType.value : true
+        }
+      })
+    })
+
+    const handleClickOverview = (row) => {
+      store.commit('ptnt/setInjuryMode', row.medType === '42')
+      selectPatientInfo(row)
+        .then((res) => {
+          patient.value = res.patient
+          currentApply.value = row
+          zyInYbDiags.value = res.indiags
+        })
+        .catch(() => {
+          patient.value = {}
+          currentApply.value = {}
+          zyInYbDiags.value = []
+        })
+    }
+
+    const beforeHandleApply = (approve) => {
+      if (!currentApply.value.patNo) {
+        ElMessage({
+          message: '请先选择患者',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
+      if (!approve) {
+        ElMessageBox.prompt('请输入处理意见:', '审核不通过', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          inputValue: null,
+        })
+          .then(({ value }) => {
+            if (value) {
+              currentApply.value.status = 2
+              currentApply.value.handleComment = value
+              handleApply(currentApply.value).then((res) => {
+                ElMessage({
+                  message: res,
+                  type: 'success',
+                  duration: 2500,
+                  showClose: true,
+                })
+              })
+            } else {
+              ElMessage({
+                message: '处理意见不能为空',
+                type: 'warning',
+                duration: 2500,
+                showClose: true,
+              })
+            }
+          })
+          .catch(() => {
+            currentApply.value.status = 0
+          })
+      } else {
+        checkRegisterDate(patient.value.inpatientNo, patient.value.admissTimes).then(() => {
+          getPsnInsuinfo(2)
+        })
+      }
+    }
+
+    const getPsnInsuinfo = (flag) => {
+      if (!currentApply.value.patNo) {
+        ElMessage({
+          message: '请先选择患者',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
+      if (flag === 0) {
+        if (!bizAppyType.value) {
+          ElMessage({
+            message: '请选择业务申请类型!',
+            type: 'warning',
+            showClose: true,
+          })
+          return
+        }
+      }
+      if (injuryMode.value) {
+        getPersonBaseinfo(patient.value).then((res) => {
+          injuryinfo.value = res
+          showPsnInsuinfo.value = true
+        })
+      } else {
+        insuRowClickFlag.value = flag
+        const param = {
+          medType: patient.value.medType,
+          patNo: patient.value.inpatientNo,
+          times: patient.value.admissTimes,
+          ledgerSn: patient.value.ledgerSn,
+          socialNo: patient.value.socialNo,
+          name: patient.value.name,
+          admdvs: patient.value.admdvs,
+          needSaving: 1,
+        }
+        obtainBasicPersonInfo(param).then((res) => {
+          if (flag === 0) {
+            const param = {
+              patNo: patient.value.inpatientNo,
+              times: patient.value.admissTimes,
+              psnNo: res.psnNo,
+              bizAppyType: bizAppyType.value,
+            }
+            queryPersonnelAssignmentInfo(param).then((res) => {
+              fixMedins.value = res
+              showFixMedins.value = true
+            })
+          } else {
+            patient.value.psnNo = res.psnNo
+            psnBaseinfo.value = res
+            showPsnInsuinfo.value = true
+          }
+        })
+      }
+    }
+
+    const handleClickInjuryinfo = (row) => {
+      ElMessageBox.confirm('审核通过将直接进行医保入院登记,确定审核通过?', '提示', {
+        type: 'warning',
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      })
+        .then(() => {
+          const param = {
+            baseinfo: patient.value,
+            injuryinfo: row,
+          }
+          admissRegistration(param).then((res) => {
+            currentApply.value.status = 1
+            currentApply.value.handleComment = '同意办理'
+            handleApply(currentApply.value).then((res) => {
+              ElMessage({
+                message: '审核已通过,医保入院登记成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+              showPsnInsuinfo.value = false
+            })
+          })
+        })
+        .catch(() => {})
+    }
+
+    const handleClickInsuinfo = (row) => {
+      if (insuRowClickFlag.value === 1) {
+        chkTrtmt(row)
+      } else if (insuRowClickFlag.value === 2) {
+        admRgstn(row)
+      }
+    }
+
+    const chkTrtmt = (row) => {
+      const param = {
+        patNo: patient.value.inpatientNo,
+        times: patient.value.admissTimes,
+        psnNo: patient.value.psnNo,
+        insutype: row.insutype,
+        medType: patient.value.medType,
+        begntime: patient.value.ybRegisterDate,
+      }
+      checkPersonTreatment(param).then((res) => {
+        trtInfos.value = res
+        showPsnInsuinfo.value = false
+        showTrtInfos.value = true
+      })
+    }
+
+    const admRgstn = (row) => {
+      ElMessageBox.confirm('审核通过将直接进行医保入院登记,确定审核通过?', '提示', {
+        type: 'warning',
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      })
+        .then(() => {
+          patient.value.insutype = row.insutype
+          patient.value.psnType = row.psnType
+          patient.value.insuplcAdmdvs = row.insuplcAdmdvs
+          patient.value.empName = row.empName
+          admissRegister(patient.value).then(() => {
+            currentApply.value.status = 1
+            currentApply.value.handleComment = '同意办理'
+            handleApply(currentApply.value).then((res) => {
+              ElMessage({
+                message: '审核已通过,医保入院登记成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+              showPsnInsuinfo.value = false
+            })
+          })
+        })
+        .catch(() => {})
+    }
+
+    const diagTypes = ref([])
+    const getDiagTypeName = (val) => {
+      for (let i = 0; i < diagTypes.value.length; i++) {
+        if (diagTypes.value[i].code === val) {
+          return diagTypes.value[i].name
+        }
+      }
+    }
+
+    const timestamp = ref(0)
+    const showIdCardImg = ref(false)
+    const checkIdCard = () => {
+      if (!currentApply.value.patNo) {
+        ElMessage({
+          message: '请先选择患者',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+      } else {
+        timestamp.value = new Date().getTime()
+        showIdCardImg.value = true
+      }
+    }
+
+    onActivated(() => {
+      selectUnhandledApplies().then((res) => {
+        allApplies.value = res
+      })
+    })
+
+    onMounted(() => {
+      getBizAppyTypes().then((res) => {
+        bizAppyTypes.value = res
+      })
+      getDiagTypes().then((res) => {
+        diagTypes.value = res
+      })
+    })
+
+    return {
+      patient,
+      medType,
+      statusFlag,
+      statusFlags,
+      injuryAreas,
+      zyInYbDiags,
+      tableHeight,
+      injuryMode,
+      injuryinfo,
+      maleIcon,
+      femaleIcon,
+      psnBaseinfo,
+      showPsnInsuinfo,
+      needVerifyMedTypes,
+      bizAppyType,
+      bizAppyTypes,
+      fixMedins,
+      showFixMedins,
+      trtInfos,
+      showTrtInfos,
+      getDiagTypeName,
+      filterYesOrNo,
+      getPsnInsuinfo,
+      handleClickInsuinfo,
+      handleClickInjuryinfo,
+      getStatusFlag,
+      cptApplies,
+      currentApply,
+      handleClickOverview,
+      timestamp,
+      showIdCardImg,
+      checkIdCard,
+      beforeHandleApply,
+    }
+  },
+}
+
+function initInjuryAreas() {
+  return [
+    { code: 1, name: '长沙市' },
+    { code: 4, name: '长沙县' },
+    { code: 2, name: '望城县' },
+    { code: 3, name: '省直' },
+  ]
+}
+
+function filterYesOrNo(val) {
+  if (val === '0') {
+    return '否'
+  } else if (val === '1') {
+    return '是'
+  }
+  return ''
+}
+
+function getStatusFlag(status, patNo) {
+  // 0:撤销-黑色,1:待审核-橙色,2:已审核-绿色,9:未通过-红色,null/-1:未提交-灰色
+  switch (status) {
+    case 0:
+      return `<span style="color: gray">${patNo}</span>`
+    case 1:
+      return `<span style="color: green">${patNo}</span>`
+    case 2:
+      return `<span style="color: red">${patNo}</span>`
+  }
+}
+</script>
+
+<style scoped>
+.remark {
+  padding: 5px 10px;
+}
+
+.mt10 {
+  margin-top: 10px;
+}
+
+.yb-tag {
+  padding: 5px 0 0 20px;
+}
+</style>

+ 21 - 42
src/views/medical-insurance/inpatient/Home.vue

@@ -19,26 +19,7 @@
         <el-button type="primary" icon="el-icon-search" @click="searchPatient">检索</el-button>
       </span>
       &nbsp;&nbsp;
-      <el-popover placement="bottom" width="400" trigger="click">
-        <template #reference>
-          <el-button type="primary" icon="el-icon-postcard" @click="checkIdInfo">身份信息</el-button>
-        </template>
-        <el-tag type="info">身份证</el-tag>
-        <el-table :data="identityFiles.idCard" @row-click="handleClickIdCard">
-          <el-table-column width="50" property="itemNo" label="序号"></el-table-column>
-          <el-table-column width="70" property="inpatientNo" label="住院号"></el-table-column>
-          <el-table-column width="50" property="admissTimes" label="次数"></el-table-column>
-          <el-table-column width="160" property="expirestart" label="证件有效期"></el-table-column>
-          <el-table-column width="150" property="agency" label="发证机关"></el-table-column>
-        </el-table>
-        <div style="height: 20px"></div>
-        <el-tag type="info">扫描件</el-tag>
-        <el-table :data="identityFiles.scanFile" @row-click="handleClickIdCard">
-          <el-table-column width="60" property="itemNo" label="序号"></el-table-column>
-          <el-table-column width="100" property="inpatientNo" label="住院号"></el-table-column>
-          <el-table-column width="100" property="admissTimes" label="住院次数"></el-table-column>
-        </el-table>
-      </el-popover>
+      <el-button type="primary" icon="el-icon-postcard" @click="checkIdCard">身份信息</el-button>
       <el-button type="primary" icon="el-icon-download" @click="downloadReadCard" style="margin-left: 10px"> 下载读卡程序 </el-button>
       <el-button style="margin-left: 10px" type="success" icon="el-icon-document" @click="getRegInfo">查询登记信息 </el-button>
       <el-button style="margin-left: 10px" type="danger" icon="el-icon-magic-stick" @click="toEmpiView">患者360视图 </el-button>
@@ -209,17 +190,19 @@
         </el-descriptions>
       </div>
     </el-dialog>
+    <el-dialog v-model="showIdCardImg" title="身份信息" :close-on-click-modal="false" fullscreen :show-close="false">
+      <IdentifyImage :timestamp="timestamp" :pat-no="patient.inpatientNo" :times="patient.admissTimes" @close="showIdCardImg = false"></IdentifyImage>
+    </el-dialog>
   </el-container>
 </template>
 
 <script>
-import { ElMessageBox } from 'element-plus'
 import { computed, onMounted, reactive, ref } from 'vue'
 import store from '@/store'
 import maleIcon from '@/assets/male-icon.png'
 import femaleIcon from '@/assets/female-icon.png'
 import dismissIcon from '@/assets/dismiss-icon.png'
-import { getOverView, getPatientInfo, getIdCardInfo, getEmpiViewUrl } from '@/api/yibao/patient'
+import { getOverView, getPatientInfo, getEmpiViewUrl } from '@/api/yibao/patient'
 import { statusFlags, medTypes } from '@/data/index'
 import { nullPatient } from '@/utils/validate'
 import { getGreatestRole } from '@/utils/permission'
@@ -228,7 +211,11 @@ import { queryInHospitalPatientsInfo } from '@/api/medical-insurance/si-query'
 import { cptSex, cptPsnCertType, cptInsutype, cptMedType, cptYesOrNo } from '@/utils/computed'
 import { baseinfo, setBaseinfo } from '@/data/inpatient'
 import { getInjuryRegisterInfo } from '@/api/medical-insurance/si-injury'
+import IdentifyImage from '../../../components/inpatient/IdentifyImage.vue'
 export default {
+  components: {
+    IdentifyImage,
+  },
   setup() {
     const ward = reactive({
       current: '',
@@ -333,23 +320,6 @@ export default {
       currentPage.value = val
     }
 
-    const identityFiles = initIdentityFiles()
-
-    const checkIdInfo = () => {
-      if (patient.value.inpatientNo) {
-        getIdCardInfo(patient.value.inpatientNo, patient.value.admissTimes).then((res) => {
-          identityFiles.idCard = res.idCard
-          identityFiles.scanFile = res.scanFile
-        })
-      }
-    }
-    const handleClickIdCard = (val) => {
-      let img = '<img style="width: 390px; height: 210px" src="data:image/png;base64,' + val.fileSfz + '">'
-      ElMessageBox.alert(img, '身份信息', {
-        dangerouslyUseHTMLString: true,
-      })
-    }
-
     const toEmpiView = () => {
       if (nullPatient()) return
       getEmpiViewUrl(patient.value.inpatientNo).then((res) => {
@@ -361,6 +331,14 @@ export default {
       store.commit('ptnt/setInjuryMode', val === '42')
     }
 
+    const timestamp = ref(0)
+    const showIdCardImg = ref(false)
+    const checkIdCard = () => {
+      if (nullPatient()) return
+      timestamp.value = new Date().getTime()
+      showIdCardImg.value = true
+    }
+
     onMounted(() => {
       getWards().then((res) => {
         ward.wards = res
@@ -371,6 +349,7 @@ export default {
 
     return {
       ward,
+      patient,
       permission,
       tableHieght,
       injuryMode,
@@ -394,9 +373,6 @@ export default {
       handleCurrentPageChange,
       statusFlag,
       statusFlags,
-      checkIdInfo,
-      handleClickIdCard,
-      identityFiles,
       isUploadPage,
       toEmpiView,
       cptSex,
@@ -406,6 +382,9 @@ export default {
       cptYesOrNo,
       dismissIcon,
       handleMedTypeChange,
+      timestamp,
+      showIdCardImg,
+      checkIdCard,
     }
   },
 }

+ 13 - 67
src/views/medical-insurance/inpatient/MedInsVerification.vue

@@ -151,7 +151,7 @@
                 <el-tag>医保入院诊断</el-tag>
                 <el-table :data="zyInYbDiags" stripe height="160">
                   <el-table-column prop="diagNo" label="序号" width="35"></el-table-column>
-                  <el-table-column prop="icdCode" label="诊断编码" width="120"></el-table-column>
+                  <el-table-column prop="icdCode" label="诊断编码" width="80"></el-table-column>
                   <el-table-column prop="icdText" label="诊断名称"></el-table-column>
                   <el-table-column prop="opDate" label="诊断时间"></el-table-column>
                   <el-table-column prop="operName" label="录入人" width="50"></el-table-column>
@@ -161,7 +161,7 @@
                 <el-tag>医保出院诊断</el-tag>
                 <el-table :data="zyDisDiags" stripe height="160">
                   <el-table-column prop="disDiagNo" label="序号" width="35"></el-table-column>
-                  <el-table-column prop="disDiag" label="诊断编码" width="120"></el-table-column>
+                  <el-table-column prop="disDiag" label="诊断编码" width="80"></el-table-column>
                   <el-table-column prop="disDiagComment" label="诊断名称"></el-table-column>
                   <el-table-column prop="opDiagDate" label="诊断时间"></el-table-column>
                   <el-table-column prop="opName" label="录入人" width="50"></el-table-column>
@@ -185,31 +185,9 @@
               <MedfeeAnalyse type="unsettled" :timestamp="timestamp" :mdtrt-id="currentApply.mdtrtId" />
             </el-dialog>
           </div>
-          <div
-            v-show="idCardImgFile"
-            class="affix-container"
-            style="
-              position: absolute;
-              display: flex;
-              justify-content: center;
-              top: 60px;
-              left: 150px;
-              right: 150px;
-              bottom: 60px;
-              border-radius: 8px;
-              overflow-y: scroll;
-              background: rgba(0, 0, 0, 0.7);
-            "
-          >
-            <div style="position: absolute; top: 12px; right: 12px">
-              <el-affix target=".affix-container" :offset="60">
-                <el-button icon="el-icon-plus" @click="zoomInIdCard">放大</el-button>
-                <el-button icon="el-icon-refresh" @click="resetIdCard">还原</el-button>
-                <el-button icon="el-icon-close" @click=";(idCardImgFile = null), resetIdCard()">关闭</el-button>
-              </el-affix>
-            </div>
-            <img id="idCardImg" :style="idCardImgStyle" :src="idCardImgFile" />
-          </div>
+          <el-dialog v-model="showIdCardImg" title="身份信息" :close-on-click-modal="false" fullscreen :show-close="false">
+            <IdentifyImage :timestamp="timestamp" :pat-no="currentApply.patNo" :times="currentApply.times" @close="showIdCardImg = false"></IdentifyImage>
+          </el-dialog>
         </el-main>
       </el-container>
     </el-main>
@@ -224,10 +202,10 @@ import femaleIcon from '@/assets/female-icon.png'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { selectUnhandledApplies, selectPatientInfo, handleApply } from '../../../api/medical-insurance/si-settle-apply'
 import { statusFlags, trueMedTypes } from '../../../data/index'
-import { getIdCardInfo } from '@/api/yibao/patient'
 import MedfeeAnalyse from '../../../components/medical-insurance/medfee-analyse/Index.vue'
+import IdentifyImage from '../../../components/inpatient/IdentifyImage.vue'
 export default {
-  components: { MedfeeAnalyse },
+  components: { MedfeeAnalyse, IdentifyImage },
   setup() {
     const currentApply = ref({})
     const windowSize = store.state.app.windowSize
@@ -238,7 +216,7 @@ export default {
     }
     const showFeeDetl = ref(false)
     const medType = ref('')
-    const statusFlag = ref(null)
+    const statusFlag = ref('')
     const patient = ref({})
     const zyInYbDiags = ref([])
     const zyDisDiags = ref([])
@@ -246,7 +224,7 @@ export default {
     const allApplies = ref([])
     const cptApplies = computed(() => {
       return allApplies.value.filter((itm) => {
-        if (statusFlag.value) {
+        if ('' !== statusFlag.value) {
           return medType.value ? itm.medType === medType.value && itm.status === statusFlag.value : itm.status === statusFlag.value
         } else {
           return medType.value ? itm.medType === medType.value : true
@@ -328,27 +306,7 @@ export default {
           .catch(() => {})
       }
     }
-
-    const idCardImgFile = ref('')
-    const idCardImgStyle = ref({
-      width: '1,114px',
-      height: '600px',
-      borderRadius: '4px',
-      w: 1114,
-      h: 600,
-    })
-    const zoomInIdCard = () => {
-      idCardImgStyle.value.w = idCardImgStyle.value.w * 1.3
-      idCardImgStyle.value.h = idCardImgStyle.value.h * 1.3
-      idCardImgStyle.value.width = idCardImgStyle.value.w + 'px'
-      idCardImgStyle.value.height = idCardImgStyle.value.h + 'px'
-    }
-    const resetIdCard = () => {
-      idCardImgStyle.value.w = 1114
-      idCardImgStyle.value.h = 600
-      idCardImgStyle.value.width = '1114px'
-      idCardImgStyle.value.height = '600px'
-    }
+    const showIdCardImg = ref(false)
     const checkIdInfo = () => {
       if (!currentApply.value.patNo) {
         ElMessage({
@@ -358,15 +316,8 @@ export default {
           showClose: true,
         })
       } else {
-        getIdCardInfo(currentApply.value.patNo, currentApply.value.times).then((res) => {
-          if (res.idCard.length > 0) {
-            idCardImgFile.value = 'data:image/png;base64,' + res.idCard[0].fileSfz
-          } else {
-            if (res.scanFile.length > 0) {
-              idCardImgFile.value = 'data:image/png;base64,' + res.scanFile[0].fileSfz
-            }
-          }
-        })
+        timestamp.value = new Date().getTime()
+        showIdCardImg.value = true
       }
     }
 
@@ -380,7 +331,6 @@ export default {
       mainBoxStyle,
       showFeeDetl,
       timestamp,
-      idCardImgFile,
       currentApply,
       cptApplies,
       tableHeight,
@@ -395,13 +345,11 @@ export default {
       zyInYbDiags,
       zyDisDiags,
       zySurgeries,
+      showIdCardImg,
       handleClickOverview,
       beforeHandleApply,
       feeDtle,
       checkIdInfo,
-      idCardImgStyle,
-      zoomInIdCard,
-      resetIdCard,
     }
   },
 }
@@ -420,8 +368,6 @@ function getStatusFlag(status, patNo) {
 </script>
 
 <style scoped>
-.affix-container {
-}
 :deep(.m-component .el-dialog__body) {
   padding: 0 !important;
 }