Ver Fonte

私有节点公式修改

duy há 2 anos atrás
pai
commit
e70b80fcc9
1 ficheiros alterados com 114 adições e 43 exclusões
  1. 114 43
      src/views/formula/edit.vue

+ 114 - 43
src/views/formula/edit.vue

@@ -159,7 +159,7 @@
         </el-row>
         <div class="text-align-c">
           <el-button size="small" @click="operationHandle" type="primary">保存</el-button>
-          <el-button size="small" @click="operationVisible = false">取消</el-button>
+          <el-button size="small" @click="canceloperationVisible ">取消</el-button>
         </div>
       </div>
     </div>
@@ -507,7 +507,7 @@ export default {
       formulaList:{},
       formulaMap:{},
       activeIndex: "1-1", //当前选择的公式
-
+      itemList:[],
       projectList: [], //项目备选列表
       projectId: "", //溯源的项目ID
       curProjiect: {}, //当前项目对象
@@ -743,59 +743,130 @@ export default {
       }
     },
 
+    // eleChang(value,item){
+    //   //console.log(value)
+    //   //console.log(item)
+    //   if(value){
+    //     //简单语法判断
+    //     if(this.selectEleFormula.length != 0 && this.deleEleIndex < 0){
+    //       let lastEle = this.selectEleFormula[this.selectEleFormula.length-1];
+    //       if(lastEle.type == 'Element'){
+    //         this.$message({
+    //           type: "warning",
+    //           message: "元素无法连续出现在元素后面"
+    //         });
+    //         item.checked = false;
+    //         return;
+    //       }
+    //       if(lastEle.type == 'Text'){
+    //         this.$message({
+    //           type: "warning",
+    //           message: "元素无法连续出现在输入值后面"
+    //         });
+    //         item.checked = false;
+    //         return;
+    //       }
+    //       if(lastEle.type == 'Brackets' && lastEle.name == ')'){
+    //         this.$message({
+    //           type: "warning",
+    //           message: "元素无法连续出现在右括号后面"
+    //         });
+    //         item.checked = false;
+    //         return;
+    //       }
+    //     }
+
+    //     this.eleAddFormulaHandle(item);
+    //   }else{
+    //     let index = -1;
+    //     for (let i = 0; i < this.selectEleFormula.length; i++) {
+    //       if(this.selectEleFormula[i].id == item.id){
+    //         index = i;
+    //         break;
+    //       }
+    //     }
+    //     if(index>-1){
+    //       this.selectEleFormula.splice(index,1);
+    //     }
+    //   }
+    // },
     eleChang(value,item){
-      //console.log(value)
-      //console.log(item)
       if(value){
         //简单语法判断
-        if(this.selectEleFormula.length != 0 && this.deleEleIndex < 0){
-          let lastEle = this.selectEleFormula[this.selectEleFormula.length-1];
-          if(lastEle.type == 'Element'){
-            this.$message({
-              type: "warning",
-              message: "元素无法连续出现在元素后面"
-            });
-            item.checked = false;
-            return;
-          }
-          if(lastEle.type == 'Text'){
-            this.$message({
-              type: "warning",
-              message: "元素无法连续出现在输入值后面"
-            });
-            item.checked = false;
-            return;
-          }
-          if(lastEle.type == 'Brackets' && lastEle.name == ')'){
-            this.$message({
-              type: "warning",
-              message: "元素无法连续出现在右括号后面"
-            });
-            item.checked = false;
-            return;
-          }
+        if(this.itemList.length != 0 && this.deleEleIndex < 0){
+                let lastEle = this.itemList[this.itemList.length-1];
+                if(lastEle.type == 'Text'){
+                  this.$message({
+                    type: "warning",
+                    message: "元素无法连续出现在输入值后面"
+                  });
+              item.checked = false;
+              return;
+             }
+            if(lastEle.type == 'Brackets' && lastEle.name == ')'){
+              this.$message({
+                type: "warning",
+                message: "元素无法连续出现在右括号后面"
+              });
+              item.checked = false;
+              return;
+            }
+        }
+        let lastEle = this.selectEleFormula[this.selectEleFormula.length-1];
+        if(this.selectEleFormula.length == 0 || lastEle.type == 'Operator' || lastEle.type == 'Brackets' || lastEle.name == '('){ /* 存在运算符 */
+          this.eleAddFormulaHandle(item);
+        } else {
+          this.itemList.push(item);
         }
 
-        this.eleAddFormulaHandle(item);
       }else{
-        let index = -1;
-        for (let i = 0; i < this.selectEleFormula.length; i++) {
-          if(this.selectEleFormula[i].id == item.id){
-            index = i;
-            break;
+           let index = -1;
+            for (let i = 0; i < this.itemList.length; i++) {
+            if(this.itemList[i].id == item.id){
+              index = i;
+              break;
+            }
+          }
+          if(index>-1){
+            this.itemList.splice(index,1);
           }
-        }
-        if(index>-1){
-          this.selectEleFormula.splice(index,1);
-        }
       }
     },
-
     //快捷添加运算符号
+    // addOperator(operator){
+    //   this.eleAddFormulaHandle(this.formulaMap[operator]);
+    // },
     addOperator(operator){
-      this.eleAddFormulaHandle(this.formulaMap[operator]);
-    },
+          if(  this.itemList.length>0){
+          this.itemList.forEach(e => {
+            let lastEle = this.selectEleFormula[this.selectEleFormula.length-1];
+            if(this.selectEleFormula.length != 0 && lastEle.type != 'Operator' && lastEle.type != 'Brackets' && lastEle.name != '('){ /* 不存在运算符 */
+              this.eleAddFormulaHandle(this.formulaMap[operator]);
+            }
+            this.eleAddFormulaHandle(e);
+          })
+          }else{
 
+              if(this.curSeleEleIndex===-1 || this.curSeleEleIndex === this.selectEleFormula.length - 1){ /* 没选择值或者选择最后一个的时候直接添加符号 */
+                this.eleAddFormulaHandle(this.formulaMap[operator]);
+              }else{ /* 选择中间的值,如果下一个是符号这替换,反之则在指定的位置添加 */
+                this.randomaddOperator(this.formulaMap[operator])
+              }
+          }
+        this.itemList=[];
+    },
+    canceloperationVisible(){
+      this.operationVisible=false;
+      this.allTreeShow=false;
+      this.filterText=''
+      this.treeId=''
+      this.itemList=[];
+      this.eleList.forEach((ele)=>{
+          this.$set(ele,'checked',false);
+          //ele.checked = false;
+      })
+      console.log('取消');
+    },
     //把元素加到公式里
     eleAddFormulaHandle(ele){
       if(ele.tableElementKey){