Przeglądaj źródła

bug-766:协定方新建,西医诊断的搜索问题以及适宜技术医派协定方的医派掉接口查询

张田田 1 tydzień temu
rodzic
commit
dad51308e5

+ 8 - 0
src/api/technology.js

@@ -43,6 +43,14 @@ export function getSuitableTechGroupedList(data) {
   });
   });
 }
 }
 
 
+// 适宜技术协定方医派信息查询
+export function getPreSectInfo() {
+  return request({
+    url: "/basis/suitableTechnologyAccordMgr/getPreSectInfo",
+    method: "get",
+  });
+}
+
 // 适宜技术协定方保存
 // 适宜技术协定方保存
 export function saveSuitableTech(data) {
 export function saveSuitableTech(data) {
   return request({
   return request({

+ 1 - 1
src/utils/minix/prescribing.js

@@ -144,7 +144,7 @@ export default {
                 this.$refs.TCM.setParams({
                 this.$refs.TCM.setParams({
                     namemedicine: agreeInfo.diseasename,
                     namemedicine: agreeInfo.diseasename,
                     disid: agreeInfo.diseaseid,
                     disid: agreeInfo.diseaseid,
-                    disCode: agreeInfo.diseaseid, // 协定方 diseaseid 字段实际存的是病名 code,补 disCode 通道;报红看 diseaseCode 不看 disid,否则病名必红
+                    disCode: agreeInfo.diseaseid, // 协定方 diseaseid 字段实际存的是病名 code,添加 disCode 
                     symptomid: agreeInfo.symptomid,
                     symptomid: agreeInfo.symptomid,
                     syndrometypes: agreeInfo.symptomname,
                     syndrometypes: agreeInfo.symptomname,
                     treatment: agreeInfo.treatment
                     treatment: agreeInfo.treatment

+ 2 - 12
src/views/business/SuitableTech.vue

@@ -890,18 +890,8 @@ export default {
         });
         });
         if (res.code == 0) {
         if (res.code == 0) {
           const list = res.data?.wests || [];
           const list = res.data?.wests || [];
-          // 保留已选中但不在搜索结果中的选项
-          const selectedCodes = Array.isArray(this.editData.westernDisease)
-            ? this.editData.westernDisease
-            : [];
-          const resultCodes = new Set(list.map((i) => i.westcode));
-          const preserved = selectedCodes
-            .filter((code) => !resultCodes.has(code))
-            .map((code) => ({
-              westcode: code,
-              westname: this.westernDiseaseNameMap[code] || code,
-            }));
-          this.westernDiseaseOptions = [...preserved, ...list];
+          // 下拉只展示本次搜索结果:无匹配时显示"暂无数据",已选诊断以 tag 形式独立展示
+          this.westernDiseaseOptions = list;
           this.westernDiseaseHasMore = list.length >= 200;
           this.westernDiseaseHasMore = list.length >= 200;
           list.forEach((item) => {
           list.forEach((item) => {
             if (item.westcode && item.westname) {
             if (item.westcode && item.westname) {

+ 46 - 13
src/views/diagnosis/components/prescription-unify-suit.vue

@@ -8,15 +8,15 @@
           <el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
           <el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
         </el-form-item>
         </el-form-item>
         <el-form-item label="医派">
         <el-form-item label="医派">
-          <el-select v-model="form.sectCategory" @change="getHospitalDepartment(form.sectCategory)"
+          <el-select v-model="form.sectCategory" @change="onSectCategoryChange"
                      placeholder="请选择" size="small" clearable>
                      placeholder="请选择" size="small" clearable>
-            <el-option v-for="item in hospitalCategory" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-option v-for="item in sectCategoryList" :key="item" :label="item" :value="item"></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item label="科室">
         <el-form-item label="科室">
           <el-select v-model="form.sectDept"
           <el-select v-model="form.sectDept"
                      placeholder="请选择" size="small" clearable>
                      placeholder="请选择" size="small" clearable>
-            <el-option v-for="item in hospitalDepartment" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-option v-for="item in sectDeptList" :key="item.value" :label="item.label" :value="item.value"></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
@@ -55,14 +55,15 @@
 </template>
 </template>
 <script>
 <script>
 import { getEffectQuery } from "@/api/knowledge.js";
 import { getEffectQuery } from "@/api/knowledge.js";
-import { getSuitableTechList } from "@/api/technology.js";
-import { getHospitalCategory, getHospitalDepartment } from "@/api/city";
+import { getSuitableTechList, getPreSectInfo } from "@/api/technology.js";
 
 
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      hospitalCategory: [],
-      hospitalDepartment: [],
+      // 医派信息 Map:key 为医派('' 表示全部派别科室),value 为派别科室列表
+      sectInfoMap: {},
+      sectCategoryList: [], // 医派下拉项(Map 的非空 key)
+      sectDeptList: [],     // 科室下拉项(当前医派对应的派别科室,归一化为 {label, value})
 
 
       form: {
       form: {
         name: "", // 方名
         name: "", // 方名
@@ -79,12 +80,44 @@ export default {
     this.clearDis();
     this.clearDis();
   },
   },
   methods: {
   methods: {
-    async getHospitalCategory() {
-      this.hospitalCategory = await getHospitalCategory();
+    // 医派下拉变化:刷新科室列表
+    onSectCategoryChange() {
+      this.updateSectDeptList();
     },
     },
-    async getHospitalDepartment() {
-      this.hospitalDepartment = await getHospitalDepartment({hospital: this.form.sectCategory || ''});
-      if (!this.hospitalDepartment.find(item => item.id === this.form.sectDept)) this.form.sectDept = '';
+    // 派别科室列表项归一化(兼容字符串 / 对象两种后端返回)
+    normalizeDept(dept) {
+      if (dept == null) return null;
+      if (typeof dept === 'string') return { label: dept, value: dept };
+      const name = dept.name != null ? dept.name
+        : dept.deptName != null ? dept.deptName
+        : dept.sectDept != null ? dept.sectDept
+        : '';
+      return { label: name, value: name };
+    },
+    // 根据当前医派刷新科室下拉(未选医派 → '' 即全部派别科室)
+    updateSectDeptList() {
+      const key = this.form.sectCategory || '';
+      const raw = this.sectInfoMap[key] || this.sectInfoMap[''] || [];
+      this.sectDeptList = raw.map(d => this.normalizeDept(d)).filter(Boolean);
+      // 当前选中科室已不在新列表中则清空
+      if (!this.sectDeptList.find(d => d.value === this.form.sectDept)) {
+        this.form.sectDept = '';
+      }
+    },
+    // 获取医派信息:Data 为 Map,key 为医派,value 为派别科室列表,'' 为全部派别科室
+    async fetchSectInfo() {
+      try {
+        const res = await getPreSectInfo();
+        this.sectInfoMap = (res && res.Data) ? res.Data : {};
+        // 医派下拉 = Map 的非空 key('' 表示全部,由「不选」体现)
+        this.sectCategoryList = Object.keys(this.sectInfoMap).filter(k => k !== '');
+        this.updateSectDeptList();
+      } catch (e) {
+        console.error('获取医派信息失败', e);
+        this.sectInfoMap = {};
+        this.sectCategoryList = [];
+        this.sectDeptList = [];
+      }
     },
     },
     resetForm() {
     resetForm() {
       this.form = {
       this.form = {
@@ -96,7 +129,7 @@ export default {
     clearDis() {
     clearDis() {
       this.currentPage = 1;
       this.currentPage = 1;
       this.resetForm();
       this.resetForm();
-      this.getHospitalCategory().then(() => this.getHospitalDepartment());
+      this.fetchSectInfo();
       this.getAgreeRecipe();
       this.getAgreeRecipe();
     },
     },
     handleCurrentChange(e) {
     handleCurrentChange(e) {