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

Merge branch 'master' of https://172.16.32.165/lighter/vue-intergration-platform

DESKTOP-0GD05B0\Administrator 2 лет назад
Родитель
Сommit
7edffbd370

+ 7 - 3
src/icons/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2473230 */
-  src: url('iconfont.woff2?t=1666142029173') format('woff2'),
-       url('iconfont.woff?t=1666142029173') format('woff'),
-       url('iconfont.ttf?t=1666142029173') format('truetype');
+  src: url('iconfont.woff2?t=1667897125811') format('woff2'),
+       url('iconfont.woff?t=1667897125811') format('woff'),
+       url('iconfont.ttf?t=1667897125811') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,10 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-tools-hardware:before {
+  content: "\e882";
+}
+
 .icon-menzhenrenci:before {
   content: "\e6ff";
 }

BIN
src/icons/iconfont.ttf


BIN
src/icons/iconfont.woff


BIN
src/icons/iconfont.woff2


+ 41 - 7
src/layout/MenuV2/MenuV2.vue

@@ -1,13 +1,18 @@
 <template>
   <div class="floating" ref="floatingRef">
-    <Logo ref="logoRef"/>
-    <el-scrollbar :height="floatingRef?.clientHeight - logoRef?.clientHeight">
+    <div ref="logoRef">
+      <Logo/>
+    </div>
+    <div style="height: 30px; padding: 0 8px 8px 8px" @click="expandMenu">
+      <el-input ref="searchRef" v-model="menuText" prefix-icon="Search" clearable placeholder="菜单太难找?在这里搜索。"></el-input>
+    </div>
+    <el-scrollbar :style="barHeight">
       <el-menu router
                :collapse-transition="false"
                :collapse="isCollapse"
                :default-active="activeMenu"
                :unique-opened="expandOneMenu">
-        <menu-item-v2 v-for="item in data" :data="item"/>
+        <menu-item-v2 v-for="item in cptMenu" :data="item"/>
       </el-menu>
     </el-scrollbar>
   </div>
@@ -16,29 +21,58 @@
 <script setup name='MenuV2' lang="ts">
 import store from '@/store'
 import MenuItemV2 from "./MenuItemV2.vue";
-import {computed, Ref, ref} from "vue";
+import {computed, nextTick, onMounted, reactive, Ref, ref} from "vue";
 import {useRoute} from "vue-router";
 import Logo from '../HeaderV2/Logo.vue'
-import {theme} from "@/theme";
+
+const menuText: Ref<string> = ref(null)
 
 const data = store.state.user.routes
+const flatMenu = store.state.user.flatRoutes
+
+const cptMenu = computed(() => {
+  if (menuText.value) {
+    return flatMenu.filter(item => item['metaTitle'].indexOf(menuText.value) !== -1)
+  }
+  return data.filter(() => {
+      return true
+  });
+})
+
 const expandOneMenu = computed(() => store.state.app.expandOneMenu)
 const route = useRoute()
 const isCollapse = computed(() => store.state.app.isCollapse)
 
+const expandMenu = () => {
+  if (isCollapse.value) {
+    store.commit('app/isCollapseChange', false)
+    setTimeout(() => {
+      searchRef.value.focus()
+    }, 100)
+  }
+}
 
 const logoRef: Ref<HTMLHtmlElement> = ref(null)
+const searchRef: Ref<HTMLHeadElement> = ref(null)
 const floatingRef: Ref<HTMLHtmlElement> = ref(null)
 
+const barHeight = reactive({
+  height: ''
+})
 
 const activeMenu = computed(() => {
   const {meta, path} = route
-  if (meta.activeMenu) {
-    return meta.activeMenu
+  if (meta['activeMenu']) {
+    return meta['activeMenu']
   }
   return path
 })
 
+onMounted(() => {
+  nextTick(() => {
+    barHeight.height = (floatingRef.value.clientHeight - logoRef.value.clientHeight - 36) + 'px'
+  })
+})
 
 </script>
 

+ 107 - 110
src/router/modules/dashboard.js

@@ -17,186 +17,186 @@ const route = [
     {
         path: '/siSettleDetailList/:patientId?/:times?',
         component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SiSettleDetailList.vue')),
-        meta: {title: '医保结算单', icon: 'iconfont icon-zhuyuanqingdan', passRule: true},
+        meta: {title: '医保结算单', passRule: true},
     },
     {
         path: '/',
         component: Layout,
         redirect: '/dashboard',
-        meta: {title: '工作集成平台', icon: 'el-icon-menu'},
+        meta: {title: '工作集成平台'},
         children: [
             {
                 path: 'dashboard',
                 component: createNameComponent(() => import('@/views/dashboard/index.vue')),
-                meta: {title: '首页', icon: 'el-icon-menu', hideClose: true},
+                meta: {title: '首页', hideClose: true},
             },
         ],
     }, // 这里以下都是临时新加的
     {
         path: '/medins',
         component: Layout,
-        meta: {title: '医保模块', icon: 'iconfont icon-inpatient'},
+        meta: {title: '医保模块'},
         children: [
             {
                 path: 'inpatient',
                 component: createNameComponent(() => import('@/views/medical-insurance/inpatient/Home.vue')),
-                meta: {title: '住院医保', icon: 'iconfont icon-inpatient'},
+                meta: {title: '住院医保'},
                 redirect: '/medins/inpatient/admRegistration',
                 children: [
                     {
                         path: 'admRegistration',
                         component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmRegistration.vue')),
-                        meta: {title: '医保入院登记', icon: 'iconfont icon-ruyuandengji'},
+                        meta: {title: '医保入院登记'},
                     },
                     {
                         path: 'inHospFeeUpload',
                         component: createNameComponent(() => import('@/views/medical-insurance/inpatient/InHospFeeUpload.vue')),
-                        meta: {title: '医保费用上传', icon: 'iconfont icon-feiyongshangchuan'},
+                        meta: {title: '医保费用上传'},
                     },
                     {
                         path: 'discSettlement',
                         component: createNameComponent(() => import('@/views/medical-insurance/inpatient/DiscSettlement.vue')),
-                        meta: {title: '医保出院结算', icon: 'iconfont icon-chuyuan'},
+                        meta: {title: '医保出院结算'},
                     },
                 ],
             },
             {
                 path: 'inpatient/admissVerification',
                 component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmissVerification.vue')),
-                meta: {title: '入院登记审核', icon: 'iconfont icon-yibaoshenhe'},
+                meta: {title: '入院登记审核'},
             },
             {
                 path: 'inpatient/medInsVerification',
                 component: createNameComponent(() => import('@/views/medical-insurance/inpatient/SettleVerification.vue')),
-                meta: {title: '出院结算审核', icon: 'iconfont icon-yibaoshenhe'},
+                meta: {title: '出院结算审核'},
             },
             {
                 path: 'inpatient/frontSheetUpload',
                 component: createNameComponent(() => import('@/views/medical-insurance/inpatient/FrontSheetUpload.vue')),
-                meta: {title: '病案首页上传', icon: 'iconfont icon-jiesuandanshangchuan'},
+                meta: {title: '病案首页上传'},
             },
             {
                 path: 'outpatient/mzRegister',
                 component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzRegister.vue')),
-                meta: {title: '门诊登记', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '门诊登记'},
             },
             {
                 path: 'outpatient/mzSpltryRcrd',
                 component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzSpltryRcrd.vue')),
-                meta: {title: '门诊补录', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '门诊补录'},
             },
             {
                 path: 'outpatient/spcChrRcd',
                 component: createNameComponent(() => import('@/views/medical-insurance/outpatient/SpcChrRcd.vue')),
-                meta: {title: '慢特病备案', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '慢特病备案'},
             },
             {
                 path: 'qryManage/catalogue',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/Catalogue.vue')),
-                meta: {title: '目录管理', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '目录管理'},
             },
             {
                 path: 'qryManage/psnInfo',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/PsnInfo.vue')),
-                meta: {title: '医保身份查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '医保身份查询'},
             },
             {
                 path: 'qryManage/inhospInfo',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/InhospInfo.vue')),
-                meta: {title: '在院查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '在院查询'},
             },
             {
                 path: 'qryManage/visitInfo',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/VisitInfo.vue')),
-                meta: {title: '就诊信息查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '就诊信息查询'},
             },
             {
                 path: 'qryManage/siSettleDetailList',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SiSettleDetailList.vue')),
-                meta: {title: '医保结算单', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '医保结算单'},
             },
             {
                 path: 'qryManage/setllistReconciliation',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetllistReconciliation.vue')),
-                meta: {title: '结算与对账', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '结算与对账'},
             },
             {
                 path: 'qryManage/setSheetUpload',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetSheetUpload.vue')),
-                meta: {title: '结算单上传', icon: 'iconfont icon-jiesuandanshangchuan'},
+                meta: {title: '结算单上传'},
             },
             {
                 path: 'qryManage/setlStatistics',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetlStatistics.vue')),
-                meta: {title: '结算统计', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '结算统计'},
             },
             {
                 path: 'qryManage/logAnalyse',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/LogAnalyse.vue')),
-                meta: {title: '日志分析', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '日志分析'},
             },
             {
                 path: 'qryManage/insurIncomeAnalysis',
                 component: createNameComponent(() => import('@/views/medical-insurance/allpatient/InsurIncomeAnalysis.vue')),
-                meta: {title: '全院医保收入分析', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '全院医保收入分析'},
             },
             {
                 path: 'statistical/cssybJsTj',
                 component: createNameComponent(() => import('@/views/medical-insurance/statistical/CssybJsTj.vue')),
-                meta: {title: '市医保决算统计', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '市医保决算统计'},
             },
             {
                 path: 'statistical/cssybCsTj',
                 component: createNameComponent(() => import('@/views/medical-insurance/statistical/CssybCsTj.vue')),
-                meta: {title: '市医保测算统计', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '市医保测算统计'},
             },
             {
                 path: 'statistical/cssybBzTj',
                 component: createNameComponent(() => import('@/views/medical-insurance/statistical/CssybBzTj.vue')),
-                meta: {title: '市医保病种统计', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '市医保病种统计'},
             },
             {
                 path: 'statistical/clnTimesAvg',
                 component: createNameComponent(() => import('@/views/medical-insurance/statistical/ClnTimesAvg.vue')),
-                meta: {title: '长浏宁次均费用', icon: 'iconfont icon-zhuyuanqingdan'},
+                meta: {title: '长浏宁次均费用'},
             },
         ],
     },
     {
         path: '/inspections',
         component: Layout,
-        meta: {title: '检验检查', icon: 'iconfont icon-jiancha'},
+        meta: {title: '检验检查'},
         children: [
             {
                 path: 'inspectionReportIndex',
                 name: 'inspectionReportIndex',
                 component: createNameComponent(() => import('@/views/examination/InspectionReportIndex.vue')),
-                meta: {title: '检验报告', icon: 'iconfont icon-jianyanbaogao'},
+                meta: {title: '检验报告'},
             },
             {
                 path: 'covidExamResult',
                 component: createNameComponent(() => import('@/views/examination/CovidExamResult.vue')),
-                meta: {title: '新冠核酸检测报告', icon: 'iconfont icon-xinguan'},
+                meta: {title: '新冠核酸检测报告'},
             },
             {
                 path: 'healthCrdUpld',
                 component: createNameComponent(() => import('@/views/examination/UploadToHealthCard.vue')),
-                meta: {title: '健康证对接', icon: 'iconfont icon-jiankangzheng'},
+                meta: {title: '健康证对接'},
             },
             {
                 path: 'bookableManagement',
                 component: createNameComponent(() => import('@/views/examination/BookableManagement.vue')),
-                meta: {title: '检验检查预约维护', icon: 'iconfont icon-yuyuedingdan'},
+                meta: {title: '检验检查预约维护'},
             },
             {
                 path: 'mixLabelPrinter',
                 component: createNameComponent(() => import('@/views/examination/MixLabelPrinter.vue')),
-                meta: {title: '混采标签打印', icon: 'iconfont icon-jianyanbaogao'},
+                meta: {title: '混采标签打印'},
             },
             {
                 path: 'tjReportInfo',
                 component: createNameComponent(() => import('@/views/examination/TjReportInfo.vue')),
-                meta: {title: '体检报告', icon: 'iconfont icon-jianyanbaogao'},
+                meta: {title: '体检报告'},
             },
             {
                 path: 'bloodSugarQuery',
@@ -208,248 +208,248 @@ const route = [
     {
         path: '/medTecMod',
         component: Layout,
-        meta: {title: '医技模块', icon: 'iconfont icon-yijimokuai'},
+        meta: {title: '医技模块'},
         children: [
             {
                 path: 'yiJiFeiYongLuRu',
                 component: createNameComponent(() => import('@/views/med-tec-mod/YiJiFeiYongLuRu.vue')),
-                meta: {title: '医技费用录入', icon: 'iconfont icon-yiJiFeiYongLuRu'},
+                meta: {title: '医技费用录入'},
             },
             {
                 path: 'queRenYiZhuShouFei',
                 component: createNameComponent(() => import('@/views/med-tec-mod/QueRenYiZhuShouFei.vue')),
-                meta: {title: '确认医嘱费用', icon: 'iconfont icon-queRenYiZhuShouFei'},
+                meta: {title: '确认医嘱费用'},
             },
             {
                 path: 'menZhenXiangMu',
                 component: createNameComponent(() => import('@/views/med-tec-mod/MenZhenXiangMu.vue')),
-                meta: {title: '门诊项目确认或取消', icon: 'iconfont icon-menZhenXiangMu'},
+                meta: {title: '门诊项目确认或取消'},
             },
         ],
     },
     {
         path: '/dictionary',
         component: Layout,
-        meta: {title: '字典准备', icon: 'iconfont icon-xiangmuzidian'},
+        meta: {title: '字典准备'},
         children: [
             {
                 path: 'prjctMdcnMtch',
                 component: createNameComponent(() => import('@/views/dictionary/NationalSiMatch.vue')),
-                meta: {title: '项目药品匹配', icon: 'iconfont icon-pipei'},
+                meta: {title: '项目药品匹配'},
             },
             {
                 path: 'deptMatch',
                 component: createNameComponent(() => import('@/views/dictionary/YiBaoKeShiPiPei.vue')),
-                meta: {title: '医保科室匹配', icon: 'iconfont icon-pipei'},
+                meta: {title: '医保科室匹配'},
             },
             {
                 path: 'hisWjwMatch',
                 component: createNameComponent(() => import('@/views/dictionary/HisWjwMatch.vue')),
-                meta: {title: '卫健委字典匹配', icon: 'iconfont icon-pipei'},
+                meta: {title: '卫健委字典匹配'},
             },
             {
                 path: 'shouShuBuWeiWeiHu',
                 component: createNameComponent(() => import('@/views/dictionary/ShouShuBuWeiWeiHu.vue')),
-                meta: {title: '手术部位维护', icon: 'iconfont icon-shoushubuwei'},
+                meta: {title: '手术部位维护'},
             },
             {
                 path: 'emrDataMaintenance',
                 component: createNameComponent(() => import('@/views/dictionary/EmrDataMaintenance.vue')),
-                meta: {title: '电子病历数据源维护', icon: 'iconfont icon-dianzibingli'},
+                meta: {title: '电子病历数据源维护'},
             },
         ],
     },
     {
         path: '/reports',
         component: Layout,
-        meta: {title: '报表模块', icon: 'iconfont icon-baobiaomokuai'},
+        meta: {title: '报表模块'},
         children: [
             {
                 path: 'deptPriodRprt',
                 component: createNameComponent(() => import('@/views/reports/DeptPeriodReport.vue')),
-                meta: {title: '科室时段报表', icon: 'iconfont icon-shiduanfenxi'},
+                meta: {title: '科室时段报表'},
             },
             {
                 path: 'infntChrgRprt',
                 component: createNameComponent(() => import('@/views/reports/InfantFeeReport.vue')),
-                meta: {title: '婴儿收费统计', icon: 'iconfont icon-yinger'},
+                meta: {title: '婴儿收费统计'},
             },
             {
                 path: 'mdcnStckCnt',
                 component: createNameComponent(() => import('@/views/reports/MedicineStockCount.vue')),
-                meta: {title: '药品盘点', icon: 'iconfont icon-yaopin'},
+                meta: {title: '药品盘点'},
             },
             {
                 path: 'clockinStatistics',
                 component: createNameComponent(() => import('@/views/reports/ClockinData.vue')),
-                meta: {title: '打卡数据', icon: 'iconfont icon-dakashuju'},
+                meta: {title: '打卡数据'},
             },
             {
                 path: 'covidVaccinateAppointment',
                 component: createNameComponent(() => import('@/views/reports/covid-vaccinate/CovidVaccinateAppointment.vue')),
-                meta: {title: '新冠接种预约', icon: 'iconfont icon-xinguanjiezhong'},
+                meta: {title: '新冠接种预约'},
             },
             {
                 path: 'inquiryOfConsultationFee',
                 component: createNameComponent(() => import('@/views/reports/InquiryOfConsultationFee.vue')),
-                meta: {title: '查询会诊费用', icon: 'iconfont icon-feiyongshenqing'},
+                meta: {title: '查询会诊费用'},
             },
             {
                 path: 'consumablesStatistics',
                 component: createNameComponent(() => import('@/views/reports/ConsumablesStatistics.vue')),
-                meta: {title: '耗材使用统计', icon: 'iconfont icon-haocaitongji'},
+                meta: {title: '耗材使用统计'},
             },
             {
                 path: 'illegalChargesAnalysis',
                 component: createNameComponent(() => import('@/views/reports/IllegalChargesAnalysis.vue')),
-                meta: {title: '违规收费分析', icon: 'iconfont icon-weiguishoufeifenxi'},
+                meta: {title: '违规收费分析'},
             },
             {
                 path: 'queryPayService',
                 component: createNameComponent(() => import('@/views/reports/QueryPayService.vue')),
-                meta: {title: '收费项目', icon: 'iconfont icon-shoufeixiangmu'},
+                meta: {title: '收费项目'},
             },
             {
                 path: 'drugInquiry',
                 component: createNameComponent(() => import('@/views/reports/DrugInquiry.vue')),
-                meta: {title: '查询药品', icon: 'iconfont icon-chaxunyaopin'},
+                meta: {title: '查询药品'},
             },
             {
                 path: 'yuanNeiTongJi',
                 component: createNameComponent(() => import('@/views/reports/YuanNeiTongJi.vue')),
-                meta: {title: '院内统计', icon: 'iconfont icon-haocaitongji'},
+                meta: {title: '院内统计'},
             },
             {
                 path: 'keShiShouRuTongJi',
                 component: createNameComponent(() => import('@/views/reports/KeShiShouRuTongJi.vue')),
-                meta: {title: '科室收入统计', icon: 'iconfont icon-keShiShouRuTongJi'},
+                meta: {title: '科室收入统计'},
             },
             {
                 path: 'bedDays',
                 component: createNameComponent(() => import('@/views/reports/BedDays.vue')),
-                meta: {title: '管床日数统计', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '管床日数统计'},
             },
             {
                 path: 'jiMiBaoBiao',
                 component: createNameComponent(() => import('@/views/reports/JiMuBaoBiao.vue')),
-                meta: {title: '积木报表', icon: 'iconfont icon-jimibaobiao'},
+                meta: {title: '积木报表'},
             },
             {
                 path: 'inpatientAddrAnalyze',
                 component: createNameComponent(() => import('@/views/reports/InpatientAddrAnalyze.vue')),
-                meta: {title: '住院患者分布', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '住院患者分布'},
             },
             {
                 path: 'outpatientCoordination',
                 component: createNameComponent(() => import('@/views/reports/OutpatientCoordination.vue')),
-                meta: {title: '门诊统筹统计', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '门诊统筹统计'},
             },
             {
                 path: 'mzSpecialDisease',
                 component: createNameComponent(() => import('@/views/reports/MzSpecialDisease.vue')),
-                meta: {title: '门诊特殊病统计', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+                meta: {title: '门诊特殊病统计'},
             },
         ],
     },
     {
         path: '/dataModify',
         component: Layout,
-        meta: {title: '数据修改', icon: 'iconfont icon-shujuxiugai'},
+        meta: {title: '数据修改'},
         children: [
             {
                 path: 'yzActOrderModify',
                 name: 'yzActOrderModify',
                 component: createNameComponent(() => import('@/views/data-modify/YzActOrderModify.vue')),
-                meta: {title: '医嘱修改申请', icon: 'iconfont icon-yizhu'},
+                meta: {title: '医嘱修改申请'},
             },
             {
                 path: 'zyChargeFeeModify',
                 component: createNameComponent(() => import('@/views/data-modify/ZyChargeFeeModify.vue')),
-                meta: {title: '住院费用修改', icon: 'iconfont icon-zhuyuanfeiyongfenxi'},
+                meta: {title: '住院费用修改'},
             },
             {
                 path: 'yzActOrderModifyVerify',
                 component: createNameComponent(() => import('@/views/data-modify/YzActOrderModifyVerify.vue')),
-                meta: {title: '医嘱修改审核', icon: 'iconfont icon-yizhuxiugaishenhe'},
+                meta: {title: '医嘱修改审核'},
             },
             {
                 path: 'yzTemperatureModify',
                 component: createNameComponent(() => import('@/views/data-modify/YzTemperatureModify.vue')),
-                meta: {title: '护理记录单修改', icon: 'iconfont icon-hulijiludan'},
+                meta: {title: '护理记录单修改'},
             },
             {
                 path: 'secondFefund',
                 component: createNameComponent(() => import('@/views/data-modify/SecondFefund.vue')),
-                meta: {title: '二次退费', icon: 'iconfont icon-ercituifei'},
+                meta: {title: '二次退费'},
             },
             {
                 path: 'queryOfReceiptDetails',
                 component: createNameComponent(() => import('@/views/data-modify/QueryOfReceiptDetails.vue')),
-                meta: {title: '入库明细查询', icon: 'iconfont icon-rukuguanli'},
+                meta: {title: '入库明细查询'},
             },
             {
                 path: 'deliveryDetailsQuery',
                 component: createNameComponent(() => import('@/views/data-modify/DeliveryDetailsQuery.vue')),
-                meta: {title: '出库明细查询', icon: 'iconfont icon-chukuguanli'},
+                meta: {title: '出库明细查询'},
             },
         ],
     },
     {
         path: '/inpatient',
         component: Layout,
-        meta: {title: '住院模块', icon: 'iconfont icon-yiyuan'},
+        meta: {title: '住院模块'},
         children: [
             {
                 path: 'makeDbzFees',
                 component: createNameComponent(() => import('@/views/hospitalization/MakeDbzFees.vue')),
-                meta: {title: '单病种费用生成', icon: 'iconfont icon-danbingzhong'},
+                meta: {title: '单病种费用生成'},
             },
             {
                 path: 'advrsEvnt/fillAdverseEvent',
                 component: createNameComponent(() => import('@/views/hospitalization/adverse-event/FillAderverseEvent.vue')),
-                meta: {title: '不良事件上报', icon: 'iconfont icon-buliangshijian'},
+                meta: {title: '不良事件上报'},
             },
             {
                 path: 'advrsEvnt/dealAdverseEvent',
                 component: createNameComponent(() => import('@/views/hospitalization/adverse-event/DealAdverseEvent.vue')),
-                meta: {title: '不良事件处理', icon: 'iconfont icon-buliangshijianchuli'},
+                meta: {title: '不良事件处理'},
             },
             {
                 path: 'advrsEvnt/allAdverseEvent',
                 component: createNameComponent(() => import('@/views/hospitalization/adverse-event/AllAdverseEvent.vue')),
-                meta: {title: '不良事件汇总', icon: 'iconfont icon-buliangshijianhuizong'},
+                meta: {title: '不良事件汇总'},
             },
             {
                 path: 'casefrntsht/fillCaseFrontSheet',
                 name: 'fillCaseFrontSheet',
                 component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/FillCaseFrontSheet.vue')),
-                meta: {title: '病案首页填写', icon: 'iconfont icon-binganshouyetianxie'},
+                meta: {title: '病案首页填写'},
             },
             {
                 path: 'casefrntsht/allCaseFrontSheet',
                 component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/AllCaseFrontSheet.vue')),
-                meta: {title: '病案首页汇总', icon: 'iconfont icon-binganshouye3x'},
+                meta: {title: '病案首页汇总'},
             },
             {
                 path: 'casefrntsht/frontSheetExport',
                 component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/FrontSheetExport.vue')),
-                meta: {title: '病案首页导出', icon: 'iconfont icon-binganshouye3x'},
+                meta: {title: '病案首页导出'},
             },
             {
                 path: 'doctorsAdvise/doctorsAdviseGenerate',
                 component: createNameComponent(() => import('@/views/hospitalization/doctors-advise/DoctorsAdviseGenerate.vue')),
-                meta: {title: '医嘱生成', icon: 'iconfont icon-binganshouye3x'},
+                meta: {title: '医嘱生成'},
             },
             {
                 path: 'doctorsAdvise/printInfusionCard',
                 component: createNameComponent(() => import('@/views/hospitalization/doctors-advise/PrintInfusionCard.vue')),
-                meta: {title: '打印输液卡', icon: 'iconfont icon-binganshouye3x'},
+                meta: {title: '打印输液卡'},
             },
 
             {
                 path: 'casefrntsht/jieShouHuiZhen',
                 component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue')),
-                meta: {title: '接收会诊', icon: 'iconfont icon-jieshouhuizhen'},
+                meta: {title: '接收会诊'},
             },
             {
                 path: 'zhuYuanYiSheng',
@@ -474,7 +474,6 @@ const route = [
                         meta: {
                             title: '医嘱录入',
                             hideTabs: true,
-                            icon: 'iconfont icon-yizhuluru',
                             passRule: true,
                             activeMenu: '/inpatient/zhuYuanYiSheng/yiZhuLuRu',
                             parentName: '住院医生',
@@ -486,7 +485,6 @@ const route = [
                         meta: {
                             title: '会诊申请',
                             hideTabs: true,
-                            icon: 'iconfont icon-huizhenshenqing',
                             passRule: true,
                             activeMenu: '/inpatient/zhuYuanYiSheng/yiZhuLuRu',
                             parentName: '住院医生',
@@ -498,7 +496,6 @@ const route = [
                         meta: {
                             title: '检查申请',
                             hideTabs: true,
-                            icon: 'iconfont icon-jianchashenqing',
                             passRule: true,
                             activeMenu: '/inpatient/zhuYuanYiSheng/yiZhuLuRu',
                             parentName: '住院医生',
@@ -545,109 +542,109 @@ const route = [
     {
         path: '/outpatient',
         component: Layout,
-        meta: {title: '门诊模块', icon: 'iconfont icon-menzhen'},
+        meta: {title: '门诊模块'},
         children: [
             {
                 path: 'mzGuideBill',
                 component: createNameComponent(() => import('@/views/clinic/MzGuideBill.vue')),
-                meta: {title: '门诊指引单', icon: 'iconfont icon-zhiyin'},
+                meta: {title: '门诊指引单'},
             },
             {
                 path: 'doctorInfoManagement',
                 component: createNameComponent(() => import('@/views/clinic/DoctorInfoManagement.vue')),
-                meta: {title: '医生信息管理', icon: 'iconfont icon-renyuanxinxiguanli'},
+                meta: {title: '医生信息管理'},
             },
             {
                 path: 'transferInOfExpenses',
                 component: createNameComponent(() => import('@/views/clinic/TransferInOfExpenses.vue')),
-                meta: {title: '急诊费用转入', icon: 'iconfont icon-feiyongzhuanru'},
+                meta: {title: '急诊费用转入'},
             },
             {
                 path: 'wxPayRefund',
                 component: createNameComponent(() => import('@/views/clinic/WxPayRefund.vue')),
-                meta: {title: '微信支付退款', icon: 'iconfont icon-tuikuan'},
+                meta: {title: '微信支付退款'},
             },
             {
                 path: 'triage/untriaged',
                 component: createNameComponent(() => import('@/views/clinic/triage/Untriaged.vue')),
-                meta: {title: '未分诊', icon: 'iconfont icon-weifenzhen'},
+                meta: {title: '未分诊'},
             },
             {
                 path: 'triage/triaged',
                 component: createNameComponent(() => import('@/views/clinic/triage/Triaged.vue')),
-                meta: {title: '已分诊', icon: 'iconfont icon-yifenzhen'},
+                meta: {title: '已分诊'},
             },
             {
                 path: 'triage/treated',
                 component: createNameComponent(() => import('@/views/clinic/triage/Treated.vue')),
-                meta: {title: '已接诊', icon: 'iconfont icon-daping'},
+                meta: {title: '已接诊'},
             },
             {
                 path: 'triage/allTriages',
                 component: createNameComponent(() => import('@/views/clinic/triage/AllTriages.vue')),
-                meta: {title: '所有挂号', icon: 'iconfont icon-suoyou'},
+                meta: {title: '所有挂号'},
             },
             {
                 path: 'triage/triageDeptSettings',
                 component: createNameComponent(() => import('@/views/clinic/triage/DeptSettings.vue')),
-                meta: {title: '科室设置', icon: 'iconfont icon-keshi'},
+                meta: {title: '科室设置'},
             },
             {
                 path: 'triage/triageRoomSettings',
                 component: createNameComponent(() => import('@/views/clinic/triage/RoomSettings.vue')),
-                meta: {title: '诊室设置', icon: 'iconfont icon-zhenshiguanli'},
+                meta: {title: '诊室设置'},
             },
             {
                 path: 'triage/triageIpManagement',
                 component: createNameComponent(() => import('@/views/clinic/triage/IpManagement.vue')),
-                meta: {title: 'IP管理', icon: 'iconfont icon-ip'},
+                meta: {title: 'IP管理'},
             },
             {
                 path: 'triage/triageDisplaySettings',
                 component: createNameComponent(() => import('@/views/clinic/triage/DisplaySettings.vue')),
-                meta: {title: '显示管理', icon: 'iconfont icon-xianshishezhi'},
+                meta: {title: '显示管理'},
             },
         ],
     },
     {
         path: '/outpatient/triage/triageFloorScreen',
         component: createNameComponent(() => import('@/views/clinic/triage/FloorScreen.vue')),
-        meta: {title: '分诊大屏', icon: 'iconfont icon-daping', hideTabs: true},
+        meta: {title: '分诊大屏', hideTabs: true},
     },
     {
         path: '/settings',
         component: Layout,
-        meta: {title: '设置', icon: 'iconfont icon-shezhi'},
+        meta: {title: '设置'},
         children: [
             {
                 path: 'deptPhones',
                 component: createNameComponent(() => import('@/views/settings/DeptPhones.vue')),
-                meta: {title: '科室电话', icon: 'iconfont icon-dianhua'},
+                meta: {title: '科室电话'},
             },
             {
                 path: 'sendNotification',
                 component: createNameComponent(() => import('@/views/settings/SendNotification.vue')),
-                meta: {title: '发送通知', icon: 'iconfont icon-fasongtongzhi'},
+                meta: {title: '发送通知'},
             },
             {
                 path: 'userInfo',
                 component: createNameComponent(() => import('@/views/settings/UserInfo.vue')),
-                meta: {title: '个人中心', icon: 'iconfont icon-gerenzhongxin'},
+                meta: {title: '个人中心'},
             },
             {
                 path: 'permission/userRoleSettings',
                 component: createNameComponent(() => import('@/views/settings/permissions/UserRoleSettings.vue')),
-                meta: {title: '人员角色管理', icon: 'iconfont icon-renyuanjueseguanli'},
+                meta: {title: '人员角色管理'},
             },
             {
                 path: 'permission/roleMenuSettings',
                 component: createNameComponent(() => import('@/views/settings/permissions/RoleMenuSettings.vue')),
-                meta: {title: '角色菜单管理', icon: 'iconfont icon-juesecaidanguanli'},
+                meta: {title: '角色菜单管理'},
             },
             {
                 path: 'test',
                 component: createNameComponent(() => import('@/views/settings/Test.vue')),
-                meta: {title: '测试页面', icon: 'iconfont icon-dianhua'},
+                meta: {title: '测试页面'},
             },
         ],
     },
@@ -655,12 +652,12 @@ const route = [
     {
         path: '/shouShuGuanLi',
         component: Layout,
-        meta: {title: '手术管理', icon: 'iconfont icon-shoushuguanli'},
+        meta: {title: '手术管理'},
         children: [
             {
                 path: 'shouShuAnPai',
                 component: createNameComponent(() => import('@/views/surgical-management/SurgeryArrangement.vue')),
-                meta: {title: '手术安排', icon: 'iconfont icon-shoushuanpai'},
+                meta: {title: '手术安排'},
             },
         ],
     },
@@ -668,12 +665,12 @@ const route = [
     {
         path: '/utilities',
         component: Layout,
-        meta: {title: '通用工具', icon: 'iconfont icon-tool'},
+        meta: {title: '通用工具'},
         children: [
             {
                 path: 'parseJson',
                 component: createNameComponent(() => import('@/views/utilities/ParseJson.vue')),
-                meta: {title: 'JSON格式化', icon: 'iconfont icon-fasongtongzhi'},
+                meta: {title: 'JSON格式化'},
             },
         ],
     },

+ 5 - 0
src/store/modules/user.js

@@ -10,6 +10,7 @@ const state = () => ({
   routes: [], // 用户所以可访问路由
   ward: '', // 用户当前选择的病房
   paths: [], // 装载path的string数组
+  flatRoutes: [] // 用户可访问路由的扁平列表
 })
 
 // getters
@@ -69,6 +70,9 @@ const mutations = {
   pathsChange(state, paths) {
     state.paths = paths
   },
+  flatRoutesChange(state, flatRoutes) {
+    state.flatRoutes = flatRoutes
+  },
 }
 
 // actions
@@ -104,6 +108,7 @@ const actions = {
         commit('menusChange', res.routes)
         commit('routesChange', res.routes)
         commit('pathsChange', res.paths)
+        commit('flatRoutesChange', res.flatRoutes)
         resolve(res)
       })
     })

+ 4 - 2
src/views/hospitalization/case-front-sheet/FillCaseFrontSheet.vue

@@ -755,8 +755,10 @@
           ,推荐以下手术操作:
         </div>
         <el-table :data="searchResults" height="400" stripe highlight-current-row @row-click="handleSelectSearch">
-          <el-table-column prop="code" label="编码" width="180"></el-table-column>
-          <el-table-column prop="name" label="名称" width="430"></el-table-column>
+          <el-table-column prop="code" label="编码" width="130"></el-table-column>
+          <el-table-column prop="name" label="名称"></el-table-column>
+          <el-table-column v-if="searchUrl === 'employee'" prop="deptName" label="科室"></el-table-column>
+          <el-table-column v-if="searchUrl === 'employee'" prop="ybCode" label="医保赋码"></el-table-column>
           <el-table-column v-if="showSurgeryRecommand" prop="ssfz" label="手术分值" width="60"></el-table-column>
         </el-table>
         <div style="margin-top: 15px; width: 100%; text-align: right">

+ 27 - 57
src/views/medical-insurance/statistical/CssybCsTj.vue

@@ -49,13 +49,12 @@
         <el-table-column prop="cyks" label="出院科室" width="130"></el-table-column>
         <el-table-column prop="jssj" label="结算时间" width="140" align="center"></el-table-column>
       </el-table>
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+        :page-sizes="[20, 30, 40, 50, 100]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper"
+        :total="returnData.length" style="margin-top: 5px">
+      </el-pagination>
     </template>
   </page-layer>
-  <el-footer style="height: 40px">
-    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-      :page-sizes="[20, 30, 40, 50, 100]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper"
-      :total="returnData.length" style="margin-top: 5px"></el-pagination>
-  </el-footer>
 </template>
 <script>
 import { reactive, ref } from '@vue/reactivity'
@@ -72,7 +71,7 @@ import PageLayer from "@/layout/PageLayer";
 export default {
   setup() {
     const windowSize = store.state.app.windowSize;
-    const tableHeight = windowSize.h / 1.02;
+    const tableHeight = windowSize.h / 1.07;
     let start = formatDate(clockinShortcuts[0].value[0]);
     let end = formatDate(clockinShortcuts[0].value[1]);
     const handleSelect = (item) => { };
@@ -100,6 +99,7 @@ export default {
     });
     const dateRange = ref([]);
     const returnData = ref([]);
+    let totalData = {};
     const pageSize = ref(30);
     const currentPage = ref(1);
     const handleSizeChange = (val) => {
@@ -113,8 +113,7 @@ export default {
         let dateS = getDateRangeFormatDate(dateRange.value);
         queryTerm.startTime = dateS.startTime;
         queryTerm.endTime = dateS.endTime;
-      }
-      else {
+      } else {
         queryTerm.startTime = start;
         queryTerm.endTime = end;
         ElMessage({
@@ -129,12 +128,9 @@ export default {
       queryTerm.zyh = zyh.value;
       selectCssYbCsTj(queryTerm)
         .then((res) => {
-          returnData.value = res;
+          returnData.value = res.data;
+          totalData = res
         })
-        .catch(() => {
-          returnData.value = [];
-        });
-      returnData.value = [];
     };
     const filterInsurName = () => {
       if (insurId.value == "1") {
@@ -147,54 +143,28 @@ export default {
         return "";
       }
     };
-    let sum = {};
     const getSummaries = (param) => {
-      const { columns, data } = param;
+      const { columns } = param;
       const sums = [];
-      let bxblIndex, zfyIndex, tczfIndex;
       columns.forEach((column, index) => {
         if (index === 0) {
           sums[index] = "合计";
           return;
         }
-        if (column.property === "doctor" || column.property === "zyh" || column.property === "zlfs" || column.property === "ssmc") {
-          sums[index] = "";
-          return;
-        }
-        if (column.property === "bxbl") {
-          bxblIndex = index;
-        }
         if (column.property === "zfy") {
-          zfyIndex = index;
-        }
-        if (column.property === "tczf") {
-          tczfIndex = index;
-        }
-        const values = data.map((item) => Number(item[column.property]));
-        if (!values.every((value) => isNaN(value))) {
-          let hj = values.reduce((prev, curr) => {
-            const value = Number(curr);
-            if (!isNaN(value)) {
-              return prev + curr;
-            }
-            else {
-              return prev;
-            }
-          }, 0);
-          let reg = /rs$/;
-          if (!reg.test(column.property)) {
-            sums[index] = hj.toFixed(2);
-          }
-          else {
-            sums[index] = hj;
-          }
-        }
-        else {
-          sums[index] = "";
+          sums[index] = totalData.zfy;
+        } else if (column.property === "yjzf") {
+          sums[index] = totalData.yjzf;
+        } else if (column.property === "tczf") {
+          sums[index] = totalData.tczf;
+        } else if (column.property === "bal") {
+          sums[index] = totalData.bal;
+        } else if (column.property === "bxbl") {
+          sums[index] = totalData.bxbl;
+        } else if (column.property === "score") {
+          sums[index] = totalData.score;
         }
       });
-      sums[bxblIndex] = ((sums[tczfIndex] / sums[zfyIndex]) * 100).toFixed(2);
-      sum = sums;
       return sums;
     };
     // ----------------导出--------------------
@@ -232,12 +202,12 @@ export default {
         };
         let hj = {
           cyks: "合计",
-          zfy: sum[5],
-          yjzf: sum[6],
-          tczf: sum[7],
-          bal: sum[8],
-          bxbl: sum[9],
-          score: sum[10],
+          zfy: totalData.zfy,
+          yjzf: totalData.yjzf,
+          tczf: totalData.tczf,
+          bal: totalData.bal,
+          bxbl: totalData.bxbl,
+          score: totalData.score,
         };
         returnData.value.push(hj);
         Export(returnData.value, title, "市医保测算统计");

+ 32 - 8
src/views/medical-insurance/statistical/CssybJsTj.vue

@@ -152,7 +152,7 @@
       <el-button icon="Download" type="primary" @click="exportBrDetailExcel">导出Excel</el-button>
     </div>
     <el-table :data="setlBrdetails.slice((currentPage - 1) * pageSize, currentPage * pageSize)"
-      :height="tableHeight - 160" show-summary :summary-method="getSummaries" highlight-current-row stripe>
+      :height="tableHeight - 160" show-summary :summary-method="getSummaries1" highlight-current-row stripe>
       <el-table-column fixed prop="deptName" label="科室" width="100"></el-table-column>
       <el-table-column fixed prop="doctor" label="医生" width="80" align="center"></el-table-column>
       <el-table-column prop="zyh" label="住院号" width="80" align="center"></el-table-column>
@@ -330,6 +330,7 @@ export default {
     // -------------- 病人详情统计 -----------------
     const setlBrdetails = ref([])
     const showBrSetldetails = ref(false)
+    let heji = {}
     // 科室钻取到医生查询
     const brJsdetails = (row) => {
       queryTerm.deptId = row.deptId
@@ -338,9 +339,9 @@ export default {
       selectBrJsTj(selectInfo)
         .then((res) => {
           showBrSetldetails.value = true
-          setlBrdetails.value = res
-        })
-        .catch(() => {
+          setlBrdetails.value = res.data
+          heji = res.total
+        }).catch(() => {
           setlBrdetails.value = []
         })
     }
@@ -366,9 +367,6 @@ export default {
     }
 
     // -------------- 合计 -----------------
-
-    let sum = {}
-
     const getSummaries = (param) => {
       const { columns, data } = param
       const sums = []
@@ -417,7 +415,32 @@ export default {
         }
       })
       sums[bxblIndex] = ((sums[tczfIndex] / sums[zfyIndex]) * 100).toFixed(2)
-      sum = sums
+      return sums
+    }
+
+    // -------------- 分页合计行(需要统计全部数据的合计,而不是当前页数据的合计) -----------------
+    const getSummaries1 = (param) => {
+      const { columns } = param
+      const sums = []
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '合计'
+          return
+        }
+        if (column.property === 'zfy') {
+          sums[index] = heji.zfy
+        } else if (column.property === 'tczf') {
+          sums[index] = heji.tczf
+        } else if (column.property === 'yjzf') {
+          sums[index] = heji.yjzf
+        } else if (column.property === 'zfz') {
+          sums[index] = heji.zfz
+        } else if (column.property === 'bal') {
+          sums[index] = heji.bal
+        } else if (column.property === 'bxbl') {
+          sums[index] = heji.bxbl
+        }
+      })
       return sums
     }
 
@@ -485,6 +508,7 @@ export default {
       exportYsDetailExcel,
       exportBrDetailExcel,
       getSummaries,
+      getSummaries1,
       handleSizeChange,
       handleCurrentChange,
     }