瀏覽代碼

公式 选择元素修改为多选,并按顺序填写到指定位置参数

gangyj 2 年之前
父節點
當前提交
8ba2894803
共有 2 個文件被更改,包括 93 次插入33 次删除
  1. 3 1
      src/views/formula/component/formulaTemplate.vue
  2. 90 32
      src/views/formula/edit.vue

+ 3 - 1
src/views/formula/component/formulaTemplate.vue

@@ -67,7 +67,9 @@ export default {
 
     //选择当前元素
     setCurEle(index){
-      this.$set(this.formulainfo.arguments,index,this.curele);
+      let tmp = JSON.parse(JSON.stringify(this.curele));
+      //console.log(tmp)
+      this.$set(this.formulainfo.arguments,index,tmp);
     }
   }
 }

+ 90 - 32
src/views/formula/edit.vue

@@ -515,6 +515,7 @@ export default {
       eleTableId:'',//选中的元素表id
       eleTableList:[],
       eleList:[],
+      eleChecks:[],//勾选的元素列表
       selectEleFormula:[],
       curSeleEleIndex:-1,//公式文字里面选中的元素索引
       inputVisible:false,//输入弹窗
@@ -931,13 +932,26 @@ export default {
     },
 
     //勾选元素
+    // eleCheckHandle(checked,item){
+    //   if(checked){
+    //     this.eleList.forEach((ele)=>{
+    //       this.$set(ele,'checked',false);
+    //       //ele.checked = false;
+    //     })
+    //     item.checked = true;
+    //   }
+    // },
+    //勾选元素多选
     eleCheckHandle(checked,item){
       if(checked){
-        this.eleList.forEach((ele)=>{
-          this.$set(ele,'checked',false);
-          //ele.checked = false;
-        })
-        item.checked = true;
+        this.eleChecks.push(item);
+      }else{
+        for (let i = 0; i < this.eleChecks.length; i++) {
+          if(this.eleChecks[i].id == item.id){
+            this.eleChecks.splice(i,1);
+            break;
+          }
+        }
       }
     },
 
@@ -1072,38 +1086,82 @@ export default {
     },
 
     //选择元素
+    // chooseEleHandle(){
+    //   for (let i = 0; i < this.eleList.length; i++) {
+    //     if (this.eleList[i].checked) {
+    //       let ele = this.eleList[i];
+    //       let obj = {};
+    //       if(ele.k){
+    //         obj = {
+    //           type:'ParamData',
+    //           name:ele.name,
+    //           id:ele.id,
+    //           selected:false,
+    //           v:ele.v,
+    //           k:ele.k,
+    //           children:[],
+    //         }
+    //       }else{
+    //         obj = {
+    //           type:'Element',
+    //           name:ele.eName,
+    //           id:ele.id,
+    //           selected:false,
+    //           tableElementKey:ele.tableElementKey,
+    //           children:[],
+    //         }
+    //       }
+
+
+    //       this.$set(this.argumenObj.arguments,this.argumenObj.index,obj);
+    //       this.chooseEleVisible = false;
+    //       break;
+    //     }
+    //   }
+    // },
+    //选择元素多选
     chooseEleHandle(){
-      for (let i = 0; i < this.eleList.length; i++) {
-        if (this.eleList[i].checked) {
-          let ele = this.eleList[i];
-          let obj = {};
-          if(ele.k){
-            obj = {
-              type:'ParamData',
-              name:ele.name,
-              id:ele.id,
-              selected:false,
-              v:ele.v,
-              k:ele.k,
-              children:[],
-            }
-          }else{
-            obj = {
-              type:'Element',
-              name:ele.eName,
-              id:ele.id,
-              selected:false,
-              tableElementKey:ele.tableElementKey,
-              children:[],
-            }
-          }
+      this.eleChecks.forEach((element,index) => {
+        this.setEleToArgumen(element,index+this.argumenObj.index);
+      });
 
+      this.chooseEleVisible = false;
 
-          this.$set(this.argumenObj.arguments,this.argumenObj.index,obj);
-          this.chooseEleVisible = false;
-          break;
+      this.clearEleListCheck();
+    },
+    //设置元素到指定位置参数
+    setEleToArgumen(ele,index){
+      let obj = {};
+      if(ele.k){
+        obj = {
+          type:'ParamData',
+          name:ele.name,
+          id:ele.id,
+          selected:false,
+          v:ele.v,
+          k:ele.k,
+          children:[],
+        }
+      }else{
+        obj = {
+          type:'Element',
+          name:ele.eName,
+          id:ele.id,
+          selected:false,
+          tableElementKey:ele.tableElementKey,
+          children:[],
         }
       }
+      if(index < this.argumenObj.arguments.length){
+        this.$set(this.argumenObj.arguments,index,obj);
+      }
+    },
+    //清理元素列表的勾选
+    clearEleListCheck(){
+      this.eleChecks = [];
+      this.eleList.forEach((item)=>{
+        item.checked = false;
+      })
     },
 
     //显示选择元素弹窗