浏览代码

元素公式 解决禅道问题

gangyj 3 年之前
父节点
当前提交
c7ec1b9e51

+ 19 - 1
src/views/formula/component/funComponent/dateDeviation.vue

@@ -83,9 +83,15 @@ export default {
 
     deleteEle(type){
       if(type == '0'){
+        if(this.formulainfo.arguments[0]){
+          this.$emit('uncheck',this.formulainfo.arguments[0].id)
+        }
         this.arg0Name = '';
         this.formulainfo.arguments[0] = undefined;
       }else if(type == '1'){
+        if(this.formulainfo.arguments[1]){
+          this.$emit('uncheck',this.formulainfo.arguments[1].id)
+        }
         this.arg1Name = '';
         this.formulainfo.arguments[1] = undefined;
       }
@@ -100,10 +106,16 @@ export default {
 
     dateChange(value){
       this.arg0Name = '';
+      if(this.formulainfo.arguments[0]){
+        this.$emit('uncheck',this.formulainfo.arguments[0].id)
+      }
       this.formulainfo.arguments[0] = value;
     },
 
     inputChange(value){
+      if(this.formulainfo.arguments[1]){
+        this.$emit('uncheck',this.formulainfo.arguments[1].id)
+      }
       this.arg1Name = '';
       this.formulainfo.arguments[1] = value;
     },
@@ -129,16 +141,22 @@ export default {
           children:[],
         }
         if(this.curFocusIndex == 1){
+          if(this.formulainfo.arguments[0]){
+            this.$emit('uncheck',this.formulainfo.arguments[0].id)
+          }
           this.formulainfo.arguments[0] = obj;
           this.arg0Name = obj.name;
           this.dateValue = '';
         }else if(this.curFocusIndex == 2){
+          if(this.formulainfo.arguments[1]){
+            this.$emit('uncheck',this.formulainfo.arguments[1].id)
+          }
           this.formulainfo.arguments[1] = obj;
           this.arg1Name = obj.name;
           this.input = '';
         }
 
-        this.curFocusIndex = 0;
+        //this.curFocusIndex = 0;
       }
     }
   }

+ 8 - 1
src/views/formula/component/funComponent/ifelse.vue

@@ -207,6 +207,9 @@ export default {
 
     inputBlur(num){
       if(this['tag'+num]){
+        if(this['tags'+num] && this['tags'+num][0]){
+          this.$emit('uncheck',this['tags'+num][0].id)
+        }
         this['tags'+num] = [];
       }
 
@@ -444,6 +447,10 @@ export default {
         if(this.curFocusIndex == 6 || this.curFocusIndex ==7){
           this.eleAddFormulaHandle(ele)
         }else{
+          if(this['tags'+this.curFocusIndex] && this['tags'+this.curFocusIndex][0]){
+            this.$emit('uncheck',this['tags'+this.curFocusIndex][0].id)
+          }
+
           obj.text = ele.eName;
           obj.style = 'background-color: #409EFF';
           this['tags'+this.curFocusIndex] = [obj];
@@ -455,7 +462,7 @@ export default {
             this.setCondition();
           }
 
-          this.curFocusIndex = 0;
+          //this.curFocusIndex = 0;
         }
       }
     },

+ 60 - 13
src/views/formula/edit.vue

@@ -185,7 +185,7 @@
           <template v-else>
             <div class="flex">
               <div class="flex flex-d-c">
-                <component ref="dynamiccomponent" v-bind:is="componentMap[item.name]" :formulainfo="item" :curele="equationSelectEle" :formulamap="formulaMap" class="flex1"></component>
+                <component ref="dynamiccomponent" v-bind:is="componentMap[item.name]" :formulainfo="item" :curele="equationSelectEle" :formulamap="formulaMap" @uncheck="unCheckEleComp" class="flex1"></component>
                 <div v-show="item.showSelectEle">
                   <el-select v-model="eleTableIdComp" @change="getTableEleComp" placeholder="请选择元素表" style="width:100%">
                     <el-option  v-for="item in eleTableListComp" :key="item.id" :label="item.tableName" :value="item.id"></el-option>
@@ -196,7 +196,7 @@
                         <el-col :span="6" v-for="item in eleListComp" :key="item.id">
                           <div class="ele-box">
                             <span>{{item.eName}}</span>
-                            <el-checkbox @change="value => setComponentEle(value,item,index)"></el-checkbox>
+                            <el-checkbox v-model="item.checked" @change="value => setComponentEle(value,item,index)"></el-checkbox>
                           </div>
                         </el-col>
                       </el-row>
@@ -374,6 +374,7 @@ export default {
       curSeleEleIndex:-1,//公式文字里面选中的元素索引
       inputVisible:false,//输入弹窗
       inputText:"",//输入值
+      deleEleIndex:-1,//删除元素的位置,如果下次添加元素,先加到这个位置
 
       resultFormula:[],//=等号左边的数组
       processFormula:[],//=等号右边的数组
@@ -546,7 +547,7 @@ export default {
       //console.log(item)
       if(value){
         //简单语法判断
-        if(this.selectEleFormula.length != 0){
+        if(this.selectEleFormula.length != 0 && this.deleEleIndex < 0){
           let lastEle = this.selectEleFormula[this.selectEleFormula.length-1];
           if(lastEle.type == 'Element'){
             this.$message({
@@ -598,14 +599,29 @@ export default {
     eleAddFormulaHandle(ele){
       if(ele.tableElementKey){
         //元素
-        this.selectEleFormula.push({
-          type:'Element',
-          name:ele.eName,
-          id:ele.id,
-          selected:false,
-          tableElementKey:ele.tableElementKey,
-          children:[],
-        })
+        if(this.deleEleIndex > -1 && this.selectEleFormula.length-1 >= this.deleEleIndex){
+          //删除元素的位置,如果下次添加元素,先加到这个位置
+          this.selectEleFormula.splice(this.deleEleIndex,0,{
+            type:'Element',
+            name:ele.eName,
+            id:ele.id,
+            selected:false,
+            tableElementKey:ele.tableElementKey,
+            children:[],
+          })
+          this.deleEleIndex = -1;
+        }else{
+          this.selectEleFormula.push({
+            type:'Element',
+            name:ele.eName,
+            id:ele.id,
+            selected:false,
+            tableElementKey:ele.tableElementKey,
+            children:[],
+          })
+          this.deleEleIndex = -1;
+        }
+        
       }else if(ele.template && ele.example){
 
         //简单语法判断
@@ -736,11 +752,25 @@ export default {
       }
     },
 
+    //取消勾选
+    unCheckEleFormulac(eleId){
+      for (let i = 0; i < this.eleList.length; i++) {
+        if(this.eleList[i].id == eleId){
+          this.eleList[i].checked = false;
+        }
+      }
+    },
+
     //删除点选公式中的元素
     removeSelect(){
-      if(this.curSeleEleIndex > -1){
+      if(this.curSeleEleIndex > -1 && this.curSeleEleIndex <= this.selectEleFormula.length-1){
+        if(this.selectEleFormula[this.curSeleEleIndex].type == 'Element'){
+          //删除元素的位置,如果下次添加元素,先加到这个位置
+          this.deleEleIndex = this.curSeleEleIndex;
+          this.unCheckEleFormulac(this.selectEleFormula[this.curSeleEleIndex].id)
+        }
         this.selectEleFormula.splice(this.curSeleEleIndex,1);
-        this.curSeleEleIndex = -1;
+        //this.curSeleEleIndex = -1;
       }
     },
 
@@ -783,6 +813,11 @@ export default {
         this.processSelectIndex = index;
         this.processType = arrName;
         item.selected = true;
+
+        if(this.showFunDetail){
+          //切到第一个
+          this.actiFunIndex = '0';
+        }
       }else{
         this.processType = '';
       }
@@ -815,6 +850,8 @@ export default {
           type:"Element",
       };
       this.equationSelectEle.children.push(obj);
+      //跳转到最新的标签
+      this.actiFunIndex = (this.equationSelectEle.children.length-1).toString();
     },
 
     //选择元素
@@ -1048,6 +1085,16 @@ export default {
       })
     },
 
+    //取消方法下面 元素勾选
+    unCheckEleComp(eleId){
+      //console.log(eleId)
+      for (let i = 0; i < this.eleListComp.length; i++) {
+        if(this.eleListComp[i].id == eleId){
+          this.eleListComp[i].checked = false;
+        }
+      }
+    },
+
     //手写模式
     handwrit(){
       try {