Browse Source

解决多选出现重复数据问题

wyq 4 years ago
parent
commit
09a286de0a
1 changed files with 23 additions and 13 deletions
  1. 23 13
      src/components/knowledgeExtra/AddDiagBase.vue

+ 23 - 13
src/components/knowledgeExtra/AddDiagBase.vue

@@ -1142,17 +1142,19 @@ export default {
         )
       );
       let basConceptId = [];
-      let data2 = formData.basConceptList.filter(it => {
-        let arr = formData.basConceptId.map(v => v.conceptId);
-        return !arr.includes(it.conceptId);
-      });
+      // let data2 = formData.basConceptList.filter(it => {
+      //   let arr = formData.basConceptId.map(v => v);
+      //   return !arr.includes(it.conceptId);
+      // });
+      // console.log(data2)
       formData.basConceptId.forEach(item => {
-        data2.forEach(it => {
+        formData.basConceptList.forEach(it => {
           if (item == it.conceptId) {
             basConceptId.push(it);
           }
         });
       });
+
       this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
         i
       ].conceptList = basConceptId;
@@ -1173,6 +1175,9 @@ export default {
     },
     searchConcept(val, inx, index, i) {
       const formData = JSON.parse(JSON.stringify(this.form));
+      const basConceptId =
+        formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i]
+          .basConceptId;
       const param = {
         excludedConceptIds: [
           formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i]
@@ -1188,7 +1193,6 @@ export default {
         .then(res => {
           if (res.data.code == '0') {
             let data = res.data.data;
-
             this.$nextTick(() => {
               // dom元素更新后执行,因此这里能正确打印更改之后的值
               if (
@@ -1196,21 +1200,27 @@ export default {
                   i
                 ].basType == 1
               ) {
-                let conceptList =
-                  formData.klDiagnoseTypeVO[inx].groupVO[index]
-                    .klDiagnoseDetail[i].conceptList;
                 let data2 = data.filter(it => {
-                  let arr = conceptList.map(v => v.conceptId);
+                  let arr = basConceptId.map(v => v);
                   return !arr.includes(it.conceptId);
                 });
+                let obj = {};
+                let arr = formData.klDiagnoseTypeVO[inx].groupVO[
+                  index
+                ].klDiagnoseDetail[i].basConceptList.concat(data2)
+                arr = arr.reduce(function(item, next) {
+                  obj[next.conceptId]
+                    ? ''
+                    : (obj[next.conceptId] = true && item.push(next));
+                  return item;
+                }, []);
+
                 formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
                   i
                 ].conceptList = data2; // 改变了的值
                 formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
                   i
-                ].basConceptList =  formData.klDiagnoseTypeVO[inx].groupVO[
-                  index
-                ].klDiagnoseDetail[i].basConceptList.concat(data2);
+                ].basConceptList = arr;
               } else {
                 formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
                   i