Browse Source

药品退费提药单。

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
fceaf0b2b2

+ 30 - 6
src/api/inpatient/xiang-mu-lu-ru.js

@@ -150,19 +150,43 @@ export function xiuGaiZiFeiBiaoZhi(data) {
     })
 }
 
-export function drugRefundForm(groupNo, patNo, times, refundTime) {
+export function rejectNotGeneratedMedicationList(patNo, times) {
     return request({
-        url: '/xmlr/drugRefundForm',
+        url: '/xmlr/rejectNotGeneratedMedicationList',
         method: 'get',
-        params: {groupNo, patNo, times, refundTime},
+        params: {patNo, times},
     })
 }
 
-export function rejectNotGeneratedMedicationList(patNo, times) {
+export function getNoMedicineReturnOrderGenerated(startDate, endDate, groupNo) {
     return request({
-        url: '/xmlr/rejectNotGeneratedMedicationList',
+        url: '/xmlr/getNoMedicineReturnOrderGenerated',
         method: 'get',
-        params: {patNo, times},
+        params: {startDate, endDate, groupNo},
+    })
+}
+
+export function generateMedicationList(startDate, endDate, groupNo) {
+    return request({
+        url: '/xmlr/generateMedicationList',
+        method: 'get',
+        params: {startDate, endDate, groupNo},
+    })
+}
+
+export function getPrescription(startDate, endDate) {
+    return request({
+        url: '/xmlr/getPrescription',
+        method: 'get',
+        params: {startDate, endDate},
+    })
+}
+
+export function getAPrescriptionByPageNo(pageNo) {
+    return request({
+        url: '/xmlr/getAPrescriptionByPageNo',
+        method: 'get',
+        params: {pageNo},
     })
 }
 

+ 0 - 15
src/components/inpatient/XiangMuLuRu.vue

@@ -120,11 +120,8 @@
                 v-if="refundConfirmation.dialog"
                 @uncheck="refundUncheck"
                 :patient="patient"
-                @popUpTheDrugRefundBox="退药单弹框 = true"
                 v-model="refundConfirmation.dialog"
                 :list="refundConfirmation.data"/>
-            <el-button icon="Printer" type="primary" @click="点击打印退药单">打印退药单</el-button>
-            <print-the-drug-return-form v-if="退药单弹框" :patient="patient" @close="退药单弹框 = false"/>
             <el-button v-if="store.state.user.info.roles.findIndex((i) => i === 1 || i === 8) > -1" type="warning"
                        @click="sheZhiWeiYiVBao">设为医保
             </el-button>
@@ -401,9 +398,7 @@ import {getDept} from '@/api/public-api'
 import {baseinfo} from '@/data/inpatient'
 import {listIsBlank} from '@/utils/blank-utils'
 import Sleep from "@/utils/sleep";
-import PrintTheDrugReturnForm from "@/components/med-tec-mod/PrintTheDrugReturnForm";
 import RefundForProjectEntry from "@/components/med-tec-mod/RefundForProjectEntry";
-import XcTable from "@/components/xiao-chan/xc-table/XcTable";
 import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
 
 const props = defineProps({
@@ -890,16 +885,6 @@ const sheZhiWeiYiVBao = () => {
       })
 }
 
-
-const getRowKey = (row) => {
-  return row.inpatientNo + row.admissTimes + row.ledgerSn + row.detailSn
-}
-
-let 退药单弹框 = $ref(false)
-const 点击打印退药单 = () => {
-  退药单弹框 = true
-}
-
 </script>
 
 <style></style>

+ 0 - 190
src/components/med-tec-mod/PrintTheDrugReturnForm.vue

@@ -1,190 +0,0 @@
-<template>
-  <xc-dialog-v2 v-model="dialog" title="退药单" @closed="emit('close')">
-    <page-layer>
-      <template #header>
-        药房:
-        <el-select v-model="groupNo" @change="queryTheDrugReturnForm">
-          <el-option value="71" label="门诊"/>
-          <el-option value="73" label="住院"/>
-        </el-select>
-        退费时间:
-        <el-date-picker type="date"
-                        placeholder="Pick a day"
-                        value-format="YYYY-MM-DD"
-                        v-model="refundTime"/>
-        <el-button @click="queryTheDrugReturnForm">查询</el-button>
-        <el-button @click="clickPrint">打印</el-button>
-      </template>
-      <template #mainMaxContentHeight>
-
-        <div style="display: flex">
-          <div style="flex: 1">
-            <div v-for="(value,key) in billNoMap"
-                 class="drug_button"
-                 :style="selectStyle(key)"
-                 @click="checkTheMedicineList(value,key)">
-              药单: {{ key }}
-            </div>
-          </div>
-          <div style="border: 1px solid; height: 500px;width: 560px">
-            <div ref="divRef" style="width: 100%">
-              <table>
-                <thead>
-                <tr>
-                  <th colspan="7">
-                    <div style="font-size: 20px;margin: 5px">护士退药单</div>
-                    <div style="font-size: 12px;margin: 5px; display: flex;justify-content: space-between">
-                      <div>
-                        住院号: {{ patient.inpatientNo }}
-                      </div>
-                      <div>
-                        住院次数: {{ patient.admissTimes }}
-                      </div>
-                      <div>
-                        姓名: {{ patient.name }}
-                      </div>
-                      <div>
-                        药单: {{ currentPageNo }}
-                      </div>
-                    </div>
-                  </th>
-                </tr>
-                <tr>
-                  <th>编码</th>
-                  <th>名称</th>
-                  <th>规格</th>
-                  <th>数量</th>
-                  <th>零售价</th>
-                  <th>金额</th>
-                </tr>
-                </thead>
-                <tbody>
-                <tr v-for="(drugs,di) in list">
-                  <td>
-                    {{ drugs.chargeCode }}
-                  </td>
-                  <td>
-                    {{ drugs.drugName }}
-                  </td>
-                  <td>
-                    {{ drugs.specification }}
-                  </td>
-                  <td>
-                    {{ drugs.amount }}
-                  </td>
-                  <td>
-                    {{ drugs.packRetprice }}
-                  </td>
-                  <td>
-                    {{ drugs.retprice }}
-                  </td>
-                </tr>
-                </tbody>
-              </table>
-
-            </div>
-          </div>
-        </div>
-
-
-      </template>
-    </page-layer>
-  </xc-dialog-v2>
-</template>
-
-<script setup name='PrintTheDrugReturnForm'>
-import {getLodop, initLodop} from '@/utils/c-lodop'
-import {drugRefundForm} from '@/api/inpatient/xiang-mu-lu-ru'
-import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2";
-import PageLayer from "@/layout/PageLayer";
-import {getServerDateApi} from "@/api/public-api";
-import {getFormatDatetime} from "@/utils/date";
-
-const emit = defineEmits(['close'])
-const props = defineProps({
-  patient: {
-    type: Object
-  }
-})
-const divRef = ref()
-
-let groupNo = $ref('71')
-let refundTime = $ref()
-let dialog = $ref(true)
-let list = $ref([])
-
-/**
- * 打印退药但
- */
-const clickPrint = () => {
-  let LOOP = getLodop()
-  LODOP.PRINT_INIT('护士退药单') // 初始化打印机 名字
-  LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A4')// 设置纸张大小  A4
-  LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
-  let style = '<style>' + 'table,tr,td{border-collapse:collapse;border:1px solid}table{width:100%}' + '</style>'
-  let body = '<body>' + divRef.value?.innerHTML + '</body>'
-  LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', style + body) //要打印的内容
-  LODOP.PREVIEW() // 关闭
-}
-
-let billNoMap = $ref({})
-
-const queryTheDrugReturnForm = () => {
-  drugRefundForm(groupNo, props.patient.inpatientNo, props.patient.admissTimes, refundTime == null ? '' : refundTime).then((res) => {
-    billNoMap = res
-  })
-}
-
-// 当前药单号
-let currentPageNo = $ref('')
-const checkTheMedicineList = (value, key) => {
-  list = value
-  currentPageNo = key
-}
-
-// 选中的样式
-const selectStyle = (key) => {
-  if (key === currentPageNo) {
-    return {
-      backgroundColor: '#f16565',
-      color: '#fff'
-    }
-  }
-}
-
-onMounted(async () => {
-  if (props.patient.groupNo) {
-    groupNo = props.patient.groupNo
-  }
-  refundTime = getFormatDatetime(await getServerDateApi(), 'YYYY-MM-DD')
-  queryTheDrugReturnForm()
-  await nextTick()
-  initLodop()
-})
-
-</script>
-
-<style scoped lang="scss">
-table, tr, td {
-  border-collapse: collapse;
-  border: 1px solid;
-}
-
-table {
-  width: 100%;
-}
-
-
-.drug_button {
-  padding: 5px;
-  border-radius: 5px;
-  margin: 5px;
-  font-size: 12px;
-  cursor: default;
-  text-align: center;
-
-  background-color: #0a84fd;
-  color: white;
-}
-
-</style>

+ 213 - 0
src/components/medical-insurance/medicine-return-order/GenerateMedicineReturnOrder.vue

@@ -0,0 +1,213 @@
+<template>
+  <el-button type="warning" @click="dialog = true">生成退药单</el-button>
+  <xc-dialog-v2 v-model="dialog" title="生成退药单">
+    <div class="header">
+      药房:
+      <el-select v-model="groupNo"
+                 style="width: 90px"
+                 @change="dateRangeChange">
+        <el-option value="71" label="门诊"/>
+        <el-option value="73" label="住院"/>
+      </el-select>
+      <div>
+        <el-date-picker
+            style="width: 220px"
+            type="daterange"
+            v-model="dateRange"
+            @change="dateRangeChange"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"/>
+      </div>
+      <el-divider direction="vertical"/>
+      <el-button @click="submit">取数</el-button>
+      <el-button @click="generateClick">生成药单</el-button>
+      <el-button @click="queryTheMedicineList">查询药单</el-button>
+      <el-button type="primary" icon="Printer" @click="printThePrescription">打印</el-button>
+    </div>
+
+
+    <div style="display: flex">
+      <div style="flex: 1">
+        <div v-for="(value,key) in pageNoList"
+             class="drug_button"
+             :style="medicationListSelectionStyle(value.pageNo)"
+             @click="clickTheMedicineList(value)">
+          {{ value.pageNo }}
+          {{ value.groupName }}
+        </div>
+      </div>
+      <div style="border: 1px solid; height: 500px;width: 560px">
+        <div ref="divRef" style="width: 100%">
+          <table>
+            <thead>
+            <tr>
+              <th colspan="7">
+                <div style="font-size: 20px;margin: 5px">护士退药单</div>
+                <div>
+                  药单号: {{ data.pageNo === null ? '未生成药单' : data.pageNo }}
+                </div>
+              </th>
+            </tr>
+            <tr>
+              <th>编码</th>
+              <th>名称</th>
+              <th>规格</th>
+              <th>数量</th>
+              <th>零售价</th>
+              <th>金额</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr v-for="(drugs,di) in data.pageNo ===null ? data.notGenerated : data.toGenerate">
+              <td>
+                {{ drugs.chargeCode }}
+              </td>
+              <td>
+                {{ drugs.drugName }}
+              </td>
+              <td>
+                {{ drugs.specification }}
+              </td>
+              <td>
+                {{ drugs.amount }}
+              </td>
+              <td>
+                {{ drugs.packRetprice }}
+              </td>
+              <td>
+                {{ drugs.retprice }}
+              </td>
+            </tr>
+            </tbody>
+          </table>
+
+        </div>
+      </div>
+    </div>
+
+  </xc-dialog-v2>
+</template>
+
+<script setup name='GenerateMedicineReturnOrder'>
+import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
+import {getServerDateApi} from "@/api/public-api";
+import {getDateRangeFormatDate, getFormatDatetime} from "@/utils/date";
+import {
+  generateMedicationList, getAPrescriptionByPageNo,
+  getNoMedicineReturnOrderGenerated,
+  getPrescription
+} from "@/api/inpatient/xiang-mu-lu-ru";
+import {BizException, ExceptionEnum} from "@/utils/BizException";
+import {listIsBlank} from "@/utils/blank-utils";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import {clone} from "@/utils/clone";
+
+const dialog = ref(false)
+const dateRange = ref([])
+
+let data = $ref({
+  notGenerated: [],
+  toGenerate: [],
+  pageNo: null
+})
+let groupNo = $ref('73')
+
+const submit = () => {
+  let dateS = getDateRangeFormatDate(dateRange.value)
+  getNoMedicineReturnOrderGenerated(dateS.startTime, dateS.endTime, groupNo).then((res) => {
+    data.notGenerated = res
+    data.pageNo = null
+  })
+}
+
+const dateRangeChange = () => {
+  data.notGenerated = []
+}
+
+const generateClick = async () => {
+  if (listIsBlank(data.notGenerated)) {
+    BizException(ExceptionEnum.MESSAGE_ERROR, "请先取数")
+  }
+  let dateS = getDateRangeFormatDate(dateRange.value)
+  data.pageNo = await generateMedicationList(dateS.startTime, dateS.endTime, groupNo)
+  data.toGenerate = clone(data.notGenerated)
+  await queryTheMedicineList()
+}
+
+let pageNoList = $ref([])
+const queryTheMedicineList = () => {
+  let dateS = getDateRangeFormatDate(dateRange.value)
+  getPrescription(dateS.startTime, dateS.endTime).then((res) => {
+    pageNoList = res
+    console.log(res)
+  })
+}
+
+// 根据要单号获取药品
+const clickTheMedicineList = ({pageNo}) => {
+  getAPrescriptionByPageNo(pageNo).then(res => {
+    console.log(res)
+    data.pageNo = pageNo
+    data.toGenerate = res
+  })
+}
+
+const divRef = ref(null)
+const printThePrescription = () => {
+  let LODOP = getLodop()
+  LODOP.PRINT_INIT('护士退药单') // 初始化打印机 名字
+  LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A4')// 设置纸张大小  A4
+  LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
+  let style = '<style>' + 'table,tr,td{border-collapse:collapse;border:1px solid}table{width:100%}' + '</style>'
+  let body = '<body>' + divRef.value?.innerHTML + '</body>'
+  LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', style + body) //要打印的内容
+  LODOP.PREVIEW() // 关闭
+}
+
+
+const medicationListSelectionStyle = (pageNo) => {
+  console.log(pageNo, data.pageNo)
+  if (pageNo === data.pageNo) {
+    return {
+      "backgroundColor": 'red',
+    }
+  }
+}
+
+onMounted(async () => {
+  let temp = await getServerDateApi()
+  temp = getFormatDatetime(temp, "YYYY-MM-DD")
+  dateRange.value = [temp, temp]
+  initLodop()
+})
+
+</script>
+
+<style scoped lang="scss">
+.header {
+  display: flex;
+  align-items: center;
+  margin-bottom: 5px;
+}
+
+table, tr, td {
+  border-collapse: collapse;
+  border: 1px solid;
+}
+
+table {
+  width: 100%;
+}
+
+.drug_button {
+  padding: 5px;
+  border-radius: 5px;
+  margin: 5px;
+  font-size: 12px;
+  cursor: default;
+  text-align: center;
+
+  background-color: #0a84fd;
+  color: white;
+}
+</style>

+ 1 - 1
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor.vue

@@ -107,8 +107,8 @@
               v-model="yiZhuData.startTime"
               :disabled-date="disabledDate"
               id="yz_startTime"
-              format="YYYY-MM-DD HH:mm:ss"
               type="datetime"
+              format="YYYY-MM-DD HH:mm:ss"
               value-format="YYYY-MM-DD HH:mm:ss"
           ></el-date-picker>
         </div>

+ 306 - 302
src/views/medical-insurance/inpatient/AdmRegistration.vue

@@ -1,156 +1,158 @@
 <template>
-    <div>
-      <el-button icon="Location" type="primary" @click="beforeFetchAssigninfo">定点信息</el-button>
-      <el-button icon="Check" type="primary" @click="submitPatientInfo"> 保存</el-button>
-      <ReadCard :pat-no="patient.inpatientNo" biztype="01103" @success="afterReadCard"/>
-      <el-button icon="Top" type="success" @click="checkRegisterDatetime">医保入院登记</el-button>
-      <el-button icon="Bottom" type="danger" @click="beforeCancelRegister">撤销入院登记</el-button>
-      <el-button icon="Coin" type="success" @click="xiangMuLuRuRouter">项目录入</el-button>
-    </div>
-    <div style="margin-top: 4px">
-      <el-tag type="info">病人基本信息</el-tag>
-      <div style="height: 4px"></div>
-      <el-descriptions :column="3" 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.birthDate }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label>入院日期</template>
-          {{ patient.admissDate }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 病区</template>
-          {{ patient.admissWardName }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 入院诊断</template>
-          <div style="width: 180px" class="ellipsis-text" :title="patient.admissDiagStr">
-            {{ patient.admissDiagStr }}
-          </div>
-        </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>
-          <el-input v-model="patient.socialNo" style="width: 180px" clearable></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 姓名</template>
-          <el-input v-model="patient.name" style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 性别</template>
-          <el-select v-model="patient.sex" placeholder=" " style="width: 180px">
-            <el-option v-for="item in sexes" :key="item.code" :label="item.name" :value="item.code"></el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 联系电话</template>
-          <el-input v-model="patient.homeTel" style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 管床医生</template>
-          <el-input v-model="patient.referPhysicianName" readonly @click="searchPhysician(1)"
-                    style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 责任护士</template>
-          <el-input v-model="patient.dutyNurseName" readonly @click="searchPhysician(2)"
-                    style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 国籍</template>
-          <el-select v-model="patient.country" style="width: 180px" :filterable="true">
-            <el-option v-for="item in countries" :key="item.code" :label="item.name" :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 民族</template>
-          <el-select v-model="patient.nation" style="width: 180px" :filterable="true">
-            <el-option v-for="item in nations" :key="item.code" :label="item.name" :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 联系人姓名</template>
-          <el-input v-model="patient.contactName" style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 联系人关系</template>
-          <el-select v-model="patient.contactRelation" style="width: 180px" :filterable="true">
-            <el-option v-for="item in relations" :key="item.code" :label="item.name" :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 联系人地址</template>
-          <el-input v-model="patient.contactAddrName" style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 联系人电话</template>
-          <el-input v-model="patient.contactPhone" style="width: 180px"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 登记日期</template>
-          <el-date-picker v-model="patient.ybRegisterDate" placeholder="选择日期时间" style="width: 180px"
-                          type="datetime"
-                          @change="formatYbRegisterDate"></el-date-picker>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 参保地区</template>
-          <el-select v-if="injuryMode" v-model="patient.injuryArea" placeholder="工伤参保地" size="small">
-            <el-option v-for="item in injuryAreas" :key="item.code" :label="item.name" :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-          <el-select v-else v-model="patient.admdvs" :clearable="true" :filterable="true" placeholder="请选择" style="width: 180px">
-            <el-option v-for="item in admdvses" :key="item.code" :label="item.name" :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 医疗类别</template>
-          <el-select v-model="patient.medType" :clearable="true" placeholder="请选择" @change="handleSelectMedType"
-                     style="width: 180px">
-            <el-option v-for="item in medTypes" :key="item.code" :disabled="item.disabled" :label="item.name"
-                       :value="item.code">
-              <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
-              <el-divider direction="vertical"></el-divider>
-              <span>{{ item.name }}</span>
-            </el-option>
-          </el-select>
-        </el-descriptions-item>
-        <span v-if="patient.medType === '52'">
+  <div>
+    <el-button icon="Location" type="primary" @click="beforeFetchAssigninfo">定点信息</el-button>
+    <el-button icon="Check" type="primary" @click="submitPatientInfo"> 保存</el-button>
+    <ReadCard :pat-no="patient.inpatientNo" biztype="01103" @success="afterReadCard"/>
+    <el-button icon="Top" type="success" @click="checkRegisterDatetime">医保入院登记</el-button>
+    <el-button icon="Bottom" type="danger" @click="beforeCancelRegister">撤销入院登记</el-button>
+    <el-button icon="Coin" type="success" @click="xiangMuLuRuRouter">项目录入</el-button>
+    <generate-medicine-return-order/>
+  </div>
+  <div style="margin-top: 4px">
+    <el-tag type="info">病人基本信息</el-tag>
+    <div style="height: 4px"></div>
+    <el-descriptions :column="3" 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.birthDate }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>入院日期</template>
+        {{ patient.admissDate }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 病区</template>
+        {{ patient.admissWardName }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 入院诊断</template>
+        <div style="width: 180px" class="ellipsis-text" :title="patient.admissDiagStr">
+          {{ patient.admissDiagStr }}
+        </div>
+      </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>
+        <el-input v-model="patient.socialNo" style="width: 180px" clearable></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 姓名</template>
+        <el-input v-model="patient.name" style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 性别</template>
+        <el-select v-model="patient.sex" placeholder=" " style="width: 180px">
+          <el-option v-for="item in sexes" :key="item.code" :label="item.name" :value="item.code"></el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 联系电话</template>
+        <el-input v-model="patient.homeTel" style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 管床医生</template>
+        <el-input v-model="patient.referPhysicianName" readonly @click="searchPhysician(1)"
+                  style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 责任护士</template>
+        <el-input v-model="patient.dutyNurseName" readonly @click="searchPhysician(2)"
+                  style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 国籍</template>
+        <el-select v-model="patient.country" style="width: 180px" :filterable="true">
+          <el-option v-for="item in countries" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 民族</template>
+        <el-select v-model="patient.nation" style="width: 180px" :filterable="true">
+          <el-option v-for="item in nations" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 联系人姓名</template>
+        <el-input v-model="patient.contactName" style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 联系人关系</template>
+        <el-select v-model="patient.contactRelation" style="width: 180px" :filterable="true">
+          <el-option v-for="item in relations" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 联系人地址</template>
+        <el-input v-model="patient.contactAddrName" style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 联系人电话</template>
+        <el-input v-model="patient.contactPhone" style="width: 180px"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 登记日期</template>
+        <el-date-picker v-model="patient.ybRegisterDate" placeholder="选择日期时间" style="width: 180px"
+                        type="datetime"
+                        @change="formatYbRegisterDate"></el-date-picker>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 参保地区</template>
+        <el-select v-if="injuryMode" v-model="patient.injuryArea" placeholder="工伤参保地" size="small">
+          <el-option v-for="item in injuryAreas" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+        <el-select v-else v-model="patient.admdvs" :clearable="true" :filterable="true" placeholder="请选择"
+                   style="width: 180px">
+          <el-option v-for="item in admdvses" :key="item.code" :label="item.name" :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label> 医疗类别</template>
+        <el-select v-model="patient.medType" :clearable="true" placeholder="请选择" @change="handleSelectMedType"
+                   style="width: 180px">
+          <el-option v-for="item in medTypes" :key="item.code" :disabled="item.disabled" :label="item.name"
+                     :value="item.code">
+            <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+            <el-divider direction="vertical"></el-divider>
+            <span>{{ item.name }}</span>
+          </el-option>
+        </el-select>
+      </el-descriptions-item>
+      <span v-if="patient.medType === '52'">
           <el-descriptions-item>
             <template #label>生育类别</template>
               <el-select v-model="patient.matnType" placeholder="请选择" style="width: 180px">
@@ -172,161 +174,161 @@
             </el-select>
           </el-descriptions-item>
         </span>
-        <el-descriptions-item v-if="patient.medType === '2102' || patient.medType === '52'">
-          <template #label>患者病种</template>
-          <el-input v-model="patient.diseName" readonly style="width: 180px" @click="openDiseInput"></el-input>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label>就诊人群类型</template>
-          <el-select v-model="expContent.MDTRT_GRP_TYPE" placeholder="请选择" style="width: 180px">
-            <el-option v-for="item in mdtrtGrpTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label>外伤标志</template>
-          <el-select v-model="expContent.TRUM_FLAG" placeholder="请选择" style="width: 180px">
-            <el-option label="否" value="0"></el-option>
-            <el-option label="是" value="1"></el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label>涉及第三方标志</template>
-          <el-select v-model="expContent.REL_TTP_FLAG" placeholder="请选择" style="width: 180px">
-            <el-option label="否" value="0"></el-option>
-            <el-option label="是" value="1"></el-option>
-          </el-select>
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label>住院类型</template>
-          <el-select v-model="expContent.IPT_TYPE" placeholder="请选择" style="width: 180px">
-            <el-option label="普通住院" value="1"></el-option>
-            <el-option label="急诊或者请求住院" value="2"></el-option>
-            <el-option label="转院住院" value="2"></el-option>
-          </el-select>
-        </el-descriptions-item>
-      </el-descriptions>
-
-      <div style="margin-top: 16px">
-        <el-tag type="info"> 医保入院诊断(*自费患者无需填写*)</el-tag>
-        <el-button circle icon="Plus" title="添加入院诊断" type="primary" @click="openDiagDialog"></el-button>
-        <el-button :disabled="zyInYbDiags.length === 0" circle icon="Check" title="保存入院诊断" type="success"
-                   @click="saveYbDiags"></el-button>
-      </div>
-      <div style="margin-top: 8px">
-        <el-table :data="zyInYbDiags" height="160" stripe>
-          <el-table-column label="诊断序号" prop="diagNo"></el-table-column>
-          <el-table-column label="诊断属性" prop="property"></el-table-column>
-          <el-table-column label="诊断编码" prop="icdCode"></el-table-column>
-          <el-table-column label="诊断名称" prop="icdText"></el-table-column>
-          <el-table-column label="诊断类别">
-            <template #default="scope">
-              {{ getDiagTypeName(scope.row.diagType) }}
-            </template>
-          </el-table-column>
-          <el-table-column label="诊断时间" prop="opDate"></el-table-column>
-          <el-table-column label="操作">
-            <template #default="scope">
-              <el-button circle icon="Delete" type="danger" @click="deleteYbDiag(scope.$index)"></el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <Assignmentinfo v-if="showAssigninfo" :admdvs="patient.admdvs" :social-no="patient.socialNo"
-                      @close="showAssigninfo = false"/>
+      <el-descriptions-item v-if="patient.medType === '2102' || patient.medType === '52'">
+        <template #label>患者病种</template>
+        <el-input v-model="patient.diseName" readonly style="width: 180px" @click="openDiseInput"></el-input>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>就诊人群类型</template>
+        <el-select v-model="expContent.MDTRT_GRP_TYPE" placeholder="请选择" style="width: 180px">
+          <el-option v-for="item in mdtrtGrpTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>外伤标志</template>
+        <el-select v-model="expContent.TRUM_FLAG" placeholder="请选择" style="width: 180px">
+          <el-option label="否" value="0"></el-option>
+          <el-option label="是" value="1"></el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>涉及第三方标志</template>
+        <el-select v-model="expContent.REL_TTP_FLAG" placeholder="请选择" style="width: 180px">
+          <el-option label="否" value="0"></el-option>
+          <el-option label="是" value="1"></el-option>
+        </el-select>
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>住院类型</template>
+        <el-select v-model="expContent.IPT_TYPE" placeholder="请选择" style="width: 180px">
+          <el-option label="普通住院" value="1"></el-option>
+          <el-option label="急诊或者请求住院" value="2"></el-option>
+          <el-option label="转院住院" value="2"></el-option>
+        </el-select>
+      </el-descriptions-item>
+    </el-descriptions>
+
+    <div style="margin-top: 16px">
+      <el-tag type="info"> 医保入院诊断(*自费患者无需填写*)</el-tag>
+      <el-button circle icon="Plus" title="添加入院诊断" type="primary" @click="openDiagDialog"></el-button>
+      <el-button :disabled="zyInYbDiags.length === 0" circle icon="Check" title="保存入院诊断" type="success"
+                 @click="saveYbDiags"></el-button>
     </div>
-    <el-dialog v-model="openXmlr" :fullscreen="true" destroy-on-close title="项目录入" @close="openXmlr = false">
-      <Xmlr @closeXmlr="openXmlr = false"/>
-    </el-dialog>
-    <el-dialog v-model="showSearchSpecialDiag" :close-on-click-modal="false" title="医保患者病种录入" width="60%">
-      <div style="margin: -16px 0 4px 2px; height: 22px; line-height: 22px">
-        患者当前病种:
-        <span style="padding: 2px 6px; background: #005279; border-radius: 4px; color: white">
-          {{ patient.diseCode ? (patient.diseCode + ' | ' + patient.diseName) : '无' }}
-        </span>
-      </div>
-      <el-tag>可选病种</el-tag>&nbsp;&nbsp;
-      <el-input v-model="specialDiagName" clearable placeholder="请输入病种名称" style="width: 260px"></el-input>
-      <el-table :data="cptSpecialDiags.slice((currentPage - 1) * 10, currentPage * 10)" height="400"
-                highlight-current-row stripe>
-        <el-table-column label="病种编码" prop="newCode"></el-table-column>
-        <el-table-column label="病种名称" prop="newName"></el-table-column>
-        <el-table-column label="限额方式" prop="limitWay"></el-table-column>
-        <el-table-column label="限额额度计算方式" prop="limitAmountCalculateWay"></el-table-column>
-        <el-table-column label="疾病限额" prop="limitAmount"></el-table-column>
-        <el-table-column>
+    <div style="margin-top: 8px">
+      <el-table :data="zyInYbDiags" height="160" stripe>
+        <el-table-column label="诊断序号" prop="diagNo"></el-table-column>
+        <el-table-column label="诊断属性" prop="property"></el-table-column>
+        <el-table-column label="诊断编码" prop="icdCode"></el-table-column>
+        <el-table-column label="诊断名称" prop="icdText"></el-table-column>
+        <el-table-column label="诊断类别">
           <template #default="scope">
-            <el-button type="primary" @click="addDiseInfo(scope.row)">选择此病种</el-button>
+            {{ getDiagTypeName(scope.row.diagType) }}
+          </template>
+        </el-table-column>
+        <el-table-column label="诊断时间" prop="opDate"></el-table-column>
+        <el-table-column label="操作">
+          <template #default="scope">
+            <el-button circle icon="Delete" type="danger" @click="deleteYbDiag(scope.$index)"></el-button>
           </template>
         </el-table-column>
       </el-table>
-      <el-pagination
-          :current-page="currentPage"
-          :page-size="10"
-          :total="cptSpecialDiags.length"
-          :layout="'total, prev, pager, next, jumper'"
-          style="margin-top: 5px"
-          @current-change="handleCurrentChange"
-      ></el-pagination>
-    </el-dialog>
-
-    <el-dialog v-model="showAdmissApplyForm" title="医保入院登记申请" width="500px">
-      <div style="margin-bottom: 20px">
-        登记时间:
-        <el-date-picker v-model="admissApply.admissDatetime" placeholder="请选择医保登记开始时间"
-                        type="datetime"></el-date-picker>
-      </div>
-      <el-input v-model="admissApply.inputComment" placeholder="请输入申请理由" type="textarea"></el-input>
-      <div style="width: 450px; text-align: right; margin-top: 30px">
-        <el-button icon="Close" type="info" @click="cancelAdmissApply">取消</el-button>
-        <el-button icon="Check" type="success" @click="confirmAdmissApply">提交</el-button>
-      </div>
-    </el-dialog>
-    <el-dialog v-model="showPsnInsuinfo" title="人员信息" width="65%">
-      <el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
-      <div v-if="injuryMode">
-        <el-table :data="injuryinfo" height="180" stripe @row-click="handleClickInjuryinfo">
-          <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" height="180" stripe @row-click="handleClickInsuinfo">
-          <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" height="180" stripe>
-          <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>
-    <Search
-        v-if="searchParams.showSearch"
-        :med-type="patient.medType"
-        :target="searchParams.target"
-        :title="searchParams.title"
-        @close="searchParams.showSearch = false"
-        @click-item="handleClickSearchItem"
-    />
+    </div>
+    <Assignmentinfo v-if="showAssigninfo" :admdvs="patient.admdvs" :social-no="patient.socialNo"
+                    @close="showAssigninfo = false"/>
+  </div>
+  <el-dialog v-model="openXmlr" :fullscreen="true" destroy-on-close title="项目录入" @close="openXmlr = false">
+    <Xmlr @closeXmlr="openXmlr = false"/>
+  </el-dialog>
+  <el-dialog v-model="showSearchSpecialDiag" :close-on-click-modal="false" title="医保患者病种录入" width="60%">
+    <div style="margin: -16px 0 4px 2px; height: 22px; line-height: 22px">
+      患者当前病种:
+      <span style="padding: 2px 6px; background: #005279; border-radius: 4px; color: white">
+          {{ patient.diseCode ? (patient.diseCode + ' | ' + patient.diseName) : '无' }}
+        </span>
+    </div>
+    <el-tag>可选病种</el-tag>&nbsp;&nbsp;
+    <el-input v-model="specialDiagName" clearable placeholder="请输入病种名称" style="width: 260px"></el-input>
+    <el-table :data="cptSpecialDiags.slice((currentPage - 1) * 10, currentPage * 10)" height="400"
+              highlight-current-row stripe>
+      <el-table-column label="病种编码" prop="newCode"></el-table-column>
+      <el-table-column label="病种名称" prop="newName"></el-table-column>
+      <el-table-column label="限额方式" prop="limitWay"></el-table-column>
+      <el-table-column label="限额额度计算方式" prop="limitAmountCalculateWay"></el-table-column>
+      <el-table-column label="疾病限额" prop="limitAmount"></el-table-column>
+      <el-table-column>
+        <template #default="scope">
+          <el-button type="primary" @click="addDiseInfo(scope.row)">选择此病种</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+        :current-page="currentPage"
+        :page-size="10"
+        :total="cptSpecialDiags.length"
+        :layout="'total, prev, pager, next, jumper'"
+        style="margin-top: 5px"
+        @current-change="handleCurrentChange"
+    ></el-pagination>
+  </el-dialog>
+
+  <el-dialog v-model="showAdmissApplyForm" title="医保入院登记申请" width="500px">
+    <div style="margin-bottom: 20px">
+      登记时间:
+      <el-date-picker v-model="admissApply.admissDatetime" placeholder="请选择医保登记开始时间"
+                      type="datetime"></el-date-picker>
+    </div>
+    <el-input v-model="admissApply.inputComment" placeholder="请输入申请理由" type="textarea"></el-input>
+    <div style="width: 450px; text-align: right; margin-top: 30px">
+      <el-button icon="Close" type="info" @click="cancelAdmissApply">取消</el-button>
+      <el-button icon="Check" type="success" @click="confirmAdmissApply">提交</el-button>
+    </div>
+  </el-dialog>
+  <el-dialog v-model="showPsnInsuinfo" title="人员信息" width="65%">
+    <el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
+    <div v-if="injuryMode">
+      <el-table :data="injuryinfo" height="180" stripe @row-click="handleClickInjuryinfo">
+        <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" height="180" stripe @row-click="handleClickInsuinfo">
+        <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" height="180" stripe>
+        <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>
+  <Search
+      v-if="searchParams.showSearch"
+      :med-type="patient.medType"
+      :target="searchParams.target"
+      :title="searchParams.title"
+      @close="searchParams.showSearch = false"
+      @click-item="handleClickSearchItem"
+  />
 </template>
 
 <script setup>
@@ -355,6 +357,8 @@ import Xmlr from '@/components/inpatient/XiangMuLuRu.vue'
 import Assignmentinfo from '@/components/medical-insurance/assigninfo/Index.vue'
 import Search from '@/components/search/Index.vue'
 import ReadCard from '@/components/medical-insurance/readcard/Index.vue'
+import GenerateMedicineReturnOrder
+  from "@/components/medical-insurance/medicine-return-order/GenerateMedicineReturnOrder.vue";
 
 
 const greatestRole = getGreatestRole()

+ 53 - 77
src/views/medical-insurance/inpatient/Home.vue

@@ -5,34 +5,35 @@
         <el-option v-for="item in search.methods" :key="item.code" :value="item.code" :label="item.name"></el-option>
       </el-select>
       <span v-if="permission < 10" style="margin-left: 8px">
-            <el-input v-model="search.zyh" style="width: 100px" clearable @keyup.enter="searchPatient" placeholder="住院号"></el-input>
+            <el-input v-model="search.zyh" style="width: 100px" clearable @keyup.enter="searchPatient"
+                      placeholder="住院号"></el-input>
             <el-button type="primary" icon="Search" @click="searchPatient">检索</el-button>
           </span>
       <el-button type="primary" icon="Postcard" @click="checkIdCard" style="margin-left: 8px">身份信息</el-button>
-      <el-button style="margin-left: 10px" type="success" icon="Document" @click="getRegInfo">登记信息 </el-button>
-      <el-button style="margin-left: 10px" type="danger" icon="MagicStick" @click="toEmpiView">360视图 </el-button>
+      <el-button style="margin-left: 10px" type="success" icon="Document" @click="getRegInfo">登记信息</el-button>
+      <el-button style="margin-left: 10px" type="danger" icon="MagicStick" @click="toEmpiView">360视图</el-button>
     </template>
     <template #aside>
-      <Overview ref="overview" :showSelection="isUploadPage" />
+      <Overview ref="overview" :showSelection="isUploadPage"/>
     </template>
     <template #main>
       <router-view v-slot="{ Component }">
         <transition name="fade-transform" mode="out-in">
           <keep-alive>
-            <component :is="Component" />
+            <component :is="Component"/>
           </keep-alive>
         </transition>
       </router-view>
       <Registinfo v-if="showRegisterInfo" :params="patient" @close="showRegisterInfo = false"></Registinfo>
-      <IdentifyImage v-if="showIdCardImg" :pat-no="patient.inpatientNo" :times="patient.admissTimes" @close="showIdCardImg = false"></IdentifyImage>
+      <IdentifyImage v-if="showIdCardImg" :pat-no="patient.inpatientNo" :times="patient.admissTimes"
+                     @close="showIdCardImg = false"></IdentifyImage>
     </template>
   </page-layer>
 </template>
 
-<script>
+<script setup>
 import {computed, reactive, ref} from 'vue'
 import store from '@/store'
-import dismissIcon from '@/assets/dismiss-icon.png'
 import {getEmpiViewUrl, getPatientInfo} from '@/api/inpatient/patient'
 import {nullPatient} from '@/utils/validate'
 import {getGreatestRole} from '@/utils/permission'
@@ -42,82 +43,57 @@ import IdentifyImage from '../../../components/inpatient/IdentifyImage.vue'
 import Registinfo from '../../../components/medical-insurance/registinfo/Index.vue'
 import PageLayer from "@/layout/PageLayer";
 
-export default {
-  components: {
-    PageLayer,
-    Overview,
-    IdentifyImage,
-    Registinfo,
-  },
-  setup() {
-    const search = initSearchParam()
-    const permission = getGreatestRole()
-    const handleSelectSearchMehtod = (val) => {
-      store.commit('ptnt/setSearchMethod', val)
-    }
-    const patient = computed(() => {
-      return baseinfo()
-    })
-    const isUploadPage = computed(() => {
-      return store.state.app.currentPageName === 'inHospFeeUpload' && !store.state.ptnt.injuryMode
-    })
 
-    const overview = ref(null)
+const search = initSearchParam()
+const permission = getGreatestRole()
+const handleSelectSearchMehtod = (val) => {
+  store.commit('ptnt/setSearchMethod', val)
+}
+const patient = computed(() => {
+  return baseinfo()
+})
+const isUploadPage = computed(() => {
+  return store.state.app.currentPageName === 'inHospFeeUpload' && !store.state.ptnt.injuryMode
+})
 
-    const searchPatient = () => {
-      if (!search.zyh) {
-        overview.value.fetchOverviews()
-        setBaseinfo({})
-      } else {
-        if (permission < 10) {
-          overview.value.overviews = []
-          store.commit('ptnt/setBaseinfo', { totalCharge: '0.00', chargeYb: '0.00' })
-          getPatientInfo(search.zyh).then((res) => {
-            overview.value.currentWard = res.admissWard
-            store.commit('user/wardChange', res.admissWard)
-            store.commit('ptnt/setCurrentMedType', res.medType)
-            setBaseinfo(res)
-            overview.value.overviews.push(makeOverview(res))
-          })
-        }
-      }
-    }
+const overview = ref(null)
 
-    const showRegisterInfo = ref(false)
-    const getRegInfo = () => {
-      if (nullPatient()) return
-      showRegisterInfo.value = true
-    }
-
-    const toEmpiView = () => {
-      if (nullPatient()) return
-      getEmpiViewUrl(patient.value.inpatientNo).then((res) => {
-        window.open(res, '_blank')
+const searchPatient = () => {
+  if (!search.zyh) {
+    overview.value.fetchOverviews()
+    setBaseinfo({})
+  } else {
+    if (permission < 10) {
+      overview.value.overviews = []
+      store.commit('ptnt/setBaseinfo', {totalCharge: '0.00', chargeYb: '0.00'})
+      getPatientInfo(search.zyh).then((res) => {
+        overview.value.currentWard = res.admissWard
+        store.commit('user/wardChange', res.admissWard)
+        store.commit('ptnt/setCurrentMedType', res.medType)
+        setBaseinfo(res)
+        overview.value.overviews.push(makeOverview(res))
       })
     }
+  }
+}
 
-    const showIdCardImg = ref(false)
-    const checkIdCard = () => {
-      if (nullPatient()) return
-      showIdCardImg.value = true
-    }
+const showRegisterInfo = ref(false)
+const getRegInfo = () => {
+  if (nullPatient()) return
+  showRegisterInfo.value = true
+}
 
-    return {
-      patient,
-      permission,
-      search,
-      showRegisterInfo,
-      isUploadPage,
-      dismissIcon,
-      showIdCardImg,
-      overview,
-      checkIdCard,
-      getRegInfo,
-      toEmpiView,
-      searchPatient,
-      handleSelectSearchMehtod,
-    }
-  },
+const toEmpiView = () => {
+  if (nullPatient()) return
+  getEmpiViewUrl(patient.value.inpatientNo).then((res) => {
+    window.open(res, '_blank')
+  })
+}
+
+const showIdCardImg = ref(false)
+const checkIdCard = () => {
+  if (nullPatient()) return
+  showIdCardImg.value = true
 }
 
 function initSearchParam() {