ソースを参照

优化结算单查询

lighter 3 年 前
コミット
15680b68eb

+ 2 - 10
src/api/medical-insurance/si-query.js

@@ -127,14 +127,6 @@ export function queryPersonnelAssignmentInfo(data) {
   })
 }
 
-export function querySiSetlIndex(data) {
-  return request({
-    url: '/siQuery/querySiSetlIndex',
-    method: 'post',
-    data,
-  })
-}
-
 export function querySiSetlList(data) {
   return request({
     url: '/siQuery/querySiSetlList',
@@ -143,11 +135,11 @@ export function querySiSetlList(data) {
   })
 }
 
-export function fetchSiTimesList(patNo) {
+export function fetchSiTimesList(patNo, type) {
   return request({
     url: '/siQuery/fetchSiTimesList',
     method: 'get',
-    params: { patNo },
+    params: { patNo, type },
   })
 }
 

+ 47 - 62
src/views/medical-insurance/allpatient/SiSettleDetailList.vue

@@ -1,12 +1,12 @@
 <template>
-  <div style="display: flex">
+  <div style="display: flex; width: 100%">
     <div id="listPage" :style="pageStyle">
       <div style="width: 100%; text-align: center; font-size: 22px; font-weight: bold; margin-bottom: 4px">{{ listTitle }}</div>
       <div style="width: 100%; display: flex; font-size: 15px; margin-bottom: 8px">
         <div style="width: 50%; text-align: left">统筹区划:{{ setlinfo.insuplcAdmdvsName }}</div>
         <div style="width: 48%; text-align: right">打印日期:{{ nowdate }}</div>
       </div>
-      <div v-if="outParam.type === 1" class="si-content">
+      <div v-if="outParam.type === 21" class="si-content">
         <div style="display: flex; text-align: left; margin-bottom: 4px">
           <div style="width: 35%">医疗机构名称:长沙泰和医院</div>
           <div style="width: 25%">医院等级:三级综合</div>
@@ -300,7 +300,7 @@
           </tr>
         </table>
       </div>
-      <div v-if="outParam.type === 2" class="si-content">
+      <div v-if="outParam.type === 11" class="si-content">
         <div style="display: flex; text-align: left; margin-bottom: 4px">
           <div style="width: 50%">医疗机构名称:长沙泰和医院</div>
           <div style="width: 50%">就诊号:{{ setlinfo.mdtrtId }}</div>
@@ -441,46 +441,36 @@
     <div v-if="showOperatePane" style="margin-left: 30px; padding: 20px 0">
       <div>
         <div style="display: inline-block; width: 70px">患者类别:</div>
-        <el-select v-model="outParam.type" style="width: 130px" @change="setlinfo = {}">
-          <el-option label="住院" :value="1"></el-option>
-          <el-option label="门诊" :value="2"></el-option>
-        </el-select>
+        <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="height: 8px"></div>
-      <div>
-        <div style="display: inline-block; width: 70px">{{ patNoType }}号:</div>
-        <el-input v-model="outParam.patNo" style="width: 130px" clearable></el-input>
+      <div style="margin-top: 8px">
+        <el-input v-model="outParam.patNo" clearable :placeholder="patNoType"></el-input>
       </div>
-      <div style="height: 8px"></div>
-      <div>
-        <div style="display: inline-block; width: 70px">{{ patNoType }}次数:</div>
-        <el-select v-model="outParam.times" style="width: 130px" @focus="getTimesList">
-          <el-option v-for="item in timesList" :key="item" :label="item" :value="item"></el-option>
+      <div style="margin-top: 8px">
+        <el-select 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>
+            <el-divider direction="vertical"></el-divider>
+            <span v-show="outParam.type === 21">
+              <span style="color: #8492a6; font-size: 12px">{{ item.ledgerSn }}</span>
+              <el-divider direction="vertical"></el-divider>
+            </span>
+            <span>{{ item.endtime }}</span>
+          </el-option>
         </el-select>
       </div>
-      <div style="height: 8px"></div>
-      <div style="width: 200px; text-align: right">
+      <div style="width: 100%; text-align: right; margin-top: 8px">
         <el-button icon="el-icon-printer" @click="siPrint">打印</el-button>
-        <el-button type="primary" icon="el-icon-search" @click="beforeQrySetlinfo"> 查找</el-button>
+        <el-button type="primary" icon="el-icon-search" @click="executeQrySetlinfo"> 查找</el-button>
       </div>
-      <div style="width: 200px; text-align: right; margin-top: 32px; text-decoration: underline">
+      <div style="width: 100%; text-align: right; margin-top: 32px; text-decoration: underline">
         <a href="http://webhis.thyy.cn:8888/LODOP/Lodop.zip">下载打印控件</a>
       </div>
     </div>
     <div v-else style="position: fixed; top: 20px; left: 20px">
       <el-button type="danger" icon="el-icon-printer" @click="siPrint">打印</el-button>
     </div>
-    <el-dialog v-model="showSetlindex" title="请点击要查询的结算条目" width="50%">
-      <el-table :data="setlindex" stripe highlight-current-row max-height="300" @row-click="executeQrySetlinfo">
-        <el-table-column prop="psnName" label="姓名" width="100"></el-table-column>
-        <el-table-column prop="gendName" label="性别" width="60"></el-table-column>
-        <el-table-column prop="patNo" label="住院号" width="100"></el-table-column>
-        <el-table-column prop="times" label="住院次数" width="100"></el-table-column>
-        <el-table-column prop="ledgerSn" label="账页号" width="60"></el-table-column>
-        <el-table-column prop="setlTime" label="结算时间"></el-table-column>
-        <el-table-column prop="medfeeSumamt" label="总费用"></el-table-column>
-      </el-table>
-    </el-dialog>
   </div>
 </template>
 
@@ -490,7 +480,7 @@ import { computed, onMounted, reactive, ref } from 'vue'
 import store from '@/store'
 import { ElMessage } from 'element-plus'
 import router from '@/router'
-import { querySiSetlIndex, querySiSetlList, fetchSiTimesList } from '@/api/medical-insurance/si-query'
+import { querySiSetlList, fetchSiTimesList } from '@/api/medical-insurance/si-query'
 import { getDate } from '@/utils/date'
 
 export default {
@@ -507,61 +497,57 @@ export default {
       background: 'white',
     }
     const outParam = reactive({
-      type: 1,
+      type: 21,
       patNo: null,
-      times: null,
+      label: null,
     })
     const patNoType = computed(() => {
-      return outParam.type === 2 ? '门诊' : '住院'
+      return outParam.type === 21 ? '请输入住院号' : '请输入门诊ID'
     })
+    const oldPatNo = ref(null)
     const timesList = ref([])
     const getTimesList = () => {
       if (!outParam.patNo) {
         return
       }
-      fetchSiTimesList(outParam.patNo)
+      if (oldPatNo.value === outParam.patNo) {
+        return
+      }
+      oldPatNo.value = outParam.patNo
+      fetchSiTimesList(outParam.patNo, outParam.type)
         .then((res) => {
           timesList.value = res
         })
         .catch(() => {
           timesList.value = []
-          outParam.times = null
+          outParam.label = null
         })
     }
 
+    const setlTypeChange = () => {
+      console.log('typechanged')
+      timesList.value = []
+      outParam.patNo = null
+      outParam.label = null
+      oldPatNo.value = null
+    }
+
     const listTitle = computed(() => {
       if (outParam.type === 0) {
         return '湖南省长沙市城乡居民医疗费用“一站式”结算单'
-      } else if (outParam.type === 1) {
+      } else if (outParam.type === 21) {
         return '湖南省长沙市住院费用结算单'
       }
       return '湖南省长沙市(普通、特殊)门诊费用结算单'
     })
     const nowdate = getDate()
-    const showSetlindex = ref(false)
-    const setlindex = ref([])
     const setlinfo = ref({
       mdtrtId: '',
     })
-    const beforeQrySetlinfo = () => {
+    const executeQrySetlinfo = () => {
       setlinfo.value = { mdtrtId: '' }
-      if (outParam.type === 2) {
-        executeQrySetlinfo(outParam)
-      } else {
-        querySiSetlIndex(outParam).then((res) => {
-          if (res.length === 1) {
-            executeQrySetlinfo(res[0])
-          } else {
-            setlindex.value = res
-            showSetlindex.value = true
-          }
-        })
-      }
-    }
-    const executeQrySetlinfo = (param) => {
-      querySiSetlList(param).then((res) => {
+      querySiSetlList(outParam).then((res) => {
         setlinfo.value = res
-        showSetlindex.value = false
       })
     }
 
@@ -594,10 +580,11 @@ export default {
       initLodop()
       if (!showOperatePane) {
         const params = router.currentRoute.value.params
-        outParam.type = 2
+        outParam.type = 11
         outParam.patNo = params.patientId
         outParam.times = params.times
-        executeQrySetlinfo(outParam)
+        outParam.label = null
+        executeQrySetlinfo()
       }
     })
 
@@ -611,11 +598,9 @@ export default {
       listTitle,
       setlinfo,
       showOperatePane,
-      setlindex,
-      showSetlindex,
-      beforeQrySetlinfo,
       executeQrySetlinfo,
       siPrint,
+      setlTypeChange,
     }
   },
 }