|
@@ -9,6 +9,7 @@
|
|
|
<el-scrollbar class="h-100p">
|
|
|
<div v-loading="treeLoad">
|
|
|
<el-tree
|
|
|
+ :key="treeKey"
|
|
|
class="filter-tree"
|
|
|
lazy
|
|
|
:load="loadNode"
|
|
@@ -19,12 +20,9 @@
|
|
|
:check-on-click-node="false"
|
|
|
node-key="id"
|
|
|
ref="tree"
|
|
|
-
|
|
|
-
|
|
|
- @check-change="handleCheckChange"
|
|
|
>
|
|
|
<span class="custom-tree-node" slot-scope="{node,data}" style="justify-content: flex-start;">
|
|
|
- <span> <el-checkbox v-model="data.checked" v-if="!data.hasChildren"></el-checkbox></span>
|
|
|
+ <span> <el-checkbox v-model="data.checked" v-if="!data.hasChildren" @change="handleCheck($event,data)"></el-checkbox></span>
|
|
|
{{ node.label }}
|
|
|
|
|
|
</span>
|
|
@@ -35,8 +33,8 @@
|
|
|
</div>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
- <el-button @click="allocatedialogVisible = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="allocatedialogVisible = false">
|
|
|
+ <el-button @click="quitWbs">取消</el-button>
|
|
|
+ <el-button type="primary" @click="saveWbs" :loading="saveLoading">
|
|
|
确认
|
|
|
</el-button>
|
|
|
</div>
|
|
@@ -45,14 +43,16 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { getLazytree,} from "@/api/manager/wbsprivate";
|
|
|
+ import { getLazytree,syncFormToContractNode} from "@/api/manager/wbsprivate";
|
|
|
import { mapGetters } from "vuex";
|
|
|
|
|
|
export default {
|
|
|
props:{
|
|
|
projectId:'',
|
|
|
wbsId:'',
|
|
|
- wbsType:''
|
|
|
+ wbsType:'',
|
|
|
+ id:"",
|
|
|
+ treeKey:Math.random()
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
@@ -84,14 +84,22 @@
|
|
|
return tag;
|
|
|
// return !data.hasChildren || (data.isExistForm == 1);
|
|
|
},
|
|
|
+
|
|
|
},
|
|
|
+ selectData:[],
|
|
|
+ saveLoading:false
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
...mapGetters(["userInfo"]),
|
|
|
},
|
|
|
watch: {
|
|
|
-
|
|
|
+ id: {
|
|
|
+ handler: function(n) {
|
|
|
+ this.id=n
|
|
|
+ },
|
|
|
+ deep: true,
|
|
|
+ },
|
|
|
},
|
|
|
|
|
|
created () {
|
|
@@ -103,6 +111,8 @@
|
|
|
methods: {
|
|
|
show(){
|
|
|
this.allocatedialogVisible=true
|
|
|
+ this.treeKey=Math.random()
|
|
|
+ this.selectData=[]
|
|
|
},
|
|
|
renderContent(h, { node, data, store }) {
|
|
|
// 只有当节点没有子节点时才显示复选框
|
|
@@ -135,9 +145,34 @@
|
|
|
return resolve(arr);
|
|
|
});
|
|
|
},
|
|
|
- handleCheckChange(checkedNodes) {
|
|
|
- // 在这里处理已选中的节点数据
|
|
|
- console.log(checkedNodes,'checkedNodes');
|
|
|
+ handleCheck(isCheck,data){
|
|
|
+ if(isCheck){
|
|
|
+ this.selectData.push(data)
|
|
|
+ }else{
|
|
|
+ const index = this.selectData.indexOf(data); // 找到要删除的对象的索引
|
|
|
+ if (index !== -1) {
|
|
|
+ this.selectData.splice(index, 1); // 从数组中删除指定索引位置的元素
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ async saveWbs(){
|
|
|
+ console.log(this.selectData,'this.selectData');
|
|
|
+ const nodesIdArray = this.selectData.map(obj => obj.primaryKeyId);
|
|
|
+ const commaSeparatedIds = nodesIdArray.join(','); // 使用逗号连接数组中的所有元素
|
|
|
+ this.saveLoading=true
|
|
|
+ const { data: res } =await syncFormToContractNode({nodeIds:commaSeparatedIds,projectId:this.projectId,primaryKeyId:this.id})
|
|
|
+ this.saveLoading=false
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success(res.msg)
|
|
|
+ this.allocatedialogVisible=false
|
|
|
+ this.selectData=[]
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ quitWbs(){
|
|
|
+ this.allocatedialogVisible=false;
|
|
|
+ this.selectData=[]
|
|
|
}
|
|
|
|
|
|
}
|