Browse Source

医保结算单页面可以查看费用明细

lighter 1 week ago
parent
commit
45dcf9f1d1

+ 1 - 1
src/auto-imports.d.ts

@@ -65,6 +65,6 @@ declare global {
 // for type re-export
 declare global {
   // @ts-ignore
-  export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
+  export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
   import('vue')
 }

+ 19 - 6
src/components/medical-insurance/medfee-analyse/Index.vue

@@ -1,7 +1,11 @@
 <template>
   <div class="component-box-wrapper__fullscreen layout_container" :style="{zIndex}">
-    <div style="font-size: 18px !important; margin-bottom: 20px">医保费用明细</div>
-    <div style="position: fixed; top: 12px; right: 20px; width: 100%; text-align: right">
+    <div style="display: flex; margin-bottom: 20px">
+      <div style="font-size: 18px !important;">
+        医保费用明细
+      </div>
+    </div>
+    <div style="position: fixed; top: 12px; right: 20px; width: 120px; text-align: right">
       <el-button circle icon="Download" title="导出Excel" type="primary" @click="exportExcel"></el-button>
       <el-button circle icon="Close" title="关闭" type="danger" @click="close"></el-button>
     </div>
@@ -88,14 +92,18 @@ import {useZIndex} from "element-plus";
 import {Export} from "@/utils/ExportExcel";
 
 const props = defineProps({
-  type: {
+  setlStatus: {
     type: String,
     default: 'settled',
   },
   mdtrtId: {
     type: String,
     required: true,
-  }
+  },
+  setlType: {
+    type: String,
+    default: '21',
+  },
 })
 
 const emits = defineEmits(['close'])
@@ -144,7 +152,8 @@ const handleClickChrgLv = (key, level) => {
 const fetchFeedtle = () => {
   const param = {
     mdtrtId: props.mdtrtId,
-    type: props.type,
+    setlStatus: props.setlStatus,
+    setlType: props.setlType,
   }
   queryFeeDetails(param).then((res) => {
     psninfo.value = res.psninfo
@@ -182,8 +191,12 @@ const close = () => {
 const zIndex = ref(0)
 onMounted(() => {
   zIndex.value = useZIndex().nextZIndex()
-  fetchFeedtle()
+  if (props.mdtrtId) {
+    fetchFeedtle()
+  }
 })
+
+defineExpose({fetchFeedtle})
 </script>
 
 <style scoped>

+ 58 - 23
src/views/medical-insurance/allpatient/SiSettleDetailList.vue

@@ -59,12 +59,19 @@
     <div v-if="showOperatePane" style="margin-left: 30px; padding: 20px 0">
       <div>
         <div style="display: inline-block; width: 70px">患者类别:</div>
-        <el-radio v-model="outParam.type" :label="21" @change="setlTypeChange"
-          >住院</el-radio
-        >
-        <el-radio v-model="outParam.type" :label="11" @change="setlTypeChange"
-          >门诊</el-radio
-        >
+        <el-radio
+            v-model="outParam.type"
+            :label="21"
+            @change="setlTypeChange"
+          >
+          住院
+        </el-radio>
+        <el-radio
+            v-model="outParam.type"
+            :label="11"
+            @change="setlTypeChange">
+          门诊
+        </el-radio>
       </div>
       <div style="margin-top: 8px">
         <el-input
@@ -78,21 +85,20 @@
           v-model="outParam.label"
           @focus="getTimesList"
           placeholder="结算条目"
-          style="width: 230px"
         >
           <el-option
             v-for="item in timesList"
             :key="item.setlId"
             :value="item.label"
           >
-            <span style="color: #8492a6; font-size: 12px">{{
-              item.times
-            }}</span>
+            <span style="color: #8492a6; font-size: 12px">
+              {{item.times }}
+            </span>
             <el-divider direction="vertical"></el-divider>
             <span v-show="outParam.type === 21">
-              <span style="color: #8492a6; font-size: 12px">{{
-                item.ledgerSn
-              }}</span>
+              <span style="color: #8492a6; font-size: 12px">
+                {{item.ledgerSn }}
+              </span>
               <el-divider direction="vertical"></el-divider>
             </span>
             <span>{{ item.endtime }}</span>
@@ -100,10 +106,26 @@
         </el-select>
       </div>
       <div style="width: 100%; text-align: right; margin-top: 8px">
-        <el-button icon="Printer" @click="siPrint">打印</el-button>
-        <el-button type="primary" icon="Search" @click="executeQrySetlinfo">
-          查找</el-button
+        <el-button
+            type="primary"
+            icon="Search"
+            @click="executeQrySetlinfo"
         >
+          查询
+        </el-button>
+        <el-button
+          icon="Document"
+          type="primary"
+          @click="displayFeeDetl"
+        >
+          费用明细
+        </el-button>
+        <el-button
+            icon="Printer"
+            @click="siPrint"
+        >
+          打印
+        </el-button>
       </div>
       <div
         style="
@@ -119,13 +141,19 @@
     <div v-else style="position: fixed; top: 6px; right: 30px">
       <el-button type="danger" icon="Printer" @click="siPrint">打印</el-button>
     </div>
+    <MedfeeAnalyse
+        v-if="showFeeDetl"
+        setl-status="settled"
+        :mdtrt-id="setlinfo.mdtrtId"
+        :setl-type="outParam.type"
+        @close="showFeeDetl = false"
+    />
   </div>
 </template>
 
 <script setup>
 import { initLodop, getLodop } from "@/utils/c-lodop";
 import { computed, onMounted, reactive, ref } from "vue";
-import { ElMessage } from "element-plus";
 import router from "@/router";
 import {
   querySiSetlList,
@@ -136,6 +164,8 @@ import InpatientSetlList from "@/components/medical-insurance/settle-detail-list
 import OtherOutpatientSetlList from "@/components/medical-insurance/settle-detail-list/OtherOutpatientSetlList.vue";
 import EmployeeOutpatientSetlList from "@/components/medical-insurance/settle-detail-list/EmployeeOutpatientSetlList.vue";
 import env from "../../../utils/setting";
+import MedfeeAnalyse from "@/components/medical-insurance/medfee-analyse/Index.vue";
+import {xcMessage} from "@/utils/xiaochan-element-plus";
 
 const path = router.currentRoute.value.fullPath;
 const showOperatePane = path === "/medins/qryManage/siSettleDetailList";
@@ -227,12 +257,7 @@ const executeQrySetlinfo = () => {
 
 const siPrint = () => {
   if (!setlinfo.value.mdtrtId) {
-    ElMessage({
-      message: "无法打印空白的结算清单!",
-      type: "warning",
-      duration: 2000,
-      showClose: true,
-    });
+    xcMessage.warning("无法打印空白的结算清单!")
     return;
   }
   const prntStyle =
@@ -265,6 +290,16 @@ onMounted(() => {
     executeQrySetlinfo();
   }
 });
+
+const showFeeDetl = ref(false);
+
+function displayFeeDetl() {
+  if (!setlinfo.value.mdtrtId) {
+    xcMessage.warning('请先查询结算单!')
+    return;
+  }
+  showFeeDetl.value = true
+}
 </script>
 
 <style scoped>

+ 1 - 1
src/views/medical-insurance/inpatient/InHospFeeUpload.vue

@@ -199,7 +199,7 @@
   </el-dialog>
   <MedfeeAnalyse
     v-if="showFeeDetl"
-    type="unsettled"
+    setl-status="unsettled"
     :mdtrt-id="patient.mdtrtId"
     @close="showFeeDetl = false"
   />

+ 1 - 1
src/views/medical-insurance/inpatient/SettleVerification.vue

@@ -232,7 +232,7 @@
 
   <Insuinfo v-if="showPsnInsuinfo" :params="checkTreatmentParams" @close="showPsnInsuinfo = false" @row-click="checkTreatmentinfos"/>
   <Treatmentinfo v-if="showTreatmentinfos" :params="checkTreatmentParams" @close="showTreatmentinfos = false"/>
-  <MedfeeAnalyse v-if="showFeeDetl" type="unsettled" :mdtrt-id="currentApply.mdtrtId" @close="showFeeDetl = false"/>
+  <MedfeeAnalyse v-if="showFeeDetl" setl-status="unsettled" :mdtrt-id="currentApply.mdtrtId" @close="showFeeDetl = false"/>
   <IdentifyImage v-if="showIdCardImg" :pat-no="currentApply.patNo" :times="currentApply.times" @close="showIdCardImg = false"/>
   <el-drawer
       v-model="showHistories"