Просмотр исходного кода

Merge branch 'diagBase0706' into test

# Conflicts:
#	src/components/knowledgeExtra/AddDiagBase.vue
wyq 4 лет назад
Родитель
Сommit
a34ea3ebc1
1 измененных файлов с 175 добавлено и 28 удалено
  1. 175 28
      src/components/knowledgeExtra/AddDiagBase.vue

+ 175 - 28
src/components/knowledgeExtra/AddDiagBase.vue

@@ -172,7 +172,7 @@
                           height="18"
                           width="18"
                           class="icon"
-                          @click="addRule(scope.row,scope.$index,index)"
+                          @click="addRule(scope.row,scope.$index,index,i)"
                         />
                         <img
                           src="../../images/icon-delete.png"
@@ -249,7 +249,7 @@
                     </el-form-item>
 
                     <div
-                      v-if="v.title == '医学标准术语'"
+                      v-if="v.title == '医学标准术语' && items.basType == 1"
                       class="box-2"
                       :class="items.basType===3 || items.basType===4? 'tmall' : 'taobao'"
                     >
@@ -268,10 +268,45 @@
                           multiple
                           filterable
                           remote
+                          collapse-tags
                           reserve-keyword
                           placeholder="请输入关键词"
                           :remote-method="(val)=>searchConcept(val,scope.$index,index,i)"
-                          @change="(val)=>conceptChange(val,scope.$index,index,i)"
+                          @change="(val)=>conceptChange(val,scope.$index,index,i,items.basType)"
+                          @visible-change="(val)=>changeValue1(val,scope.$index,index,i)"
+                        >
+                          <el-option
+                            v-for="item in items.conceptList"
+                            :key="item.conceptId"
+                            :label="item.conceptName"
+                            :value="item.conceptId"
+                          ></el-option>
+                        </el-select>
+                      </el-form-item>
+                    </div>
+                    <div
+                      v-if="v.title == '医学标准术语' && items.basType != 1"
+                      class="box-2"
+                      :class="items.basType===3 || items.basType===4? 'tmall' : 'taobao'"
+                    >
+                      <el-form-item
+                        v-if="items.basType==1 || items.basType==2 || items.basType==''"
+                        :prop="'klDiagnoseTypeVO.' +
+                        scope.$index +
+                        '.groupVO.' +
+                        index +
+                        '.klDiagnoseDetail.'+i+'.conceptId'"
+                        :rules="[
+                          { required: true, message: '请选择医学标准术语', trigger: 'change' }
+                        ]"
+                      >
+                        <el-select
+                          clearable
+                          remote
+                          filterable
+                          :remote-method="(val)=>searchConcept(val,scope.$index,index,i)"
+                          v-model.trim="items.conceptId"
+                          @change="(val)=>conceptChange(val,scope.$index,index,i,items.basType)"
                         >
                           <el-option
                             v-for="item in items.conceptList"
@@ -432,7 +467,7 @@
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.eqValue'"
-                          v-if="items.basType===4 || items.basType===3"
+                          v-if="items.basType===4 || items.basType===3 || items.basType===5 || items.basType===6"
                           maxlength="200"
                           label="正则表达式:"
                           class="discDesc"
@@ -498,7 +533,7 @@ export default {
         { title: '基础依据名称', width: 160, istar: true },
         { title: '基础依据类型', width: 130, istar: true },
         { title: '基础依据术语类型', width: 160, istar: true },
-        { title: '医学标准术语', width: 180, istar: true },
+        { title: '医学标准术语', width: 200, istar: true },
         { title: '依据具体内容', width: 850 }
       ],
       dicts: {},
@@ -531,6 +566,8 @@ export default {
                     onlyTxtType: false,
                     basTypeName: '',
                     basConceptId: [],
+                    conceptId:'',
+                    basConceptList: [],
                     basDescription: '',
                     basLename: '',
                     basLibName: '',
@@ -572,7 +609,9 @@ export default {
       list: [], //提交数据数组,
       i: 1,
       onshow: true,
-      arr :[]
+      arr: [],
+      basConceptId: [],
+      conceptId: ''
     };
   },
   created() {
@@ -603,30 +642,35 @@ export default {
         item => item.ruleType === this.form.klDiagnoseTypeVO[0].conditionType
       );
       this.baseTermTypeList = this.baseTypes[index2].subMenuList;
-      const klDiagnoseTypeVO = this.form.klDiagnoseTypeVO,
-        arr = [];
+      const klDiagnoseTypeVO = this.form.klDiagnoseTypeVO;
       let groupVOi, klDiagnoseDetailj;
       for (let i = 0; i < klDiagnoseTypeVO.length; i++) {
         groupVOi = klDiagnoseTypeVO[i].groupVO;
         for (let j = 0; j < groupVOi.length; j++) {
           klDiagnoseDetailj = groupVOi[j].klDiagnoseDetail;
           for (let k = 0; k < groupVOi[j].klDiagnoseDetail.length; k++) {
-            this.arr = []
+            this.arr = [];
             var index2 = this.baseTermTypeList.findIndex(
               item => item.type === klDiagnoseDetailj[k].basType
             );
             klDiagnoseDetailj[k].basLibTypeList = this.baseTermTypeList[
               index2
             ].subMenuList;
-
             klDiagnoseDetailj[k].conceptList = this.formatData2(
               klDiagnoseDetailj[k].libNameList
             );
-            klDiagnoseDetailj[k].libNameList.forEach(item => {
-              this.arr.push(item.basConceptId);
-            });
-            this.$set(klDiagnoseDetailj[k],'basConceptId',this.arr )
-            // klDiagnoseDetailj[k].basConceptId = arr;
+            if (klDiagnoseDetailj[k].basType == 1) {
+              klDiagnoseDetailj[k].libNameList.forEach(item => {
+                this.arr.push(item.basConceptId);
+              });
+              this.$set(klDiagnoseDetailj[k], 'basConceptId', this.arr);
+            } else if (klDiagnoseDetailj[k].basType == 2) {
+              klDiagnoseDetailj[k].libNameList.forEach(item => {
+                this.arr.push(item.basConceptId);
+              });
+              this.$set(klDiagnoseDetailj[k], 'conceptId', this.arr[0]);
+            }
+
             if (
               klDiagnoseDetailj[k].maxOperator ||
               klDiagnoseDetailj[k].minOperator
@@ -833,6 +877,8 @@ export default {
                 onlyTxtType: false,
                 basTypeName: '',
                 basConceptId: [],
+                conceptId:'',
+                basConceptList: [],
                 basDescription: '',
                 basLename: '',
                 basLibName: '',
@@ -909,6 +955,8 @@ export default {
             onlyTxtType: false,
             basTypeName: '',
             basConceptId: [],
+            conceptId:'',
+            basConceptList: [],
             basDescription: '',
             basLename: '',
             basLibName: '',
@@ -938,6 +986,8 @@ export default {
         basNameType: false,
         basTypeName: '',
         basConceptId: [],
+        conceptId:'',
+        basConceptList: [],
         basDescription: '',
         basLename: '',
         basLibName: '',
@@ -1078,16 +1128,54 @@ export default {
       this.clearConcept(val, inx, index, i);
       this.clearNumText2(val, inx, index, i);
     },
-    //医学标准术语
-    conceptChange(val, inx, index, i) {
-      // this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
-      //   i
-      // ].basConceptId = val;
-      this.$set(
-        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i],
-        'basConceptId',
-        val
+    changeValue1(val, inx, index, i) {
+      const formData = JSON.parse(
+        JSON.stringify(
+          this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i]
+        )
       );
+      this.basConceptId = [];
+      if (val) {
+        // console.log(formData.basConceptId)
+        // formData.basConceptId.forEach(item => {
+        //   formData.conceptList.forEach(it => {
+        //     if (item == it.conceptId) {
+        //       this.basConceptId.push(it);
+        //     }
+        //   });
+        // });
+        // this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+        //   i
+        // ].conceptList = this.basConceptId
+      } else {
+        formData.basConceptId.forEach(item => {
+          formData.basConceptList.forEach(it => {
+            if (item == it.conceptId) {
+              // console.log(it)
+              this.basConceptId.push(it);
+            }
+          });
+        });
+        // console.log(formData.basConceptList)
+        // formData.basConceptList.concat(this.basConceptId)
+        // console.log(formData.basConceptList)
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+          i
+        ].conceptList = this.basConceptId;
+      }
+    },
+    //医学标准术语
+    conceptChange(val, inx, index, i, basType) {
+      if (basType == 1) {
+        this.$set(
+          this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i],
+          'basConceptId',
+          val
+        );
+      } else if (basType == 2) {
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i].conceptId = val;
+      }
+
       // if (val) {
       //   this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
       //     i
@@ -1118,13 +1206,33 @@ export default {
         .searchConcept(param)
         .then(res => {
           if (res.data.code == '0') {
-            const data = res.data.data;
+            let data = res.data.data;
 
             this.$nextTick(() => {
               // dom元素更新后执行,因此这里能正确打印更改之后的值
-              formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
-                i
-              ].conceptList = data; // 改变了的值
+              if (
+                formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+                  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);
+                  return !arr.includes(it.conceptId);
+                });
+                formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+                  i
+                ].conceptList = data2; // 改变了的值
+                formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+                  i
+                ].basConceptList = data;
+              }else{
+                formData.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+                  i
+                ].conceptList = data;
+              }
             });
             this.form = formData;
           }
@@ -1386,7 +1494,9 @@ export default {
       });
     },
     confirm() {
+      
       const formData = JSON.parse(JSON.stringify(this.form));
+      
       const _this = this;
       for (let i = 0; i < formData.klDiagnoseTypeVO.length; i++) {
         for (let j = 0; j < formData.klDiagnoseTypeVO[i].groupVO.length; j++) {
@@ -1400,6 +1510,15 @@ export default {
               .basLibTypeList;
             delete formData.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
               .conceptList;
+            formData.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].basConceptId =
+              formData.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .basType == 2
+                ? JSON.stringify(formData.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                    .conceptId).split('')
+                : formData.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                    .basConceptId;
           }
         }
       }
@@ -1449,6 +1568,34 @@ export default {
   .el-input {
     height: 100% !important;
   }
+  .el-select__tags {
+    max-width: 100% !important;
+  }
+  .el-tag {
+    .el-select__tags-text {
+      width: 75px !important;
+      display: block;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+    }
+    .el-tag__close {
+      top: -22px;
+      right: -38px;
+    }
+  }
+  .el-tag:last-child {
+    min-width: 40px !important;
+    max-width: 75px !important;
+    .el-select__tags-text {
+      display: inline;
+    }
+    .el-tag__close {
+      top: 0;
+      left: 0;
+      right: 0;
+    }
+  }
 }
 .contents {
   height: 100%;