|
@@ -98,7 +98,7 @@
|
|
<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(')',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('[',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(']',true)">】</el-link>
|
|
- <el-link :underline="false" type="primary">输入值</el-link>
|
|
|
|
|
|
+ <el-link :underline="false" type="primary" @click="addText">输入值</el-link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="border-grey sele-ele-box">
|
|
<div class="border-grey sele-ele-box">
|
|
@@ -148,19 +148,27 @@
|
|
</div>
|
|
</div>
|
|
<div class="text-align-c">
|
|
<div class="text-align-c">
|
|
<el-button type="warning">取消</el-button>
|
|
<el-button type="warning">取消</el-button>
|
|
- <el-button type="primary">保存</el-button>
|
|
|
|
|
|
+ <el-button type="primary" @click="saveFormula">保存</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="!operationVisible && showFunDetail">
|
|
<div v-if="!operationVisible && showFunDetail">
|
|
- <el-tabs v-model="actiFunIndex">
|
|
|
|
|
|
+ <el-tabs v-model="actiFunIndex" closable @tab-remove="removeFun" :before-leave="funLeave">
|
|
<el-tab-pane v-for="(item,index) in equationSelectEle.children" :key="item.name" :label="item.name" :name="index.toString()">
|
|
<el-tab-pane v-for="(item,index) in equationSelectEle.children" :key="item.name" :label="item.name" :name="index.toString()">
|
|
- <formula-template :formulainfo="item">
|
|
|
|
|
|
+ <formula-template :formulainfo="item" :curele="equationSelectEle" @sele-ele-handle="showChooseEle">
|
|
|
|
|
|
</formula-template>
|
|
</formula-template>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</el-tabs>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
+ <el-dialog title="输入值" :visible.sync="inputVisible" width="300px" append-to-body :close-on-click-modal="false">
|
|
|
|
+ <el-input v-model="inputText" placeholder="请输入内容"></el-input>
|
|
|
|
+ <div class="text-align-c mg-t-10">
|
|
|
|
+ <el-button size="small" @click="addTextHandle" type="primary">保存</el-button>
|
|
|
|
+ <el-button size="small" @click="inputVisible = false">取消</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+
|
|
<el-dialog title="选择元素" :visible.sync="chooseEleVisible" width="800px" append-to-body :close-on-click-modal="false">
|
|
<el-dialog title="选择元素" :visible.sync="chooseEleVisible" width="800px" append-to-body :close-on-click-modal="false">
|
|
<div>
|
|
<div>
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
@@ -216,8 +224,11 @@ import { findContractByProjectId } from "@/api/manager/contractinfo";
|
|
import { getDetail as getEleDeatil } from "@/api/manager/wbsformelement";
|
|
import { getDetail as getEleDeatil } from "@/api/manager/wbsformelement";
|
|
import { getTypeMap } from "@/api/formula/formula";
|
|
import { getTypeMap } from "@/api/formula/formula";
|
|
import {mapGetters} from "vuex";
|
|
import {mapGetters} from "vuex";
|
|
|
|
+
|
|
import formulaItem from "./component/formulaItem"
|
|
import formulaItem from "./component/formulaItem"
|
|
import formulaTemplate from "./component/formulaTemplate"
|
|
import formulaTemplate from "./component/formulaTemplate"
|
|
|
|
+
|
|
|
|
+import {formulaArrayToString} from "./formulaArrayToString"
|
|
export default {
|
|
export default {
|
|
components: {
|
|
components: {
|
|
formulaItem,
|
|
formulaItem,
|
|
@@ -252,6 +263,8 @@ export default {
|
|
eleList:[],
|
|
eleList:[],
|
|
selectEleFormula:[],
|
|
selectEleFormula:[],
|
|
curSeleEleIndex:0,//公式文字里面选中的元素索引
|
|
curSeleEleIndex:0,//公式文字里面选中的元素索引
|
|
|
|
+ inputVisible:false,//输入弹窗
|
|
|
|
+ inputText:"",//输入值
|
|
|
|
|
|
resultFormula:[],//=等号左边的数组
|
|
resultFormula:[],//=等号左边的数组
|
|
processFormula:[],//=等号右边的数组
|
|
processFormula:[],//=等号右边的数组
|
|
@@ -259,6 +272,7 @@ export default {
|
|
processSelectIndex:0,//选中的索引
|
|
processSelectIndex:0,//选中的索引
|
|
actiFunIndex:0,//元素下挂载的计算式的索引
|
|
actiFunIndex:0,//元素下挂载的计算式的索引
|
|
chooseEleVisible:false,//选择元素弹窗
|
|
chooseEleVisible:false,//选择元素弹窗
|
|
|
|
+ argumenObj:{},
|
|
|
|
|
|
symbolReg:/(\+|-|\*|\/)(.+)/,
|
|
symbolReg:/(\+|-|\*|\/)(.+)/,
|
|
};
|
|
};
|
|
@@ -406,6 +420,13 @@ export default {
|
|
name:ele.name,
|
|
name:ele.name,
|
|
selected:false,
|
|
selected:false,
|
|
})
|
|
})
|
|
|
|
+ }else if(ele.type == 'Text'){
|
|
|
|
+ //输入值
|
|
|
|
+ this.selectEleFormula.push({
|
|
|
|
+ type:'Text',
|
|
|
|
+ name:ele.name,
|
|
|
|
+ selected:false,
|
|
|
|
+ })
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
@@ -425,6 +446,19 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+
|
|
|
|
+ addText(){
|
|
|
|
+ this.inputVisible = true;
|
|
|
|
+ },
|
|
|
|
+ //添加输入值
|
|
|
|
+ addTextHandle(){
|
|
|
|
+ this.eleAddFormulaHandle({
|
|
|
|
+ type:'Text',
|
|
|
|
+ name:this.inputText
|
|
|
|
+ })
|
|
|
|
+ this.inputVisible = false;
|
|
|
|
+ },
|
|
|
|
+
|
|
//勾选元素
|
|
//勾选元素
|
|
eleCheckHandle(checked,item){
|
|
eleCheckHandle(checked,item){
|
|
if(checked){
|
|
if(checked){
|
|
@@ -491,12 +525,89 @@ export default {
|
|
let obj = Object.assign({}, expression);
|
|
let obj = Object.assign({}, expression);
|
|
obj.template = JSON.parse(obj.template);
|
|
obj.template = JSON.parse(obj.template);
|
|
obj.arguments = new Array(obj.template.args.length);
|
|
obj.arguments = new Array(obj.template.args.length);
|
|
|
|
+ obj.arguments[0] = {
|
|
|
|
+ id:this.equationSelectEle.id,
|
|
|
|
+ name:this.equationSelectEle.name,
|
|
|
|
+ selected:false,
|
|
|
|
+ tableElementKey:this.equationSelectEle.tableElementKey,
|
|
|
|
+ type:"Element",
|
|
|
|
+ };
|
|
this.equationSelectEle.children.push(obj);
|
|
this.equationSelectEle.children.push(obj);
|
|
},
|
|
},
|
|
|
|
|
|
//选择元素
|
|
//选择元素
|
|
chooseEleHandle(){
|
|
chooseEleHandle(){
|
|
|
|
+ for (let i = 0; i < this.eleList.length; i++) {
|
|
|
|
+ if (this.eleList[i].checked) {
|
|
|
|
+ let ele = this.eleList[i]
|
|
|
|
+ let 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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //显示选择元素弹窗
|
|
|
|
+ showChooseEle(argumenObj){
|
|
|
|
+ this.argumenObj = argumenObj;
|
|
|
|
+ this.chooseEleVisible = true;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //移除挂载的函数
|
|
|
|
+ removeFun(name){
|
|
|
|
+ //console.log(name)
|
|
|
|
+ this.equationSelectEle.children.splice(Number(name), 1);
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //切换公式tab标签
|
|
|
|
+ funLeave(activeName, oldActiveName){
|
|
|
|
+ if(oldActiveName){
|
|
|
|
+ let formula = this.equationSelectEle.children[Number(oldActiveName)];
|
|
|
|
+ if(formula){
|
|
|
|
+ return this.checkFormulaLegal(formula);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ //检测公式合法
|
|
|
|
+ checkFormulaLegal(formula){
|
|
|
|
+ if(!formula.arguments){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //当前选中的元素
|
|
|
|
+ let curEle = this.equationSelectEle;
|
|
|
|
+ let isIn = false;
|
|
|
|
+ for (let i = 0; i < formula.arguments.length; i++) {
|
|
|
|
+ if(formula.arguments[i] && formula.arguments[i].id ==curEle.id){
|
|
|
|
+ isIn = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!isIn){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "参数必须有一个值是当前元素"
|
|
|
|
+ });
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ },
|
|
|
|
|
|
|
|
+ //保存公式
|
|
|
|
+ saveFormula(){
|
|
|
|
+ let text = formulaArrayToString(this.processFormula,this.resultFormula);
|
|
|
|
+ console.log(text);
|
|
},
|
|
},
|
|
|
|
|
|
getNodeDetail(data) {
|
|
getNodeDetail(data) {
|