xiaochan 1 rok pred
rodič
commit
ecc61147a0

+ 1 - 1
src/api/settings/menu-settings.ts

@@ -14,7 +14,7 @@ export interface IntergrationMenu {
     mainCard?: boolean;
     mainOverflowAuto?: boolean;
     metaShowMenu?: boolean;
-    metaLink?: boolean;
+    metaLink: boolean;
     sort: number;
     component: string;
     redirect?: string;

+ 11 - 0
src/layout/MenuV2/MenuItemV2.vue

@@ -13,6 +13,7 @@
                   v-for="item in data?.children"/>
   </el-sub-menu>
   <el-menu-item v-else
+                @click="(value) => menuItem(value , data)"
                 :index="data?.completePath"
                 :id="data.name"
                 :router="data?.completePath">
@@ -23,6 +24,9 @@
 
 <script setup lang="ts">
 import {toRefs} from "vue";
+import router from "@/router";
+import {IntergrationMenu} from "@/api/settings/menu-settings";
+import {stringNotBlank} from "@/utils/blank-utils";
 
 declare type MenuType = {
   id: number;
@@ -63,6 +67,13 @@ const highlightTitle = (val) => {
   return val
 }
 
+function menuItem(value, data: IntergrationMenu) {
+  if (data.metaLink && stringNotBlank(data.redirect)) {
+    window.open(<string>data!.redirect, "_blank")
+  } else {
+    router.push(value.index)
+  }
+}
 </script>
 
 <style scoped lang="scss">

+ 0 - 1
src/layout/MenuV2/MenuV2.vue

@@ -16,7 +16,6 @@
       <el-scrollbar>
         <el-menu
             ref="menuRef"
-            router
             :collapse-transition="false"
             :collapse="isCollapse"
             :default-active="isSearch ? '' : activeMenu"

+ 1 - 1
src/router/modules/dashboard.ts

@@ -9,7 +9,7 @@ declare module 'vue-router' {
         passRule?: boolean,
         showMenu?: boolean,
         mainCard?: boolean,
-        mainRolling?: boolean
+        mainRolling?: boolean;
     }
 }
 

+ 253 - 253
src/views/dictionary/HisWjwMatch.vue

@@ -1,127 +1,127 @@
 <template>
-    <page-layer>
-        <template #header>
-            数据源:
-            <el-radio-group v-model="hisWjwMatchEntity.label" @change="fetchDataByLabel">
-                <el-radio label="department">科别</el-radio>
-                <el-radio label="anaesthesia">麻醉方式</el-radio>
-                <el-radio label="diagnose">国临诊断</el-radio>
-                <el-radio label="surgery">国临手术操作</el-radio>
-                <el-radio label="surgery_chargeCode">手术收费项目</el-radio>
-                <el-radio label="si_diag">医保诊断</el-radio>
-                <el-radio label="si_surgery">医保手术</el-radio>
-            </el-radio-group>
-            <el-button style="margin-left: 50px" type="primary" icon="Refresh" @click="fetchDataByLabel">刷新数据
-            </el-button>
-        </template>
-        <template #main>
-            <div style="display: flex; height: 100%; width: 100%">
-                <div style="height: 100%; width: 45%">
-                    <div style="display: flex">
-                        <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="hisInput"
-                                  clearable></el-input>
-                        <el-select v-if="hisWjwMatchEntity.label === 'surgery_chargeCode'" v-model="currentStatus">
-                            <el-option :value="0" label="未匹配"></el-option>
-                            <el-option :value="1" label="已匹配"></el-option>
-                            <el-option :value="2" label="全部"></el-option>
-                        </el-select>
-                    </div>
-                    <el-table :data="filterHisList.slice((hisCurrentPage - 1) * 30, hisCurrentPage * 30)"
-                              height="500" highlight-current-row stripe @row-click="handleClickHisRow">
-                        <el-table-column type="index" label="序号"></el-table-column>
-                        <el-table-column prop="code" label="编码" width="90"></el-table-column>
-                        <el-table-column prop="name" label="名称"></el-table-column>
-                        <el-table-column label="状态" width="100">
-                            <template #default="scope">
-                                <span v-html="makeMatchStatus(scope.row.wjwCode, scope.row.chargeCode)"></span>
-                            </template>
-                        </el-table-column>
-                    </el-table>
-                    <el-pagination
-                            @current-change="handleHisPageChange"
-                            :current-page="hisCurrentPage"
-                            :page-size="30"
-                            layout="total, prev, pager, next"
-                            :total="filterHisList.length"
-                            style="margin-top: 5px"
-                    ></el-pagination>
-                </div>
-                <div class="match-info-box">
-                    <div>
-                        <div class="his">
-                            <div>{{ hisMatchTextNote }}:</div>
-                            <div class="code">{{ hisWjwMatchEntity.code }}</div>
-                        </div>
-                        <div class="wjw">
-                            <div>{{ wjwMatchTextNote }}:</div>
-                            <div v-if="hisWjwMatchEntity.label === 'surgery_chargeCode'">
-                                <div v-for="(item,index) in hisWjwMatchEntity.chargeCode" :key="index"
-                                     style="display: flex; align-items: center; padding: 2px 0">
-                                    <div :title="hisWjwMatchEntity.chargeName[index]" style="margin-right: 4px">{{
-                                        item
-                                        }}
-                                    </div>
-                                    <div>
-                                        <el-button type="danger" icon="Delete" plain title="删除" circle
-                                                   @click="deleteMatchItem(index)"></el-button>
-                                    </div>
-                                </div>
-                            </div>
-                            <div v-else class="code">{{ hisWjwMatchEntity.wjwCode }}</div>
-                        </div>
-                        <el-button
-                                v-if="currentHisRow.wjwCode || (currentHisRow.chargeCode && currentHisRow.chargeCode.length > 0)"
-                                icon="Close" type="danger"
-                                @click="revokeMatch">
-                            撤销匹配
-                        </el-button>
-                        <div style="margin-top: 4px"></div>
-                        <el-button v-if="!currentHisRow.wjwCode" icon="Check" type="success" @click="executeMatch"
-                                   :disabled="manageMatchState">
-                            匹配
-                        </el-button>
-                        <div style="margin-top: 4px"></div>
-                        <el-button v-if="hisWjwMatchEntity.label === 'surgery_chargeCode' && currentStatus === 1"
-                                   icon="Download" type="warning" @click="exportExcel">
-                            导出
-                        </el-button>
-                    </div>
-                </div>
-                <div style="height: 100%; width: 45%">
-                    <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="wjwInput"
-                              clearable></el-input>
-                    <el-table
-                            ref="wjwTableRef"
-                            :data="filterWjwList.slice((wjwCurrentPage - 1) * 30, wjwCurrentPage * 30)"
-                            highlight-current-row
-                            stripe
-                            height="500"
-                            @row-click="handleClickWjwRow"
-                            v-loading="disableWjwTable"
-                            element-loading-background="rgba(0, 0, 0, 0.1)"
-                            element-loading-text="如需重新匹配,请先【撤销匹配】"
-                            element-loading-spinner="null"
-                            element-loading-custom-class="m-loading-text"
-                    >
-                        <el-table-column type="index" label="序号"></el-table-column>
-                        <el-table-column prop="code" label="编码" width="90"></el-table-column>
-                        <el-table-column prop="name" label="名称"></el-table-column>
-                        <el-table-column
-                                v-if="hisWjwMatchEntity.label === 'diagnose' || hisWjwMatchEntity.label === 'surgery'"
-                                prop="similarity" label="目标相似度"></el-table-column>
-                    </el-table>
-                    <el-pagination
-                            @current-change="handleWjwPageChange"
-                            :current-page="hisCurrentPage"
-                            :page-size="30"
-                            layout="total, prev, pager, next"
-                            :total="filterWjwList.length"
-                            style="margin-top: 5px"
-                    ></el-pagination>
+  <page-layer>
+    <template #header>
+      数据源:
+      <el-radio-group v-model="hisWjwMatchEntity.label" @change="fetchDataByLabel">
+        <el-radio label="department">科别</el-radio>
+        <el-radio label="anaesthesia">麻醉方式</el-radio>
+        <el-radio label="diagnose">国临诊断</el-radio>
+        <el-radio label="surgery">国临手术操作</el-radio>
+        <el-radio label="surgery_chargeCode">手术收费项目</el-radio>
+        <el-radio label="si_diag">医保诊断</el-radio>
+        <el-radio label="si_surgery">医保手术</el-radio>
+      </el-radio-group>
+      <el-button style="margin-left: 50px" type="primary" icon="Refresh" @click="fetchDataByLabel">刷新数据
+      </el-button>
+    </template>
+    <template #main>
+      <div style="display: flex; height: 100%; width: 100%">
+        <div style="height: 100%; width: 45%">
+          <div style="display: flex">
+            <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="hisInput"
+                      clearable></el-input>
+            <el-select v-if="hisWjwMatchEntity.label === 'surgery_chargeCode'" v-model="currentStatus">
+              <el-option :value="0" label="未匹配"></el-option>
+              <el-option :value="1" label="已匹配"></el-option>
+              <el-option :value="2" label="全部"></el-option>
+            </el-select>
+          </div>
+          <el-table :data="filterHisList.slice((hisCurrentPage - 1) * 30, hisCurrentPage * 30)"
+                    height="500" highlight-current-row stripe @row-click="handleClickHisRow">
+            <el-table-column type="index" label="序号"></el-table-column>
+            <el-table-column prop="code" label="编码" width="90"></el-table-column>
+            <el-table-column prop="name" label="名称"></el-table-column>
+            <el-table-column label="状态" width="100">
+              <template #default="scope">
+                <span v-html="makeMatchStatus(scope.row.wjwCode, scope.row.chargeCode)"></span>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-pagination
+              @current-change="handleHisPageChange"
+              :current-page="hisCurrentPage"
+              :page-size="30"
+              layout="total, prev, pager, next"
+              :total="filterHisList.length"
+              style="margin-top: 5px"
+          ></el-pagination>
+        </div>
+        <div class="match-info-box">
+          <div>
+            <div class="his">
+              <div>{{ hisMatchTextNote }}:</div>
+              <div class="code">{{ hisWjwMatchEntity.code }}</div>
+            </div>
+            <div class="wjw">
+              <div>{{ wjwMatchTextNote }}:</div>
+              <div v-if="hisWjwMatchEntity.label === 'surgery_chargeCode'">
+                <div v-for="(item,index) in hisWjwMatchEntity.chargeCode" :key="index"
+                     style="display: flex; align-items: center; padding: 2px 0">
+                  <div :title="hisWjwMatchEntity.chargeName[index]" style="margin-right: 4px">{{
+                      item
+                    }}
+                  </div>
+                  <div>
+                    <el-button type="danger" icon="Delete" plain title="删除" circle
+                               @click="deleteMatchItem(index)"></el-button>
+                  </div>
                 </div>
+              </div>
+              <div v-else class="code">{{ hisWjwMatchEntity.wjwCode }}</div>
             </div>
-        </template>
-    </page-layer>
+            <el-button
+                v-if="currentHisRow.wjwCode || (currentHisRow.chargeCode && currentHisRow.chargeCode.length > 0)"
+                icon="Close" type="danger"
+                @click="revokeMatch">
+              撤销匹配
+            </el-button>
+            <div style="margin-top: 4px"></div>
+            <el-button v-if="!currentHisRow.wjwCode" icon="Check" type="success" @click="executeMatch"
+                       :disabled="manageMatchState">
+              匹配
+            </el-button>
+            <div style="margin-top: 4px"></div>
+            <el-button v-if="hisWjwMatchEntity.label === 'surgery_chargeCode' && currentStatus === 1"
+                       icon="Download" type="warning" @click="exportExcel">
+              导出
+            </el-button>
+          </div>
+        </div>
+        <div style="height: 100%; width: 45%">
+          <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="wjwInput"
+                    clearable></el-input>
+          <el-table
+              ref="wjwTableRef"
+              :data="filterWjwList.slice((wjwCurrentPage - 1) * 30, wjwCurrentPage * 30)"
+              highlight-current-row
+              stripe
+              height="500"
+              @row-click="handleClickWjwRow"
+              v-loading="disableWjwTable"
+              element-loading-background="rgba(0, 0, 0, 0.1)"
+              element-loading-text="如需重新匹配,请先【撤销匹配】"
+              element-loading-spinner="null"
+              element-loading-custom-class="m-loading-text"
+          >
+            <el-table-column type="index" label="序号"></el-table-column>
+            <el-table-column prop="code" label="编码" width="90"></el-table-column>
+            <el-table-column prop="name" label="名称"></el-table-column>
+            <el-table-column
+                v-if="hisWjwMatchEntity.label === 'diagnose' || hisWjwMatchEntity.label === 'surgery'"
+                prop="similarity" label="目标相似度"></el-table-column>
+          </el-table>
+          <el-pagination
+              @current-change="handleWjwPageChange"
+              :current-page="hisCurrentPage"
+              :page-size="30"
+              layout="total, prev, pager, next"
+              :total="filterWjwList.length"
+              style="margin-top: 5px"
+          ></el-pagination>
+        </div>
+      </div>
+    </template>
+  </page-layer>
 </template>
 
 <script setup name="HisWjwMatch">
@@ -141,196 +141,196 @@ const wjwList = ref([])
 const currentHisRow = ref({})
 const currentStatus = ref(0)
 const hisWjwMatchEntity = reactive({
-    code: null,
-    wjwCode: null,
-    chargeCode: [],
-    chargeName: [],
-    label: 'department',
+  code: null,
+  wjwCode: null,
+  chargeCode: [],
+  chargeName: [],
+  label: 'department',
 })
 
 const hisLabel = ['department', 'anaesthesia']
 const hisMatchTextNote = computed(() => {
-    return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前HIS编码' : '当前国临编码'
+  return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前HIS编码' : '当前国临编码'
 })
 const wjwMatchTextNote = computed(() => {
-    if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
-        return '当前收费编码'
-    }
-    return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前卫健委编码' : '当前医保编码'
+  if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    return '当前收费编码'
+  }
+  return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前卫健委编码' : '当前医保编码'
 })
 
 const disableWjwTable = computed(() => {
-    return currentHisRow.value.wjwCode !== null && currentHisRow.value.wjwCode !== undefined
+  return currentHisRow.value.wjwCode !== null && currentHisRow.value.wjwCode !== undefined
 })
 
 const filterHisList = computed(() => {
-    return hisList.value.filter((item) => {
-        if (currentStatus.value === 0) {
-            return (!item.chargeCode || item.chargeCode.length === 0) &&
-                (item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1)
-        } else if (currentStatus.value === 1) {
-            return (item.chargeCode && item.chargeCode.length > 0) &&
-                (item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1)
-        } else {
-            return item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1
-        }
-    })
+  return hisList.value.filter((item) => {
+    if (currentStatus.value === 0) {
+      return (!item.chargeCode || item.chargeCode.length === 0) &&
+          (item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1)
+    } else if (currentStatus.value === 1) {
+      return (item.chargeCode && item.chargeCode.length > 0) &&
+          (item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1)
+    } else {
+      return item.code.indexOf(hisInput.value) > -1 || item.name.indexOf(hisInput.value) > -1 || item.pyCode.indexOf(hisInput.value.toUpperCase()) > -1
+    }
+  })
 })
 
 const hisCurrentPage = ref(1)
 const wjwCurrentPage = ref(1)
 const handleHisPageChange = (val) => {
-    hisCurrentPage.value = val
+  hisCurrentPage.value = val
 }
 const handleWjwPageChange = (val) => {
-    wjwCurrentPage.value = val
+  wjwCurrentPage.value = val
 }
 
 const filterWjwList = computed(() => {
-    return wjwList.value.filter((item) => {
-        return item.code.indexOf(wjwInput.value) > -1 || item.name.indexOf(wjwInput.value) > -1 || item.pyCode.indexOf(wjwInput.value.toUpperCase()) > -1
-    })
+  return wjwList.value.filter((item) => {
+    return item.code.indexOf(wjwInput.value) > -1 || item.name.indexOf(wjwInput.value) > -1 || item.pyCode.indexOf(wjwInput.value.toUpperCase()) > -1
+  })
 })
 
 const fetchDataByLabel = () => {
-    selectMatchableDataByLabel(hisWjwMatchEntity.label).then((res) => {
-        hisList.value = res.hisList
-        wjwList.value = res.wjwList
-        currentHisRow.value = {}
-        currentSimilarityKey.value = null
-        hisWjwMatchEntity.code = null
-        hisWjwMatchEntity.wjwCode = null
-        hisWjwMatchEntity.chargeCode = []
-        hisWjwMatchEntity.chargeName = []
-    })
+  selectMatchableDataByLabel(hisWjwMatchEntity.label).then((res) => {
+    hisList.value = res.hisList
+    wjwList.value = res.wjwList
+    currentHisRow.value = {}
+    currentSimilarityKey.value = null
+    hisWjwMatchEntity.code = null
+    hisWjwMatchEntity.wjwCode = null
+    hisWjwMatchEntity.chargeCode = []
+    hisWjwMatchEntity.chargeName = []
+  })
 }
 
 const currentSimilarityKey = ref(null)
 const handleClickHisRow = (row) => {
-    if (row.code !== currentHisRow.value.code) {
-        hisWjwMatchEntity.wjwCode = null
-        hisWjwMatchEntity.chargeCode = []
-        hisWjwMatchEntity.chargeName = []
-        hisWjwMatchEntity.code = row.code
-        currentHisRow.value = row
-        if (row.wjwCode) {
-            hisWjwMatchEntity.wjwCode = row.wjwCode
-            for (let i = 0; i < wjwList.value.length; i++) {
-                if (wjwList.value[i].code === row.wjwCode) {
-                    wjwInput.value = wjwList.value[i].name
-                    wjwTableRef.value.setCurrentRow(wjwList.value[i])
-                    break
-                }
-            }
-        } else if (row.chargeCode) {
-            hisWjwMatchEntity.chargeCode = row.chargeCode
-            hisWjwMatchEntity.chargeName = row.chargeName
-        } else {
-            if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
-                wjwInput.value = row.name.length > 3 ? row.name.substring(0, 2) : row.name.substring(0, 1)
-            } else if (hisWjwMatchEntity.label === 'diagnose' || hisWjwMatchEntity.label === 'surgery') {
-                if (row.code !== currentSimilarityKey.value) {
-                    currentSimilarityKey.value = row.code
-                    const key = '%' + row.code.split('.')[0].replace('*', '') + '%'
-                    fetchSimilarities(hisWjwMatchEntity.label, row.name, key).then((res) => {
-                        wjwList.value = res
-                    })
-                }
-            }
+  if (row.code !== currentHisRow.value.code) {
+    hisWjwMatchEntity.wjwCode = null
+    hisWjwMatchEntity.chargeCode = []
+    hisWjwMatchEntity.chargeName = []
+    hisWjwMatchEntity.code = row.code
+    currentHisRow.value = row
+    if (row.wjwCode) {
+      hisWjwMatchEntity.wjwCode = row.wjwCode
+      for (let i = 0; i < wjwList.value.length; i++) {
+        if (wjwList.value[i].code === row.wjwCode) {
+          wjwInput.value = wjwList.value[i].name
+          wjwTableRef.value.setCurrentRow(wjwList.value[i])
+          break
+        }
+      }
+    } else if (row.chargeCode) {
+      hisWjwMatchEntity.chargeCode = row.chargeCode
+      hisWjwMatchEntity.chargeName = row.chargeName
+    } else {
+      if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
+        wjwInput.value = row.name.length > 3 ? row.name.substring(0, 2) : row.name.substring(0, 1)
+      } else if (hisWjwMatchEntity.label === 'diagnose' || hisWjwMatchEntity.label === 'surgery') {
+        if (row.code !== currentSimilarityKey.value) {
+          currentSimilarityKey.value = row.code
+          const key = '%' + row.code.split('.')[0].replace('*', '') + '%'
+          fetchSimilarities(hisWjwMatchEntity.label, row.name, key).then((res) => {
+            wjwList.value = res
+          })
         }
+      }
     }
+  }
 }
 
 const handleClickWjwRow = (row) => {
-    if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
-        if (hisWjwMatchEntity.chargeCode.indexOf(row.code) === -1) {
-            hisWjwMatchEntity.chargeCode.push(row.code)
-            hisWjwMatchEntity.chargeName.push(row.name)
-        }
-    } else {
-        hisWjwMatchEntity.wjwCode = row.code
-        hisWjwMatchEntity.wjwName = row.name
+  if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    if (hisWjwMatchEntity.chargeCode.indexOf(row.code) === -1) {
+      hisWjwMatchEntity.chargeCode.push(row.code)
+      hisWjwMatchEntity.chargeName.push(row.name)
     }
+  } else {
+    hisWjwMatchEntity.wjwCode = row.code
+    hisWjwMatchEntity.wjwName = row.name
+  }
 }
 
 const deleteMatchItem = (index) => {
-    hisWjwMatchEntity.chargeCode.splice(index, 1)
-    hisWjwMatchEntity.chargeName.splice(index, 1)
+  hisWjwMatchEntity.chargeCode.splice(index, 1)
+  hisWjwMatchEntity.chargeName.splice(index, 1)
 }
 
 const makeMatchStatus = (wjwCode, chargeCode) => {
-    return (wjwCode || (chargeCode && chargeCode.length > 0)) ? '<span style="color:green">已匹配</span>' : '<span style="color:red">未匹配</span>'
+  return (wjwCode || (chargeCode && chargeCode.length > 0)) ? '<span style="color:green">已匹配</span>' : '<span style="color:red">未匹配</span>'
 }
 
 const manageMatchState = computed(() => {
-    return hisWjwMatchEntity.wjwCode === null && hisWjwMatchEntity.chargeCode.length === 0
+  return hisWjwMatchEntity.wjwCode === null && hisWjwMatchEntity.chargeCode.length === 0
 })
 
 const executeMatch = () => {
-    if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
-        hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
-        hisWjwMatchEntity.targetNameColumn = null
-    } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
-        hisWjwMatchEntity.targetCodeColumn = 'charge_code'
-        hisWjwMatchEntity.targetNameColumn = 'charge_name'
-    } else {
-        hisWjwMatchEntity.targetCodeColumn = 'yb_code'
-        hisWjwMatchEntity.targetNameColumn = 'yb_name'
-    }
-    executeMatchAction(hisWjwMatchEntity).then((res) => {
-        currentHisRow.value.wjwCode = hisWjwMatchEntity.wjwCode
-        currentHisRow.value.chargeCode = hisWjwMatchEntity.chargeCode
-        currentHisRow.value.chargeName = hisWjwMatchEntity.chargeName
-        ElMessage({
-            message: res,
-            type: 'success',
-            duration: 2500,
-            showClose: true,
-        })
+  if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
+    hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
+    hisWjwMatchEntity.targetNameColumn = null
+  } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    hisWjwMatchEntity.targetCodeColumn = 'charge_code'
+    hisWjwMatchEntity.targetNameColumn = 'charge_name'
+  } else {
+    hisWjwMatchEntity.targetCodeColumn = 'yb_code'
+    hisWjwMatchEntity.targetNameColumn = 'yb_name'
+  }
+  executeMatchAction(hisWjwMatchEntity).then((res) => {
+    currentHisRow.value.wjwCode = hisWjwMatchEntity.wjwCode
+    currentHisRow.value.chargeCode = hisWjwMatchEntity.chargeCode
+    currentHisRow.value.chargeName = hisWjwMatchEntity.chargeName
+    ElMessage({
+      message: res,
+      type: 'success',
+      duration: 2500,
+      showClose: true,
     })
+  })
 }
 
 const revokeMatch = () => {
-    hisWjwMatchEntity.wjwCode = null
-    hisWjwMatchEntity.wjwName = null
-    if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
-        hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
-        hisWjwMatchEntity.targetNameColumn = null
-    } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
-        hisWjwMatchEntity.chargeCode = []
-        hisWjwMatchEntity.chargeName = []
-        hisWjwMatchEntity.targetCodeColumn = 'charge_code'
-        hisWjwMatchEntity.targetNameColumn = 'charge_name'
-    } else {
-        hisWjwMatchEntity.targetCodeColumn = 'yb_code'
-        hisWjwMatchEntity.targetNameColumn = 'yb_name'
-    }
-    executeMatchAction(hisWjwMatchEntity).then((res) => {
-        currentHisRow.value.wjwCode = null
-        currentHisRow.value.chargeCode = []
-        currentHisRow.value.chargeName = []
-        wjwTableRef.value.setCurrentRow(null)
-        ElMessage({
-            message: res,
-            type: 'success',
-            duration: 2500,
-            showClose: true,
-        })
+  hisWjwMatchEntity.wjwCode = null
+  hisWjwMatchEntity.wjwName = null
+  if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
+    hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
+    hisWjwMatchEntity.targetNameColumn = null
+  } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    hisWjwMatchEntity.chargeCode = []
+    hisWjwMatchEntity.chargeName = []
+    hisWjwMatchEntity.targetCodeColumn = 'charge_code'
+    hisWjwMatchEntity.targetNameColumn = 'charge_name'
+  } else {
+    hisWjwMatchEntity.targetCodeColumn = 'yb_code'
+    hisWjwMatchEntity.targetNameColumn = 'yb_name'
+  }
+  executeMatchAction(hisWjwMatchEntity).then((res) => {
+    currentHisRow.value.wjwCode = null
+    currentHisRow.value.chargeCode = []
+    currentHisRow.value.chargeName = []
+    wjwTableRef.value.setCurrentRow(null)
+    ElMessage({
+      message: res,
+      type: 'success',
+      duration: 2500,
+      showClose: true,
     })
+  })
 }
 
 const exportExcel = () => {
-    const fields = {
-        code: '手术操作编码',
-        name: '手术操作名称',
-        chargeCodeString: '匹配收费编码',
-        chargeNameString: '匹配收费名称',
-    }
-    Export(filterHisList.value, fields, '已匹配数据')
+  const fields = {
+    code: '手术操作编码',
+    name: '手术操作名称',
+    chargeCodeString: '匹配收费编码',
+    chargeNameString: '匹配收费名称',
+  }
+  Export(filterHisList.value, fields, '已匹配数据')
 }
 
 onMounted(() => {
-    fetchDataByLabel()
+  fetchDataByLabel()
 })
 </script>
 

+ 172 - 190
src/views/dictionary/YiBaoKeShiPiPei.vue

@@ -1,211 +1,193 @@
 <template>
-  <page-layer>
-    <template #header>
-      <span class="match-title">医保科室匹配</span>
-      <el-select v-model="piPeiLeiXing" @change="queryYuanNeiKeShiChange">
+  <div class="layout_container">
+    <header>
+      <el-tag type="info">
+        医保科室匹配
+      </el-tag>
+      <el-select v-model="piPeiLeiXing" style="width: 120px" @change="queryYuanNeiKeShiChange">
         <el-option key="1" label="未匹配" value="1"></el-option>
         <el-option key="2" label="已匹配" value="2"></el-option>
       </el-select>
       <span>同步查询 &nbsp;</span>
-      <el-select v-model="tongbu">
+      <el-select style="width: 120px" v-model="tongbu">
         <el-option key="false" label="禁用" :value="false"></el-option>
         <el-option key="true" label="启用" :value="true"></el-option>
       </el-select>&nbsp;
       <el-button @click="chongZhi" type="warning">重置</el-button>
       <el-button @click="keShiPiPeiClick" type="success">匹配</el-button>
-    </template>
-    <template #main>
-      <el-container>
-        <el-aside width="600px" style="margin-right: 30px">
-          <el-tag type="info" effect="dark">本院数据</el-tag>
-          <el-divider direction="vertical"></el-divider>
-          <span>本院科室名称 &nbsp;&nbsp;</span>
-          <el-input style="width: 200px" v-model="benYuanMingCheng"></el-input>
-          <el-table :data="cptBenYuan" :height="tableHeight" stripe highlight-current-row @row-click="benYuanRow" style="margin-top: 5px">
-            <el-table-column label="本院编码">
-              <template #default="scope">
-                <el-radio :label="scope.row.code" :value="scope.row.code" v-model="benYuanRadio.code"></el-radio>
-              </template>
-            </el-table-column>
-            <el-table-column label="本院名称" prop="name"></el-table-column>
-            <el-table-column label="匹配医保编码" v-if="piPeiLeiXing == 2" prop="siCaty"></el-table-column>
-            <el-table-column label="匹配医保名称" prop="siCatyName" v-if="piPeiLeiXing == 2"></el-table-column>
-            <el-table-column label="删除匹配" v-if="piPeiLeiXing == 2">
-              <template #default="scope">
-                <el-popconfirm
-                    confirm-button-text="确认"
-                    cancel-button-text="取消"
-                    icon="Info"
-                    iconColor="red"
-                    title="是否删除该数据"
-                    @confirm="shanChuPiPei(scope.$index, scope.row)"
-                >
-                  <template #reference>
-                    <el-button type="danger">删除</el-button>
-                  </template>
-                </el-popconfirm>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-aside>
-        <el-main>
-          <el-tag type="info" effect="dark">医保数据</el-tag>
-          <el-divider direction="vertical"></el-divider>
-          <span>医保科室名称 &nbsp;&nbsp;</span>
-          <el-input style="width: 200px" v-model="yiBaoMingCheng"></el-input>
-          <el-table :data="cptYiBao" :height="tableHeight" stripe highlight-current-row @row-click="yiBaoRow" style="margin-top: 5px">
-            <el-table-column label="医保编码">
-              <template #default="scope">
-                <el-radio :label="scope.row.code" :value="scope.row.code" v-model="yiBaoRadio.code"></el-radio>
-              </template>
-            </el-table-column>
-            <el-table-column label="医保名称" prop="name"></el-table-column>
-          </el-table>
-        </el-main>
-      </el-container>
-    </template>
-  </page-layer>
+    </header>
+    <div class="layout_main layout_container layout-horizontal">
+      <aside class="layout_el-table layout_flex_1-x">
+        <el-tag type="info" effect="dark">本院数据</el-tag>
+        <el-divider direction="vertical"></el-divider>
+        <span>本院科室名称 &nbsp;&nbsp;</span>
+        <el-input style="width: 200px" v-model="benYuanMingCheng"></el-input>
+        <el-table :data="cptBenYuan"
+                  stripe
+                  highlight-current-row
+                  @row-click="benYuanRow"
+                  style="margin-top: 5px">
+          <el-table-column label="本院编码">
+            <template #default="scope">
+              <el-radio :label="scope.row.code" :value="scope.row.code" v-model="benYuanRadio.code"></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column label="本院名称" prop="name"></el-table-column>
+          <el-table-column label="匹配医保编码" v-if="piPeiLeiXing == 2" prop="siCaty"></el-table-column>
+          <el-table-column label="匹配医保名称" prop="siCatyName" v-if="piPeiLeiXing == 2"></el-table-column>
+          <el-table-column label="删除匹配" v-if="piPeiLeiXing == 2">
+            <template #default="scope">
+              <el-popconfirm
+                  confirm-button-text="确认"
+                  cancel-button-text="取消"
+                  icon="Info"
+                  iconColor="red"
+                  title="是否删除该数据"
+                  @confirm="shanChuPiPei(scope.$index, scope.row)"
+              >
+                <template #reference>
+                  <el-button type="danger">删除</el-button>
+                </template>
+              </el-popconfirm>
+            </template>
+          </el-table-column>
+        </el-table>
+      </aside>
+      <div class="layout_main layout_el-table">
+        <el-tag type="info" effect="dark">医保数据</el-tag>
+        <el-divider direction="vertical"></el-divider>
+        <span>医保科室名称 &nbsp;&nbsp;</span>
+        <el-input style="width: 200px" v-model="yiBaoMingCheng"></el-input>
+        <el-table :data="cptYiBao" stripe highlight-current-row @row-click="yiBaoRow"
+                  style="margin-top: 5px">
+          <el-table-column label="医保编码">
+            <template #default="scope">
+              <el-radio :label="scope.row.code" :value="scope.row.code" v-model="yiBaoRadio.code"></el-radio>
+            </template>
+          </el-table-column>
+          <el-table-column label="医保名称" prop="name"></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
 </template>
 
-<script>
-import { computed, onMounted, ref } from 'vue'
-import { getYiBaoKeShi, getBenYuanKeShi, piPeiKeShi } from '@/api/dictionary/yi-bao-ke-shi-pi-pei'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import PageLayer from "@/layout/PageLayer";
-export default {
-  name: 'YiBaoKeShiPiPei',
-  components: {PageLayer},
-  setup() {
-    const tableHeight = window.innerHeight - 75
-
-    const benYuanMingCheng = ref('')
-    const yiBaoMingCheng = ref('')
-
-    const piPeiLeiXing = ref('1')
-
-    ///////////////////////////// 查看匹配还是未匹配 /////////////////////////////////////////////////////
-    const queryYuanNeiKeShiChange = () => {
-      getBenYuanKeShi(piPeiLeiXing.value).then((res) => {
-        benYuanKeShiTable.value = res
-      })
-    }
-
-    //////////////////////// 处理表格数据 ///////////////////////////////////////////
-    const benYuanKeShiTable = ref([])
-    const yiBaoKeShiTable = ref([])
-
-    onMounted(() => {
-      getYiBaoKeShi().then((res) => {
-        yiBaoKeShiTable.value = res
-      })
-
-      getBenYuanKeShi(piPeiLeiXing.value).then((res) => {
-        benYuanKeShiTable.value = res
-      })
-    })
+<script setup>
+import {computed, onMounted, ref} from 'vue'
+import {getYiBaoKeShi, getBenYuanKeShi, piPeiKeShi} from '@/api/dictionary/yi-bao-ke-shi-pi-pei'
+import {ElMessage, ElMessageBox} from 'element-plus'
 
-    const cptBenYuan = computed(() => {
-      if (tongbu.value) {
-        yiBaoMingCheng.value = benYuanMingCheng.value
-      }
-      return benYuanKeShiTable.value.filter((item) => {
-        return item.name.indexOf(benYuanMingCheng.value) > -1
-      })
-    })
+const tableHeight = window.innerHeight - 75
+const benYuanMingCheng = ref('')
+const yiBaoMingCheng = ref('')
 
-    const cptYiBao = computed(() => {
-      return yiBaoKeShiTable.value.filter((item) => {
-        return item.name.indexOf(yiBaoMingCheng.value) > -1
-      })
-    })
+const piPeiLeiXing = ref('1')
 
-    // 重置 //
-    const chongZhi = () => {
-      benYuanMingCheng.value = ''
-      yiBaoMingCheng.value = ''
-      benYuanRadio.value = ''
-      yiBaoRadio.value = ''
-    }
-    //////////////////////////////// 处理点击表格事件 ////////////////////////////////
-    const benYuanRadio = ref({})
-    const yiBaoRadio = ref({})
-
-    const benYuanRow = (row) => {
-      // 截取开头的两位字符串
-      yiBaoMingCheng.value = row.name.substring(0, 2)
-      benYuanRadio.value = row
-    }
-
-    const yiBaoRow = (row) => {
-      yiBaoRadio.value = row
-    }
-
-    /////////////////////////////////////////// 开始匹配 /////////////////////////////////////////////////
-    const keShiPiPeiClick = () => {
-      if (!benYuanRadio.value || !yiBaoRadio.value) {
-        ElMessage.error({
-          message: '还有一项未选择',
-          showClose: true,
-        })
-      } else {
-        ElMessageBox.confirm(
-          '<span>院内:【' +
-            benYuanRadio.value.code +
-            '】【' +
-            benYuanRadio.value.name +
-            '】</span></br><span>医保:【' +
-            yiBaoRadio.value.code +
-            '】【' +
-            yiBaoRadio.value.name +
-            '】</span>',
-          '提示',
-          {
-            dangerouslyUseHTMLString: true,
-            type: 'warning',
-          }
-        )
-          .then(() => {
-            piPeiKeShi(benYuanRadio.value.code, yiBaoRadio.value.code, 1).then((res) => {
-              for (let i = 0; i < benYuanKeShiTable.value.length; i++) {
-                if (benYuanKeShiTable.value[i].code === benYuanRadio.value.code) {
-                  benYuanKeShiTable.value.splice(i, 1)
-                }
+///////////////////////////// 查看匹配还是未匹配 /////////////////////////////////////////////////////
+const queryYuanNeiKeShiChange = () => {
+  getBenYuanKeShi(piPeiLeiXing.value).then((res) => {
+    benYuanKeShiTable.value = res
+  })
+}
+
+//////////////////////// 处理表格数据 ///////////////////////////////////////////
+const benYuanKeShiTable = ref([])
+const yiBaoKeShiTable = ref([])
+
+onMounted(() => {
+  getYiBaoKeShi().then((res) => {
+    yiBaoKeShiTable.value = res
+  })
+
+  getBenYuanKeShi(piPeiLeiXing.value).then((res) => {
+    benYuanKeShiTable.value = res
+  })
+})
+
+const cptBenYuan = computed(() => {
+  if (tongbu.value) {
+    yiBaoMingCheng.value = benYuanMingCheng.value
+  }
+  return benYuanKeShiTable.value.filter((item) => {
+    return item.name.indexOf(benYuanMingCheng.value) > -1
+  })
+})
+
+const cptYiBao = computed(() => {
+  return yiBaoKeShiTable.value.filter((item) => {
+    return item.name.indexOf(yiBaoMingCheng.value) > -1
+  })
+})
+
+// 重置 //
+const chongZhi = () => {
+  benYuanMingCheng.value = ''
+  yiBaoMingCheng.value = ''
+  benYuanRadio.value = ''
+  yiBaoRadio.value = ''
+}
+//////////////////////////////// 处理点击表格事件 ////////////////////////////////
+const benYuanRadio = ref({})
+const yiBaoRadio = ref({})
+
+const benYuanRow = (row) => {
+  // 截取开头的两位字符串
+  yiBaoMingCheng.value = row.name.substring(0, 2)
+  benYuanRadio.value = row
+}
+
+const yiBaoRow = (row) => {
+  yiBaoRadio.value = row
+}
+
+/////////////////////////////////////////// 开始匹配 /////////////////////////////////////////////////
+const keShiPiPeiClick = () => {
+  if (!benYuanRadio.value || !yiBaoRadio.value) {
+    ElMessage.error({
+      message: '还有一项未选择',
+      showClose: true,
+    })
+  } else {
+    ElMessageBox.confirm(
+        '<span>院内:【' +
+        benYuanRadio.value.code +
+        '】【' +
+        benYuanRadio.value.name +
+        '】</span></br><span>医保:【' +
+        yiBaoRadio.value.code +
+        '】【' +
+        yiBaoRadio.value.name +
+        '】</span>',
+        '提示',
+        {
+          dangerouslyUseHTMLString: true,
+          type: 'warning',
+        }
+    )
+        .then(() => {
+          piPeiKeShi(benYuanRadio.value.code, yiBaoRadio.value.code, 1).then((res) => {
+            for (let i = 0; i < benYuanKeShiTable.value.length; i++) {
+              if (benYuanKeShiTable.value[i].code === benYuanRadio.value.code) {
+                benYuanKeShiTable.value.splice(i, 1)
               }
-              chongZhi()
-            })
+            }
+            chongZhi()
           })
-          .catch((e) => {})
-      }
-    }
-
-    const shanChuPiPei = (index, row) => {
-      piPeiKeShi(row.code, row.siCaty, 2).then((res) => {
-        benYuanKeShiTable.value.splice(index, 1)
-      })
-    }
-
-    ////////////////判断是否同步 /////////////////////////
-    const tongbu = ref(false)
-
-    return {
-      tableHeight,
-      benYuanMingCheng,
-      yiBaoMingCheng,
-      chongZhi,
-      cptBenYuan,
-      cptYiBao,
-      benYuanRadio,
-      yiBaoRadio,
-      benYuanRow,
-      yiBaoRow,
-      keShiPiPeiClick,
-      piPeiLeiXing,
-      queryYuanNeiKeShiChange,
-      shanChuPiPei,
-      tongbu,
-    }
-  },
+        })
+        .catch((e) => {
+        })
+  }
 }
+
+const shanChuPiPei = (index, row) => {
+  piPeiKeShi(row.code, row.siCaty, 2).then((res) => {
+    benYuanKeShiTable.value.splice(index, 1)
+  })
+}
+
+////////////////判断是否同步 /////////////////////////
+const tongbu = ref(false)
+
 </script>
 
 <style>

+ 9 - 8
src/views/med-tec-mod/QueRenYiZhuShouFei.vue

@@ -35,8 +35,8 @@
         </el-button>
         <el-divider direction="vertical"></el-divider>
         <el-radio-group v-model="queryTerm.liShi" @change="getHuanZheXinXiClick">
-          <el-radio-button :label="0" :value="0">未确认</el-radio-button>
-          <el-radio-button :label="1" :value="1">历史</el-radio-button>
+          <el-radio-button :value="0">未确认</el-radio-button>
+          <el-radio-button :value="1">历史</el-radio-button>
         </el-radio-group>
         <el-divider direction="vertical"></el-divider>
         <el-button type="warning" @click="chaoZuoZhiNan = true">操作指南</el-button>
@@ -99,8 +99,10 @@
           :pager-count="5"
       ></el-pagination>
     </div>
-    <div class="layout_main layout_el-table"
-         v-show="queryTerm.liShi === 1">
+    <div
+        class="layout_main layout_el-table"
+         v-show="queryTerm.liShi === 1"
+    >
       <el-table
           :data="liShiShuJu.list.slice((liShiShuJu.currentPage - 1) * liShiShuJu.pageSize, liShiShuJu.currentPage * liShiShuJu.pageSize)"
           class="layout_flex_1-y"
@@ -144,7 +146,6 @@
     </div>
   </div>
 
-
   <el-drawer v-model="xiangXiYiZhuXinXiDrawer" direction="ltr" size="70%" title="患者医嘱的详细信息">
     <div class="layout_display_flex_y">
       <div>
@@ -192,9 +193,9 @@
             <template #default="scope">
               <el-radio-group v-model="scope.row.chargeStatus"
                               :fill="scope.row.chargeStatus === '1' ? '#67C23A' : scope.row.chargeStatus === '2' ? '#F56C6C' : '#909399'">
-                <el-radio-button label="1">确认</el-radio-button>
-                <el-radio-button label="2">取消</el-radio-button>
-                <el-radio-button label="3">不操作</el-radio-button>
+                <el-radio-button value="1">确认</el-radio-button>
+                <el-radio-button value="2">取消</el-radio-button>
+                <el-radio-button value="3">不操作</el-radio-button>
               </el-radio-group>
             </template>
           </el-table-column>

+ 1 - 0
src/views/settings/menu-settings/MenuSettings.vue

@@ -48,6 +48,7 @@ function addRouterClick(row: IntergrationMenu | null = null) {
     component: "",
     icon: "",
     id: null,
+    metaLink: false,
     mainCard: false,
     mainOverflowAuto: false,
     metaHideTabs: false,