Browse Source

修复费用明细清单,患者360

xiaochan 1 year ago
parent
commit
de3835364d

+ 1 - 8
src/App.vue

@@ -446,14 +446,7 @@ input[type=number]::-webkit-outer-spin-button {
   }
 }
 
-.vxe-scroll_15 {
-  .vxe-table--body-wrapper {
-    &::-webkit-scrollbar {
-      width: 15px;
-      height: 15px;
-    }
-  }
-}
+
 
 .vxe-padding_zero {
   .vxe-header--row {

+ 172 - 0
src/components/medical-insurance/charge-list/ChargeTable.vue

@@ -0,0 +1,172 @@
+<template>
+  <div class="cy_h-w_max" style="position: relative">
+    <div class="cy_h-w_max" style="overflow: auto">
+      <div id="printArea"
+           style="width: 100% ;height: 100%;">
+        <table style="width: 100%">
+          <thead ref="theadRef">
+          <tr>
+            <td colspan="8"
+                style="width: 96%;height: 50px;text-align: center;vertical-align:center;">
+              <div style="font-size: 20px;font-weight: bold;">住院病人费用明细清单</div>
+              <div style="margin-top: 5px">
+                机构名称:长沙泰和医院&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机构编码:H43010500370
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td colspan="8" style="font-size: 16px; font-weight: bold">
+              床号:{{ briefPatInfo.bedNo }}
+            </td>
+          </tr>
+          <tr>
+            <td style="height: 22px">住院号:{{ briefPatInfo.patNo }}</td>
+            <td colspan="2">姓名:{{ briefPatInfo.name }}</td>
+            <td colspan="3">性别:{{ briefPatInfo.gender }}</td>
+            <td colspan="2">科室:{{ briefPatInfo.dept }}</td>
+          </tr>
+          <tr>
+            <td style=";height: 22px">入院日期:{{ briefPatInfo.admdate }}</td>
+            <td colspan="2">医疗类别:{{ briefPatInfo.medtype }}</td>
+            <td colspan="3">可用余额:{{ briefPatInfo.balance }}</td>
+            <td colspan="2">总费用:{{ briefPatInfo.totalCost }}</td>
+          </tr>
+          <tr>
+            <td style="border-bottom: 2px solid black;height: 22px">开始日期:{{ briefPatInfo.begndate }}</td>
+            <td colspan="2" style="border-bottom: 2px solid black">结束日期:{{ briefPatInfo.enddate }}</td>
+            <td colspan="3" style="border-bottom: 2px solid black">天数:{{ briefPatInfo.days }}</td>
+            <td colspan="2" style="border-bottom: 2px solid black">账页号:{{ briefPatInfo.ledger }}</td>
+          </tr>
+          <tr>
+            <td style="height:28px;width: 20%;border-bottom: 1px solid lightgray">医保编码</td>
+            <td style="width: 20%;border-bottom: 1px solid lightgray">项目名称</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">规格</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">单位</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">单价</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">数量</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">金额</td>
+            <td style="width: 20%;border-bottom: 1px solid lightgray">执行科室</td>
+          </tr>
+          </thead>
+          <tbody v-for="(val, key) in chargeListMap" :id="key">
+          <tr>
+            <td style="height: 28px;font-weight: bold;font-size: 14px; border-bottom: 1px solid #333">{{ key }}</td>
+          </tr>
+          <tr v-for="(item, index) in val" :key="index">
+            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.code }}</td>
+            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.name }}</td>
+            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.specification }}</td>
+            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.unit }}</td>
+            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.priceString }}</td>
+            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.quantityString }}</td>
+            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.costString }}</td>
+            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.execDept }}</td>
+          </tr>
+          <tr>
+            <td colspan="7" style="border-bottom: 1px solid lightgray"></td>
+            <td style="text-align: left; font-size: 15px;font-weight: bold;border-bottom: 1px solid lightgray">
+              小计:{{ sumsMap[key] }}
+            </td>
+          </tr>
+          </tbody>
+          <tbody>
+          <tr>
+            <td colspan="7" style="height:36px;border-bottom: 2px solid black"></td>
+            <td style="text-align: left; font-size: 15px;font-weight: bold;border-bottom: 2px solid black">
+              总计:{{ sumsMap['总计'] }}
+            </td>
+          </tr>
+          </tbody>
+        </table>
+      </div>
+    </div>
+    <div style="position: absolute ; top: 0 ; left: 0; width: calc(100% - 15px)">
+      <div style="width: 100%;height: max-content;background: white; ">
+        <table style="width: 100%">
+          <thead>
+          <tr>
+            <td colspan="8"
+                style="width: 96%;height: 50px;text-align: center;vertical-align:center;">
+              <div style="font-size: 20px;font-weight: bold;">住院病人费用明细清单</div>
+              <div style="margin-top: 5px">
+                机构名称:长沙泰和医院&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机构编码:H43010500370
+              </div>
+            </td>
+          </tr>
+          <tr>
+            <td colspan="8" style="font-size: 16px; font-weight: bold">
+              床号:{{ briefPatInfo.bedNo }}
+            </td>
+          </tr>
+          <tr>
+            <td style="height: 22px">住院号:{{ briefPatInfo.patNo }}</td>
+            <td colspan="2">姓名:{{ briefPatInfo.name }}</td>
+            <td colspan="3">性别:{{ briefPatInfo.gender }}</td>
+            <td colspan="2">科室:{{ briefPatInfo.dept }}</td>
+          </tr>
+          <tr>
+            <td style=";height: 22px">入院日期:{{ briefPatInfo.admdate }}</td>
+            <td colspan="2">医疗类别:{{ briefPatInfo.medtype }}</td>
+            <td colspan="3">可用余额:{{ briefPatInfo.balance }}</td>
+            <td colspan="2">总费用:{{ briefPatInfo.totalCost }}</td>
+          </tr>
+          <tr>
+            <td style="border-bottom: 2px solid black;height: 22px">开始日期:{{ briefPatInfo.begndate }}</td>
+            <td colspan="2" style="border-bottom: 2px solid black">结束日期:{{ briefPatInfo.enddate }}</td>
+            <td colspan="3" style="border-bottom: 2px solid black">天数:{{ briefPatInfo.days }}</td>
+            <td colspan="2" style="border-bottom: 2px solid black">账页号:{{ briefPatInfo.ledger }}</td>
+          </tr>
+          <tr>
+            <td style="height:28px;width: 20%;border-bottom: 1px solid lightgray">医保编码</td>
+            <td style="width: 20%;border-bottom: 1px solid lightgray">项目名称</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">规格</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">单位</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">单价</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">数量</td>
+            <td style="width: 8%;border-bottom: 1px solid lightgray">金额</td>
+            <td style="width: 20%;border-bottom: 1px solid lightgray">执行科室</td>
+          </tr>
+          </thead>
+        </table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+const props = defineProps({
+  briefPatInfo: {
+    type: Object,
+    default: {}
+  },
+  chargeListMap: {
+    type: Object,
+    default: {}
+  },
+  sumsMap: {
+    type: Object,
+    default: {}
+  }
+})
+
+const theadRef = ref()
+
+
+</script>
+
+<style scoped>
+.flex-header {
+  display: flex;
+  width: 100%;
+  height: 60px;
+  align-items: center;
+  font-size: 20px;
+  font-weight: bold;
+}
+
+table, table * {
+  margin: 0;
+  padding: 0;
+  border-collapse: collapse;
+}
+</style>

+ 24 - 139
src/components/medical-insurance/charge-list/Index.vue

@@ -1,13 +1,21 @@
 <template>
-  <window-size>
-    <div style="display: flex; width: 100%; height: 100%;">
-      <div style="width: 330px;height: 100%; padding: 0 12px; border-right: 1px solid lightgray">
+  <CyDialog title="费用清单"
+            full-screen
+            confirm-text="打印"
+            cancel-text="关闭"
+            :confirm-click="execPrint"
+  >
+    <div class="cy_display_flex">
+      <div>
         <div class="flex-header">
-          <el-input v-model="currentPatNo" placeholder="住院号" clearable style="width: 160px"></el-input>
+          <el-input v-model="currentPatNo" placeholder="住院号" clearable style="width: 120px"></el-input>
           <el-button type="primary" icon="Search" style="margin-left: 20px" @click="fetchOverview">查询</el-button>
+          <el-button type="primary" icon="Upload" style="margin-left: 20px" @click="selfpayUpload">自费上传</el-button>
         </div>
+
         <div style="width: 336px">
-          <el-table :data="patList" stripe highlight-current-row style="width: 336px"
+          <el-table :data="patList" stripe highlight-current-row
+                    style="width:  calc(100% - 10px)"
                     @row-click="fetchBriefPatInfo">
             <el-table-column prop="times" label="次数" width="35"></el-table-column>
             <el-table-column prop="name" label="姓名" width="70"></el-table-column>
@@ -20,142 +28,16 @@
             </el-table-column>
           </el-table>
         </div>
+
       </div>
-      <div style="position: fixed; right: 16px; top: 16px; z-index: 999" v-if="props.showButton">
-        <el-button type="success" plain circle icon="Upload" title="自费上传" @click="selfpayUpload"></el-button>
-        <el-button type="primary" plain circle icon="Printer" title="打印" @click="execPrint"></el-button>
-        <el-button type="danger" plain circle icon="Close" @click="closeTablet" title="关闭"></el-button>
-      </div>
-      <div id="printArea" style="width: calc(100% - 350px);height: 100%;margin: 0 10px">
-        <table style="width: 100%">
-          <thead>
-          <tr>
-            <td colspan="8"
-                style="width: 96%;height: 50px;text-align: center;vertical-align:center;">
-              <div style="font-size: 20px;font-weight: bold;">住院病人费用明细清单</div>
-              <div style="margin-top: 5px">
-                机构名称:长沙泰和医院&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机构编码:H43010500370
-              </div>
-            </td>
-          </tr>
-          <tr>
-            <td colspan="8" style="font-size: 16px; font-weight: bold">
-              床号:{{ briefPatInfo.bedNo }}
-            </td>
-          </tr>
-          <tr>
-            <td style="height: 22px">住院号:{{ briefPatInfo.patNo }}</td>
-            <td colspan="2">姓名:{{ briefPatInfo.name }}</td>
-            <td colspan="3">性别:{{ briefPatInfo.gender }}</td>
-            <td colspan="2">科室:{{ briefPatInfo.dept }}</td>
-          </tr>
-          <tr>
-            <td style=";height: 22px">入院日期:{{ briefPatInfo.admdate }}</td>
-            <td colspan="2">医疗类别:{{ briefPatInfo.medtype }}</td>
-            <td colspan="3">可用余额:{{ briefPatInfo.balance }}</td>
-            <td colspan="2">总费用:{{ briefPatInfo.totalCost }}</td>
-          </tr>
-          <tr>
-            <td style="border-bottom: 2px solid black;height: 22px">开始日期:{{ briefPatInfo.begndate }}</td>
-            <td colspan="2" style="border-bottom: 2px solid black">结束日期:{{ briefPatInfo.enddate }}</td>
-            <td colspan="3" style="border-bottom: 2px solid black">天数:{{ briefPatInfo.days }}</td>
-            <td colspan="2" style="border-bottom: 2px solid black">账页号:{{ briefPatInfo.ledger }}</td>
-          </tr>
-          <tr>
-            <td style="height:28px;width: 20%;border-bottom: 1px solid lightgray">医保编码</td>
-            <td style="width: 20%;border-bottom: 1px solid lightgray">项目名称</td>
-            <td style="width: 8%;border-bottom: 1px solid lightgray">规格</td>
-            <td style="width: 8%;border-bottom: 1px solid lightgray">单位</td>
-            <td style="width: 8%;border-bottom: 1px solid lightgray">单价</td>
-            <td style="width: 8%;border-bottom: 1px solid lightgray">数量</td>
-            <td style="width: 8%;border-bottom: 1px solid lightgray">金额</td>
-            <td style="width: 20%;border-bottom: 1px solid lightgray">执行科室</td>
-          </tr>
-          </thead>
-          <tbody v-for="(val, key) in chargeListMap" :id="key">
-          <tr>
-            <td style="height: 28px;font-weight: bold;font-size: 14px; border-bottom: 1px solid #333">{{ key }}</td>
-          </tr>
-          <tr v-for="(item, index) in val" :key="index">
-            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.code }}</td>
-            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.name }}</td>
-            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.specification }}</td>
-            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.unit }}</td>
-            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.priceString }}</td>
-            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.quantityString }}</td>
-            <td style="width: 8%;height: 28px;padding: 4px 12px 4px 0">{{ item.costString }}</td>
-            <td style="width: 20%;height: 28px;padding: 4px 12px 4px 0">{{ item.execDept }}</td>
-          </tr>
-          <tr>
-            <td colspan="7" style="border-bottom: 1px solid lightgray"></td>
-            <td style="text-align: left; font-size: 15px;font-weight: bold;border-bottom: 1px solid lightgray">
-              小计:{{ sumsMap[key] }}
-            </td>
-          </tr>
-          </tbody>
-          <tbody>
-          <tr>
-            <td colspan="7" style="height:36px;border-bottom: 2px solid black"></td>
-            <td style="text-align: left; font-size: 15px;font-weight: bold;border-bottom: 2px solid black">
-              总计:{{ sumsMap['总计'] }}
-            </td>
-          </tr>
-          </tbody>
-        </table>
-      </div>
-    </div>
 
-    <div style="width: calc(100% - 385px);height: max-content;
-      padding: 0 10px; position: fixed; top: 0; right: 10px; background: white; ">
-      <table style="width: 100%">
-        <thead>
-        <tr>
-          <td colspan="8"
-              style="width: 96%;height: 50px;text-align: center;vertical-align:center;">
-            <div style="font-size: 20px;font-weight: bold;">住院病人费用明细清单</div>
-            <div style="margin-top: 5px">
-              机构名称:长沙泰和医院&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机构编码:H43010500370
-            </div>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="8" style="font-size: 16px; font-weight: bold">
-            床号:{{ briefPatInfo.bedNo }}
-          </td>
-        </tr>
-        <tr>
-          <td style="height: 22px">住院号:{{ briefPatInfo.patNo }}</td>
-          <td colspan="2">姓名:{{ briefPatInfo.name }}</td>
-          <td colspan="3">性别:{{ briefPatInfo.gender }}</td>
-          <td colspan="2">科室:{{ briefPatInfo.dept }}</td>
-        </tr>
-        <tr>
-          <td style=";height: 22px">入院日期:{{ briefPatInfo.admdate }}</td>
-          <td colspan="2">医疗类别:{{ briefPatInfo.medtype }}</td>
-          <td colspan="3">可用余额:{{ briefPatInfo.balance }}</td>
-          <td colspan="2">总费用:{{ briefPatInfo.totalCost }}</td>
-        </tr>
-        <tr>
-          <td style="border-bottom: 2px solid black;height: 22px">开始日期:{{ briefPatInfo.begndate }}</td>
-          <td colspan="2" style="border-bottom: 2px solid black">结束日期:{{ briefPatInfo.enddate }}</td>
-          <td colspan="3" style="border-bottom: 2px solid black">天数:{{ briefPatInfo.days }}</td>
-          <td colspan="2" style="border-bottom: 2px solid black">账页号:{{ briefPatInfo.ledger }}</td>
-        </tr>
-        <tr>
-          <td style="height:28px;width: 20%;border-bottom: 1px solid lightgray">医保编码</td>
-          <td style="width: 20%;border-bottom: 1px solid lightgray">项目名称</td>
-          <td style="width: 8%;border-bottom: 1px solid lightgray">规格</td>
-          <td style="width: 8%;border-bottom: 1px solid lightgray">单位</td>
-          <td style="width: 8%;border-bottom: 1px solid lightgray">单价</td>
-          <td style="width: 8%;border-bottom: 1px solid lightgray">数量</td>
-          <td style="width: 8%;border-bottom: 1px solid lightgray">金额</td>
-          <td style="width: 20%;border-bottom: 1px solid lightgray">执行科室</td>
-        </tr>
-        </thead>
-      </table>
+      <div class="cy_flex_1-x">
+        <ChargeTable :brief-pat-info="briefPatInfo"
+                     :sumsMap="sumsMap"
+                     :charge-list-map="chargeListMap"/>
+      </div>
     </div>
-
-  </window-size>
+  </CyDialog>
 </template>
 
 <script>
@@ -168,9 +50,11 @@ import {
 } from "@/api/inpatient/charge-list";
 import {ElMessage, ElMessageBox} from "element-plus";
 import {getLodop, initLodop} from '@/utils/c-lodop'
+import ChargeTable from "@/components/medical-insurance/charge-list/ChargeTable.vue";
+import CyDialog from "@/components/cy/dialog/src/CyDialog.vue";
 
 export default {
-  components: {WindowSize},
+  components: {CyDialog, ChargeTable, WindowSize},
   props: {
     patNo: {
       type: String,
@@ -249,6 +133,7 @@ export default {
       })
     }
 
+
     const execPrint = () => {
       if (!briefPatInfo.value.patNo) {
         ElMessage({

+ 55 - 47
src/components/pat-info-list/GroupConsultation.vue

@@ -1,50 +1,68 @@
 <template>
-  <el-container>
-    <el-aside>
-      <xc-table :local-data="consultationData" layout='total, prev,  next'
-                :height="200"
-                @rowClick="rowClick">
-        <el-table-column label="申请时间" prop="inputDate" width="70">
-          <template #default="scope">
-            {{ scope.row.inputDate + '_' + scope.row.reqTimes }}
-          </template>
-        </el-table-column>
-        <el-table-column label="科室" prop="deptName"></el-table-column>
-        <el-table-column label="接受日期" prop="hzDate" show-overflow-tooltip></el-table-column>
-        <el-table-column label="接受医生" prop="hzDoctor2Name"></el-table-column>
-        <el-table-column label="申请人" prop="inputName" width="60"></el-table-column>
-        <el-table-column label="申请科室" prop="reqDeptName"></el-table-column>
-        <el-table-column label="类别" prop="hzLevelName"></el-table-column>
-        <el-table-column label="医生" prop="hzDoctor1Name"></el-table-column>
-        <el-table-column label="级别" prop="hzType">
-          <template #default="scope">
-            <span>{{ hzTypeName(scope.row.hzType) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="接受意见" prop="hzComment" show-overflow-tooltip></el-table-column>
-      </xc-table>
-    </el-aside>
-    <el-main style="overflow:auto;">
+  <div class="cy_display_flex" style="overflow-x: auto">
+    <div style="width: 400px">
+      <cy-auto-size>
+        <template #default="{height}">
+          <xc-table :local-data="consultationDataComputed"
+                    layout='total, prev,  next'
+                    :final-height="height - 40"
+                    @rowClick="rowClick">
+            <el-table-column label="申请时间" prop="inputDate" width="70">
+              <template #default="scope">
+                {{ scope.row.inputDate + '_' + scope.row.reqTimes }}
+              </template>
+            </el-table-column>
+            <el-table-column label="科室" prop="deptName"></el-table-column>
+            <el-table-column label="接受日期" prop="hzDate" show-overflow-tooltip></el-table-column>
+            <el-table-column label="接受医生" prop="hzDoctor2Name"></el-table-column>
+            <el-table-column label="申请人" prop="inputName" width="60"></el-table-column>
+            <el-table-column label="申请科室" prop="reqDeptName"></el-table-column>
+            <el-table-column label="类别" prop="hzLevelName"></el-table-column>
+            <el-table-column label="医生" prop="hzDoctor1Name"></el-table-column>
+            <el-table-column label="级别" prop="hzType">
+              <template #default="scope">
+                <span>{{ hzTypeName(scope.row.hzType) }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="接受意见" prop="hzComment" show-overflow-tooltip></el-table-column>
+          </xc-table>
+        </template>
+      </cy-auto-size>
+    </div>
+
+    <div class="cy_flex_1-x" style="overflow: auto">
       <print-the-consultation-form ref="daYingHuiZhenRef" :lai-yuan="2"/>
-    </el-main>
-  </el-container>
+    </div>
+  </div>
+
+
 </template>
 
-<script setup name='GroupConsultation'>
+<script setup>
 import {chaKanHuiZhenShenQing} from "@/api/case-front-sheet";
 import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
-import {getHuanZheXinXi} from "@/api/case-front-sheet/jie-shou-hui-zhen";
 import {ref} from "vue";
 import PrintTheConsultationForm from "@/components/hui-zhen-da-ying/PrintTheConsultationForm.vue";
+import {getHzDetails, patInfo360Computed, patInfo as pat6360Info} from "@/views/view/patient360/src/hosp";
+import CyAutoSize from "@/components/cy/auto-size/cy-auto-size.vue";
 
 const props = defineProps({
   patNo: '',
-  times: ''
+  times: '',
+  patInfo360: {
+    type: Boolean,
+    default: false
+  }
 })
 
+const isPatInfo360 = props.patInfo360
+
 const consultationData = ref([])
 
+const consultationDataComputed = patInfo360Computed('consultationData', consultationData, isPatInfo360)
+
 onMounted(() => {
+  if (isPatInfo360) return
   chaKanHuiZhenShenQing(props.patNo, props.times).then((res) => {
     consultationData.value = res
   })
@@ -53,7 +71,12 @@ onMounted(() => {
 const daYingHuiZhenRef = ref(null)
 const huanZheXinXi = ref({})
 const rowClick = (val) => {
-  getHuanZheXinXi(val.admissTimes, val.reqTimes, val.inpatientNo).then((res) => {
+  const params = {
+    inpatientNo: isPatInfo360 ? pat6360Info.value.patNo : props.patNo,
+    admissTimes: isPatInfo360 ? pat6360Info.value.times : props.times,
+    reqTimes: val.reqTimes
+  }
+  getHzDetails(params).then(res => {
     huanZheXinXi.value = res
     daYingHuiZhenRef.value.huiZhenXinXiXiangQing(res)
   })
@@ -70,19 +93,4 @@ function hzTypeName(val) {
       return '主任医生'
   }
 }
-
-function hzLeiBie(val) {
-  switch (val) {
-    case '1':
-      return '常规会诊'
-    case '2':
-      return '疑难病例会诊'
-    case '3':
-      return '急救会诊'
-  }
-}
 </script>
-
-<style scoped lang="scss">
-
-</style>

+ 5 - 6
src/components/si-sheet-upload/jie-suan-dan-xiu-gai/JieSuanDanXiangQing.vue

@@ -405,10 +405,7 @@
         </div>
 
       </div>
-
     </el-dialog>
-    <charge-list v-if="showChargeList" :pat-no="setlinfo.inpatientNo" :times="setlinfo.admissTimes"
-                 @close="showChargeList = false"></charge-list>
     <span class="m-drawer">
             <el-drawer v-model="showMessageDrawer" title="病案首页质控" size="260px" modal-class="modal-class">
               <div class="page-inner">
@@ -444,7 +441,6 @@ import JianChaJieGuo from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-
 import {
   removeBloodTransfusion,
   setlUploadAudit,
-  shouShuBianMa,
   upldSetlList,
   sendDrgGroupTest,
   sendAudit,
@@ -490,6 +486,7 @@ import {
 } from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init';
 import router from "@/router";
 import {ref} from "vue";
+import setDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
 
 const props = defineProps({
   data: {},
@@ -542,7 +539,6 @@ const setlAuditLogData = ref([])
 const qualityDialogFlag = ref(false)
 
 const qualityData = ref([])
-const showChargeList = ref(false)
 /*以下全部都是诊断  */
 const diagnosticQuery = ref({
   method: 'name',
@@ -607,7 +603,10 @@ const pageZhenDuanChaXun = (val) => {
   })
 }
 const showChargeListClick = () => {
-  showChargeList.value = true
+  setDialogToJs(ChargeList, {
+    patNo: setlinfo.value.inpatientNo,
+    times: setlinfo.value.admissTimes
+  })
 }
 const sheZhiZhuZhenDuan = (index, val) => {
   let data = []

+ 16 - 28
src/components/zhu-yuan-yi-sheng/emr/EmrFirstPageOfMedicalRecord.vue

@@ -1,7 +1,8 @@
 <template>
-  <FirstPageOfMedicalRecord v-if="isShow"
-                            :dics="dics"
-                            :sheet-data="sheetData"/>
+  <FirstPageOfMedicalRecord
+      :dics="dics"
+      v-if="!XEUtils.isEmpty(sheetDataComputed)"
+      :sheet-data="sheetDataComputed"/>
 </template>
 
 <script setup lang="ts">
@@ -11,52 +12,39 @@ import {
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 import requestV2 from "@/utils/request-v2";
 import {ref, onMounted} from 'vue'
-import {patInfo as pat360Info, setCompQuery} from "@/views/view/patient360/src/hosp";
+import {
+  patInfo360Computed,
+} from "@/views/view/patient360/src/hosp";
+import XEUtils from "xe-utils";
 
 const props = defineProps({
   patInfo360: {
     type: Boolean,
-    default: false
+    default: false,
   },
 })
 
 const sheetData = ref({})
-const isShow = ref(false)
+const sheetDataComputed = patInfo360Computed('sheetData', sheetData, <boolean>props!.patInfo360)
 
 const query = () => {
   requestV2({
     url: '/caseFrontSheet/getSheetInfo',
     method: 'post',
     data: {
-      bah: pat360Info.value.patNo,
-      times: pat360Info.value.times,
-      inOutFlag: pat360Info.value.inTheHospital
+      bah: patientInfo.value.inpatientNo,
+      times: patientInfo.value.admissTimes,
+      inOutFlag: patientInfo.value.$inOutFlag
     },
     showLoading: false
   }).then(res => {
-    sheetData.value = res
-    isShow.value = true
+    sheetDataComputed.value = res
   })
 }
 
 onMounted(async () => {
-  if (props.patInfo360) {
-    setCompQuery('medicalRecordHomepage', query)
-  } else {
-    requestV2({
-      url: '/caseFrontSheet/getSheetInfo',
-      method: 'post',
-      data: {
-        bah: patientInfo.value.inpatientNo,
-        times: patientInfo.value.admissTimes,
-        inOutFlag: patientInfo.value.$inOutFlag
-      },
-      showLoading: false
-    }).then(res => {
-      sheetData.value = res
-      isShow.value = true
-    })
-  }
+  if (props.patInfo360) return
+  query()
 })
 </script>
 

+ 14 - 5
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue

@@ -8,6 +8,7 @@
       <el-select v-model="orderType" style="width: 90px">
         <XcElOption :data="ORDER_TYPE"/>
       </el-select>
+      <el-button @click="exportClick">导出</el-button>
       <el-button v-if="!patInfo360" @click="copyClick(false)">复制值</el-button>
       <el-button v-if="!patInfo360" @click="copyClick(true)">引用</el-button>
     </template>
@@ -32,7 +33,7 @@
             <span style="color: red">{{ row.orderGroup }}</span>
           </template>
         </vxe-column>
-        <vxe-column title="自费" field="ybSelfFlag" min-width="35">
+        <vxe-column title="自费" field="ybSelfFlagName" min-width="35">
           <template #default="{row}">
             <span style="color: red" v-if="row.ybSelfFlag === '1'">√</span>
           </template>
@@ -74,6 +75,7 @@ import {stringNotBlank} from "@/utils/blank-utils";
 import {emrCopyFunc} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init'
 import CyFlex from "@/components/cy/flex/src/CyFlex.vue";
 import XcElOption from "@/components/xiao-chan/xc-el-option/XcElOption.vue";
+import {VxeTableInstance} from "vxe-table";
 
 const props = defineProps({
   patNo: String,
@@ -103,14 +105,14 @@ const ORDER_TYPE = [
 
 const FREQUENCY = [
   {code: 0, name: '临时'},
-  {code: 1, name: '当前'},
-  {code: 3, name: '长期'},
+  {code: 1, name: '长期'},
+  {code: 3, name: '全部'},
 ]
 
 const list: Ref<Array<any>> = ref([])
-const radio = ref(1)
+const radio = ref(3)
 const orderType = ref(props.patInfo360 ? 1 : 3)
-const tableRef = ref(null)
+const tableRef = ref<VxeTableInstance>(null)
 
 let newDate = ''
 getServerDateApi().then(res => {
@@ -190,6 +192,13 @@ const copyClick = (quote) => {
   }
 }
 
+function exportClick() {
+  const $table = tableRef.value
+  if ($table) {
+    $table.exportData({type: 'csv'})
+  }
+}
+
 onMounted(() => {
   if (!props.patInfo360) {
     open()

+ 21 - 29
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrYzTemperature.vue

@@ -23,7 +23,7 @@
           </div>
           <div>
             <el-button @click="query">查询</el-button>
-            <el-button @click="quoteClick" type="primary">引用</el-button>
+            <el-button @click="quoteClick" v-if="!patInfo360" type="primary">引用</el-button>
           </div>
         </div>
         <vxe-table :height="height - 40"
@@ -39,7 +39,7 @@
                    @cell-click="rowClick"
                    show-header-overflow
                    show-overflow
-                   :data="listRef">
+                   :data="listComputed">
           <vxe-column field="recDateStr" title="日期" width="80" sortable>
             <template #default="{row,rowIndex}">
               <component :is="dateDisplay(row,row.recDateStr,rowIndex)"/>
@@ -117,8 +117,8 @@ import {currentAndAFewDaysAgo} from '@/utils/date'
 import {emrCopyFunc} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 import {getYzTemperature} from "@/api/zhu-yuan-yi-sheng/emr-patient";
 import {
-  get360YzTemperature,
-  patInfo as pat360Info, setCompQuery,
+  getYzTemperatureData,
+  patInfo360Computed
 } from "@/views/view/patient360/src/hosp";
 import {VxeTable, TablePublicMethods} from 'vxe-table'
 
@@ -139,7 +139,7 @@ const dateRange = ref([])
 const tableRef: Ref<TablePublicMethods | null> = ref(null)
 
 const dateDisplay = (row, cellData, index) => {
-  let temp = listRef.value[index - 1]
+  let temp = listComputed.value[index - 1]
   if (temp === null || typeof temp === 'undefined') {
     return <span>{cellData}</span>
   }
@@ -153,7 +153,7 @@ const dateDisplay = (row, cellData, index) => {
 }
 
 const timePlsy = (row, cellData, index) => {
-  let temp = listRef.value[index - 1]
+  let temp = listComputed.value[index - 1]
   if (temp === null || typeof temp === 'undefined') {
     return <span>{cellData}</span>
   }
@@ -166,12 +166,17 @@ const timePlsy = (row, cellData, index) => {
 
 const listRef: Ref = ref([])
 const mapRef: Ref = ref({})
+
+const listComputed = patInfo360Computed('yzTemperatureData', listRef, (props!.patInfo360 as boolean))
+const mapRefComputed = patInfo360Computed('yzTemperatureMap', mapRef, (props!.patInfo360 as boolean))
+
+
 const key: Ref<string> = ref('')
 const otherInfo: Ref<string> = ref('')
 
 const rowClick = ({row}) => {
   key.value = row.tempDate
-  let item = mapRef.value[key.value]
+  let item = mapRefComputed.value[key.value]
   let str = '护理记录时间:' + item.tempDate
 
   if (stringNotBlank(item.patientState)) {
@@ -228,8 +233,8 @@ const rowClick = ({row}) => {
   if (stringNotBlank(item.glu)) {
     str += ',' + '管道情况:' + item.glu
   }
-  if (stringNotBlank(mapRef.value[key.value]?.otherInfo)) {
-    str += '护理措施及效果:' + mapRef.value[key.value]?.otherInfo
+  if (stringNotBlank(mapRefComputed.value[key.value]?.otherInfo)) {
+    str += '护理措施及效果:' + mapRefComputed.value[key.value]?.otherInfo
   }
   otherInfo.value = str
 }
@@ -240,18 +245,8 @@ function quoteClick() {
 }
 
 const query = async () => {
-  let res
   if (props.patInfo360) {
-    const param = {
-      startTime: dateRange.value[0] ?? pat360Info.value.admissDate,
-      endTime: dateRange.value[1] ?? pat360Info.value.disDate,
-      patNo: pat360Info.value.patNo,
-      times: pat360Info.value.times
-    }
-
-    res = await get360YzTemperature(param).catch(() => {
-      return {list: [], map: {}}
-    })
+    await getYzTemperatureData(dateRange.value?.[0], dateRange.value?.[1])
   } else {
     const param = {
       startTime: dateRange.value[0],
@@ -259,13 +254,13 @@ const query = async () => {
       patNo: props.patNo,
       times: props.times
     }
-    res = await getYzTemperature(param)
+    const res = await getYzTemperature(param)
         .catch(() => {
           return {list: [], map: {}}
         })
+    listRef.value = res.list
+    mapRef.value = res.map
   }
-  listRef.value = res.list
-  mapRef.value = res.map
   await nextTick()
   tableRef.value?.scrollTo(0, 0)
 }
@@ -279,12 +274,9 @@ const rowClassName = ({row}) => {
 }
 
 onMounted(async () => {
-  if (!props.patInfo360) {
-    dateRange.value = await currentAndAFewDaysAgo()
-    query()
-  } else {
-    setCompQuery('queryYzTemperature', query)
-  }
+  if (props.patInfo360) return;
+  dateRange.value = await currentAndAFewDaysAgo()
+  query()
 })
 
 

+ 22 - 3
src/views/hospitalization/zhu-yuan-yi-sheng/PatientInformationInquiry.vue

@@ -97,10 +97,28 @@
           :dics="dics"/>
       <xc-table :local-data="patInfoList"
                 :final-height="getWindowSize.h / 1.15">
-        <el-table-column label="操作" fixed="left" width="60">
+        <el-table-column label="操作" fixed="left" width="80">
           <template #default="{row}">
-            <el-button @click="details(row)" text type="primary" plain>详情</el-button>
-            <el-button style="margin-left: 0" @click="openEmr(row)" text type="primary" plain>病历
+            <el-button @click="openPatient360(row.inpatientNo)"
+                       text
+                       type="danger"
+                       plain>
+              患者360
+            </el-button>
+            <div></div>
+            <el-button @click="details(row)"
+                       text
+                       type="primary"
+                       plain>
+              详情
+            </el-button>
+            <div></div>
+            <el-button style="margin-left: 0"
+                       @click="openEmr(row)"
+                       text
+                       type="primary"
+                       plain>
+              病历
             </el-button>
           </template>
         </el-table-column>
@@ -157,6 +175,7 @@ import {userInfoStore} from "@/utils/store-public";
 import router from "@/router";
 import sleep from "@/utils/sleep";
 import {Export} from '@/utils/ExportExcel'
+import {openPatient360} from "@/views/view/patient360/src";
 
 const param = ref({
   patNo: '',

+ 2 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JcJyTemplate.vue

@@ -64,7 +64,7 @@ const selectAll = (data) => {
       :scroll-y="{gt: 0 ,enabled: true}"
       :column-config="{resizable: true}"
       :row-config="{height: 24}"
-      class="vxe-padding_zero vxe-header-max_content vxe-scroll_15"
+      class="vxe-padding_zero vxe-header-max_content"
       show-header-overflow
       show-overflow
       :data="props.data">
@@ -87,7 +87,7 @@ const selectAll = (data) => {
                :scroll-y="{gt: 0 ,enabled: true}"
                :column-config="{resizable: true}"
                :row-config="{height: 24}"
-               class="vxe-header-max_content vxe-scroll_15"
+               class="vxe-header-max_content"
                show-header-overflow
                show-overflow>
       <vxe-column type="checkbox" title="名称"/>

+ 1 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/components/table/YzTableV3.vue

@@ -335,7 +335,7 @@ onMounted(() => {
       :scroll-y="{gt: 0,enabled: true}"
       :column-config="{resizable: true}"
       :row-config="{height: 24, isHover: true}"
-      class="vxe-padding_zero vxe-header-max_content hl-style vxe-scroll_15"
+      class="vxe-padding_zero vxe-header-max_content hl-style"
       header-row-class-name="padding_zero"
       show-header-overflow
       show-overflow

+ 17 - 9
src/views/medical-insurance/inpatient/DiscSettlement.vue

@@ -2,7 +2,7 @@
   <div>
     <el-button type="success" icon="RefreshRight" @click="rcvrcalcost"> 费用接收重算</el-button>
     <el-button type="primary" icon="RefreshLeft" @click="showConventions"> 撤销检验项目</el-button>
-    <el-button type="success" icon="Money" @click="showChargeList = true"> 费用清单</el-button>
+    <el-button type="success" icon="Money" @click="openCostList"> 费用清单</el-button>
     <el-button type="success" icon="Timer" @click="beforeSettle(false)">出院结算</el-button>
     <el-button type="info" icon="VideoPause" @click="beforeSettle(true)">中间断账</el-button>
     <el-button type="warning" icon="Odometer" :disabled="!isAdmin" @click="cancelDismiss">取消出院结算</el-button>
@@ -245,7 +245,7 @@
       <el-table :data="preDischargeErrors" empty-text=" " max-height="300">
         <el-table-column property="dept_name" label="科室" width="120"></el-table-column>
         <el-table-column property="doctor_name" label="医生" width="120"></el-table-column>
-        <el-table-column property="return_code_message" label="描述" ></el-table-column>
+        <el-table-column property="return_code_message" label="描述"></el-table-column>
       </el-table>
       <div style="margin-top: 20px">
         是否继续为患者办理出院?
@@ -253,8 +253,6 @@
         <el-button @click="cancelDischarge">取消办理</el-button>
       </div>
     </el-dialog>
-    <charge-list v-if="showChargeList" :pat-no="patient.inpatientNo" :times="patient.admissTimes"
-                 @close="showChargeList = false"></charge-list>
   </div>
 </template>
 
@@ -273,10 +271,11 @@ import {getDetailConventions, getRoughConventions, retractConventions} from '@/a
 import {getGreatestRole} from '@/utils/permission'
 import {inpatientDischargeProcess, revokeInpatientSettlement} from '@/api/medical-insurance/si-injury'
 import {selectSettleApply, submitSettleApply} from '@/api/medical-insurance/si-settle-apply'
-import {baseinfo,setBaseinfo} from '@/data/inpatient'
+import {baseinfo, setBaseinfo} from '@/data/inpatient'
 import ReadCard from '@/components/medical-insurance/readcard/Index.vue'
 import ChargeList from '@/components/medical-insurance/charge-list/Index.vue'
 import {rejectNotGeneratedMedicationList} from "@/api/inpatient/xiang-mu-lu-ru";
+import setDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
 
 const isAdmin = getGreatestRole() < 10
 const actOrderHeight = (store.state.app.windowSize.h - 160) / 2
@@ -658,7 +657,6 @@ const afterDismiss = () => {
   }
   showActOrders.value = false
 }
-const showChargeList = ref(false)
 const conventionsVisible = ref(false)
 const roughConventions = ref([])
 const conventionDetails = ref([])
@@ -712,7 +710,8 @@ const confirmRetractConventions = () => {
         })
         showConventions()
       })
-    }).catch(() => {})
+    }).catch(() => {
+    })
   }
 }
 
@@ -752,7 +751,8 @@ const cancelDismiss = () => {
         })
       })
     }
-  }).catch(() => {})
+  }).catch(() => {
+  })
 }
 
 const showDismissOrderDate = ref(false)
@@ -778,7 +778,8 @@ const confirmSelectDismissOrderDate = () => {
       showDismissOrderDate.value = false
       fecthDisDiags()
     })
-  }).catch(() => {})
+  }).catch(() => {
+  })
 }
 
 const makeDismissOrder = () => {
@@ -813,6 +814,13 @@ const rejectNotGeneratedMedicationListClick = () => {
   })
 }
 
+function openCostList() {
+  setDialogToJs(ChargeList, {
+    patNo: patient.value.inpatientNo,
+    times: patient.value.admissTimes
+  })
+}
+
 onMounted(() => {
   if (patient.value.inpatientNo) {
     fecthDisDiags()

+ 37 - 3
src/views/view/patient360/hospComp/ViewHospMain.vue

@@ -6,7 +6,7 @@
     </CyTabPane>
     <CyTabPane label="护理记录" name="hljl">
       <EmrYzTemperature
-          pat-info360
+          patInfo360
       />
     </CyTabPane>
     <CyTabPane label="病历" name="emr">
@@ -21,6 +21,19 @@
     <CyTabPane label="病案首页" name="basy">
       <EmrFirstPageOfMedicalRecord patInfo360/>
     </CyTabPane>
+    <CyTabPane label="会诊" name="hz">
+      <GroupConsultation pat-info360/>
+    </CyTabPane>
+    <CyTabPane label="费用清单" name="fyqd">
+      <CyFlex>
+        <template #header>
+          <el-button type="primary" @click="printFee">打印</el-button>
+        </template>
+        <ChargeTable :brief-pat-info="patInfo360Data.briefPatInfo"
+                     :sumsMap="patInfo360Data.sumsMap"
+                     :charge-list-map="patInfo360Data.chargeListMap"/>
+      </CyFlex>
+    </CyTabPane>
   </CyTabs>
 </template>
 
@@ -28,12 +41,33 @@
 import {CyTabs} from "@/components/cy/tabs/src/CyTabs";
 import CyTabPane from "@/components/cy/tabs/src/CyTabPane.vue";
 import EmrOrderList from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue";
-import {yzData, jySrc, jcSrc} from "../src/hosp";
+import {yzData, jySrc, jcSrc, patInfo360Data} from "../src/hosp";
 import EmrYzTemperature from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrYzTemperature.vue";
 import ViewEmr from "@/views/view/patient360/hospComp/ViewEmr.vue";
 import EmrFirstPageOfMedicalRecord from "@/components/zhu-yuan-yi-sheng/emr/EmrFirstPageOfMedicalRecord.vue";
+import GroupConsultation from "@/components/pat-info-list/GroupConsultation.vue";
+import ChargeTable from "@/components/medical-insurance/charge-list/ChargeTable.vue";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import CyFlex from "@/components/cy/flex/src/CyFlex.vue";
+
+const tabs = ref('yz')
+
+function printFee() {
+  let LODOP = getLodop();
+  const prntStyle = `<style>table, table * {margin: 0;padding: 0;border-collapse: collapse;font-size: 12px}</style>`
+  const prntContent = document.getElementById('printArea').innerHTML
+  let pagePrint = prntStyle + '<body>' + prntContent + '</body>'
+  LODOP.PRINT_INIT('chargelist')
+  LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '')
+  LODOP.ADD_PRINT_TABLE('0mm', '0mm', '210mm', '230mm', pagePrint)
+  LODOP.SET_PRINT_STYLE('ItemType', 3)
+  LODOP.ADD_PRINT_TEXT('280mm', '180mm', '25mm', '10mm', '第#页/共&页')
+  LODOP.PRINT()
+}
 
-const tabs = ref('jc')
+onMounted(() => {
+  initLodop()
+})
 
 </script>
 

+ 103 - 13
src/views/view/patient360/src/hosp.ts

@@ -1,6 +1,7 @@
 import {MedicalTrack} from "@/views/view/patient360/src/index";
 import requestV2, {AxiosRequestConfigV2} from "@/utils/request-v2";
-import {ref} from 'vue'
+import {Ref, ref} from 'vue'
+import {selectBriefPatInfo, selectChargeList} from "@/api/inpatient/charge-list";
 
 function request(options: AxiosRequestConfigV2) {
     return requestV2({...options, showLoading: false})
@@ -18,16 +19,74 @@ interface MedicalTrackHosp extends MedicalTrack {
 
 export const patInfo = ref<MedicalTrackHosp>({})
 
-const compQuery = {
-    queryYzTemperature: () => {
-    },
-    medicalRecordHomepage: () => {
+interface PatInfo360Data {
+    sheetData: any;
+    yzTemperatureData: any[];
+    yzTemperatureMap: any;
 
-    }
+    // 会诊
+    consultationData: any[]
+    briefPatInfo: any,
+    sumsMap: any,
+    chargeListMap: any
+}
+
+export const patInfo360Data: PatInfo360Data = reactive({
+    sheetData: {},
+    yzTemperatureData: [],
+    yzTemperatureMap: {},
+    consultationData: [],
+    briefPatInfo: {},
+    sumsMap: {},
+    chargeListMap: {}
+})
+
+export function patInfo360Computed(name: keyof PatInfo360Data, data: Ref<any>, isPatInfo360: boolean) {
+    return computed({
+        get() {
+            if (isPatInfo360) {
+                return patInfo360Data[name]
+            }
+            return data.value
+        },
+        set(val) {
+            if (isPatInfo360) {
+                patInfo360Data[name] = val
+            } else {
+                data.value = val
+            }
+        },
+    })
 }
 
-export function setCompQuery(name: string, cb) {
-    compQuery[name] = cb
+
+function getSheetInfo() {
+    request({
+        method: 'post',
+        url: '/patient360/hosp/getSheetInfo',
+        data: {
+            bah: patInfo.value.patNo,
+            times: patInfo.value.times,
+            inOutFlag: patInfo.value.inTheHospital
+        }
+    }).then((res) => {
+        patInfo360Data.sheetData = res
+    })
+}
+
+export async function getYzTemperatureData(start, end) {
+    const param = {
+        startTime: start ?? patInfo.value.admissDate,
+        endTime: end ?? patInfo.value.disDate,
+        patNo: patInfo.value.patNo,
+        times: patInfo.value.times
+    }
+    await get360YzTemperature(param).catch(() => {
+        return {list: [], map: {}}
+    }).then(res => {
+        patInfo360Data.yzTemperatureData = res.list
+        patInfo360Data.yzTemperatureMap = res.map
+    })
 }
 
 function getYz() {
@@ -61,15 +120,46 @@ function getEmrData() {
     })
 }
 
+function getHzInfo() {
+    request({
+        method: 'get',
+        url: '/patient360/hosp/hzInfo',
+        params: {inpatientNo: patInfo.value.patNo, admissTimes: patInfo.value.times}
+    }).then(res => {
+        patInfo360Data.consultationData = res
+    })
+}
+
+export function getHzDetails(params) {
+    return request({
+        method: 'get',
+        url: '/patient360/hosp/hzDetails',
+        params: params
+    })
+}
+
+async function getFyqd() {
+    const data = {
+        patNo: patInfo.value.patNo,
+        times: patInfo.value.times,
+    }
+    await selectBriefPatInfo(data).then(res => {
+        patInfo360Data.briefPatInfo = res
+    })
+    await selectChargeList(data).then(res => {
+        patInfo360Data.chargeListMap = res.chargeList
+        patInfo360Data.sumsMap = res.sumsMap
+    })
+}
+
 function hosp(medicalTrack: MedicalTrack) {
     patInfo.value = medicalTrack
     getYz()
     getEmrData()
-
-    for (let key in compQuery) {
-        compQuery[key]()
-    }
-
+    getSheetInfo()
+    getYzTemperatureData()
+    getHzInfo()
+    getFyqd();
     // jcSrc.value = `http://172.16.32.122:8081/Clinical?inHospitalNum=${patInfo.value.patNo}&StartDate=${patInfo.value.admissDate}&EndDate=${patInfo.value.admissDate}`
     jcSrc.value = `http://172.16.32.122:8081/Clinical?inHospitalNum=${patInfo.value.patNo}`
     // jySrc.value =

+ 9 - 0
src/views/view/patient360/src/index.ts

@@ -58,3 +58,12 @@ export function handleQueryData(medicalTrack: MedicalTrack) {
         hosp(medicalTrack)
     }
 }
+
+export function openPatient360(inpatientNo: string, outPatient?: string) {
+    if (inpatientNo !== null) {
+        window.open(`/view/patient360?inpatientNo=${inpatientNo}`, '_blank');
+    } else {
+        window.open(`/view/patient360?inpatientNo=${inpatientNo}`, '_blank');
+    }
+
+}