Browse Source

bug-707:协定方编辑时,西医诊断应该为中文,非编码

张田田 5 days ago
parent
commit
d713954244
2 changed files with 34 additions and 8 deletions
  1. 17 4
      src/views/business/LocalExpertTech.vue
  2. 17 4
      src/views/business/SuitableTech.vue

+ 17 - 4
src/views/business/LocalExpertTech.vue

@@ -453,7 +453,18 @@ export default {
         })
         if (res.code == 0) {
           const list = res.data?.wests || []
-          this.westernDiseaseOptions = list
+          // 保留已选中但不在搜索结果中的选项
+          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]
           this.westernDiseaseHasMore = list.length >= 200
         }
       } catch (e) {
@@ -605,12 +616,14 @@ export default {
         this.therapyOptions = detail.theCode != null
           ? [{ therapyCode: detail.theCode, therapy: detail.theName, therapyName: detail.theName }]
           : []
-        if (detail.westernCode && detail.westernDiag) {
+        if (detail.westernCode) {
           const codes = String(detail.westernCode).split(',')
-          const names = String(detail.westernDiag).split(',')
+          const names = detail.westernDiag
+            ? String(detail.westernDiag).split(',')
+            : []
           this.westernDiseaseOptions = codes.map((code, idx) => ({
             westcode: code.trim(),
-            westname: (names[idx] || '').trim(),
+            westname: (names[idx] || '').trim() || code.trim(),
           }))
         } else {
           this.westernDiseaseOptions = []

+ 17 - 4
src/views/business/SuitableTech.vue

@@ -807,7 +807,18 @@ export default {
         });
         if (res.code == 0) {
           const list = res.data?.wests || [];
-          this.westernDiseaseOptions = list;
+          // 保留已选中但不在搜索结果中的选项
+          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];
           this.westernDiseaseHasMore = list.length >= 200;
           list.forEach((item) => {
             if (item.westcode && item.westname) {
@@ -1019,12 +1030,14 @@ export default {
                 },
               ]
             : [];
-        if (detail.westernCode && detail.westernDiag) {
+        if (detail.westernCode) {
           const codes = String(detail.westernCode).split(",");
-          const names = String(detail.westernDiag).split(",");
+          const names = detail.westernDiag
+            ? String(detail.westernDiag).split(",")
+            : [];
           this.westernDiseaseOptions = codes.map((code, idx) => ({
             westcode: code.trim(),
-            westname: (names[idx] || "").trim(),
+            westname: (names[idx] || "").trim() || code.trim(),
           }));
         } else {
           this.westernDiseaseOptions = [];