Browse Source

添加手术与收费项目的匹配

lighter 2 years ago
parent
commit
666a1fc476
1 changed files with 85 additions and 48 deletions
  1. 85 48
      src/views/dictionary/HisWjwMatch.vue

+ 85 - 48
src/views/dictionary/HisWjwMatch.vue

@@ -7,15 +7,17 @@
         <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-group>
       <el-button style="margin-left: 50px" type="primary" icon="Refresh" @click="fetchDataByLabel">刷新数据</el-button>
     </template>
     <template #main>
-      <el-row>
-        <el-col :span="9">
-          <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="hisInput" clearable></el-input>
-          <div style="height: 8px"></div>
-          <el-table :data="filterHisList" height="500" highlight-current-row stripe @row-click="handleClickHisRow">
+      <div style="display: flex; height: 100%; width: 100%">
+        <div style="height: 100%; width: 45%">
+          <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="hisInput"
+                    clearable></el-input>
+          <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>
@@ -25,54 +27,69 @@
               </template>
             </el-table-column>
           </el-table>
-        </el-col>
-        <el-col :span="3">
-          <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 class="code">{{ hisWjwMatchEntity.wjwCode }}</div>
-              </div>
-              <el-button v-if="currentHisRow.wjwCode" icon="Close" type="danger" @click="revokeMatch">撤销匹配</el-button>
-              <el-button v-else icon="Check" type="success" @click="executeMatch" :disabled="manageMatchState">匹配</el-button>
+          <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 class="code">{{ hisWjwMatchEntity.wjwCode }}</div>
+            </div>
+            <el-button v-if="currentHisRow.wjwCode" icon="Close" type="danger" @click="revokeMatch">撤销匹配</el-button>
+            <el-button v-else icon="Check" type="success" @click="executeMatch" :disabled="manageMatchState">匹配
+            </el-button>
           </div>
-        </el-col>
-        <el-col :span="8">
-          <el-input prefix-icon="Search" placeholder="输入拼音、编码或名称以进行检索" v-model="wjwInput" clearable></el-input>
-          <div style="margin-top: 8px" class="m-wjwlist-box">
-            <el-table
-                ref="wjwTableRef"
-                :data="filterWjwList"
-                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>
-          </div>
-        </el-col>
-      </el-row>
+        </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">
-import { selectMatchableDataByLabel, executeMatchAction, fetchSimilarities } from '@/api/dictionary/his-wjw-match'
-import { ElMessage } from 'element-plus'
+import {selectMatchableDataByLabel, executeMatchAction, fetchSimilarities} from '@/api/dictionary/his-wjw-match'
+import {ElMessage} from 'element-plus'
 import PageLayer from "@/layout/PageLayer";
 
 let wjwTableRef = $ref(null)
@@ -95,6 +112,9 @@ const hisMatchTextNote = computed(() => {
   return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前HIS编码' : '当前国临编码'
 })
 const wjwMatchTextNote = computed(() => {
+  if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    return '当前收费编码'
+  }
   return hisLabel.indexOf(hisWjwMatchEntity.label) !== -1 ? '当前卫健委编码' : '当前医保编码'
 })
 
@@ -108,6 +128,15 @@ const filterHisList = computed(() => {
   })
 })
 
+const hisCurrentPage = ref(1)
+const wjwCurrentPage = ref(1)
+const handleHisPageChange = (val) => {
+  hisCurrentPage.value = val
+}
+const handleWjwPageChange = (val) => {
+  wjwCurrentPage.value = val
+}
+
 const filterWjwList = computed(() => {
   return wjwList.filter((item) => {
     return item.code.indexOf(wjwInput) > -1 || item.name.indexOf(wjwInput) > -1 || item.pyCode.indexOf(wjwInput.toUpperCase()) > -1
@@ -143,7 +172,7 @@ const handleClickHisRow = (row) => {
     } else {
       if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
         wjwInput = row.name.length > 3 ? row.name.substring(0, 2) : row.name.substring(0, 1)
-      } else {
+      } else if (hisWjwMatchEntity.label === 'diagnose' || hisWjwMatchEntity.label === 'surgery') {
         if (row.code !== currentSimilaratyKey) {
           currentSimilaratyKey = row.code
           const key = '%' + row.code.split('.')[0].replace('*', '') + '%'
@@ -172,10 +201,13 @@ const manageMatchState = computed(() => {
 const executeMatch = () => {
   if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
     hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
-  } else {
+  } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    hisWjwMatchEntity.targetCodeColumn = 'charge_code'
+  }else {
     hisWjwMatchEntity.targetCodeColumn = 'yb_code'
     hisWjwMatchEntity.targetNameColumn = 'yb_name'
   }
+  console.log(hisWjwMatchEntity)
   executeMatchAction(hisWjwMatchEntity).then((res) => {
     currentHisRow.wjwCode = hisWjwMatchEntity.wjwCode
     ElMessage({
@@ -192,6 +224,8 @@ const revokeMatch = () => {
   hisWjwMatchEntity.wjwName = null
   if (hisWjwMatchEntity.label === 'department' || hisWjwMatchEntity.label === 'anaesthesia') {
     hisWjwMatchEntity.targetCodeColumn = 'wjw_code'
+  } else if (hisWjwMatchEntity.label === 'surgery_chargeCode') {
+    hisWjwMatchEntity.targetCodeColumn = 'charge_code'
   } else {
     hisWjwMatchEntity.targetCodeColumn = 'yb_code'
     hisWjwMatchEntity.targetNameColumn = 'yb_name'
@@ -219,16 +253,19 @@ onMounted(() => {
   display: flex;
   align-items: center;
   justify-content: center;
+
   .his {
     color: green;
     padding-bottom: 6px;
   }
+
   .wjw {
     color: blue;
     padding-top: 7px;
     border-top: 1px solid gray;
     margin-bottom: 12px;
   }
+
   .code {
     font-weight: bold;
     font-size: 14px;