Ver código fonte

Merge branch 'test-dev' of http://219.151.181.73:3000/web/saber into test-dev

lvy 1 mês atrás
pai
commit
511a9367ca

+ 2 - 2
src/api/system/user.js

@@ -1,6 +1,6 @@
 import request from '@/router/axios';
 
-export const getList = (current, size, params, deptId) => {
+export const getList = (current, size, params) => {
     return request({
         url: '/api/blade-user/page',
         method: 'get',
@@ -8,7 +8,7 @@ export const getList = (current, size, params, deptId) => {
             ...params,
             current,
             size,
-            deptId,
+          
         }
     })
 }

+ 8 - 13
src/views/exctab/exceltab.vue

@@ -430,11 +430,15 @@ export default {
             });
 
     },
-    getProjectListPage() {
+    getProjectList() {
       let params = {};
       params.page = this.currentPage;
       params.size = this.pageSize;
-      getProjectListPage(params).then((res) => {
+      getProjectListPage({
+        size:999,
+        current:1,
+        isCollect:0,
+      }).then((res) => {
         this.projectList = res.data.data.records;
       });
     },
@@ -446,8 +450,8 @@ export default {
        const typeToLabelMap = {
         1: '质检',
         2: '试验',
-        3: '日志',
-        4: '计量',
+        3: '计量',
+        4: '日志',
         5: '征拆',
         6: '底层节点',
        
@@ -587,16 +591,7 @@ export default {
         this.selectionClear();
       });
     },
-    getProjectList () {
-      getProjectListPage({
-        current:1,
-        size:999,
-        ...this.searchForm
 
-      }).then((res) => {
-        this.projectList = res.data.data.records;
-      })
-    },
     //查看模板信息
     viewInfo(row,index){
       this.infoVisible = true;

+ 6 - 6
src/views/formula/component/formulaTemplate.vue

@@ -7,9 +7,9 @@
         <span>参数{{(index+1)}}({{formulainfo.template.args[index].m}}):</span>
         <span v-if="JSON.stringify(item)!=='null'">
  
-            <el-radio-group v-model="formulainfo.arguments[index]"  v-if="formulainfo.template.args[index].m=='是否同行/列计算(选填):'">
-                <el-radio :label="3">同行</el-radio>
-                <el-radio :label="6">同列</el-radio>
+            <el-radio-group v-model="formulainfo.arguments[index]"  v-if="formulainfo.template.args[index].m=='是否同行/列计算(选填)'">
+                <el-radio label="x">同行</el-radio>
+                <el-radio label="y">同列</el-radio>
                
               </el-radio-group>
 
@@ -24,9 +24,9 @@
                         </template>
               </template>
         </span>
-        <el-link type="primary" @click="changeType('text',index)" class="mg-l-10" v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填):'">输入文本</el-link>
-        <el-link type="primary" @click="changeType('ele',index)" class="mg-l-10"  v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填):'">选择元素</el-link>
-        <el-link type="primary" @click="setCurEle(index)" class="mg-l-10"  v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填):'">当前元素</el-link>
+        <el-link type="primary" @click="changeType('text',index)" class="mg-l-10" v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填)'">输入文本</el-link>
+        <el-link type="primary" @click="changeType('ele',index)" class="mg-l-10"  v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填)'">选择元素</el-link>
+        <el-link type="primary" @click="setCurEle(index)" class="mg-l-10"  v-if="formulainfo.template.args[index].m!=='是否同行/列计算(选填)'">当前元素</el-link>
       </div>
     </div>
   </div>

+ 249 - 0
src/views/formula/component/funComponent/dataChange.vue

@@ -0,0 +1,249 @@
+<template>
+  <div class="data-change-form">
+    <div class="form-title">数据自变</div>
+    
+    <el-form :model="formData" label-width="100px" class="form-container" size="small">
+      <!-- 变化方式和数据格式行 -->
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item label="变化方式:">
+            <el-select v-model="formData.changeMethod" placeholder="请选择">
+              <el-option label="自增" value="increment"></el-option>
+              <el-option label="自减" value="decrement"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="数据格式:">
+            <el-select v-model="formData.dataFormat" placeholder="请选择">
+              <el-option label="时间" value="time"></el-option>
+              <el-option label="日期" value="number"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item>
+            <el-button type="primary" @click="showSelectEle">选择元素</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      
+      <!-- 协同元素行 -->
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <el-form-item label="协同元素:">
+            <el-input 
+              v-model="formData.coordinationElement" 
+              placeholder="请选择参数(非必填)" 
+              clearable
+              @focus="setFocusedField('coordinationElement')"
+              @blur="clearFocusedField"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      
+      <!-- 频率设置行 -->
+      <el-row :gutter="1" class="frequency-row">
+        <el-col :span="12">
+          <el-form-item label="频率:">
+            <el-input v-model="formData.frequency" placeholder="输入自增频率" clearable></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label-width="0px" >
+            <el-select v-model="formData.frequencyUnit" placeholder="单位" clearable style="width: 120px;">
+                <el-option label="年" value="second"></el-option>
+                <el-option label="月" value="minute"></el-option>
+                <el-option label="日" value="hour"></el-option>
+                <el-option label="时" value="day"></el-option>
+                <el-option label="分" value="month"></el-option>
+                <el-option label="秒" value="year"></el-option>
+            </el-select>
+            </el-form-item>
+        </el-col>
+      </el-row>
+      
+      <!-- 停止条件行 -->
+        <el-row :gutter="10" class="stop-condition-row">
+        <el-col :span="9">
+            <el-form-item label="停止条件:">
+            <el-input 
+                v-model="formData.stopConditionParam" 
+                placeholder="请选择参数(非必填)" 
+                clearable
+                @focus="setFocusedField('stopConditionParam')"
+                @blur="clearFocusedField"
+            ></el-input>
+            </el-form-item>
+        </el-col>
+        <el-col :span="4">
+            <el-form-item>
+            <el-select 
+                v-model="formData.stopConditionOperator" 
+                placeholder="请选择" 
+                clearable
+            >
+                <el-option label="=" value="equal"></el-option>
+                <el-option label=">" value="greater"></el-option>
+                <el-option label="<" value="less"></el-option>
+                <el-option label="≥" value="greaterEqual"></el-option>
+                <el-option label="≤" value="lessEqual"></el-option>
+                <el-option label="≠" value="≠"></el-option>
+            </el-select>
+            </el-form-item>
+        </el-col>
+        <el-col :span="8">
+            <el-form-item>
+            <el-input 
+                v-model="formData.stopConditionValue" 
+                placeholder="请选择/输入参数值" 
+                clearable
+                @focus="setFocusedField('stopConditionValue')"
+                @blur="clearFocusedField"
+            ></el-input>
+            </el-form-item>
+        </el-col>
+        </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "DatasChange",
+  props: {
+    formulainfo: {
+      type: Object,
+      default: function () {
+        return {};
+      }
+    },
+    curele: {
+      type: Object,
+      default: function () {
+        return {};
+      }
+    },
+  },
+  data() {
+    return {
+      value1: true,
+      focusedField: null, // 记录当前聚焦的字段
+      formData: {
+        changeMethod: '',
+        dataFormat: 'time',
+        coordinationElement: '',
+        frequency: '',
+        frequencyUnit: '',
+        stopConditionParam: '',
+        stopConditionOperator: 'equal',
+        stopConditionValue: ''
+      }
+    };
+  },
+  mounted() {
+    // 从props初始化表单数据
+    if (this.formulainfo) {
+      this.formData = { ...this.formData, ...this.formulainfo };
+    }
+  },
+  methods: {
+    showSelectEle() {
+      this.$set(this.formulainfo, 'showSelectEle', !this.formulainfo.showSelectEle);
+      this.$emit('select-element');
+    },    
+    setELe(ele) {
+      console.log(ele, 'ele');
+      
+      // 当有元素被选择且有聚焦的字段时,填充对应的值
+      if (ele && ele.eName && this.focusedField) {
+        this.$set(this.formData, this.focusedField, ele.eName);
+        console.log(this.formData,'this.formData');
+        
+        // 可以选择在填充后取消聚焦状态
+        this.focusedField = null;
+      }
+    },
+    // 设置当前聚焦的字段
+    setFocusedField(fieldName) {
+
+        
+      this.focusedField = fieldName;
+    },
+    // 清除聚焦状态
+    clearFocusedField() {
+      // 可以保留聚焦状态直到下一次操作,或立即清除
+      // this.focusedField = null;
+    }
+  }
+};
+</script>
+
+<style scoped lang="scss">
+.data-change-form {
+  background-color: #fff;
+  border-radius: 4px;
+  padding: 20px;
+}
+
+.form-title {
+  font-size: 16px;
+  font-weight: bold;
+  margin-bottom: 5px;
+  color: #333;
+}
+
+.form-container {
+  width: 100%;
+}
+
+::v-deep .el-row {
+  margin-bottom: 5px;
+}
+
+::v-deep .el-form-item {
+  margin-bottom: 5px;
+  
+  // 确保输入框占满列宽
+  ::v-deep .el-input,
+  ::v-deep .el-select {
+    width: 100%;
+  }
+}
+
+// 停止条件行特殊样式
+.stop-condition-row {
+  margin-top: 10px;
+}
+
+// 调整小屏幕显示
+@media screen and (max-width: 768px) {
+  ::v-deep .el-col {
+    margin-bottom: 5px;
+  }
+}
+.stop-condition-row {
+  margin-top: 10px;
+  
+  ::v-deep .el-col {
+    padding-left: 5px !important;
+    padding-right: 5px !important;
+  }
+  
+  ::v-deep .el-form-item__content {
+    width: 100% !important;
+  }
+}
+.frequency-row {
+  ::v-deep .el-col {
+    padding-left: 0 !important;
+    padding-right: 0 !important;
+  }
+  
+  // 调整两个输入框之间的间距
+  ::v-deep .el-col:last-child {
+    padding-left: 5px !important;
+  }
+}
+</style>

+ 680 - 115
src/views/formula/component/funComponent/ifelse.vue

@@ -21,107 +21,238 @@
       <el-button class="mg-l-10" size="small" type="info" @click="showSelectEle">选择参数</el-button>
     </div>
 
-    <div class="mg-t-20 flex jc-al-c">
-      <span class="textblod mg-r-20"  v-if="symbol!=='|'">IF</span>
-      <div class="flex jc-al-c" v-if="symbol == '<&&<' || symbol == '<=&&<='">
-        <vue-tags-input v-model="tag1" :tags="tags1" @focus="curFocusIndex = 1" @blur="inputBlur(1)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
-        <span v-if="symbol == '<&&<'" class="mg-l-20 mg-r-20">&lt;</span>
-        <span v-if="symbol == '<=&&<='" class="mg-l-20 mg-r-20">≤</span>
-      </div>
-      <vue-tags-input v-model="tag2" :tags="tags2" @focus="curFocusIndex = 2" @blur="inputBlur(2)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
-      <span class="mg-l-20 mg-r-20">
-        <span v-if="symbol == '>='">≥</span>
-        <span v-if="symbol == '<='">≤</span>
-        <span v-if="symbol == '>'">&gt;</span>
-        <span v-if="symbol == '<'">&lt;</span>
-        <span v-if="symbol == '='">=</span>
-        <span v-if="symbol == '<&&<'">&lt;</span>
-        <span v-if="symbol == '|'">|</span>
-        <div v-if="symbol == 'more'" >
-          <el-select v-model="symbol1" @change="setCondition()" size="medium" placeholder="请选择" >
-              <el-option label=">=" value=">="></el-option>
-              <el-option label="<=" value="<="></el-option>
-              <el-option label="=" value="="></el-option>
-              <el-option label=">" value=">"></el-option>
-              <el-option label="<" value="<"></el-option>
-              <el-option label="≠" value="≠"></el-option>
-              <el-option label="包含" value="包含"></el-option>
-              <el-option label="不包含" value="不包含"></el-option>
-          
-            </el-select>
-       </div>
-      </span>
-      <vue-tags-input v-model="tag3" :tags="tags3" @focus="curFocusIndex = 3" @blur="inputBlur(3)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
-    </div>
-
-    <div class="flex jc-al-c mg-t-20" v-if="result == 1">
-      <span class="textblod mg-r-10">真值</span>
-      <vue-tags-input v-model="tag4" :tags="tags4" @focus="curFocusIndex = 4" @blur="inputBlur(4)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
-      <span class="textblod mg-r-10 mg-l-20">假值</span>
-      <vue-tags-input v-model="tag5" :tags="tags5" @focus="curFocusIndex = 5" @blur="inputBlur(5)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
-    </div>
-    <div class="mg-t-20" v-if="result == 2">
-      <div class="flex">
-        <span class="textblod mg-r-10">真值</span>
-        <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 6}" @click="curFocusIndex = 6">
-          <div class="flex jc-sb mg-b-20">
-            <!-- <div>定位数据位置:</div> -->
-            <div class="icon-box">
-              <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
+    <!-- 多条件其他的 -->
+    <template v-if="symbol !== 'more'"> 
+        <div class="mg-t-20 flex jc-al-c">
+            <span class="textblod mg-r-20"  v-if="symbol!=='|'">IF</span>
+            <div class="flex jc-al-c" v-if="symbol == '<&&<' || symbol == '<=&&<='">
+              <vue-tags-input v-model="tag1" :tags="tags1" @focus="curFocusIndex = 1" @blur="inputBlur(1)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
+              <span v-if="symbol == '<&&<'" class="mg-l-20 mg-r-20">&lt;</span>
+              <span v-if="symbol == '<=&&<='" class="mg-l-20 mg-r-20">≤</span>
+            </div>
+            <vue-tags-input v-model="tag2" :tags="tags2" @focus="curFocusIndex = 2" @blur="inputBlur(2)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
+            <span class="mg-l-20 mg-r-20">
+              <span v-if="symbol == '>='">≥</span>
+              <span v-if="symbol == '<='">≤</span>
+              <span v-if="symbol == '>'">&gt;</span>
+              <span v-if="symbol == '<'">&lt;</span>
+              <span v-if="symbol == '='">=</span>
+              <span v-if="symbol == '<&&<'">&lt;</span>
+              <span v-if="symbol == '|'">|</span>
+        
+            </span>
+            <vue-tags-input v-model="tag3" :tags="tags3" @focus="curFocusIndex = 3" @blur="inputBlur(3)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag"/>
+        </div>
+         <div class="flex jc-al-c mg-t-20" v-if="result == 1">
+          <span class="textblod mg-r-10">真值</span>
+          <vue-tags-input v-model="tag4" :tags="tags4" @focus="curFocusIndex = 4" @blur="inputBlur(4)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
+          <span class="textblod mg-r-10 mg-l-20">假值</span>
+          <vue-tags-input v-model="tag5" :tags="tags5" @focus="curFocusIndex = 5" @blur="inputBlur(5)" placeholder="输入/参数" @before-adding-tag="beforeAddingTag" @keyup.native="btKeyUp"/>
+        </div>
+        <div class="mg-t-20" v-if="result == 2">
+          <div class="flex">
+            <span class="textblod mg-r-10">真值</span>
+            <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 6}" @click="curFocusIndex = 6">
+              <div class="flex jc-sb mg-b-20">
+                <div class="icon-box">
+                  <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
+                </div>
+                <div>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
+                  <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
+                </div>
+              </div>
+              <draggable v-model="selectEleFormula">
+                <formula-item 
+                  v-for="(item,index) in selectEleFormula" :key="index" 
+                  :item="item" @click="obj => eleFormulaClick(obj,index)"
+                >
+                </formula-item>
+              </draggable>
             </div>
-            <div>
-              <!-- <el-link :underline="false" type="primary" class="mg-r-20" @click="eleAddFormula">元素添加到公式</el-link> -->
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
-              <!-- <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('[',false)">【</el-link>
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(']',true)">】</el-link> -->
-              <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
+          </div>
+          <div class="flex mg-t-10">
+            <span class="textblod mg-r-10">假值</span>
+            <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 7}" @click="curFocusIndex = 7">
+              <div class="flex jc-sb mg-b-20">
+                <div class="icon-box">
+                  <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
+                </div>
+                <div>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
+                  <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
+                </div>
+              </div>
+              <draggable v-model="selectEleFormula2">
+                <formula-item 
+                  v-for="(item,index) in selectEleFormula2" :key="index" 
+                  :item="item" @click="obj => eleFormulaClick(obj,index)"
+                >
+                </formula-item>
+              </draggable>
             </div>
           </div>
-          <draggable v-model="selectEleFormula">
-            <formula-item 
-              v-for="(item,index) in selectEleFormula" :key="index" 
-              :item="item" @click="obj => eleFormulaClick(obj,index)"
-            >
-            </formula-item>
-          </draggable>
         </div>
-      </div>
-      <div class="flex mg-t-10">
-        <span class="textblod mg-r-10">假值</span>
-        <div class="border-grey sele-ele-box flex1" :class="{'border-green':curFocusIndex == 7}" @click="curFocusIndex = 7">
-          <div class="flex jc-sb mg-b-20">
-            <!-- <div>定位数据位置:</div> -->
-            <div class="icon-box">
-              <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelect"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('+')" icon="el-icon-circle-plus-outline"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('-')" icon="el-icon-remove-outline"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('*')" icon="el-icon-circle-close"></el-link>
-              <el-link :underline="false" type="primary" @click="addOperator('%')">÷</el-link>
+    </template>
+    <!-- 多条件 -->
+     <template v-else>
+      <div v-for="(item, conditionIndex) in conditionList" :key="conditionIndex">
+        <!-- 从第二个条件开始显示“条件X”和删除按钮 -->
+        <div v-if="conditionIndex >= 1" class="condition-header flex al-c  mg-t-20">
+          <span class="textblod">条件{{ conditionIndex + 1 }}</span>
+          <el-button type="danger" size="mini" @click="removeCondition(conditionIndex)" class=" mg-l-20">删除</el-button>
+        </div>
+           <div  v-for="(innerItem, innerIndex) in conditionList[conditionIndex].innerList">
+            <div class="mg-t-20 flex jc-al-c" :key="innerIndex">
+                  <span class="textblod mg-r-20" >IF</span>
+              
+                  <vue-tags-input 
+                    v-model="conditionList[conditionIndex].innerList[innerIndex].tag2" 
+                    :tags="conditionList[conditionIndex].innerList[innerIndex].tags2" 
+                    @focus="setMultiFocus(conditionIndex, innerIndex, 'tag2')" 
+                    @blur="inputBlurMulti(conditionIndex, innerIndex, 'tag2')" 
+                    placeholder="输入/参数" 
+                    @before-adding-tag="beforeAddingTag"
+                  />
+                  <span class="mg-l-20 mg-r-20">
+                  <el-select 
+                    v-model="conditionList[conditionIndex].innerList[innerIndex].symbol1" 
+                    @change="setConditionMulti(conditionIndex, innerIndex)" 
+                    size="medium" 
+                    placeholder="请选择"  
+                    style="width:120px"
+                  >
+                        <el-option label=">=" value=">="></el-option>
+                        <el-option label="<=" value="<="></el-option>
+                        <el-option label="=" value="="></el-option>
+                        <el-option label=">" value=">"></el-option>
+                        <el-option label="<" value="<"></el-option>
+                        <el-option label="≠" value="≠"></el-option>
+                        <el-option label="包含" value="包含"></el-option>
+                        <el-option label="不包含" value="不包含"></el-option>
+                
+                  </el-select>
+                  </span>
+                  <vue-tags-input 
+                    v-model="conditionList[conditionIndex].innerList[innerIndex].tag3" 
+                    :tags="conditionList[conditionIndex].innerList[innerIndex].tags3" 
+                    @focus="setMultiFocus(conditionIndex, innerIndex, 'tag3')" 
+                    @blur="inputBlurMulti(conditionIndex, innerIndex, 'tag3')" 
+                    placeholder="输入/参数" 
+                    @before-adding-tag="beforeAddingTag"
+                  />
+                  <i class="el-icon-circle-plus-outline mg-l-20" style="color: #409EFF;cursor: pointer;" @click="addConditionItem(conditionIndex, innerIndex)"></i>
+                   <i class="el-icon-delete mg-l-20" style="color: red;cursor: pointer;" @click="removeConditionItem(conditionIndex, innerIndex)" v-if="innerIndex > 0 || conditionIndex > 0"></i>
+            </div>
+            <div v-if="innerIndex > 0" style="margin-left: 25%;" class="mg-t-10 mg-b-10">
+                      <el-select 
+                        v-model="conditionList[conditionIndex].innerList[innerIndex].logicSymbol" 
+                        @change="setConditionMulti(conditionIndex, innerIndex)" 
+                        size="medium" 
+                        placeholder="请选择"  
+                        style="width:120px"
+                      >
+                            <el-option label="或者" value="or"></el-option>
+                            <el-option label="并且" value="and"></el-option>
+                      </el-select>
+              </div>
+           </div>
+         <div class="flex jc-al-c mg-t-20" v-if="result == 1">
+          <span class="textblod mg-r-10">满足</span>
+          <vue-tags-input 
+            v-model="conditionList[conditionIndex].tag4" 
+            :tags="conditionList[conditionIndex].tags4" 
+            @focus="setMultiFocus(conditionIndex, null, 'tag4')" 
+            @blur="inputBlurMulti(conditionIndex, null, 'tag4')" 
+            placeholder="输入/参数" 
+            @before-adding-tag="beforeAddingTag" 
+            @keyup.native="btKeyUp"
+          />
+          <span class="textblod mg-r-10 mg-l-20">不满足</span>
+          <vue-tags-input 
+            v-model="conditionList[conditionIndex].tag5" 
+            :tags="conditionList[conditionIndex].tags5" 
+            @focus="setMultiFocus(conditionIndex, null, 'tag5')" 
+            @blur="inputBlurMulti(conditionIndex, null, 'tag5')" 
+            placeholder="输入/参数" 
+            @before-adding-tag="beforeAddingTag" 
+            @keyup.native="btKeyUp"
+          />
+          <div class="mg-l-20">
+              <el-button  size="small" type="primary" @click="addCondition(conditionIndex)">添加其他条件</el-button>
+          </div>
+        </div>
+        <div class="mg-t-20" v-if="result == 2">
+          <div class="flex">
+            <span class="textblod mg-r-10">满足</span>
+            <div class="border-grey sele-ele-box flex1" 
+                 :class="{'border-green': isCurFocus(conditionIndex, null, 'formula1')}" 
+                 @click="setMultiFocus(conditionIndex, null, 'formula1')">
+              <div class="flex jc-sb mg-b-20">
+                <div class="icon-box">
+                  <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelectMulti(conditionIndex, 'formula1')"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '+', 'formula1')" icon="el-icon-circle-plus-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '-', 'formula1')" icon="el-icon-remove-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '*', 'formula1')" icon="el-icon-circle-close"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '%', 'formula1')">÷</el-link>
+                </div>
+                <div>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBracketsMulti(conditionIndex, '(', false, 'formula1')">(</el-link>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBracketsMulti(conditionIndex, ')', true, 'formula1')">)</el-link>
+                  <el-link :underline="false" type="primary" @click="addTextMulti(conditionIndex, 'formula1')">输入值</el-link>
+                </div>
+              </div>
+              <draggable v-model="conditionList[conditionIndex].formula1">
+                <formula-item 
+                  v-for="(item,index) in conditionList[conditionIndex].formula1" :key="index" 
+                  :item="item" @click="obj => eleFormulaClickMulti(obj, index, conditionIndex, 'formula1')"
+                >
+                </formula-item>
+              </draggable>
             </div>
-            <div>
-              <!-- <el-link :underline="false" type="primary" class="mg-r-20" @click="eleAddFormula">元素添加到公式</el-link> -->
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('(',false)">(</el-link>
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(')',true)">)</el-link>
-              <!-- <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets('[',false)">【</el-link>
-              <el-link :underline="false" type="primary" class="mg-r-10" @click="addBrackets(']',true)">】</el-link> -->
-              <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
+          </div>
+          <div class="flex mg-t-10">
+            <span class="textblod mg-r-10">不满足</span>
+            <div class="border-grey sele-ele-box flex1" 
+                 :class="{'border-green': isCurFocus(conditionIndex, null, 'formula2')}" 
+                 @click="setMultiFocus(conditionIndex, null, 'formula2')">
+              <div class="flex jc-sb mg-b-20">
+                <div class="icon-box">
+                  <el-link :underline="false" icon="el-icon-delete" type="danger" @click="removeSelectMulti(conditionIndex, 'formula2')"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '+', 'formula2')" icon="el-icon-circle-plus-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '-', 'formula2')" icon="el-icon-remove-outline"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '*', 'formula2')" icon="el-icon-circle-close"></el-link>
+                  <el-link :underline="false" type="primary" @click="addOperatorMulti(conditionIndex, '%', 'formula2')">÷</el-link>
+                </div>
+                <div>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBracketsMulti(conditionIndex, '(', false, 'formula2')">(</el-link>
+                  <el-link :underline="false" type="primary" class="mg-r-10" @click="addBracketsMulti(conditionIndex, ')', true, 'formula2')">)</el-link>
+                  <el-link :underline="false" type="primary" @click="addTextMulti(conditionIndex, 'formula2')">输入值</el-link>
+                </div>
+              </div>
+              <draggable v-model="conditionList[conditionIndex].formula2">
+                <formula-item 
+                  v-for="(item,index) in conditionList[conditionIndex].formula2" :key="index" 
+                  :item="item" @click="obj => eleFormulaClickMulti(obj, index, conditionIndex, 'formula2')"
+                >
+                </formula-item>
+              </draggable>
             </div>
           </div>
-          <draggable v-model="selectEleFormula2">
-            <formula-item 
-              v-for="(item,index) in selectEleFormula2" :key="index" 
-              :item="item" @click="obj => eleFormulaClick(obj,index)"
-            >
-            </formula-item>
-          </draggable>
+        
         </div>
       </div>
-    </div>
+     </template>
 
     <el-dialog title="输入值" :visible.sync="inputVisible" width="300px" append-to-body :close-on-click-modal="false">
       <el-input v-model="inputText" placeholder="请输入内容"></el-input>
@@ -137,13 +268,12 @@
 import VueTagsInput from '@johmun/vue-tags-input';
 import formulaItem from "../formulaItem";
 import draggable from 'vuedraggable';
+import { template } from '@antv/g2plot/lib/utils';
 export default {
   name: "ifelse",
   components: {
     draggable,
-
     VueTagsInput,
-
     formulaItem,
   },
   props: {
@@ -177,6 +307,12 @@ export default {
 
       curFocusIndex:0,//当前在哪个输入框
       curSeleEleIndex:-1,//公式文字里面选中的元素索引
+      // 多条件下的焦点信息
+      multiFocus: {
+        conditionIndex: -1,
+        innerIndex: -1,
+        field: ''
+      },
       symbolReg:/(\+|-|\*|\/)(.+)/,
       inputVisible:false,
       inputText:'',
@@ -191,12 +327,31 @@ export default {
       tags4: [],
       tag5: '',
       tags5: [],
-      symbol1:''
+      symbol1:'',
+      // 重构多条件列表结构,包含独立的tags和公式
+      conditionList:[
+        {
+          innerList: [
+            {
+              tag2: '',
+              tags2: [],
+              tag3: '',
+              tags3: [],
+              symbol1: '',
+              logicSymbol: 'and'
+            }
+          ],
+          tag4: '',
+          tags4: [],
+          tag5: '',
+          tags5: [],
+          formula1: [],
+          formula2: []
+        }
+      ]//多条件的条件列表
     }
   },
   mounted(){
-    //console.log(this.formulainfo.arguments[0])
-    //console.log(this.formulainfo.arguments[1])
     let args0 = this.formulainfo.arguments[0];
     let args1 = this.formulainfo.arguments[1];
     let args2 = this.formulainfo.arguments[2];
@@ -210,6 +365,11 @@ export default {
       this.result = '2';
       this.initTFFormula(args1,args2)
     }
+
+    // 初始化多条件数据
+    if (this.symbol === 'more' && this.formulainfo.arguments[0] && Array.isArray(this.formulainfo.arguments[0])) {
+      this.initMultiConditions(this.formulainfo.arguments[0]);
+    }
   },
   methods:{
     showSelectEle(){
@@ -246,6 +406,27 @@ export default {
       }
     },
 
+    // 多条件下的输入框失焦处理
+    inputBlurMulti(conditionIndex, innerIndex, field) {
+      const conditionItem = this.conditionList[conditionIndex];
+      let target;
+      
+      if (innerIndex !== null) {
+        target = conditionItem.innerList[innerIndex];
+      } else {
+        target = conditionItem;
+      }
+      
+      if (target[field]) {
+        if (target[`tags${field.charAt(3)}`] && target[`tags${field.charAt(3)}`][0]) {
+          this.$emit('uncheck', target[`tags${field.charAt(3)}`][0].id);
+        }
+        target[`tags${field.charAt(3)}`] = [];
+      }
+      
+      this.setConditionMulti(conditionIndex, innerIndex);
+    },
+
     addText(){
       this.inputVisible = true;
     },
@@ -361,6 +542,88 @@ export default {
       this.setTF();
     },
 
+    // 多条件下添加元素到公式
+    eleAddFormulaHandleMulti(ele, conditionIndex, formulaType) {
+      const eleFormula = this.conditionList[conditionIndex][formulaType];
+      
+      if(ele.tableElementKey){
+        //元素的简单语法判断
+        if(eleFormula.length != 0){
+          let lastEle = eleFormula[eleFormula.length-1];
+          if(lastEle.type == 'Element'){
+            this.$message({ type: "warning", message: "元素无法连续出现在元素后面" });
+            return;
+          }
+          if(lastEle.type == 'Text'){
+            this.$message({ type: "warning", message: "元素无法连续出现在输入值后面" });
+            return;
+          }
+          if(lastEle.type == 'Brackets' && lastEle.name == ')'){
+            this.$message({ type: "warning", message: "元素无法连续出现在右括号后面" });
+            return;
+          }
+        }
+
+        eleFormula.push({
+          type:'Element',
+          name:ele.eName,
+          id:ele.id,
+          selected:false,
+          tableElementKey:ele.tableElementKey,
+          children:[],
+        })
+      }else if(ele.template && ele.example){
+        //运算符号的简单语法判断
+        if(eleFormula.length == 0){
+          this.$message({ type: "warning", message: "公式开头不能是运算符号" });
+          return;
+        }else{
+          let lastEle = eleFormula[eleFormula.length-1];
+          if(lastEle.type == 'Operator'){
+            this.$message({ type: "warning", message: "运算符号无法连续出现在运算符号后面" });
+            return;
+          }
+          if(lastEle.type == 'Brackets' && lastEle.name == '('){
+            this.$message({ type: "warning", message: "运算符号无法连续出现在左括号后面" });
+            return;
+          }
+        }
+
+        eleFormula.push({
+          type:'Operator',
+          name:this.symbolReg.exec(ele.name)[1],
+          selected:false,
+          template:ele.template
+        })
+      }else if(ele.type == 'Brackets'){
+        //括号
+        eleFormula.splice(ele.selectIndex,0,{
+          type:'Brackets',
+          name:ele.name,
+          selected:false,
+        })
+      }else if(ele.type == 'Text'){
+        //输入值
+        eleFormula.push({
+          type:'Text',
+          name:ele.name,
+          selected:false,
+        })
+      }else if(ele.k){
+        //节点参数
+        eleFormula.push({
+          type:'ParamData',
+          name:ele.name,
+          selected:false,
+          id:ele.id,
+          v:ele.v,
+          k:ele.k,
+        })
+      }
+
+      this.setTFMulti(conditionIndex);
+    },
+
     //点选公式中的元素
     eleFormulaClick({selected,item},index){
       let eleFormula;
@@ -383,11 +646,31 @@ export default {
       }
     },
 
+    // 多条件下点选公式中的元素
+    eleFormulaClickMulti({selected,item}, index, conditionIndex, formulaType) {
+      const eleFormula = this.conditionList[conditionIndex][formulaType];
+      
+      if(selected){
+        eleFormula.forEach((ele)=>{
+          ele.selected = false;
+        })
+        item.selected = true;
+        this.curSeleEleIndex = index;
+      }else{
+        this.curSeleEleIndex = -1;
+      }
+    },
+
     //快捷添加运算符号
     addOperator(operator){
       this.eleAddFormulaHandle(this.formulamap[operator]);
     },
 
+    // 多条件下快捷添加运算符号
+    addOperatorMulti(conditionIndex, operator, formulaType) {
+      this.eleAddFormulaHandleMulti(this.formulamap[operator], conditionIndex, formulaType);
+    },
+
     //删除点选公式中的元素
     removeSelect(){
       let eleFormula;
@@ -408,6 +691,18 @@ export default {
       this.setTF();
     },
 
+    // 多条件下删除点选公式中的元素
+    removeSelectMulti(conditionIndex, formulaType) {
+      const eleFormula = this.conditionList[conditionIndex][formulaType];
+      
+      if(this.curSeleEleIndex > -1){
+        eleFormula.splice(this.curSeleEleIndex,1);
+        this.curSeleEleIndex = -1;
+      }
+
+      this.setTFMulti(conditionIndex);
+    },
+
     //添加括号
     addBrackets(text,type){
       //type 是true 表示在元素右边插入
@@ -424,6 +719,22 @@ export default {
       }
     },
 
+    // 多条件下添加括号
+    addBracketsMulti(conditionIndex, text, type, formulaType) {
+      if(this.curSeleEleIndex == Number(this.curSeleEleIndex)){
+        this.eleAddFormulaHandleMulti({
+          type:'Brackets',
+          name:text,
+          selectIndex:type?Number(this.curSeleEleIndex)+1:this.curSeleEleIndex
+        }, conditionIndex, formulaType);
+        
+        //如果在左边插入index要增1
+        if(!type){
+          this.curSeleEleIndex = Number(this.curSeleEleIndex)+1;
+        }
+      }
+    },
+
     //添加输入值
     addTextHandle(){
       let eleFormula;
@@ -431,6 +742,41 @@ export default {
         eleFormula = this.selectEleFormula;
       }else if(this.curFocusIndex == 7){
         eleFormula = this.selectEleFormula2;
+      }else if(this.symbol === 'more' && this.multiFocus.conditionIndex !== -1 && 
+              (this.multiFocus.field === 'formula1' || this.multiFocus.field === 'formula2')){
+        // 多条件下处理
+        eleFormula = this.conditionList[this.multiFocus.conditionIndex][this.multiFocus.field];
+        
+        //简单语法判断
+        if(eleFormula.length != 0){
+          let lastEle = eleFormula[eleFormula.length-1];
+          if(lastEle.type == 'Element'){
+            this.$message({ type: "warning", message: "输入值无法连续出现在元素后面" });
+            this.inputVisible = false;
+            return;
+          }
+          if(lastEle.type == 'Text'){
+            this.$message({ type: "warning", message: "输入值无法连续出现在输入值后面" });
+            this.inputVisible = false;
+            return;
+          }
+          if(lastEle.type == 'Brackets' && lastEle.name == ')'){
+            this.$message({ type: "warning", message: "输入值无法连续出现在右括号后面" });
+            this.inputVisible = false;
+            return;
+          }
+        }
+
+        eleFormula.push({
+          type:'Text',
+          name:this.inputText,
+          selected:false,
+        });
+        
+        this.setTFMulti(this.multiFocus.conditionIndex);
+        this.inputVisible = false;
+        this.inputText = '';
+        return;
       }else{
         return;
       }
@@ -464,11 +810,80 @@ export default {
       this.eleAddFormulaHandle({
         type:'Text',
         name:this.inputText
-      })
+      });
       this.inputVisible = false;
+      this.inputText = '';
+    },
+
+    // 多条件下添加输入值
+    addTextMulti(conditionIndex, formulaType) {
+      this.multiFocus.conditionIndex = conditionIndex;
+      this.multiFocus.field = formulaType;
+      this.inputVisible = true;
     },
 
     setELe(ele){
+      // 处理多条件情况
+      if (this.symbol === 'more' && this.multiFocus.conditionIndex !== -1) {
+        const { conditionIndex, innerIndex, field } = this.multiFocus;
+        const conditionItem = this.conditionList[conditionIndex];
+        let target;
+        
+        // 确定目标对象
+        if (innerIndex !== null) {
+          target = conditionItem.innerList[innerIndex];
+        } else {
+          target = conditionItem;
+        }
+        
+        // 处理公式类型的字段
+        if (field === 'formula1' || field === 'formula2') {
+          this.eleAddFormulaHandleMulti(ele, conditionIndex, field);
+          return;
+        }
+        
+        // 处理标签类型的字段
+        if (target && field) {
+          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 (target[`tags${field.charAt(3)}`] && target[`tags${field.charAt(3)}`][0]) {
+            this.$emit('uncheck', target[`tags${field.charAt(3)}`][0].id);
+          }
+          
+          // 设置新选择的元素
+          obj.text = obj.name;
+          obj.style = 'background-color: #409EFF';
+          target[`tags${field.charAt(3)}`] = [obj];
+          target[field] = '';
+          
+          // 更新条件
+          this.setConditionMulti(conditionIndex, innerIndex);
+        }
+        return;
+      }
+      
+      // 原逻辑处理单条件情况
       if(this.curFocusIndex){
         let obj = {};
         if(ele.k){
@@ -509,12 +924,26 @@ export default {
           }else{
             this.setCondition();
           }
-
-          //this.curFocusIndex = 0;
         }
       }
     },
 
+    // 设置多条件下的焦点
+    setMultiFocus(conditionIndex, innerIndex, field) {
+      this.multiFocus = {
+        conditionIndex,
+        innerIndex,
+        field
+      };
+    },
+
+    // 检查是否是当前焦点
+    isCurFocus(conditionIndex, innerIndex, field) {
+      return this.multiFocus.conditionIndex === conditionIndex &&
+             this.multiFocus.innerIndex === innerIndex &&
+             this.multiFocus.field === field;
+    },
+
     //初始化真假值判断if(xxx)部分
     initCondition(args0){
       if(args0){
@@ -595,6 +1024,41 @@ export default {
       }
     },
 
+    // 初始化多条件数据
+    initMultiConditions(args0) {
+      if (Array.isArray(args0)) {
+        this.conditionList = args0.map(condition => {
+          // 处理内部条件列表
+          const innerList = Array.isArray(condition.innerList) ? 
+            condition.innerList.map(inner => ({
+              tag2: inner.tag2 || '',
+              tags2: inner.tags2 || [],
+              tag3: inner.tag3 || '',
+              tags3: inner.tags3 || [],
+              symbol1: inner.symbol1 || '',
+              logicSymbol: inner.logicSymbol || 'and'
+            })) : [{
+              tag2: '',
+              tags2: [],
+              tag3: '',
+              tags3: [],
+              symbol1: '',
+              logicSymbol: 'and'
+            }];
+          
+          return {
+            innerList,
+            tag4: condition.tag4 || '',
+            tags4: condition.tags4 || [],
+            tag5: condition.tag5 || '',
+            tags5: condition.tags5 || [],
+            formula1: condition.formula1 || [],
+            formula2: condition.formula2 || []
+          };
+        });
+      }
+    },
+
     //写入参数真假值判断if(xxx)部分
     setCondition(){
       if(this.symbol == '<&&<' || this.symbol == '<=&&<='){
@@ -621,7 +1085,7 @@ export default {
           arr[6] = this.tags3[0];
         }
         this.formulainfo.arguments[0] = arr;
-      }else{
+      }else if(this.symbol !== 'more'){
         let arr = new Array(3).fill('');
         if(this.tags2.length == 0){
           arr[0] = this.tag2;
@@ -635,8 +1099,30 @@ export default {
           arr[2] = this.tags3[0];
         }
         this.formulainfo.arguments[0] = arr;
+      } else {
+        // 处理多条件情况
+        this.formulainfo.arguments[0] = this.conditionList.map(condition => ({
+          innerList: condition.innerList.map(inner => ({
+            tag2: inner.tag2,
+            tags2: inner.tags2,
+            tag3: inner.tag3,
+            tags3: inner.tags3,
+            symbol1: inner.symbol1,
+            logicSymbol: inner.logicSymbol
+          })),
+          tag4: condition.tag4,
+          tags4: condition.tags4,
+          tag5: condition.tag5,
+          tags5: condition.tags5,
+          formula1: condition.formula1,
+          formula2: condition.formula2
+        }));
       }
-      //console.log(this.formulainfo.arguments[0])
+    },
+
+    // 多条件下设置条件
+    setConditionMulti(conditionIndex, innerIndex) {
+      this.setCondition();
     },
 
     //初始化输入框的真假值
@@ -711,23 +1197,92 @@ export default {
 
     //写入参数真假值
     setTF(){
-      if(this.result == 1){
-        if(this.tags4.length == 0){
-          this.formulainfo.arguments[1] = this.tag4;
-        }else{
-          this.formulainfo.arguments[1] = this.tags4[0];
+      if(this.symbol !== 'more') {
+        if(this.result == 1){
+          if(this.tags4.length == 0){
+            this.formulainfo.arguments[1] = this.tag4;
+          }else{
+            this.formulainfo.arguments[1] = this.tags4[0];
+          }
+          if(this.tags5.length == 0){
+            this.formulainfo.arguments[2] = this.tag5;
+          }else{
+            this.formulainfo.arguments[2] = this.tags5[0];
+          }
+        }else if(this.result == 2){
+          this.formulainfo.arguments[1] = this.selectEleFormula;
+          this.formulainfo.arguments[2] = this.selectEleFormula2;
         }
-        if(this.tags5.length == 0){
-          this.formulainfo.arguments[2] = this.tag5;
-        }else{
-          this.formulainfo.arguments[2] = this.tags5[0];
+      }
+      // 多条件情况在setCondition中处理
+    },
+
+    // 多条件下设置真假值
+    setTFMulti(conditionIndex) {
+      this.setCondition();
+    },
+
+    //添加条件
+    addCondition(index){ 
+      // 复制最后一个条件的结构作为新条件的基础
+      const newCondition = JSON.parse(JSON.stringify(this.conditionList[index]));
+      // 清空值但保留结构
+      newCondition.innerList = [
+        {
+          tag2: '',
+          tags2: [],
+          tag3: '',
+          tags3: [],
+          symbol1: '',
+          logicSymbol: 'and'
         }
-      }else if(this.result == 2){
-        this.formulainfo.arguments[1] = this.selectEleFormula;
-        this.formulainfo.arguments[2] = this.selectEleFormula2;
+      ];
+      newCondition.tag4 = '';
+      newCondition.tags4 = [];
+      newCondition.tag5 = '';
+      newCondition.tags5 = [];
+      newCondition.formula1 = [];
+      newCondition.formula2 = [];
+      
+      this.conditionList.splice(index + 1, 0, newCondition);
+      this.setCondition();
+    },
+
+    //删除条件
+    removeCondition(index){
+      if (this.conditionList.length > 1) {
+        this.conditionList.splice(index,1);
+        this.setCondition();
+      } else {
+        this.$message({ type: "warning", message: "至少保留一个条件" });
       }
     },
 
+    // 添加内部条件项
+    addConditionItem(conditionIndex, innerIndex) {
+      const newInnerItem = {
+        tag2: '',
+        tags2: [],
+        tag3: '',
+        tags3: [],
+        symbol1: '',
+        logicSymbol: 'and'
+      };
+      
+      this.conditionList[conditionIndex].innerList.splice(innerIndex + 1, 0, newInnerItem);
+      this.setCondition();
+    },
+
+    // 删除内部条件项
+    removeConditionItem(conditionIndex, innerIndex) {
+      if (this.conditionList[conditionIndex].innerList.length > 1) {
+        this.conditionList[conditionIndex].innerList.splice(innerIndex, 1);
+        this.setCondition();
+      } else {
+        this.$message({ type: "warning", message: "至少保留一个条件项" });
+      }
+    }
+
   }
 }
 </script>
@@ -745,4 +1300,14 @@ export default {
     font-size: 20px;
     margin-right: 10px;
   }
-</style>
+  .icon-btn{
+    color: #409EFF;
+    cursor: 409EFF;
+  }
+  .border-green {
+    border-color: green !important;
+  }
+  .border-grey {
+    border: 1px solid #ddd;
+  }
+</style>

+ 4 - 1
src/views/formula/edit.vue

@@ -439,6 +439,7 @@ import datasReme from "./component/funComponent/datasReme"
 import datasGetlist from "./component/funComponent/datasGetlist"
 import datasJoin from "./component/funComponent/datasJoin"
 import ifelse from "./component/funComponent/ifelse"
+import dataChange from "./component/funComponent/dataChange"
 
 import deviationRange from "./component/deviationRange/deviationRange"
 import {rangeToString} from "./component/deviationRange/rangeToString"
@@ -465,7 +466,8 @@ export default {
     datasJoin,
     ifelse,
  
-    deviationRange
+    deviationRange,
+    dataChange
   },
   props: {
     wbsid:{
@@ -561,6 +563,7 @@ export default {
         '下标取数':'datas-getlist',
         // '数组转字符串':"datas-join",
         '判断':'ifelse',
+        '数据自变':'data-change'
       
       },
 

+ 1 - 1
src/views/manager/projectinfo/detail.vue

@@ -814,7 +814,7 @@ export default {
         1,
         1000,
         { deptId:'1536982621165592577'},
-        this.userInfo.deptId
+     
       ).then(res => {
        
         

+ 4 - 1
src/views/manager/projectinfo/editElement/editElement.vue

@@ -34,7 +34,10 @@
               </div>
             </div>
       
-            <div class="tihuan"  style="font-weight: bold;">替换为:</div>
+            <div class="tihuan"  style="font-weight: bold;">替换为:
+              <span style="color: orange;">选择下方“未进行匹配的元素字段”可快速选择元素</span>
+
+            </div>
         
            <el-select style="width:100%;" v-model="value" filterable placeholder="输入元素名称搜索">
               <el-option v-for="item in options" :key="item.id" :label="item.eName" :value="item.id">

+ 23 - 4
src/views/manager/projectinfo/list.vue

@@ -217,6 +217,7 @@
               <el-table-column
                 prop="contractNumber"
                 label="合同段编号"
+                 width="140px"
               >
               </el-table-column>
               <el-table-column
@@ -239,12 +240,12 @@
                     :key="key"
                     :content="item.contractName"
                     placement="top"
-                    :disabled="true"
+                   
                   >
                     <el-tag  
                       size="small" 
                       :type="item.contractType===1?'warning':item.contractType===2?'primary':'success'"   
-                      class="custom-ellipse-tag1 ellipsis-tag1"
+                      class="custom-ellipse-tag2 ellipsis-tag1"
                       
                     >
                       {{item.contractName}}
@@ -429,8 +430,8 @@ export default {
        const typeToLabelMap = {
         1: '质检',
         2: '试验',
-        3: '日志',
-        4: '计量',
+        3: '计量',
+        4: '日志',
         5: '征拆',
     };
       let tagItems = [];
@@ -975,6 +976,24 @@ export default {
     white-space: nowrap;
   }
 }
+.custom-ellipse-tag2 {
+  max-width: 280px; /* 根据需要调整最大宽度 */
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  margin-right: 4px;
+     border-radius: 15px !important;
+  padding: 8px 8px !important;
+  margin-right: 8px !important;
+  margin-bottom: 4px;
+  height: 24px;
+  line-height: 24px;
+  display: inline-flex;
+  align-items: center;
+
+  border: none !important;
+}
+
 /* 确保 tooltip 的最大宽度 */
 .el-tooltip__popper {
   max-width: 300px;

+ 108 - 63
src/views/manager/projectinfo/tree.vue

@@ -99,7 +99,8 @@
                 >搜索</el-button
               >
               <el-tooltip content="查询工序节点无内业资料类型" placement="top">
-                <el-button type="success" @click="filterSearchClick"  v-if="isNodeType" size="mini">筛选</el-button>
+                <el-button type="success" @click="filterSearchClick"  v-if="isNodeType&&!filterByType" size="mini">筛选</el-button>
+                <el-button type="success" @click="filterSearchClickCancel" v-else size="mini">取消筛选</el-button>
               </el-tooltip>
               <el-button
                 v-if="isNodeType"
@@ -271,7 +272,7 @@
           <template v-if="leftType == 5">
             <div class="mg-b-10" v-if='isNodeType'>节点信息</div>
             <div v-if="isNodeType">
-              <el-table :data="tableData" border style="width: 100%">
+              <el-table :data="tableData" border style="width: 100%" v-if="wbsType!==2">
                 <el-table-column
                   align="center"
                   prop="nodeName"
@@ -308,6 +309,47 @@
                   prop="updateTime"
                   label="修改时间"
                 ></el-table-column>
+                <el-table-column label="操作"   width="150"   >
+                  <template slot-scope="scope">
+                    <el-link
+                      size="mini"
+                      type="primary"
+                      class="mg-r-10"
+                      @click="editNodeHandle"
+                      >编辑
+                    </el-link>
+                  <el-link
+                      size="mini"
+                      type="primary"
+                      >节点编辑台账
+                    </el-link>
+                  
+                   
+                  </template>
+                </el-table-column>
+              </el-table>
+                 <el-table :data="tableData" border style="width: 100%" v-else>
+                <el-table-column
+                  align="center"
+                  prop="nodeName"
+                  label="当前节点"
+                ></el-table-column>
+                <el-table-column
+                  align="center"
+                  prop="nodeType"
+                  :formatter="formatCat"
+                  label="节点类型"
+                  width="180"
+                ></el-table-column>
+                <el-table-column
+                  align="center"
+                  prop="uniqueCode"
+                  label="参数掩码"
+                ></el-table-column>
+                <el-table-column
+               
+       
+        
                 <el-table-column label="操作"   width="150"   >
                   <template slot-scope="scope">
                     <el-link
@@ -2445,46 +2487,58 @@
                     />
                   </el-select>
                 </el-form-item>
-                <el-form-item label="内业资料类型">
-                  <el-select v-model="filterForm.majorDataType" placeholder="请选择内业资料类型" clearable>
-                    <el-option
-                      v-for="item in majorDataTypeList" 
-                      :key="item.dictKey"
-                      :label="item.dictValue"
-                      :value="item.dictKey"
-                    />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="标准分类">
-                  <el-select v-model="filterForm.className" placeholder="请选择标准分类" clearable>
-                    <el-option
-                      v-for="item in standardTypeOptions"
-                      :key="item.value"
-                       :label="item.dictValue"
-                      :value="item.dictKey"
-                    />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="单元名称">
-                  <el-select v-model="filterForm.unitName" placeholder="请选择单元名称" clearable>
-                    <el-option
-                      v-for="item in unitOptions"
-                      :key="item.value" 
-                      :label="item.label"
-                      :value="item.value"
-                    />
-                  </el-select>
-                </el-form-item>
-                 <el-form-item
-                  label="是否新增中隐藏"
-              
-               
-                >
-                  <el-radio-group v-model="filterForm.isAddConceal" size="small">
-                    <el-radio :label="1" border>是</el-radio>
-                    <el-radio :label="0" border>否</el-radio>
-                  </el-radio-group>
-                </el-form-item>
+                <template v-if="wbsType!==2">
+                                  <el-form-item label="内业资料类型">
+                                      <el-select v-model="filterForm.majorDataType" placeholder="请选择内业资料类型" clearable>
+                                        <el-option
+                                          v-for="item in majorDataTypeList" 
+                                          :key="item.dictKey"
+                                          :label="item.dictValue"
+                                          :value="item.dictKey"
+                                        />
+                                      </el-select>
+                                    </el-form-item>
+                                    <el-form-item label="标准分类">
+                                      <el-select v-model="filterForm.className" placeholder="请选择标准分类" clearable>
+                                        <el-option
+                                          v-for="item in standardTypeOptions"
+                                          :key="item.value"
+                                          :label="item.dictValue"
+                                          :value="item.dictKey"
+                                        />
+                                      </el-select>
+                                    </el-form-item>
+                                    <el-form-item label="单元名称">
+                                      <el-select v-model="filterForm.unitName" placeholder="请选择单元名称" clearable>
+                                        <el-option
+                                          v-for="item in unitOptions"
+                                          :key="item.value" 
+                                          :label="item.label"
+                                          :value="item.value"
+                                        />
+                                      </el-select>
+                                    </el-form-item>
+                                    <el-form-item
+                                      label="是否新增中隐藏"
+                                  
+                                  
+                                    >
+                                      <el-radio-group v-model="filterForm.isAddConceal" size="small">
+                                        <el-radio :label="1" border>是</el-radio>
+                                        <el-radio :label="0" border>否</el-radio>
+                                      </el-radio-group>
+                                    </el-form-item>
+                </template>
+                <template v-else>
+                   <el-form-item label="参数掩码"> 
+                    <el-input
+                      v-model="filterForm.uniqueCode"
+                      size="small"
+                      placeholder="请输入内容"
+                    ></el-input>
+                   </el-form-item>
+                    
+                </template>
               </el-form>
 
               <div slot="footer" class="dialog-footer">
@@ -2588,6 +2642,7 @@ export default {
 
     return {
       isNodeType:true,
+      filterByType: false,
       isRestoringSelection: false,
 
       expandedKeysType: [],
@@ -3232,6 +3287,8 @@ export default {
           message: "修改成功!",
         });
       });
+      this.getNodeDetail(this.curTreeData, this.curTreeNode);
+
     },
     toSplit(val) {
       return val ? String(val).split(",") : "";
@@ -3895,29 +3952,15 @@ clearSearch1() {
 
     filterSearchClick(){
       this.filterDialog=true;
-  
-    
-        //this.isSearch = true;
-      //   this.searchtreeLoad = true;
-      //   getQueryValueByNodeType({
-      //     queryValue: this.filterText,
-      //     wbsId: this.id,
-      //     projectId: this.projectid,
-      //   }).then((res) => {
-      //     let arr = [];
-      //     if (Array.isArray(res.data.data)) {
-      //       arr = res.data.data;
-      //       this.searchTreeData = arr;
-      //     } else {
-      //       this.searchTreeData = [];
-      //     }
-      //   });
-      
-
-      // this.searchtreeLoad = false;
+     
+    },
+    filterSearchClickCancel(){
+     
+      this.filterByType=false
+      this.searchTreeClick()
     },
     handleCancel() {
-      
+        this.filterByType=false
       this.filterDialog = false;
     },
     handleConfirm() {
@@ -3930,10 +3973,12 @@ clearSearch1() {
           projectId: this.projectid,
           
         }).then((res) => {
+             this.filterByType=true
           let arr = [];
           if (Array.isArray(res.data.data)) {
             arr = res.data.data;
             this.searchTreeData = arr;
+          
           } else {
             this.searchTreeData = [];
           }

+ 4 - 3
src/views/manager/wbsinfo.vue

@@ -320,7 +320,8 @@ export default {
       getProjectListPage({
         current:1,
         size:999,
-        ...this.searchForm
+        isCollect:0,
+    
 
       }).then((res) => {
         this.projectList = res.data.data.records;
@@ -330,8 +331,8 @@ export default {
        const typeToLabelMap = {
         1: '质检',
         2: '试验',
-        3: '日志',
-        4: '计量',
+        3: '计量',
+        4: '日志',
         5: '征拆',
         6: '底层节点',