|
@@ -9,6 +9,7 @@
|
|
|
<el-input-number
|
|
|
v-model="retainNum"
|
|
|
:step="1"
|
|
|
+ :min="0" :max="5"
|
|
|
:disabled="!isRetain"
|
|
|
size="small"
|
|
|
></el-input-number>
|
|
@@ -94,6 +95,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="16" class="h-100p flex flex-d-c">
|
|
|
<el-select v-model="eleTableId" @change="getTableEle" placeholder="请选择元素表" style="width:300px">
|
|
|
+ <el-option v-if="paramDataList.length" label="选择节点参数" value="选择节点参数"></el-option>
|
|
|
<el-option v-for="item in eleTableList" :key="item.id" :label="item.tableName" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
<div class="mg-t-10 no-mb-col flex1">
|
|
@@ -101,7 +103,8 @@
|
|
|
<el-row>
|
|
|
<el-col :span="6" v-for="item in eleList" :key="item.id">
|
|
|
<div class="ele-box">
|
|
|
- <span>{{item.eName}}</span>
|
|
|
+ <span v-if="item.k">{{item.name}}</span>
|
|
|
+ <span v-else>{{item.eName}}</span>
|
|
|
<el-checkbox v-model="item.checked" @change="value => eleChang(value,item)"></el-checkbox>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -127,13 +130,13 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="border-grey sele-ele-box">
|
|
|
- <div>
|
|
|
+ <draggable v-model="selectEleFormula">
|
|
|
<formula-item
|
|
|
v-for="(item,index) in selectEleFormula" :key="index"
|
|
|
:item="item" @click="obj => eleFormulaClick(obj,index)"
|
|
|
>
|
|
|
</formula-item>
|
|
|
- </div>
|
|
|
+ </draggable>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -176,7 +179,7 @@
|
|
|
<el-button type="primary" @click="saveFormula">保存</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!operationVisible && showFunDetail">
|
|
|
+ <div v-if="!operationVisible && showFunDetail" class="flex1">
|
|
|
<el-tabs v-model="actiFunIndex" closable @tab-remove="removeFun" :before-leave="funLeave">
|
|
|
<el-tab-pane v-for="(item,index) in equationSelectEle.children" :key="index" :label="item.name" :name="index.toString()">
|
|
|
<template v-if="!componentMap[item.name]">
|
|
@@ -184,19 +187,21 @@
|
|
|
</formula-template>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <div class="flex">
|
|
|
+ <div class="flex" style="height:calc(100vh - 460px)">
|
|
|
<div class="flex flex-d-c">
|
|
|
<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-if="paramDataList.length" label="选择节点参数" value="选择节点参数"></el-option>
|
|
|
<el-option v-for="item in eleTableListComp" :key="item.id" :label="item.tableName" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
<div class="mg-t-10 mg-b-10 no-mb-col" style="width:900px">
|
|
|
- <el-scrollbar style="max-height: 210px;min-height:100px">
|
|
|
+ <el-scrollbar style="height: 210px;">
|
|
|
<el-row>
|
|
|
<el-col :span="6" v-for="item in eleListComp" :key="item.id">
|
|
|
<div class="ele-box">
|
|
|
- <span>{{item.eName}}</span>
|
|
|
+ <span v-if="item.k">{{item.name}}</span>
|
|
|
+ <span v-else>{{item.eName}}</span>
|
|
|
<el-checkbox v-model="item.checked" @change="value => setComponentEle(value,item,index)"></el-checkbox>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -206,7 +211,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flex1" v-show="item.showSelectEle">
|
|
|
- <el-scrollbar style="height: 460px">
|
|
|
+ <el-scrollbar style="height: 100%">
|
|
|
<el-tree
|
|
|
class="filter-tree"
|
|
|
:data="treeData"
|
|
@@ -259,14 +264,16 @@
|
|
|
</el-col>
|
|
|
<el-col :span="16">
|
|
|
<el-select v-model="eleTableId" @change="getTableEle" placeholder="请选择元素表">
|
|
|
+ <el-option v-if="paramDataList.length" label="选择节点参数" value="选择节点参数"></el-option>
|
|
|
<el-option v-for="item in eleTableList" :key="item.id" :label="item.tableName" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
<div class="mg-t-10 mg-b-10 no-mb-col">
|
|
|
- <el-scrollbar style="height: 210px">
|
|
|
+ <el-scrollbar style="height: 460px">
|
|
|
<el-row>
|
|
|
<el-col :span="6" v-for="item in eleList" :key="item.id">
|
|
|
<div class="ele-box">
|
|
|
- <span>{{item.eName}}</span>
|
|
|
+ <span v-if="item.k">{{item.name}}</span>
|
|
|
+ <span v-else>{{item.eName}}</span>
|
|
|
<el-checkbox v-model="item.checked" @change="value => eleCheckHandle(value,item)"></el-checkbox>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -284,7 +291,7 @@
|
|
|
|
|
|
<el-dialog title="手写模式" :visible.sync="handwritVisible" width="900px" append-to-body :close-on-click-modal="false">
|
|
|
<div class="font-c-warning">tips:手写模式不保证能转换成配置模式!!即使能转换也不保证正确!!!</div>
|
|
|
- <div class="mg-b-20 font-c-warning">无法在手写模式手写加入新的元素!</div>
|
|
|
+ <div class="mg-b-20 font-c-warning">无法在手写模式手写加入新的元素!新的节点参数!</div>
|
|
|
<editor v-model="handwritText" @init="editorInit" lang="javascript" theme="github" width="100%" height="200"></editor>
|
|
|
<!-- <el-input
|
|
|
type="textarea"
|
|
@@ -302,12 +309,12 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { getLazytree,selectByNodeTable,selectFormElements,getAlltree} from "@/api/manager/wbstree";
|
|
|
+import { getLazytree,selectFormElements,getAlltree,getNodeTabAndParam} from "@/api/manager/wbstree";
|
|
|
import { getProjectList,findProjectTree } from "@/api/manager/projectinfo";
|
|
|
import { findContractByProjectId } from "@/api/manager/contractinfo";
|
|
|
import { getDetail as getEleDeatil } from "@/api/manager/wbsformelement";
|
|
|
import { getTypeMap,saveFormula,formulaDetail,updateFormula } from "@/api/formula/formula";
|
|
|
-import { findNodeTableByCondition } from "@/api/manager/wbsprivate";
|
|
|
+import { getNodeTabAndParam as wbsPrivateGetNodeTabAndParam } from "@/api/manager/wbsprivate";
|
|
|
import {mapGetters} from "vuex";
|
|
|
|
|
|
import formulaItem from "./component/formulaItem"
|
|
@@ -323,8 +330,13 @@ import ifelse from "./component/funComponent/ifelse"
|
|
|
|
|
|
import {formulaArrayToString} from "./formulaArrayToString"
|
|
|
import {formulaStringToArray} from "./formulaStringToArray"
|
|
|
+
|
|
|
+import draggable from 'vuedraggable'
|
|
|
+
|
|
|
export default {
|
|
|
components: {
|
|
|
+ draggable,
|
|
|
+
|
|
|
formulaItem,
|
|
|
formulaTemplate,
|
|
|
|
|
@@ -407,6 +419,8 @@ export default {
|
|
|
handwritVisible:false,//手写弹框
|
|
|
handwritText:'',//文本
|
|
|
handwritEleMap:'',//元素map
|
|
|
+
|
|
|
+ paramDataList:[],//节点参数数组
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
@@ -672,6 +686,17 @@ export default {
|
|
|
name:ele.name,
|
|
|
selected:false,
|
|
|
})
|
|
|
+ }else if(ele.k){
|
|
|
+ //节点参数
|
|
|
+ this.selectEleFormula.push({
|
|
|
+ type:'ParamData',
|
|
|
+ name:ele.name,
|
|
|
+ selected:false,
|
|
|
+ id:ele.id,
|
|
|
+ v:ele.v,
|
|
|
+ k:ele.k,
|
|
|
+ children:[],
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -827,7 +852,7 @@ export default {
|
|
|
|
|
|
//在等式模式下点选计算式
|
|
|
equationSelect(index,indexPath){
|
|
|
- if(!this.equationSelectEle ||(this.equationSelectEle && this.equationSelectEle.type != 'Element') ){
|
|
|
+ if(!this.equationSelectEle ||(this.equationSelectEle && !(this.equationSelectEle.type == 'Element' || this.equationSelectEle.type == 'ParamData')) ){
|
|
|
this.$message({
|
|
|
type: "warning",
|
|
|
message: "请先选中元素"
|
|
@@ -844,13 +869,28 @@ export default {
|
|
|
let obj = Object.assign({}, expression);
|
|
|
//obj.template = JSON.parse(obj.template);
|
|
|
obj.arguments = new Array(obj.template.args.length);
|
|
|
- obj.arguments[0] = {
|
|
|
- id:this.equationSelectEle.id,
|
|
|
+
|
|
|
+ let ele = {};
|
|
|
+ if(this.equationSelectEle.type == 'ParamData'){
|
|
|
+ ele = {
|
|
|
+ type:'ParamData',
|
|
|
name:this.equationSelectEle.name,
|
|
|
+ id:this.equationSelectEle.id,
|
|
|
selected:false,
|
|
|
- tableElementKey:this.equationSelectEle.tableElementKey,
|
|
|
- type:"Element",
|
|
|
- };
|
|
|
+ v:this.equationSelectEle.v,
|
|
|
+ k:this.equationSelectEle.k,
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ ele = {
|
|
|
+ id:this.equationSelectEle.id,
|
|
|
+ name:this.equationSelectEle.name,
|
|
|
+ selected:false,
|
|
|
+ tableElementKey:this.equationSelectEle.tableElementKey,
|
|
|
+ type:"Element",
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ obj.arguments[0] = ele;
|
|
|
this.equationSelectEle.children.push(obj);
|
|
|
//跳转到最新的标签
|
|
|
this.actiFunIndex = (this.equationSelectEle.children.length-1).toString();
|
|
@@ -860,15 +900,30 @@ export default {
|
|
|
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:[],
|
|
|
+ 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;
|
|
@@ -938,7 +993,7 @@ export default {
|
|
|
//保存公式
|
|
|
saveFormula(){
|
|
|
let obj = formulaArrayToString(this.processFormula,this.resultFormula);
|
|
|
- //return;
|
|
|
+ //console.log(obj)
|
|
|
//console.log(text);
|
|
|
if(this.formulaid){
|
|
|
updateFormula({
|
|
@@ -1001,30 +1056,39 @@ export default {
|
|
|
|
|
|
getNodeDetail(data) {
|
|
|
if(this.pid){
|
|
|
- findNodeTableByCondition(data.id, this.pid, this.wbsid).then((res) => {
|
|
|
- if(res.data.data.length){
|
|
|
- this.eleTableList = res.data.data;
|
|
|
+ wbsPrivateGetNodeTabAndParam(data.id, this.pid, this.wbsid).then((res) => {
|
|
|
+ if(res.data.data.tabData.length){
|
|
|
+ this.eleTableList = res.data.data.tabData;
|
|
|
|
|
|
- this.eleTableId = this.eleTableList[0].id;
|
|
|
- this.getTableEle(this.eleTableId);
|
|
|
+ // this.eleTableId = this.eleTableList[0].id;
|
|
|
+ // this.getTableEle(this.eleTableId);
|
|
|
}else{
|
|
|
this.eleTableList = [];
|
|
|
this.eleTableId = '';
|
|
|
this.eleList = [];
|
|
|
}
|
|
|
+
|
|
|
+ if(res.data.data.paramData.length){
|
|
|
+ this.paramDataList = res.data.data.paramData;
|
|
|
+ }else{
|
|
|
+ this.paramDataList = [];
|
|
|
+ }
|
|
|
})
|
|
|
}else{
|
|
|
- selectByNodeTable(data.id).then((res)=>{
|
|
|
- if(res.data.data.length){
|
|
|
- this.eleTableList = res.data.data;
|
|
|
-
|
|
|
- this.eleTableId = this.eleTableList[0].id;
|
|
|
- this.getTableEle(this.eleTableId);
|
|
|
+ getNodeTabAndParam(data.id).then((res)=>{
|
|
|
+ if(res.data.data.tabData.length){
|
|
|
+ this.eleTableList = res.data.data.tabData;
|
|
|
}else{
|
|
|
this.eleTableList = [];
|
|
|
this.eleTableId = '';
|
|
|
this.eleList = [];
|
|
|
}
|
|
|
+
|
|
|
+ if(res.data.data.paramData.length){
|
|
|
+ this.paramDataList = res.data.data.paramData;
|
|
|
+ }else{
|
|
|
+ this.paramDataList = [];
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
@@ -1044,47 +1108,67 @@ export default {
|
|
|
},
|
|
|
|
|
|
getTableEle(tableId){
|
|
|
- selectFormElements(tableId).then((res)=>{
|
|
|
- this.eleList = res.data.data;
|
|
|
- })
|
|
|
+ if(tableId === '选择节点参数'){
|
|
|
+ this.eleList = this.paramDataList;
|
|
|
+ }else{
|
|
|
+ selectFormElements(tableId).then((res)=>{
|
|
|
+ this.eleList = res.data.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
//方法下面的点击树节点
|
|
|
getNodeDetailComp(data) {
|
|
|
if(this.pid){
|
|
|
- findNodeTableByCondition(data.id, this.pid, this.wbsid).then((res) => {
|
|
|
- if(res.data.data.length){
|
|
|
- this.eleTableListComp = res.data.data;
|
|
|
+ wbsPrivateGetNodeTabAndParam(data.id, this.pid, this.wbsid).then((res) => {
|
|
|
+ if(res.data.data.tabData.length){
|
|
|
+ this.eleTableListComp = res.data.data.tabData;
|
|
|
|
|
|
- this.eleTableIdComp = this.eleTableListComp[0].id;
|
|
|
- this.getTableEleComp(this.eleTableIdComp);
|
|
|
+ // this.eleTableIdComp = this.eleTableListComp[0].id;
|
|
|
+ // this.getTableEleComp(this.eleTableIdComp);
|
|
|
}else{
|
|
|
this.eleTableListComp = [];
|
|
|
this.eleTableIdComp = '';
|
|
|
this.eleListComp = [];
|
|
|
}
|
|
|
+
|
|
|
+ if(res.data.data.paramData.length){
|
|
|
+ this.paramDataList = res.data.data.paramData;
|
|
|
+ }else{
|
|
|
+ this.paramDataList = [];
|
|
|
+ }
|
|
|
})
|
|
|
}else{
|
|
|
- selectByNodeTable(data.id).then((res)=>{
|
|
|
- if(res.data.data.length){
|
|
|
- this.eleTableListComp = res.data.data;
|
|
|
+ getNodeTabAndParam(data.id).then((res)=>{
|
|
|
+ if(res.data.data.tabData.length){
|
|
|
+ this.eleTableListComp = res.data.data.tabData;
|
|
|
|
|
|
- this.eleTableIdComp = this.eleTableListComp[0].id;
|
|
|
- this.getTableEleComp(this.eleTableIdComp);
|
|
|
+ // this.eleTableIdComp = this.eleTableListComp[0].id;
|
|
|
+ // this.getTableEleComp(this.eleTableIdComp);
|
|
|
}else{
|
|
|
this.eleTableListComp = [];
|
|
|
this.eleTableIdComp = '';
|
|
|
this.eleListComp = [];
|
|
|
}
|
|
|
+
|
|
|
+ if(res.data.data.paramData.length){
|
|
|
+ this.paramDataList = res.data.data.paramData;
|
|
|
+ }else{
|
|
|
+ this.paramDataList = [];
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
|
|
|
//方法下面的查询元素
|
|
|
getTableEleComp(tableId){
|
|
|
- selectFormElements(tableId).then((res)=>{
|
|
|
- this.eleListComp = res.data.data;
|
|
|
- })
|
|
|
+ if(tableId === '选择节点参数'){
|
|
|
+ this.eleListComp = this.paramDataList;
|
|
|
+ }else{
|
|
|
+ selectFormElements(tableId).then((res)=>{
|
|
|
+ this.eleListComp = res.data.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
//取消方法下面 元素勾选
|