|  | @@ -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;
 |