|
@@ -5,7 +5,7 @@
|
|
<div class="box">
|
|
<div class="box">
|
|
<p>工程节点信息</p>
|
|
<p>工程节点信息</p>
|
|
<div class="flex">
|
|
<div class="flex">
|
|
- <el-input placeholder="输入关键字进行过滤" v-model="filterText" @input="filterChange"></el-input>
|
|
|
|
|
|
+ <el-input placeholder="输入关键字进行过滤" v-model="filterText" @input="filterChange" clearable></el-input>
|
|
<!-- <el-button type="info" class="mg-l-20">导入划分</el-button> -->
|
|
<!-- <el-button type="info" class="mg-l-20">导入划分</el-button> -->
|
|
</div>
|
|
</div>
|
|
<el-scrollbar>
|
|
<el-scrollbar>
|
|
@@ -25,9 +25,10 @@
|
|
type="text" icon="el-icon-more" class="normal-black">
|
|
type="text" icon="el-icon-more" class="normal-black">
|
|
</el-button>
|
|
</el-button>
|
|
<el-dropdown-menu slot="dropdown">
|
|
<el-dropdown-menu slot="dropdown">
|
|
- <el-dropdown-item @click.native="setLeftType(1,data,node)" icon="el-icon-circle-plus-outline">新增子级</el-dropdown-item>
|
|
|
|
|
|
+ <el-dropdown-item @click.native="setLeftType(1,data,node)" icon="el-icon-circle-plus-outline" v-if="data.deptCategory != 6">新增子级</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(2,data,node)" icon="el-icon-edit">编辑节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(2,data,node)" icon="el-icon-edit">编辑节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(3,data,node)" icon="el-icon-document-copy">复制节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(3,data,node)" icon="el-icon-document-copy">复制节点</el-dropdown-item>
|
|
|
|
+ <el-dropdown-item @click.native="deleNode(data,node)" icon="el-icon-close" v-if="node.level !=1">删除节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(4,data,node)" icon="iconfont hcicon-danganziliao-biaogetianxie" class="font-s-12">元素公式</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(4,data,node)" icon="iconfont hcicon-danganziliao-biaogetianxie" class="font-s-12">元素公式</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(5,data,node)" icon="el-icon-coin">元素设置</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(5,data,node)" icon="el-icon-coin">元素设置</el-dropdown-item>
|
|
<el-dropdown-item @click.native="nodeInfo(data,node)" icon="el-icon-help">节点参数</el-dropdown-item>
|
|
<el-dropdown-item @click.native="nodeInfo(data,node)" icon="el-icon-help">节点参数</el-dropdown-item>
|
|
@@ -52,9 +53,10 @@
|
|
type="text" icon="el-icon-more" class="normal-black">
|
|
type="text" icon="el-icon-more" class="normal-black">
|
|
</el-button>
|
|
</el-button>
|
|
<el-dropdown-menu slot="dropdown">
|
|
<el-dropdown-menu slot="dropdown">
|
|
- <el-dropdown-item @click.native="setLeftType(1,data,node)" icon="el-icon-circle-plus-outline">新增子级</el-dropdown-item>
|
|
|
|
|
|
+ <el-dropdown-item @click.native="setLeftType(1,data,node)" icon="el-icon-circle-plus-outline" v-if="data.deptCategory != 6">新增子级</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(2,data,node)" icon="el-icon-edit">编辑节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(2,data,node)" icon="el-icon-edit">编辑节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(3,data,node)" icon="el-icon-document-copy">复制节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(3,data,node)" icon="el-icon-document-copy">复制节点</el-dropdown-item>
|
|
|
|
+ <el-dropdown-item @click.native="deleNode(data,node)" icon="el-icon-close" v-if="node.level !=1">删除节点</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(4,data,node)" icon="iconfont hcicon-danganziliao-biaogetianxie" class="font-s-12">元素公式</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(4,data,node)" icon="iconfont hcicon-danganziliao-biaogetianxie" class="font-s-12">元素公式</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(5,data,node)" icon="el-icon-coin">元素设置</el-dropdown-item>
|
|
<el-dropdown-item @click.native="setLeftType(5,data,node)" icon="el-icon-coin">元素设置</el-dropdown-item>
|
|
<el-dropdown-item @click.native="nodeInfo(data,node)" icon="el-icon-help">节点参数</el-dropdown-item>
|
|
<el-dropdown-item @click.native="nodeInfo(data,node)" icon="el-icon-help">节点参数</el-dropdown-item>
|
|
@@ -200,11 +202,19 @@
|
|
<el-table :data="eleForm.elementList" border style="width: 100%" height="400px">
|
|
<el-table :data="eleForm.elementList" border style="width: 100%" height="400px">
|
|
<el-table-column align="center" type="index" width="50"></el-table-column>
|
|
<el-table-column align="center" type="index" width="50"></el-table-column>
|
|
<el-table-column align="center" prop="eName" label="元素名称" >
|
|
<el-table-column align="center" prop="eName" label="元素名称" >
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>元素名称</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input v-model="scope.row.eName" size="small" placeholder="请输入内容"></el-input>
|
|
<el-input v-model="scope.row.eName" size="small" placeholder="请输入内容"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="eType" label="数据类型" width="120">
|
|
<el-table-column align="center" prop="eType" label="数据类型" width="120">
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>数据类型</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-select v-model="scope.row.eType" size="small" placeholder="请选择">
|
|
<el-select v-model="scope.row.eType" size="small" placeholder="请选择">
|
|
<el-option v-for="item in dataTypeList" :key="item.id" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
<el-option v-for="item in dataTypeList" :key="item.id" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
@@ -212,6 +222,10 @@
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="eLength" label="长度" width="120">
|
|
<el-table-column align="center" prop="eLength" label="长度" width="120">
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>长度</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input v-model="scope.row.eLength" size="small" placeholder="请输入内容" :disabled="scope.row.eType == 4" ></el-input>
|
|
<el-input v-model="scope.row.eLength" size="small" placeholder="请输入内容" :disabled="scope.row.eType == 4" ></el-input>
|
|
</template>
|
|
</template>
|
|
@@ -220,6 +234,8 @@
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div class="flex">
|
|
<div class="flex">
|
|
<el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
|
|
<el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
|
|
|
|
+ <el-option :key="5" label=">" value=">"></el-option>
|
|
|
|
+ <el-option :key="6" label="<" value="<"></el-option>
|
|
<el-option :key="1" label="≥" value="≥"></el-option>
|
|
<el-option :key="1" label="≥" value="≥"></el-option>
|
|
<el-option :key="2" label="≤" value="≤"></el-option>
|
|
<el-option :key="2" label="≤" value="≤"></el-option>
|
|
<el-option :key="3" label="±" value="±"></el-option>
|
|
<el-option :key="3" label="±" value="±"></el-option>
|
|
@@ -278,12 +294,20 @@
|
|
<p class="font-c-warning">编辑元素信息(请谨慎操作)</p>
|
|
<p class="font-c-warning">编辑元素信息(请谨慎操作)</p>
|
|
<el-table :data="editEleList" border style="width: 100%" height="400px">
|
|
<el-table :data="editEleList" border style="width: 100%" height="400px">
|
|
<el-table-column align="center" type="index" width="50"></el-table-column>
|
|
<el-table-column align="center" type="index" width="50"></el-table-column>
|
|
- <el-table-column align="center" prop="eName" label="元素名称" >
|
|
|
|
|
|
+ <el-table-column align="center" prop="eName" label="元素名称">
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>元素名称</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input v-model="scope.row.eName" size="small" placeholder="请输入内容"></el-input>
|
|
<el-input v-model="scope.row.eName" size="small" placeholder="请输入内容"></el-input>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="eType" label="数据类型" width="120">
|
|
<el-table-column align="center" prop="eType" label="数据类型" width="120">
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>数据类型</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-select v-model="scope.row.eType" size="small" placeholder="请选择">
|
|
<el-select v-model="scope.row.eType" size="small" placeholder="请选择">
|
|
<el-option v-for="item in dataTypeList" :key="item.id" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
<el-option v-for="item in dataTypeList" :key="item.id" :label="item.dictValue" :value="item.dictKey"></el-option>
|
|
@@ -291,6 +315,10 @@
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="eLength" label="长度" width="120">
|
|
<el-table-column align="center" prop="eLength" label="长度" width="120">
|
|
|
|
+ <template slot="header">
|
|
|
|
+ <i class="required"></i>
|
|
|
|
+ <span>长度</span>
|
|
|
|
+ </template>
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<el-input v-model="scope.row.eLength" size="small" placeholder="请输入内容" :disabled="scope.row.eType == 4"></el-input>
|
|
<el-input v-model="scope.row.eLength" size="small" placeholder="请输入内容" :disabled="scope.row.eType == 4"></el-input>
|
|
</template>
|
|
</template>
|
|
@@ -299,6 +327,8 @@
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div class="flex">
|
|
<div class="flex">
|
|
<el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
|
|
<el-select v-model="scope.row.allow" size="small" placeholder="请选择" style="width:120px">
|
|
|
|
+ <el-option :key="5" label=">" value=">"></el-option>
|
|
|
|
+ <el-option :key="6" label="<" value="<"></el-option>
|
|
<el-option :key="1" label="≥" value="≥"></el-option>
|
|
<el-option :key="1" label="≥" value="≥"></el-option>
|
|
<el-option :key="2" label="≤" value="≤"></el-option>
|
|
<el-option :key="2" label="≤" value="≤"></el-option>
|
|
<el-option :key="3" label="±" value="±"></el-option>
|
|
<el-option :key="3" label="±" value="±"></el-option>
|
|
@@ -342,7 +372,7 @@
|
|
</el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" label="操作" width="200">
|
|
<el-table-column align="center" label="操作" width="200">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-link type="primary" >公式配置</el-link>
|
|
|
|
|
|
+ <el-link type="primary" @click="toFormulaEdit">公式配置</el-link>
|
|
<el-link class="mg-l-10" type="danger" @click="delEleRowHandle(scope.$index,editEleList)">删除</el-link>
|
|
<el-link class="mg-l-10" type="danger" @click="delEleRowHandle(scope.$index,editEleList)">删除</el-link>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -483,7 +513,7 @@
|
|
<script>
|
|
<script>
|
|
import {getLazytree,getDetail,update,selectByNodeTable,getAlltree,
|
|
import {getLazytree,getDetail,update,selectByNodeTable,getAlltree,
|
|
saveFormAndElement,selectFormElements,removeTableById,
|
|
saveFormAndElement,selectFormElements,removeTableById,
|
|
- importWbsTree,exportTemplate} from "@/api/manager/wbstree";
|
|
|
|
|
|
+ importWbsTree,exportTemplate,remove as removeTreeNode} from "@/api/manager/wbstree";
|
|
import {saveElement,remove as removeElement,updateBatchElements,getTemplate,
|
|
import {saveElement,remove as removeElement,updateBatchElements,getTemplate,
|
|
importWbsElement} from "@/api/manager/wbsformelement";
|
|
importWbsElement} from "@/api/manager/wbsformelement";
|
|
import {getDictionary} from "@/api/system/dict";
|
|
import {getDictionary} from "@/api/system/dict";
|
|
@@ -547,7 +577,7 @@
|
|
curEleTable:{},
|
|
curEleTable:{},
|
|
editEleVisible:false,
|
|
editEleVisible:false,
|
|
editEleList:[],
|
|
editEleList:[],
|
|
- eleReg:/(≥|≤|±|【】)?([^≥≤±【】]*)/,
|
|
|
|
|
|
+ eleReg:/(>|<|≥|≤|±|【】)?([^≥≤±【】]*)/,
|
|
|
|
|
|
editEleFormulaVisible:false,
|
|
editEleFormulaVisible:false,
|
|
formulaInput:'',
|
|
formulaInput:'',
|
|
@@ -701,6 +731,24 @@
|
|
|
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ deleNode(data,node){
|
|
|
|
+ this.$confirm('此操作将删除节点【'+data.title+'】, 是否继续?', '提示', {
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
+ type: 'warning'
|
|
|
|
+ }).then(() => {
|
|
|
|
+ removeTreeNode(data.id).then(()=>{
|
|
|
|
+ this.$refs.tree.remove(node);
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "success",
|
|
|
|
+ message: "删除成功!"
|
|
|
|
+ });
|
|
|
|
+ })
|
|
|
|
+ }).catch(() => {
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+
|
|
showFormElement(){
|
|
showFormElement(){
|
|
if(!this.nodeDetail.id){
|
|
if(!this.nodeDetail.id){
|
|
this.$message({
|
|
this.$message({
|
|
@@ -709,6 +757,9 @@
|
|
});
|
|
});
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ this.eleForm = {
|
|
|
|
+ elementList:[]
|
|
|
|
+ };
|
|
this.eleVisible = true;
|
|
this.eleVisible = true;
|
|
},
|
|
},
|
|
|
|
|
|
@@ -726,15 +777,39 @@
|
|
this.eleForm.deptCategory = -1;
|
|
this.eleForm.deptCategory = -1;
|
|
this.eleForm.type = 2;// '1'节点 '2'表单
|
|
this.eleForm.type = 2;// '1'节点 '2'表单
|
|
this.eleForm.parentId = this.nodeDetail.id;
|
|
this.eleForm.parentId = this.nodeDetail.id;
|
|
|
|
+ for (let i = 0; i < this.eleForm.elementList.length; i++) {
|
|
|
|
+ if(!this.eleForm.elementList[i].eName){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写第"+(i+1)+"条元素名称"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(!this.eleForm.elementList[i].eType){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请选择第"+(i+1)+"条数据类型"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(this.eleForm.elementList[i].eType != 4 && !this.eleForm.elementList[i].eLength){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写第"+(i+1)+"条长度"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
this.eleForm.elementList.forEach((element)=>{
|
|
this.eleForm.elementList.forEach((element)=>{
|
|
element.eAllowDeviation = (element.allow?element.allow:'') + (element.deviation?element.deviation:'');
|
|
element.eAllowDeviation = (element.allow?element.allow:'') + (element.deviation?element.deviation:'');
|
|
if(element.eType == 4){
|
|
if(element.eType == 4){
|
|
- element.eLength = 0;
|
|
|
|
|
|
+ this.$set(element,'eLength',0);
|
|
|
|
+ //element.eLength = 0;
|
|
}
|
|
}
|
|
})
|
|
})
|
|
saveFormAndElement(this.eleForm).then(()=>{
|
|
saveFormAndElement(this.eleForm).then(()=>{
|
|
//console.log(res)
|
|
//console.log(res)
|
|
- this.updateTreeNewNode();
|
|
|
|
|
|
+ //this.updateTreeNewNode();
|
|
this.updateNodeTable();
|
|
this.updateNodeTable();
|
|
this.eleVisible = false;
|
|
this.eleVisible = false;
|
|
this.$message({
|
|
this.$message({
|
|
@@ -814,12 +889,35 @@
|
|
},
|
|
},
|
|
|
|
|
|
saveNewEle(row){
|
|
saveNewEle(row){
|
|
|
|
+ if(!row.eName){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写元素名称"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(!row.eType){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请选择数据类型"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
row.eAllowDeviation = (row.allow?row.allow:'') + (row.deviation?row.deviation:'');
|
|
row.eAllowDeviation = (row.allow?row.allow:'') + (row.deviation?row.deviation:'');
|
|
row.fId = this.curEleTable.id;
|
|
row.fId = this.curEleTable.id;
|
|
row.initTableName = this.curEleTable.initTableName;
|
|
row.initTableName = this.curEleTable.initTableName;
|
|
if(row.eType == 4){
|
|
if(row.eType == 4){
|
|
- row.eLength = 0;
|
|
|
|
|
|
+ this.$set(row,'eLength',0);
|
|
|
|
+ //row.eLength = 0;
|
|
|
|
+ }else if(!row.eLength){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写长度"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
+
|
|
saveElement(row).then((res)=>{
|
|
saveElement(row).then((res)=>{
|
|
if(res.data.data){
|
|
if(res.data.data){
|
|
this.$set(row,'id',res.data.data.id);
|
|
this.$set(row,'id',res.data.data.id);
|
|
@@ -857,12 +955,34 @@
|
|
});
|
|
});
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ if(!this.editEleList[i].eName){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写第"+(i+1)+"条元素名称"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(!this.editEleList[i].eType){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请选择第"+(i+1)+"条数据类型"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if(this.editEleList[i].eType != 4 && !this.editEleList[i].eLength){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: "请填写第"+(i+1)+"条长度"
|
|
|
|
+ });
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if(this.editEleList.length > 0){
|
|
if(this.editEleList.length > 0){
|
|
this.editEleList.forEach((element)=>{
|
|
this.editEleList.forEach((element)=>{
|
|
element.eAllowDeviation = (element.allow?element.allow:'') + (element.deviation?element.deviation:'');
|
|
element.eAllowDeviation = (element.allow?element.allow:'') + (element.deviation?element.deviation:'');
|
|
if(element.eType == 4){
|
|
if(element.eType == 4){
|
|
- element.eLength = 0;
|
|
|
|
|
|
+ this.$set(element,'eLength',0);
|
|
|
|
+ //element.eLength = 0;
|
|
}
|
|
}
|
|
})
|
|
})
|
|
updateBatchElements(this.editEleList,this.curEleTable.initTableName).then(()=>{
|
|
updateBatchElements(this.editEleList,this.curEleTable.initTableName).then(()=>{
|
|
@@ -1034,6 +1154,15 @@
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ toFormulaEdit(){
|
|
|
|
+ this.$router.push({
|
|
|
|
+ path:'/formula/edit',
|
|
|
|
+ query:{
|
|
|
|
+ wbsid:this.id,
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+
|
|
getDeptCategorylist(){
|
|
getDeptCategorylist(){
|
|
if(this.deptCategorylist.length >1){
|
|
if(this.deptCategorylist.length >1){
|
|
return;
|
|
return;
|