Browse Source

诊断维护多选

wyq 4 năm trước cách đây
mục cha
commit
b9e9664c7a
1 tập tin đã thay đổi với 153 bổ sung90 xóa
  1. 153 90
      src/components/knowledgeExtra/AddDiagBase.vue

+ 153 - 90
src/components/knowledgeExtra/AddDiagBase.vue

@@ -172,7 +172,7 @@
                           height="18"
                           width="18"
                           class="icon"
-                          @click="addRule(scope.row,scope.$index,index,i)"
+                          @click="addRule(scope.row,scope.$index,index)"
                         />
                         <img
                           src="../../images/icon-delete.png"
@@ -251,7 +251,7 @@
                     <div
                       v-if="v.title == '医学标准术语'"
                       class="box-2"
-                      :class="items.basType===3 || items.basType===4|| items.basType===5 || items.basType===6? 'tmall' : 'taobao'"
+                      :class="items.basType===3 || items.basType===4? 'tmall' : 'taobao'"
                     >
                       <el-form-item
                         v-if="items.basType==1 || items.basType==2 || items.basType==''"
@@ -263,11 +263,14 @@
                         :rules="rules.subConceptId"
                       >
                         <el-select
-                          clearable
-                          remote
+                          class="searchselect"
+                          v-model.trim="items.basConceptId"
+                          multiple
                           filterable
+                          remote
+                          reserve-keyword
+                          placeholder="请输入关键词"
                           :remote-method="(val)=>searchConcept(val,scope.$index,index,i)"
-                          v-model.trim="items.basConceptId"
                           @change="(val)=>conceptChange(val,scope.$index,index,i)"
                         >
                           <el-option
@@ -429,7 +432,7 @@
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.eqValue'"
-                          v-if="items.basType===4 || items.basType===3||items.basType===6 || items.basType===5"
+                          v-if="items.basType===4 || items.basType===3"
                           maxlength="200"
                           label="正则表达式:"
                           class="discDesc"
@@ -495,7 +498,7 @@ export default {
         { title: '基础依据名称', width: 160, istar: true },
         { title: '基础依据类型', width: 130, istar: true },
         { title: '基础依据术语类型', width: 160, istar: true },
-        { title: '医学标准术语', width: 130, istar: true },
+        { title: '医学标准术语', width: 180, istar: true },
         { title: '依据具体内容', width: 850 }
       ],
       dicts: {},
@@ -527,7 +530,7 @@ export default {
                     onlyNumType: false,
                     onlyTxtType: false,
                     basTypeName: '',
-                    basConceptId: '',
+                    basConceptId: [],
                     basDescription: '',
                     basLename: '',
                     basLibName: '',
@@ -599,45 +602,96 @@ export default {
         item => item.ruleType === this.form.klDiagnoseTypeVO[0].conditionType
       );
       this.baseTermTypeList = this.baseTypes[index2].subMenuList;
-      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++) {
+      let arr = [];
+      for (let i = 0; i < this.form.klDiagnoseTypeVO.length; i++) {
+        for (let j = 0; j < this.form.klDiagnoseTypeVO[i].groupVO.length; j++) {
+          for (
+            let k = 0;
+            k <
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail.length;
+            k++
+          ) {
             var index2 = this.baseTermTypeList.findIndex(
-              item =>item.type ===klDiagnoseDetailj[k].basType
+              item =>
+                item.type ===
+                this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                  .basType
             );
-              klDiagnoseDetailj[k].basLibTypeList = this.baseTermTypeList[index2].subMenuList;
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].basLibTypeList = this.baseTermTypeList[index2].subMenuList;
 
-              klDiagnoseDetailj[k].conceptList = [
-              {
-                conceptName: klDiagnoseDetailj[k].basLibName,
-                conceptId: klDiagnoseDetailj[k].basConceptId
-              }
-            ];
-            if (klDiagnoseDetailj[k].maxOperator || klDiagnoseDetailj[k].minOperator) {
-                klDiagnoseDetailj[k].dataType = '1';
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].conceptList = this.formatData2(
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .libNameList
+            );
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].libNameList.forEach(item => {
+              arr.push(item.basConceptId);
+            });
+            this.$set(
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ],
+              'basConceptId',
+              arr
+            );
+            if (
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .maxOperator ||
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .minOperator
+            ) {
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].dataType = '1';
             } else if (
-                klDiagnoseDetailj[k].eqValue) {
-                klDiagnoseDetailj[k].dataType = '2';
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .eqValue
+            ) {
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].dataType = '2';
             }
-            if (klDiagnoseDetailj[k].basType == 3 || klDiagnoseDetailj[k].basType == 4||klDiagnoseDetailj[k].basType == 5 || klDiagnoseDetailj[k].basType == 6) {
-                klDiagnoseDetailj[k].basTypeName = klDiagnoseDetailj[k].basLibTypeList[0].name;
-                klDiagnoseDetailj[k].basNameType = true;
+            if (
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .basType == 3 ||
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+                .basType == 4
+            ) {
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].basTypeName = this.form.klDiagnoseTypeVO[i].groupVO[
+                j
+              ].klDiagnoseDetail[k].basLibTypeList[0].name;
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].basNameType = true;
             } else {
-                klDiagnoseDetailj[k].basTypeName = '';
-                klDiagnoseDetailj[k].basNameType = false;
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].basTypeName = '';
+              this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+                k
+              ].basNameType = false;
             }
             const onlyNum = this.dicts['onlyNum'] || '&';
             const onlyTxt = this.dicts['onlyTxt'] || '&';
             const codes = onlyNum + ',';
             const code = onlyTxt + ',';
-            let type = klDiagnoseDetailj[k].basLibType;
-            let a = klDiagnoseDetailj[k].basLibType;
-              klDiagnoseDetailj[k].onlyNumType = type && codes.indexOf(a + ',') > -1;
-              klDiagnoseDetailj[k].onlyTxtType = type && code.indexOf(a + ',') > -1;
+            let type = this.form.klDiagnoseTypeVO[i].groupVO[j]
+              .klDiagnoseDetail[k].basLibType;
+            let a = this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[k]
+              .basLibType;
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].onlyNumType = type && codes.indexOf(a + ',') > -1;
+            this.form.klDiagnoseTypeVO[i].groupVO[j].klDiagnoseDetail[
+              k
+            ].onlyTxtType = type && code.indexOf(a + ',') > -1;
           }
         }
       }
@@ -765,8 +819,6 @@ export default {
           newArr = arr;
         }
       });
-      // console.log(newArr)
-      // this.$set(this, 'form.klDiagnoseTypeVO', newArr);
       this.getSpanArr(newArr);
     },
     getSpanArr(data) {
@@ -798,7 +850,7 @@ export default {
       }
     },
     getInitData() {
-      this.i++
+      this.i++;
       return {
         conditionType: '',
         depart_id: this.i,
@@ -814,7 +866,7 @@ export default {
                 onlyNumType: false,
                 onlyTxtType: false,
                 basTypeName: '',
-                basConceptId: '',
+                basConceptId: [],
                 basDescription: '',
                 basLename: '',
                 basLibName: '',
@@ -851,7 +903,7 @@ export default {
     },
     //复制依据
     copyDiag(id) {
-      this.i++
+      this.i++;
       const formData = JSON.parse(JSON.stringify(this.form));
       let i = -1;
       let arr = [];
@@ -865,7 +917,6 @@ export default {
         item.depart_id = this.i;
         this.form.klDiagnoseTypeVO.splice(i + index + 1, 0, item);
       });
-      // console.log(this.form.klDiagnoseTypeVO);
     },
     //删除依据
     delDiag(id, inx) {
@@ -891,7 +942,7 @@ export default {
             onlyNumType: false,
             onlyTxtType: false,
             basTypeName: '',
-            basConceptId: '',
+            basConceptId: [],
             basDescription: '',
             basLename: '',
             basLibName: '',
@@ -915,12 +966,12 @@ export default {
       this.form.klDiagnoseTypeVO.splice(i, 1);
     },
     //新增基础依据
-    addRule(row, index, inx,i) {
+    addRule(row, index, i) {
       let temp = {
         dataType: '',
         basNameType: false,
         basTypeName: '',
-        basConceptId: '',
+        basConceptId: [],
         basDescription: '',
         basLename: '',
         basLibName: '',
@@ -935,21 +986,21 @@ export default {
         minOperator: '',
         minUnit: '',
         minVal: '',
+        dataType: ''
       };
-      this.form.klDiagnoseTypeVO[index].groupVO[inx].klDiagnoseDetail.splice(i + 1, 0, temp);
-      this.form.klDiagnoseTypeVO = JSON.parse(JSON.stringify(this.form.klDiagnoseTypeVO))   //8525更新对象触发滚动条更新
+      this.form.klDiagnoseTypeVO[index].groupVO[i].klDiagnoseDetail.push(temp);
     },
     delRule(row, inx, index, i) {
-        const klDiagnoseDetail =  this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail;
-      if (klDiagnoseDetail.length === 1) {
+      if (
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail
+          .length == 1
+      ) {
         return;
       } else {
-        klDiagnoseDetail.splice(i,1);
-        const numArr = this.numArr[inx].num[0];
-        const fitNo=this.form.klDiagnoseTypeVO[inx].groupVO[0].fitNo;
-        if(numArr[numArr.length-1].name<fitNo){
-            this.form.klDiagnoseTypeVO[inx].groupVO[0].fitNo="";
-        }
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail.splice(
+          i,
+          1
+        );
       }
     },
     //诊断依据类型修改
@@ -988,7 +1039,7 @@ export default {
       this.form.klDiagnoseTypeVO[inx].groupVO[
         index
       ].baseTermTypeList = this.baseTermTypeList;
-      if (val == 3 || val == 4||val == 5 || val == 6) {
+      if (val == 3 || val == 4) {
         this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
           i
         ].basTypeName = this.form.klDiagnoseTypeVO[inx].groupVO[
@@ -1027,7 +1078,7 @@ export default {
 
       this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
         i
-      ].basConceptId = '';
+      ].basConceptId = [];
       if ((this.numTypes + ',').indexOf(val + ',') > -1) {
         this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
           i
@@ -1056,22 +1107,31 @@ export default {
     },
     //医学标准术语
     conceptChange(val, inx, index, i) {
-      this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
-        i
-      ].basConceptId = val;
-      if (val) {
-        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
-          i
-        ].basLibName = this.form.klDiagnoseTypeVO[inx].groupVO[
-          index
-        ].klDiagnoseDetail[i].conceptList.find(
-          it => it.conceptId === val
-        ).conceptName;
-      } else {
-        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
-          i
-        ].basLibName = '';
-      }
+      // this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+      //   i
+      // ].basConceptId = val;
+      this.$set(
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i],
+        'basConceptId',
+        val
+      );
+      console.log(
+        this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[i]
+          .basConceptId
+      );
+      // if (val) {
+      //   this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+      //     i
+      //   ].basLibName = this.form.klDiagnoseTypeVO[inx].groupVO[
+      //     index
+      //   ].klDiagnoseDetail[i].conceptList.find(
+      //     it => it.conceptId === val
+      //   ).conceptName;
+      // } else {
+      //   this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+      //     i
+      //   ].basLibName = '';
+      // }
     },
     searchConcept(val, inx, index, i) {
       const formData = JSON.parse(JSON.stringify(this.form));
@@ -1116,7 +1176,7 @@ export default {
     clearConcept(val, inx, index, i) {
       this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
         i
-      ].basConceptId = '';
+      ].basConceptId = [];
       this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
         i
       ].basLibName = '';
@@ -1190,6 +1250,14 @@ export default {
       //console.log(JSON.parse(str))
       return JSON.parse(str);
     },
+    formatData2(data) {
+      //转换字段名
+      let str = JSON.stringify(data)
+        .replace(/basLibName/g, 'conceptName')
+        .replace(/basConceptId/g, 'conceptId');
+      //console.log(JSON.parse(str))
+      return JSON.parse(str);
+    },
     searchDiag(val) {
       const param = {
         diseaseName: val
@@ -1349,7 +1417,6 @@ export default {
       });
     },
     confirm() {
-      
       const formData = JSON.parse(JSON.stringify(this.form));
       const _this = this;
       for (let i = 0; i < formData.klDiagnoseTypeVO.length; i++) {
@@ -1408,6 +1475,12 @@ export default {
 </script>
 <style lang="less" scoped>
 @import '../../less/admin.less';
+
+/deep/ .searchselect {
+  .el-input {
+    height: 100% !important;
+  }
+}
 .contents {
   height: 100%;
   .content {
@@ -1433,19 +1506,14 @@ export default {
       height: calc(100vh - 370px);
     }
     /deep/ .el-input {
-      height: 24px;
-      line-height: 24px;
+      height: 30px;
+      line-height: 30px;
       .el-input__inner {
-        height: 24px;
-        line-height: 24px;
+        height: 30px;
+        line-height: 30px;
         font-size: 12px;
-        border-radius: 2px;
-        border-color: #c9c9c9;
       }
     }
-    /deep/ .el-select .el-input .el-icon-arrow-up{
-      line-height: 25px;
-    }
     .inps {
       width: 500px !important;
       font-size: 14px;
@@ -1463,9 +1531,6 @@ export default {
       }
     }
   }
-  /deep/.is-error .el-form-item__error{
-    top:30px;
-  }
   .content-2 {
     margin-top: 10px;
     padding: 20px 20px;
@@ -1489,7 +1554,7 @@ export default {
       }
     }
     .el-form-item {
-      margin-top: 8px;
+      margin-bottom: 10px;
       margin-right: 0;
     }
     .discDesc {
@@ -1603,7 +1668,6 @@ export default {
     .icon {
       padding: 0 3px;
       cursor: pointer;
-      vertical-align: middle;
     }
     .star {
       color: #ff545b;
@@ -1619,7 +1683,6 @@ export default {
   }
   .name {
     font-size: 14px;
-
     font-weight: 400;
     color: #333333;
     line-height: 20px;