Prechádzať zdrojové kódy

与本院结算单上传对照

xiaochan 3 rokov pred
rodič
commit
4391502b4b

+ 95 - 87
src/icons/iconfont.css

@@ -1,327 +1,335 @@
 @font-face {
-  font-family: "iconfont"; /* Project id 2473230 */
-  src: url('iconfont.woff2?t=1639981215030') format('woff2'),
-       url('iconfont.woff?t=1639981215030') format('woff'),
-       url('iconfont.ttf?t=1639981215030') format('truetype');
+    font-family: "iconfont"; /* Project id 2473230 */
+    src: url('iconfont.woff2?t=1641285449948') format('woff2'),
+    url('iconfont.woff?t=1641285449948') format('woff'),
+    url('iconfont.ttf?t=1641285449948') format('truetype');
 }
 
 .iconfont {
-  font-family: "iconfont" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
+    font-family: "iconfont" !important;
+    font-size: 16px;
+    font-style: normal;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-yizhuluru:before {
+    content: "\e619";
+}
+
+.icon-zhuyuanyisheng:before {
+    content: "\e618";
 }
 
 .icon-shangxiatuodong:before {
-  content: "\e661";
+    content: "\e661";
 }
 
 .icon-jiesuandanshangchuan:before {
-  content: "\e615";
+    content: "\e615";
 }
 
 .icon-keShiShouRuTongJi:before {
-  content: "\e648";
+    content: "\e648";
 }
 
 .icon-menZhenXiangMu:before {
-  content: "\e633";
+    content: "\e633";
 }
 
 .icon-queRenYiZhuShouFei:before {
-  content: "\e665";
+    content: "\e665";
 }
 
 .icon-yiJiFeiYongLuRu:before {
-  content: "\e66a";
+    content: "\e66a";
 }
 
 .icon-yiJiMoKuai:before {
-  content: "\e706";
+    content: "\e706";
 }
 
 .icon-jimubaobiao:before {
-  content: "\e606";
+    content: "\e606";
 }
 
 .icon-huizhentongji:before {
-  content: "\e61b";
+    content: "\e61b";
 }
 
 .icon-jieshouhuizhen:before {
-  content: "\e61e";
+    content: "\e61e";
 }
 
 .icon-keshipipei:before {
-  content: "\e632";
+    content: "\e632";
 }
 
 .icon-zhuyuanqingdan:before {
-  content: "\e689";
+    content: "\e689";
 }
 
 .icon-xinyibaopipei:before {
-  content: "\e64a";
+    content: "\e64a";
 }
 
 .icon-xinguanshujuweihu:before {
-  content: "\e614";
+    content: "\e614";
 }
 
 .icon-chukuguanli:before {
-  content: "\e7ec";
+    content: "\e7ec";
 }
 
 .icon-rukuguanli:before {
-  content: "\e7ed";
+    content: "\e7ed";
 }
 
 .icon-feiyongzhuanru:before {
-  content: "\e613";
+    content: "\e613";
 }
 
 .icon-ercituifei:before {
-  content: "\e647";
+    content: "\e647";
 }
 
 .icon-yuyuedingdan:before {
-  content: "\e8a2";
+    content: "\e8a2";
 }
 
 .icon-chaxunyaopin:before {
-  content: "\e612";
+    content: "\e612";
 }
 
 .icon-shoufeixiangmu:before {
-  content: "\e62f";
+    content: "\e62f";
 }
 
 .icon-weiguishoufeifenxi:before {
-  content: "\e6f3";
+    content: "\e6f3";
 }
 
 .icon-hulijiludan:before {
-  content: "\e646";
+    content: "\e646";
 }
 
 .icon-yizhuxiugaishenhe:before {
-  content: "\e637";
+    content: "\e637";
 }
 
 .icon-fasongtongzhi:before {
-  content: "\e61d";
+    content: "\e61d";
 }
 
 .icon-dianhua:before {
-  content: "\eac2";
+    content: "\eac2";
 }
 
 .icon-haocaitongji:before {
-  content: "\e627";
+    content: "\e627";
 }
 
 .icon-jianyanbaogao:before {
-  content: "\e678";
+    content: "\e678";
 }
 
 .icon-yibao:before {
-  content: "\e629";
+    content: "\e629";
 }
 
 .icon-binganshouye3x:before {
-  content: "\e68b";
+    content: "\e68b";
 }
 
 .icon-renyuanxinxiguanli:before {
-  content: "\e6ea";
+    content: "\e6ea";
 }
 
 .icon-dakashuju:before {
-  content: "\e607";
+    content: "\e607";
 }
 
 .icon-shiduanfenxi:before {
-  content: "\e642";
+    content: "\e642";
 }
 
 .icon-xianshishezhi:before {
-  content: "\e650";
+    content: "\e650";
 }
 
 .icon-weihu:before {
-  content: "\e616";
+    content: "\e616";
 }
 
 .icon-feiyongshenqing:before {
-  content: "\e60d";
+    content: "\e60d";
 }
 
 .icon-yiyuan:before {
-  content: "\e63b";
+    content: "\e63b";
 }
 
 .icon-baobiaomokuai:before {
-  content: "\e608";
+    content: "\e608";
 }
 
 .icon-yizhu:before {
-  content: "\e699";
+    content: "\e699";
 }
 
 .icon-yaopin:before {
-  content: "\e649";
+    content: "\e649";
 }
 
 .icon-tuikuan:before {
-  content: "\e610";
+    content: "\e610";
 }
 
 .icon-yibaoshenhe:before {
-  content: "\e748";
+    content: "\e748";
 }
 
 .icon-weifenzhen:before {
-  content: "\e768";
+    content: "\e768";
 }
 
 .icon-zhiyin:before {
-  content: "\e630";
+    content: "\e630";
 }
 
 .icon-keshi:before {
-  content: "\e67e";
+    content: "\e67e";
 }
 
 .icon-buliangshijian:before {
-  content: "\e6b2";
+    content: "\e6b2";
 }
 
 .icon-binganshouye:before {
-  content: "\e6ca";
+    content: "\e6ca";
 }
 
 .icon-daping:before {
-  content: "\e600";
+    content: "\e600";
 }
 
 .icon-pipei:before {
-  content: "\e628";
+    content: "\e628";
 }
 
 .icon-menzhenfenzhen:before {
-  content: "\e934";
+    content: "\e934";
 }
 
 .icon-gaojizhengsuan:before {
-  content: "\e62d";
+    content: "\e62d";
 }
 
 .icon-buliangshijianchuli:before {
-  content: "\e687";
+    content: "\e687";
 }
 
 .icon-xiangmuzidian:before {
-  content: "\e67f";
+    content: "\e67f";
 }
 
 .icon-chuyuan:before {
-  content: "\e60e";
+    content: "\e60e";
 }
 
 .icon-zhuyuanfeiyongfenxi:before {
-  content: "\e645";
+    content: "\e645";
 }
 
 .icon-buliangshijian1:before {
-  content: "\e60f";
+    content: "\e60f";
 }
 
 .icon-gerenzhongxin:before {
-  content: "\e657";
+    content: "\e657";
 }
 
 .icon-buliangshijianhuizong:before {
-  content: "\e640";
+    content: "\e640";
 }
 
 .icon-permission:before {
-  content: "\e601";
+    content: "\e601";
 }
 
 .icon-jiankangzheng:before {
-  content: "\e6a8";
+    content: "\e6a8";
 }
 
 .icon-binganshouyetianxie:before {
-  content: "\e631";
+    content: "\e631";
 }
 
 .icon-shujuxiugai:before {
-  content: "\e60b";
+    content: "\e60b";
 }
 
 .icon-yifenzhen:before {
-  content: "\e644";
+    content: "\e644";
 }
 
 .icon-juesecaidanguanli:before {
-  content: "\e623";
+    content: "\e623";
 }
 
 .icon-danbingzhong:before {
-  content: "\e677";
+    content: "\e677";
 }
 
 .icon-feiyongshangchuan:before {
-  content: "\e63a";
+    content: "\e63a";
 }
 
 .icon-jiancha:before {
-  content: "\e641";
+    content: "\e641";
 }
 
 .icon-renyuanjueseguanli:before {
-  content: "\e60c";
+    content: "\e60c";
 }
 
 .icon-xinguan:before {
-  content: "\e742";
+    content: "\e742";
 }
 
 .icon-ruyuandengji:before {
-  content: "\e64d";
+    content: "\e64d";
 }
 
 .icon-menzhen:before {
-  content: "\e603";
+    content: "\e603";
 }
 
 .icon-yinger:before {
-  content: "\e617";
+    content: "\e617";
 }
 
 .icon-xinguanjiezhong:before {
-  content: "\e62e";
+    content: "\e62e";
 }
 
 .icon-shezhi:before {
-  content: "\e611";
+    content: "\e611";
 }
 
 .icon-menzhenteshubingdingdianbiangeng2:before {
-  content: "\e6fa";
+    content: "\e6fa";
 }
 
 .icon-zhenshiguanli:before {
-  content: "\e620";
+    content: "\e620";
 }
 
 .icon-suoyou:before {
-  content: "\e626";
+    content: "\e626";
 }
 
 .icon-ip:before {
-  content: "\e62c";
+    content: "\e62c";
 }
 

BIN
src/icons/iconfont.ttf


BIN
src/icons/iconfont.woff


BIN
src/icons/iconfont.woff2


+ 4 - 4
src/utils/blank-utils.js

@@ -1,16 +1,16 @@
 import {ElMessage} from "element-plus";
 
 export function stringIsBlank(val) {
-    return val === '' || val === null || typeof val === 'undefined'
+    return typeof val === 'undefined' || val === null || val === ''
 }
 
 export function stringNotBlank(val) {
-    return val !== '' && val !== null && typeof val !== 'undefined'
+    return typeof val !== 'undefined' && val !== null && val !== ''
 }
 
 export function listIsBlank(val) {
     if (val instanceof Array) {
-        return val.length === 0 || typeof val === 'undefined'
+        return typeof val === 'undefined' || val.length === 0
     }
     ElMessage.error("入参不为数组无法判断")
     return false
@@ -18,7 +18,7 @@ export function listIsBlank(val) {
 
 export function listNotBlank(val) {
     if (val instanceof Array) {
-        return val.length > 0 && typeof val !== 'undefined'
+        return typeof val !== 'undefined' && val.length > 0
     }
     ElMessage.error("入参不为数组无法判断")
     return false

+ 140 - 43
src/views/medical-insurance/allpatient/SetlStatistics.vue

@@ -1,7 +1,8 @@
 <template>
   <el-container>
     <el-header style="height: 35px; margin-top: 10px">
-      <el-date-picker v-model="setlConditon.month" type="month" style="width: 110px" placeholder="请选择" :clearable="false"></el-date-picker>
+      <el-date-picker v-model="setlConditon.month" type="month" style="width: 110px" placeholder="请选择"
+                      :clearable="false"></el-date-picker>
       <el-select v-model="setlConditon.admdvsType" placeholder="参保地归属" style="width: 120px">
         <el-option v-for="item in insuOptins" :key="item.code" :value="item.code" :label="item.name"></el-option>
       </el-select>
@@ -11,21 +12,24 @@
       <el-divider direction="vertical"></el-divider>
       <el-button type="success" icon="el-icon-search" @click="fetchSetlinfos">查询</el-button>
       <el-button type="primary" icon="el-icon-download" @click="exportSetlinfoExcel">导出Excel</el-button>
+      <el-button @click="shangChuanShuJuDrawer = true" :disabled="setlinfos.length === 0">上传数据</el-button>
     </el-header>
     <el-main>
       <el-table
-        :data="setlinfos"
-        row-key="childKey"
-        :row-class-name="differChildrenRows"
-        :max-height="tableHeight"
-        highlight-current-row
-        border
-        show-summary
-        @row-dblclick="fetchSetldetails"
+          :data="setlinfos"
+          row-key="childKey"
+          :row-class-name="differChildrenRows"
+          :max-height="tableHeight"
+          highlight-current-row
+          border
+          show-summary
+          @row-dblclick="fetchSetldetails"
       >
         <el-table-column label="参保地" width="144">
           <template #default="scope">
-            <div :style="admdvsNameStyle(scope.row.children, scope.row.isChildren)" class="ellipsis-text" :title="scope.row.admdvsName">{{ scope.row.admdvsName }}</div>
+            <div :style="admdvsNameStyle(scope.row.children, scope.row.isChildren)" class="ellipsis-text"
+                 :title="scope.row.admdvsName">{{ scope.row.admdvsName }}
+            </div>
           </template>
         </el-table-column>
         <el-table-column prop="insutypeName" label="险种类型"></el-table-column>
@@ -37,11 +41,13 @@
         <el-table-column prop="othFundpaySumamt" label="其他基金"></el-table-column>
         <el-table-column prop="fundpaySumamt" label="全部基金"></el-table-column>
       </el-table>
-      <el-dialog v-model="showSetldetails" :close-on-click-modal="false" :close-on-press-escape="false" :title="filterDialogTitle" width="70%">
+      <el-dialog v-model="showSetldetails" :close-on-click-modal="false" :close-on-press-escape="false"
+                 :title="filterDialogTitle" width="70%">
         <div style="width: 130px; height: 36px; position: absolute; top: 16px; right: 60px">
           <el-button type="primary" icon="el-icon-download" @click="exportSetldetailExcel">导出Excel</el-button>
         </div>
-        <el-table :data="setldetails.slice(pageSize * (currentPage - 1), pageSize * currentPage)" stripe highlight-current-row height="360" @row-dblclick="openSetlinfoComponent">
+        <el-table :data="setldetails.slice(pageSize * (currentPage - 1), pageSize * currentPage)" stripe
+                  highlight-current-row height="360" @row-dblclick="openSetlinfoComponent">
           <el-table-column type="index" label="序号" fixed width="40"></el-table-column>
           <el-table-column prop="psnName" label="姓名" fixed width="60"></el-table-column>
           <el-table-column prop="patNo" label="住院号" width="70"></el-table-column>
@@ -61,33 +67,71 @@
           <el-table-column prop="psnCashPay" label="个人现金支出"></el-table-column>
         </el-table>
         <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[15, 30, 45, 60]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="setldetails.length"
-          style="margin-top: 5px"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[15, 30, 45, 60]"
+            :page-size="pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="setldetails.length"
+            style="margin-top: 5px"
         ></el-pagination>
       </el-dialog>
       <el-dialog v-model="showSetlinfoComponent" title="结算信息" :close-on-click-modal="false" width="70%">
-        <Setlinfo :setlinfo="currentSetldetail" />
+        <Setlinfo :setlinfo="currentSetldetail"/>
       </el-dialog>
     </el-main>
+    <el-drawer v-model="shangChuanShuJuDrawer" size="80%">
+      <el-select filterable size="mini" v-model="shangChuanLeiXing" style="width: 80px;margin-left: 10px"
+                 @change="jieSuanDanCurrentPage = 1">
+        <el-option v-for="item in jieSuanDanLeiXingData" :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-button style="margin-left: 20px" type="primary" icon="el-icon-download" @click="shangChuanDaoChu">导出Excel
+      </el-button>
+      <el-alert title="上传返回的流水如果没有,就代表该患者没有上传数据"></el-alert>
+      <el-table :data="cptShangChuanJieSuanDanData.slice((jieSuanDanCurrentPage - 1) * 40,jieSuanDanCurrentPage * 40 )"
+                highlight-current-row :height="tableHeight - 30">
+        <el-table-column prop="psnName" label="姓名" fixed width="60"></el-table-column>
+        <el-table-column prop="patNo" label="住院号" width="70"></el-table-column>
+        <el-table-column prop="times" label="次数" width="40"></el-table-column>
+        <el-table-column prop="insutypeName" label="险种类型"></el-table-column>
+        <el-table-column prop="setlTime" label="结算日期"></el-table-column>
+        <el-table-column prop="psnCashPay" label="现金支付"></el-table-column>
+        <el-table-column prop="fundPaySumamt" label="报销金额"></el-table-column>
+        <el-table-column prop="medfeeSumamt" label="总费用"></el-table-column>
+        <el-table-column prop="setlListId" label="上传返回流水"></el-table-column>
+      </el-table>
+      <el-pagination
+          :page-size="40"
+          layout="total,  prev, pager, next"
+          :total="cptShangChuanJieSuanDanData.length"
+          @current-change="shangChuanCurrent"
+          :current-page="jieSuanDanCurrentPage"
+      >
+      </el-pagination>
+    </el-drawer>
   </el-container>
 </template>
 
 <script>
-import { computed, onMounted, reactive, ref } from 'vue'
-import { formatMonth } from '../../../utils/date'
-import { getInsutypes } from '@/api/medical-insurance/si-dict'
-import { useStore } from 'vuex'
-import { selectSetlinfoStatistics, selectSetldetailStatistics, querySettlementInfo } from '@/api/medical-insurance/si-query'
-import { ElMessage } from 'element-plus'
-import { Export } from '@/utils/ExportExcel'
-import { clone } from '../../../utils/clone'
+import {computed, onMounted, reactive, ref} from 'vue'
+import {formatMonth} from '../../../utils/date'
+import {getInsutypes} from '@/api/medical-insurance/si-dict'
+import {useStore} from 'vuex'
+import {
+  selectSetlinfoStatistics,
+  selectSetldetailStatistics,
+  querySettlementInfo
+} from '@/api/medical-insurance/si-query'
+import {ElMessage} from 'element-plus'
+import {Export} from '@/utils/ExportExcel'
+import {clone} from '../../../utils/clone'
 import Setlinfo from '../../../components/medical-insurance/setlinfo/Index.vue'
+import {ExcelName} from "../../../utils/ExportExcel";
+
 export default {
   components: {
     Setlinfo,
@@ -119,7 +163,7 @@ export default {
       }
     }
 
-    const differChildrenRows = ({ row }) => {
+    const differChildrenRows = ({row}) => {
       if (row.isChildren) {
         return 'children-row'
       }
@@ -150,12 +194,13 @@ export default {
       }
       setlConditon.month = formatMonth(setlConditon.month)
       selectSetlinfoStatistics(setlConditon)
-        .then((res) => {
-          setlinfos.value = res
-        })
-        .catch(() => {
-          setlinfos.value = []
-        })
+          .then((res) => {
+            setlinfos.value = res
+            shangChuanJieSuanDanData.value = setlinfos.value[0].shangChuanJieSuanDan
+          })
+          .catch(() => {
+            setlinfos.value = []
+          })
     }
 
     const getSummaries = () => {
@@ -235,13 +280,13 @@ export default {
       setlConditon.insuplcAdmdvs = row.insuplcAdmdvs
       setlConditon.insutype = row.insutype
       selectSetldetailStatistics(setlConditon)
-        .then((res) => {
-          setldetails.value = res
-          showSetldetails.value = true
-        })
-        .catch(() => {
-          setldetails.value = []
-        })
+          .then((res) => {
+            setldetails.value = res
+            showSetldetails.value = true
+          })
+          .catch(() => {
+            setldetails.value = []
+          })
     }
 
     const showSetlinfoComponent = ref(false)
@@ -288,6 +333,43 @@ export default {
       }
     }
 
+    /// 结算单上传数据
+    const shangChuanShuJuDrawer = ref(false)
+    const shangChuanJieSuanDanData = ref([])
+    const jieSuanDanCurrentPage = ref(1)
+
+    const shangChuanLeiXing = ref(0)
+
+    const cptShangChuanJieSuanDanData = computed(() => {
+      return shangChuanJieSuanDanData.value.filter(item => {
+        if (shangChuanLeiXing.value === 0) {
+          return item
+        } else if (shangChuanLeiXing.value === 1) {
+          return item.setlListId === null
+        } else {
+          return item.setlListId !== null
+        }
+      })
+    })
+
+    const shangChuanCurrent = (val) => {
+      jieSuanDanCurrentPage.value = val
+    }
+    const shangChuanDaoChu = () => {
+      let title = {
+        psnName: '姓名',
+        patNo: '住院号',
+        times: '次数',
+        insutypeName: '险种类型',
+        setlTime: '结算日期',
+        psnCashPay: '现金支付',
+        fundPaySumamt: '报销金额',
+        medfeeSumamt: '总费用',
+        setlListId: '上传返回流水',
+      }
+      ExcelName(cptShangChuanJieSuanDanData.value, title)
+    }
+
     onMounted(() => {
       getInsutypes().then((res) => {
         insutypes.value = res
@@ -316,6 +398,18 @@ export default {
       fetchSetldetails,
       openSetlinfoComponent,
       exportSetldetailExcel,
+      shangChuanShuJuDrawer,
+      shangChuanJieSuanDanData,
+      shangChuanLeiXing,
+      cptShangChuanJieSuanDanData,
+      jieSuanDanCurrentPage,
+      shangChuanCurrent,
+      shangChuanDaoChu,
+      jieSuanDanLeiXingData: ref([
+        {code: 0, name: "全部"},
+        {code: 1, name: "未传"},
+        {code: 2, name: "已传"},
+      ])
     }
   },
 }
@@ -350,12 +444,15 @@ function initInsuOptions() {
 :deep(.el-table .children-row) {
   background: rgba(145, 247, 145, 0.5);
 }
+
 :deep(.el-table--border td:first-child .cell, .el-table--border th:first-child .cell) {
   padding-left: 4px;
 }
+
 :deep(.el-table) {
   --el-table-row-hover-background-color: #85dbfd7a;
 }
+
 :deep(.el-table__footer-wrapper tbody td) {
   background: #df4a25;
   color: white;