瀏覽代碼

结算统计添加门诊部分

lighter 3 年之前
父節點
當前提交
dd936145df
共有 2 個文件被更改,包括 92 次插入93 次删除
  1. 88 86
      src/views/medical-insurance/allpatient/SetlStatistics.vue
  2. 4 7
      src/views/utilities/ParseJson.vue

+ 88 - 86
src/views/medical-insurance/allpatient/SetlStatistics.vue

@@ -1,12 +1,15 @@
 <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-select v-model="setlConditon.admdvsType" placeholder="参保地归属" style="width: 120px">
+      <el-date-picker v-model="setlCondition.month" type="month" style="width: 110px" placeholder="请选择" :clearable="false"></el-date-picker>
+      <el-select v-model="setlCondition.setlType" style="width: 100px">
+        <el-option label="住院" value="21"></el-option>
+        <el-option label="门诊" value="11"></el-option>
+      </el-select>
+      <el-select v-model="setlCondition.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>
-      <el-select v-model="setlConditon.insutype" placeholder="险种类型" filterable clearable style="width: 200px">
+      <el-select v-model="setlCondition.insutype" placeholder="险种类型" filterable clearable style="width: 200px">
         <el-option v-for="item in insutypes" :key="item.code" :value="item.code" :label="item.name"></el-option>
       </el-select>
       <el-divider direction="vertical"></el-divider>
@@ -16,20 +19,18 @@
     </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>
@@ -41,13 +42,11 @@
         <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>
@@ -67,33 +66,31 @@
           <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-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>
+          <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-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 :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>
@@ -105,11 +102,11 @@
         <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"
+        :page-size="40"
+        layout="total,  prev, pager, next"
+        :total="cptShangChuanJieSuanDanData.length"
+        @current-change="shangChuanCurrent"
+        :current-page="jieSuanDanCurrentPage"
       >
       </el-pagination>
     </el-drawer>
@@ -117,20 +114,16 @@
 </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";
+import { ExcelName } from '../../../utils/ExportExcel'
 
 export default {
   components: {
@@ -141,8 +134,9 @@ export default {
     const windowSize = store.state.app.windowSize
     const tableHeight = windowSize.h - 55
 
-    const setlConditon = reactive({
+    const setlCondition = reactive({
       month: formatMonth(new Date()),
+      setlType: '21',
       insutype: null,
       admdvsType: null,
       insuplcAdmdvs: null,
@@ -163,18 +157,18 @@ export default {
       }
     }
 
-    const differChildrenRows = ({row}) => {
+    const differChildrenRows = ({ row }) => {
       if (row.isChildren) {
         return 'children-row'
       }
     }
 
     const filterDialogTitle = computed(() => {
-      return `【${setlConditon.month}】【${filterAdmdvsName()}】【${filterInsutypeName()}】结算明细`
+      return `【${setlCondition.month}】【${filterAdmdvsName()}】【${filterInsutypeName()}】结算明细`
     })
 
     const fetchSetlinfos = () => {
-      if (!setlConditon.month) {
+      if (!setlCondition.month) {
         ElMessage({
           message: '请选择年月!',
           type: 'warning',
@@ -183,7 +177,7 @@ export default {
         })
         return
       }
-      if (!setlConditon.admdvsType) {
+      if (!setlCondition.admdvsType) {
         ElMessage({
           message: '请选择参保地归属!',
           type: 'warning',
@@ -192,15 +186,15 @@ export default {
         })
         return
       }
-      setlConditon.month = formatMonth(setlConditon.month)
-      selectSetlinfoStatistics(setlConditon)
-          .then((res) => {
-            setlinfos.value = res
-            shangChuanJieSuanDanData.value = setlinfos.value[0].shangChuanJieSuanDan
-          })
-          .catch(() => {
-            setlinfos.value = []
-          })
+      setlCondition.month = formatMonth(setlCondition.month)
+      selectSetlinfoStatistics(setlCondition)
+        .then((res) => {
+          setlinfos.value = res
+          shangChuanJieSuanDanData.value = setlinfos.value[0].shangChuanJieSuanDan
+        })
+        .catch(() => {
+          setlinfos.value = []
+        })
     }
 
     const getSummaries = () => {
@@ -224,7 +218,7 @@ export default {
 
     const filterInsutypeName = () => {
       for (let i = 0; i < insutypes.value.length; i++) {
-        if (insutypes.value[i].code === setlConditon.insutype) {
+        if (insutypes.value[i].code === setlCondition.insutype) {
           return insutypes.value[i].name
         }
       }
@@ -233,7 +227,7 @@ export default {
 
     const filterAdmdvsName = () => {
       for (let i = 0; i < insuOptins.length; i++) {
-        if (insuOptins[i].code === setlConditon.admdvsType) {
+        if (insuOptins[i].code === setlCondition.admdvsType) {
           return insuOptins[i].name
         }
       }
@@ -263,7 +257,7 @@ export default {
         }
         const admdvsName = filterAdmdvsName()
         const insutypeName = filterInsutypeName()
-        Export(data, title, `【${setlConditon.month}】【${admdvsName}】【${insutypeName}】`)
+        Export(data, title, `【${setlCondition.month}】【${admdvsName}】【${insutypeName}】`)
       }
     }
 
@@ -277,16 +271,16 @@ export default {
     }
 
     const fetchSetldetails = (row) => {
-      setlConditon.insuplcAdmdvs = row.insuplcAdmdvs
-      setlConditon.insutype = row.insutype
-      selectSetldetailStatistics(setlConditon)
-          .then((res) => {
-            setldetails.value = res
-            showSetldetails.value = true
-          })
-          .catch(() => {
-            setldetails.value = []
-          })
+      setlCondition.insuplcAdmdvs = row.insuplcAdmdvs
+      setlCondition.insutype = row.insutype
+      selectSetldetailStatistics(setlCondition)
+        .then((res) => {
+          setldetails.value = res
+          showSetldetails.value = true
+        })
+        .catch(() => {
+          setldetails.value = []
+        })
     }
 
     const showSetlinfoComponent = ref(false)
@@ -341,7 +335,7 @@ export default {
     const shangChuanLeiXing = ref(0)
 
     const cptShangChuanJieSuanDanData = computed(() => {
-      return shangChuanJieSuanDanData.value.filter(item => {
+      return shangChuanJieSuanDanData.value.filter((item) => {
         if (shangChuanLeiXing.value === 0) {
           return item
         } else if (shangChuanLeiXing.value === 1) {
@@ -378,7 +372,7 @@ export default {
 
     return {
       tableHeight,
-      setlConditon,
+      setlCondition,
       insutypes,
       insuOptins,
       setlinfos,
@@ -406,10 +400,10 @@ export default {
       shangChuanCurrent,
       shangChuanDaoChu,
       jieSuanDanLeiXingData: ref([
-        {code: 0, name: "全部"},
-        {code: 1, name: "未传"},
-        {code: 2, name: "已传"},
-      ])
+        { code: 0, name: '全部' },
+        { code: 1, name: '未传' },
+        { code: 2, name: '已传' },
+      ]),
     }
   },
 }
@@ -424,6 +418,14 @@ function initInsuOptions() {
       code: 2,
       name: '市本级',
     },
+    {
+      code: 5,
+      name: '长沙县',
+    },
+    {
+      code: 6,
+      name: '浏阳市',
+    },
     {
       code: 3,
       name: '省内异地',

+ 4 - 7
src/views/utilities/ParseJson.vue

@@ -76,13 +76,10 @@ export default {
             return name + ' ' + props.replace(/\s+(\w+=)/g, ' $1')
           })
           .replace(/>\s*?</g, '>\n<')
-      text = text
-        .replace(/\n/g, '\r')
-        .replace(/<!--(.+?)-->/g, function ($0, text) {
-          const ret = '<!--' + escape(text) + '-->';
-          return ret
-        })
-        .replace(/\r/g, '\n')
+      //   text = text
+      //     .replace(/\n/g, '\r')
+      //     .replace(/<!--(.+?)-->/g, '<!--' + escape(text) + '-->')
+      //     .replace(/\r/g, '\n')
       var rgx = /\n(<(([^\?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(?:(\/)>)|(?:<(\/)\2>)))?)/gm
       var nodeStack = []
       var output = text.replace(rgx, function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) {