Просмотр исходного кода

Merge branch 'master' into 'master'

报表增加同比环比

See merge request lighter/vue-intergration-platform!2
huangshuhua 3 лет назад
Родитель
Сommit
a485fac01b

+ 10 - 0
src/api/medical-insurance/si-ybkf.js

@@ -1,5 +1,6 @@
 import request from '../../utils/request'
 
+// 查询基础数据
 export function selectYbStatInfo(data) {
   return request({
     url: '/ybQuery/selectYbStatInfo',
@@ -7,3 +8,12 @@ export function selectYbStatInfo(data) {
     data,
   })
 }
+
+// 查询同比/环比
+export function selectYbStatRatio(data) {
+  return request({
+    url: '/ybQuery/selectYbStatRatio',
+    method: 'post',
+    data,
+  })
+}

+ 450 - 138
src/views/medical-insurance/allpatient/InsurIncomeAnalysis.vue

@@ -1,94 +1,132 @@
 <template>
   <el-container>
-    <el-header style="height: 35px; margin-top: 10px">
-      <el-date-picker v-model="setlCondition.month" :clearable="false" placeholder="请选择" style="width: 110px" type="month"></el-date-picker>
-
-      <el-cascader
-        v-model="setlCondition.dataInfo"
-        :options="setlCondition.options"
-        :props="{ expandTrigger: 'hover' }"
-        @change="handleChange"
-        :clearable="true"
-        :filterable="true"
-        placeholder="请选择险种"
-      >
+    <el-header style="height: 35px; margin-top: 5px; padding: 0 5px">
+      <el-date-picker v-model="dateRange" type="monthrange" range-separator="至" start-placeholder="开始月份"
+        end-placeholder="结束月份" style="width: 220px">
+      </el-date-picker>
+      <el-cascader v-model="setlCondition.dataInfo" :options="setlCondition.options" :props="{ expandTrigger: 'hover' }"
+        @change="handleChange" :clearable="true" :filterable="true" placeholder="请选择险种">
       </el-cascader>
       <el-divider direction="vertical"></el-divider>
       <el-button icon="Search" type="success" @click="fetchSetlinfos">查询</el-button>
       <el-button icon="Download" type="primary" @click="exportSetlinfoExcel">导出Excel</el-button>
     </el-header>
     <el-main>
-      <el-table :data="setlinfos" :max-height="tableHeight" border highlight-current-row row-key="childKey" show-summary :summary-method="getSummaries1">
-        <el-table-column label="险种类型" prop="insurName" header-align="center"></el-table-column>
-        <el-table-column label="住院人次" prop="psnCount" align="center" header-align="center"></el-table-column>
-        <el-table-column label="住院天数" prop="inDays" align="center" header-align="center"></el-table-column>
-        <el-table-column label="平均住院日" prop="avgInDays" align="right" header-align="center"></el-table-column>
-        <el-table-column label="总费用" prop="totalFee" align="right" header-align="center"></el-table-column>
-        <el-table-column label="药品费用" prop="drugFee" align="right" header-align="center"></el-table-column>
-        <el-table-column label="药品占比(%)" prop="drugFeeRatio" align="right" header-align="center"></el-table-column>
-        <el-table-column label="耗材费用" prop="matFee" align="right" header-align="center"></el-table-column>
-        <el-table-column label="耗材占比(%)" prop="matFeeRatio" align="right" header-align="center"></el-table-column>
-        <el-table-column label="基本医疗统筹金额" prop="fundPooling" align="right" header-align="center"></el-table-column>
-        <el-table-column label="大病基金" prop="bigIllFundPooling" align="right" header-align="center"></el-table-column>
-        <el-table-column label="公务员基金支付" prop="civilServiceFund" align="right" header-align="center"></el-table-column>
-        <el-table-column label="其他基金" prop="otherFunds" align="right" header-align="center"></el-table-column>
-        <el-table-column label="全部基金" prop="allFunds" align="right" header-align="center"></el-table-column>
-      </el-table>
-      <el-pagination
-        :current-page="currentPage"
-        :page-size="pageSize"
-        :page-sizes="[15, 30, 45, 60]"
-        :total="setldetails.length"
-        layout="total, sizes, prev, pager, next, jumper"
-        style="margin-top: 5px"
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-      ></el-pagination>
+      <el-tabs type="border-card" v-model="setlCondition.selectType" @tab-click="handleClick">
+        <el-tab-pane label="数据" name="first">
+          <el-table :data="setlinfos" :height="tableHeight" border highlight-current-row row-key="childKey" show-summary
+            :summary-method="getSummaries1" stripe>
+            <el-table-column label="险种类型" prop="insurName" fixed header-align="center"></el-table-column>
+            <el-table-column label="住院人次" prop="psnCount" align="center" header-align="center"></el-table-column>
+            <el-table-column label="住院天数" prop="inDays" align="center" header-align="center"></el-table-column>
+            <el-table-column label="平均住院日" prop="avgInDays" align="right" header-align="center"></el-table-column>
+            <el-table-column label="总费用" prop="totalFee" align="right" header-align="center"></el-table-column>
+            <el-table-column label="药品费用" prop="drugFee" align="right" header-align="center"></el-table-column>
+            <el-table-column label="药品占比(%)" prop="drugFeeRatio" align="right" header-align="center"></el-table-column>
+            <el-table-column label="耗材费用" prop="matFee" align="right" header-align="center"></el-table-column>
+            <el-table-column label="耗材占比(%)" prop="matFeeRatio" align="right" header-align="center"></el-table-column>
+            <el-table-column label="基本医疗统筹金额" prop="fundPooling" align="right" header-align="center"></el-table-column>
+            <el-table-column label="大病基金" prop="bigIllFundPooling" align="right" header-align="center">
+            </el-table-column>
+            <el-table-column label="公务员基金支付" prop="civilServiceFund" align="right" header-align="center">
+            </el-table-column>
+            <el-table-column label="其他基金" prop="otherFunds" align="right" header-align="center"></el-table-column>
+            <el-table-column label="全部基金" prop="allFunds" align="right" header-align="center"></el-table-column>
+          </el-table>
+        </el-tab-pane>
+        <el-tab-pane label="同比" name="second">
+          <el-table :data="setlinfos" :height="tableHeight" border highlight-current-row row-key="childKey" show-summary
+            :summary-method="getSummaries1">
+            <el-table-column label="月份" prop="month" fixed align="center" header-align="center"></el-table-column>
+            <el-table-column label="总费用" prop="zfy" header-align="center">
+              <el-table-column label="今年" prop="zfy_jn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="去年" prop="zfy_qn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="同比" prop="zfy_tb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="全部基金" prop="zjj" header-align="center">
+              <el-table-column label="今年" prop="zjj_jn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="去年" prop="zjj_qn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="同比" prop="zjj_tb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="药品费用" prop="ypf" header-align="center">
+              <el-table-column label="今年" prop="ypf_jn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="去年" prop="ypf_qn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="同比" prop="ypf_tb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="耗材费用" prop="clf" header-align="center">
+              <el-table-column label="今年" prop="clf_jn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="去年" prop="clf_qn" align="right" header-align="center"></el-table-column>
+              <el-table-column label="同比" prop="clf_tb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+        <el-tab-pane label="环比" name="third">
+          <el-table :data="setlinfos" :height="tableHeight" border highlight-current-row row-key="childKey" show-summary
+            :summary-method="getSummaries1">
+            <el-table-column label="月份" prop="month" align="center" fixed header-align="center"></el-table-column>
+            <el-table-column label="总费用" prop="zfys" header-align="center">
+              <el-table-column label="费用" prop="zfy" align="right" header-align="center"></el-table-column>
+              <el-table-column label="环比" prop="zfy_hb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="全部基金" prop="zjjs" header-align="center">
+              <el-table-column label="费用" prop="zjj" align="right" header-align="center"></el-table-column>
+              <el-table-column label="环比" prop="zjj_hb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="药品费用" prop="ypfs" header-align="center">
+              <el-table-column label="费用" prop="ypf" align="right" header-align="center"></el-table-column>
+              <el-table-column label="环比" prop="ypf_hb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+            <el-table-column label="耗材费用" prop="clfs" header-align="center">
+              <el-table-column label="费用" prop="clf" align="right" header-align="center"></el-table-column>
+              <el-table-column label="环比" prop="clf_hb" align="right" header-align="center"></el-table-column>
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+      </el-tabs>
     </el-main>
   </el-container>
 </template>
 
 <script>
 import { computed, onMounted, reactive, ref } from 'vue'
-import { formatMonth } from '@/utils/date'
 import { useStore } from 'vuex'
-import { selectYbStatInfo } from '@/api/medical-insurance/si-ybkf'
+import store from '@/store'
+import { getDateRangeFormatDate, formatDatetime } from '@/utils/date'
+import {
+  selectYbStatInfo, selectYbStatRatio
+} from '@/api/medical-insurance/si-ybkf'
 import { clone } from '@/utils/clone'
 import { Export } from '@/utils/ExportExcel'
-import { ElMessage } from 'element-plus'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { downloadExcel } from '@/utils/excel'
 
 export default {
-  components: {},
+  components: {
+
+  },
   setup() {
-    const store = useStore()
-    const windowSize = store.state.app.windowSize
-    const tableHeight = windowSize.h - 55
+    const storeU = useStore()
+    const windowSize = storeU.state.app.windowSize
+    const tableHeight = windowSize.h - 120
+    const dateRange = ref([])
+    const dateS = getDateRangeFormatDate(dateRange.value)
 
     const setlCondition = reactive({
-      month: formatMonth(new Date()),
+      startTime: dateS.startTime,
+      endTime: dateS.endTime,
       setlType: '21',
+      selectType: 'first',
       insurType: null,
       dataInfo: null,
       options: initInsurOptions(),
     })
 
     const setlinfos = ref([])
-    const setldetails = ref([])
-    const showSetldetails = ref(false)
-
-    const admdvsNameStyle = (children, isChildren) => {
-      return {
-        position: 'absolute',
-        top: '6px',
-        left: children || isChildren ? '24px' : '10px',
-        width: '110px',
-      }
-    }
 
     const fetchSetlinfos = () => {
-      if (!setlCondition.month) {
+      if (!dateRange.value) {
         ElMessage({
-          message: '请选择年月!',
+          message: '请选择时间范围!',
           type: 'warning',
           duration: 2500,
           showClose: true,
@@ -109,47 +147,174 @@ export default {
       setlCondition.setlType = setlCondition.dataInfo[0]
       setlCondition.insurType = setlCondition.dataInfo[1]
 
-      setlCondition.month = formatMonth(setlCondition.month)
-      selectYbStatInfo(setlCondition)
-        .then((res) => {
-          setlinfos.value = res
-        })
-        .catch(() => {
-          setlinfos.value = []
+      setlCondition.startTime = formatDatetime(dateRange.value[0])
+      setlCondition.endTime = formatDatetime(dateRange.value[1])
+
+      let yearL = setlCondition.startTime.substr(0, 4)
+      let yearR = setlCondition.endTime.substr(0, 4)
+
+      if (yearL != yearR) {
+        ElMessage({
+          message: '请选择同一年份!',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
         })
+        return
+      }
+
+      if (setlCondition.selectType === "first") {
+        selectYbStatInfo(setlCondition)
+          .then((res) => {
+            setlinfos.value = res
+          })
+          .catch(() => {
+            setlinfos.value = []
+          })
+      } else {
+        selectYbStatRatio(setlCondition)
+          .then((res) => {
+            setlinfos.value = res
+          })
+          .catch(() => {
+            setlinfos.value = []
+          })
+      }
+
     }
 
     const handleChange = (value) => {
-      console.log(value)
+
     }
 
-    const getSummaries = () => {
-      let sums = {
-        psnCount: 0,
-        inDays: 0,
-        avgInDays: 0,
-        totalFee: 0,
-        drugFee: 0,
-        drugFeeRatio: 0,
-        matFee: 0,
-        matFeeRatio: 0,
-        fundPooling: 0,
-        bigIllFundPooling: 0,
-        civilServiceFund: 0,
-        otherFunds: 0,
-        allFunds: 0,
+    const handleClick = (tab, event) => {
+
+      if (!dateRange.value) {
+        ElMessage({
+          message: '请选择时间范围!',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+        return
       }
-      setlinfos.value.forEach((itm) => {
-        for (let k in sums) {
-          sums[k] = Number(sums[k]) + Number(itm[k])
+
+      if (!setlCondition.dataInfo) {
+        ElMessage({
+          message: '请选择险种!',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
+
+      setlCondition.setlType = setlCondition.dataInfo[0]
+      setlCondition.insurType = setlCondition.dataInfo[1]
+
+      setlCondition.startTime = formatDatetime(dateRange.value[0])
+      setlCondition.endTime = formatDatetime(dateRange.value[1])
+
+      // 查询哪个tab页面
+      setlCondition.selectType = tab.props.name
+
+      if (setlCondition.selectType === "first") {
+        selectYbStatInfo(setlCondition)
+          .then((res) => {
+            setlinfos.value = res
+          })
+          .catch(() => {
+            setlinfos.value = []
+          })
+      } else {
+        selectYbStatRatio(setlCondition)
+          .then((res) => {
+            setlinfos.value = res
+          })
+          .catch(() => {
+            setlinfos.value = []
+          })
+      }
+    }
+
+    const getSummaries = () => {
+      if (setlCondition.selectType === 'first') {
+        let sums1 = {
+          psnCount: 0,
+          inDays: 0,
+          avgInDays: 0,
+          totalFee: 0,
+          drugFee: 0,
+          drugFeeRatio: 0,
+          matFee: 0,
+          matFeeRatio: 0,
+          fundPooling: 0,
+          bigIllFundPooling: 0,
+          civilServiceFund: 0,
+          otherFunds: 0,
+          allFunds: 0,
         }
-      })
-      sums.insurName = '合计'
-      sums.avgInDays = (sums.inDays / sums.psnCount).toFixed(2)
-      sums.drugFeeRatio = ((sums.drugFee / sums.totalFee) * 100).toFixed(2)
-      sums.matFeeRatio = ((sums.matFee / sums.totalFee) * 100).toFixed(2)
+        setlinfos.value.forEach((itm) => {
+          for (let k in sums1) {
+            sums1[k] = Number(sums1[k]) + Number(itm[k])
+          }
+        })
+        sums1.insurName = '合计'
+        sums1.avgInDays = (sums1.inDays / sums1.psnCount).toFixed(2)
+        sums1.drugFeeRatio = (sums1.drugFee / sums1.totalFee * 100).toFixed(2)
+        sums1.matFeeRatio = (sums1.matFee / sums1.totalFee * 100).toFixed(2)
+
+        return sums1
+      } else if (setlCondition.selectType === 'second') {
+        let sums2 = {
+          zfy_jn: 0,
+          zfy_qn: 0,
+          zfy_tb: 0,
+          zjj_jn: 0,
+          zjj_qn: 0,
+          zjj_tb: 0,
+          ypf_jn: 0,
+          ypf_qn: 0,
+          ypf_tb: 0,
+          clf_jn: 0,
+          clf_qn: 0,
+          clf_tb: 0,
+        }
+        setlinfos.value.forEach((itm) => {
+          for (let k in sums2) {
+            sums2[k] = Number(sums2[k]) + Number(itm[k])
+          }
+        })
+        sums2.month = '合计'
+        sums2.zfy_tb = ((sums2.zfy_jn - sums2.zfy_qn) / sums2.zfy_qn * 100).toFixed(2) + '%'
+        sums2.zjj_tb = ((sums2.zjj_jn - sums2.zjj_qn) / sums2.zjj_qn * 100).toFixed(2) + '%'
+        sums2.ypf_tb = ((sums2.ypf_jn - sums2.ypf_qn) / sums2.ypf_qn * 100).toFixed(2) + '%'
+        sums2.clf_tb = ((sums2.clf_jn - sums2.clf_qn) / sums2.clf_qn * 100).toFixed(2) + '%'
+        return sums2
+      } else {
+        let sums3 = {
+          zfy: 0,
+          zfy_hb: 0,
+          zjj: 0,
+          zjj_hb: 0,
+          ypf: 0,
+          ypf_hb: 0,
+          clf: 0,
+          clf_hb: 0,
+        }
+        setlinfos.value.forEach((itm) => {
+          for (let k in sums3) {
+            sums3[k] = Number(sums3[k]) + Number(itm[k])
+          }
+        })
+        sums3.month = '合计'
+        sums3.zfy_hb = ''
+        sums3.zjj_hb = ''
+        sums3.ypf_hb = ''
+        sums3.clf_hb = ''
+        return sums3
+      }
 
-      return sums
     }
 
     const getSummaries1 = (param) => {
@@ -165,6 +330,22 @@ export default {
       let ypfIndex = 0
       // 材料费下标
       let clfIndex = 0
+      // 今年总费用下标
+      let jn_zfy = 0
+      // 去年总费用下标
+      let qn_zfy = 0
+      // 今年总基金下标
+      let jn_zjj = 0
+      // 去年总基金下标
+      let qn_zjj = 0
+      // 今年药品费下标
+      let jn_ypf = 0
+      // 去年药品费下标
+      let qn_ypf = 0
+      // 今年耗材费下标
+      let jn_clf = 0
+      // 去年耗材费下标
+      let qn_clf = 0
       columns.forEach((column, index) => {
         if (index === 0) {
           sums[index] = '合计'
@@ -185,22 +366,78 @@ export default {
         if (column.property === 'matFee') {
           clfIndex = index
         }
-        const values = data.map((item) => Number(item[column.property]))
+        if (column.property === 'jn_zfy') {
+          jn_zfy = index
+        }
+        if (column.property === 'qn_zfy') {
+          qn_zfy = index
+        }
+        if (column.property === 'jn_zjj') {
+          jn_zjj = index
+        }
+        if (column.property === 'qn_zjj') {
+          qn_zjj = index
+        }
+        if (column.property === 'jn_ypf') {
+          jn_ypf = index
+        }
+        if (column.property === 'qn_ypf') {
+          qn_ypf = index
+        }
+        if (column.property === 'jn_clf') {
+          jn_clf = index
+        }
+        if (column.property === 'qn_clf') {
+          qn_clf = index
+        }
+        const values = data.map(item => Number(item[column.property]))
         if (column.property === 'avgInDays') {
           sums[index] = (sums[inDaysIndex] / sums[psnCountIndex]).toFixed(2)
         } else if (column.property === 'drugFeeRatio') {
           if (sums[zfyIndex] > 0) {
-            sums[index] = ((sums[ypfIndex] / sums[zfyIndex]) * 100).toFixed(2)
+            sums[index] = (sums[ypfIndex] / sums[zfyIndex] * 100).toFixed(2)
           } else {
-            sums[index] = 0.0
+            sums[index] = 0.00
           }
         } else if (column.property === 'matFeeRatio') {
           if (sums[zfyIndex] > 0) {
-            sums[index] = ((sums[clfIndex] / sums[zfyIndex]) * 100).toFixed(2)
+            sums[index] = (sums[clfIndex] / sums[zfyIndex] * 100).toFixed(2)
           } else {
-            sums[index] = 0.0
+            sums[index] = 0.00
           }
-        } else if (!values.every((value) => isNaN(value))) {
+        } else if (column.property === 'zfy_tb') {
+          if (sums[qn_zfy] > 0) {
+            sums[index] = ((sums[jn_zfy] - sums[qn_zfy]) / sums[qn_zfy] * 100).toFixed(2) + '%'
+          } else {
+            sums[index] = 0.00 + '%'
+          }
+        } else if (column.property === 'zjj_tb') {
+          if (sums[qn_zjj] > 0) {
+            sums[index] = ((sums[jn_zjj] - sums[qn_zjj]) / sums[qn_zjj] * 100).toFixed(2) + '%'
+          } else {
+            sums[index] = 0.00 + '%'
+          }
+        } else if (column.property === 'ypf_tb') {
+          if (sums[qn_ypf] > 0) {
+            sums[index] = ((sums[jn_ypf] - sums[qn_ypf]) / sums[qn_ypf] * 100).toFixed(2) + '%'
+          } else {
+            sums[index] = 0.00 + '%'
+          }
+        } else if (column.property === 'clf_tb') {
+          if (sums[qn_clf] > 0) {
+            sums[index] = ((sums[jn_clf] - sums[qn_clf]) / sums[qn_clf] * 100).toFixed(2) + '%'
+          } else {
+            sums[index] = 0.00 + '%'
+          }
+        } else if (column.property === 'zfy_hb') {
+          sums[index] = ''
+        } else if (column.property === 'zjj_hb') {
+          sums[index] = ''
+        } else if (column.property === 'ypf_hb') {
+          sums[index] = ''
+        } else if (column.property === 'clf_hb') {
+          sums[index] = ''
+        } else if (!values.every(value => isNaN(value))) {
           sums[index] = values.reduce((prev, curr) => {
             const value = Number(curr)
             if (!isNaN(value)) {
@@ -221,14 +458,14 @@ export default {
       })
 
       sums.avgInDays = (sums.inDays / sums.psnCount).toFixed(2)
-      sums.drugFeeRatio = ((sums.drugFee / sums.totalFee) * 100).toFixed(2)
-      sums.matFeeRatio = ((sums.matFee / sums.totalFee) * 100).toFixed(2)
+      sums.drugFeeRatio = (sums.drugFee / sums.totalFee * 100).toFixed(2)
+      sums.matFeeRatio = (sums.matFee / sums.totalFee * 100).toFixed(2)
 
       return sums
     }
 
     const filterSetlTypeName = () => {
-      if ('21' === setlCondition.setlType) {
+      if ("21" === setlCondition.setlType) {
         return setlCondition.options[0].label
       } else {
         return setlCondition.options[1].label
@@ -238,7 +475,7 @@ export default {
     }
 
     const filterInsurTypeName = () => {
-      if ('21' === setlCondition.setlType) {
+      if ("21" === setlCondition.setlType) {
         for (let i = 0; i < setlCondition.options[0].children.length; i++) {
           if (setlCondition.options[0].children[i].value === setlCondition.insurType) {
             return setlCondition.options[0].children[i].label
@@ -256,6 +493,7 @@ export default {
     }
 
     const exportSetlinfoExcel = () => {
+      let year = setlCondition.startTime.substr(0, 4) + '年'
       if (setlinfos.value.length === 0) {
         ElMessage({
           message: '没有可以导出的数据!',
@@ -266,53 +504,121 @@ export default {
       } else {
         const data = clone(setlinfos.value)
         data.push(getSummaries())
-        const title = {
-          insurName: '险种类型',
-          psnCount: '住院人次',
-          inDays: '住院天数',
-          avgInDays: '平均住院日',
-          totalFee: '总费用',
-          drugFee: '药品费用',
-          drugFeeRatio: '药品占比(%)',
-          matFee: '耗材费用',
-          matFeeRatio: '耗材占比(%)',
-          fundPooling: '基本医疗统筹金额',
-          bigIllFundPooling: '大病基金',
-          civilServiceFund: '公务员基金支付',
-          otherFunds: '其他基金',
-          allFunds: '全部基金',
+
+        // 增加导出正在进行中状态
+        store.commit('app/setLoading', true)
+
+        if (setlCondition.selectType === 'first') {
+          const title = {
+            insurName: '险种类型',
+            psnCount: '住院人次',
+            inDays: '住院天数',
+            avgInDays: '平均住院日',
+            totalFee: '总费用',
+            drugFee: '药品费用',
+            drugFeeRatio: '药品占比(%)',
+            matFee: '耗材费用',
+            matFeeRatio: '耗材占比(%)',
+            fundPooling: '基本医疗统筹金额',
+            bigIllFundPooling: '大病基金',
+            civilServiceFund: '公务员基金支付',
+            otherFunds: '其他基金',
+            allFunds: '全部基金',
+          }
+          const setlTypeName = filterSetlTypeName()
+          const insurTypeName = filterInsurTypeName()
+          Export(data, title, `【${year}】【${setlTypeName}】【${insurTypeName}】`)
+        } else if (setlCondition.selectType === 'second') {
+          const setlTypeName = filterSetlTypeName()
+          const exportName = year + setlTypeName + "同比"
+          if (setlinfos.value.length <= 0) {
+            ElMessage({
+              message: '没有可以导出的数据!',
+              type: 'warning',
+              duration: 2500,
+              showClose: true,
+            })
+          }
+          ElMessageBox.prompt('导出文件名字', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            inputPattern: /\S/,
+            inputErrorMessage: '文件名不能为空 (∩•̀ω•́)⊃-*⋆',
+          })
+            .then(({ value }) => {
+              const data = {
+                param: {
+                  startTime: setlCondition.startTime,
+                  endTime: setlCondition.endTime,
+                  setlType: setlCondition.setlType,
+                  insurType: setlCondition.insurType,
+                  selectType: setlCondition.selectType,
+                  exportName: exportName,
+                },
+                url: '/ybQuery/exportYbStatRatioExcel',
+                fileName: value + '.xlsx',
+              }
+              setTimeout(() => {
+                downloadExcel(data)
+              }, 500)
+            })
+            .catch(() => {
+            })
+        } else {
+          const setlTypeName = filterSetlTypeName()
+          const exportName = year + setlTypeName + "环比"
+          if (setlinfos.value.length <= 0) {
+            ElMessage({
+              message: '没有可以导出的数据!',
+              type: 'warning',
+              duration: 2500,
+              showClose: true,
+            })
+          }
+          ElMessageBox.prompt('导出文件名字', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            inputPattern: /\S/,
+            inputErrorMessage: '文件名不能为空 (∩•̀ω•́)⊃-*⋆',
+          })
+            .then(({ value }) => {
+              const data = {
+                param: {
+                  startTime: setlCondition.startTime,
+                  endTime: setlCondition.endTime,
+                  setlType: setlCondition.setlType,
+                  insurType: setlCondition.insurType,
+                  selectType: setlCondition.selectType,
+                  exportName: exportName,
+                },
+                url: '/ybQuery/exportYbStatRatioExcel',
+                fileName: value + '.xlsx',
+              }
+              setTimeout(() => {
+                downloadExcel(data)
+              }, 500)
+            })
+            .catch(() => {
+            })
         }
-        const setlTypeName = filterSetlTypeName()
-        const insurTypeName = filterInsurTypeName()
-        Export(data, title, `【${setlCondition.month}】【${setlTypeName}】【${insurTypeName}】`)
-      }
-    }
 
-    const pageSize = ref(30)
-    const currentPage = ref(1)
-    const handleSizeChange = (val) => {
-      pageSize.value = val
-    }
-    const handleCurrentChange = (val) => {
-      currentPage.value = val
+      }
     }
 
-    onMounted(() => {})
+    onMounted(() => {
+      // 初始化数据
+      setlCondition.selectType = 'first'
+    })
 
     return {
       tableHeight,
+      dateRange,
       setlCondition,
       setlinfos,
-      setldetails,
-      showSetldetails,
-      pageSize,
-      currentPage,
       getSummaries1,
       exportSetlinfoExcel,
       handleChange,
-      admdvsNameStyle,
-      handleCurrentChange,
-      handleSizeChange,
+      handleClick,
       fetchSetlinfos,
     }
   },
@@ -408,7 +714,7 @@ function initInsurOptions() {
           value: 4399012102,
           label: '省内单病种',
         },
-      ],
+      ]
     },
     {
       value: '11',
@@ -434,10 +740,12 @@ function initInsurOptions() {
           value: 51,
           label: '生育门诊',
         },
-      ],
+      ]
     },
+
   ]
 }
+
 </script>
 
 <style scoped>
@@ -458,4 +766,8 @@ function initInsurOptions() {
   color: white;
   font-weight: bold;
 }
+
+:deep(.el-main) {
+  padding: 0 5px;
+}
 </style>