<template>
|
<div class="box" v-loading="loading">
|
<div v-for="(stage,i) in tree" :key="i">
|
<el-checkbox @change="stageChange($event,stage)" v-model="stage.checked">{{ stage.name }}</el-checkbox>
|
<div style="margin: 15px 0;"></div>
|
<div style="margin: 15px 0 15px 20px">
|
<el-checkbox-group @change="nodesChange($event,stage)" v-model="stage.checkedList">
|
<el-checkbox @change="nodeChange($event,stage,node)" v-for="(node,k) in stage.children" :label="node.id" :key="k">{{ node.name }}</el-checkbox>
|
</el-checkbox-group>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import {getPStageNode} from "@/api/projectConfig/buildPlanNode";
|
|
export default {
|
props: ['tempProjectId'],
|
name: 'stageNode',
|
data() {
|
return {
|
loading: true,
|
tree: [],
|
checkAll: false,
|
checkedCities: [],
|
}
|
},
|
mounted() {
|
this.getTree()
|
},
|
methods: {
|
setNodeCycleData() {
|
this.$EventBus.$emit('setTree', this.tree)
|
},
|
setPreviewData() {
|
this.$EventBus.$emit('setPreviewData', this.tree)
|
},
|
stageChange(e, stage) {
|
if (e) {
|
stage.checkedList = stage.children.map(item => {
|
item.checked = true
|
return item.id
|
})
|
} else {
|
stage.checkedList = []
|
}
|
},
|
nodesChange(e, stage) {
|
stage.checked = e.length > 0
|
},
|
nodeChange(e, stage, node) {
|
node.checked = e
|
},
|
getTree() {
|
getPStageNode({tempProjectId: this.tempProjectId}).then(res => {
|
this.loading = false
|
res.map((stage, i) => {
|
stage.checked = stage.children.some(item => item.isDelete === 0)
|
stage.stageTimeDays = stage.stageTimeDays || undefined
|
let checkedList = []
|
stage.children.map(node => {
|
if (node.isDelete === 0) {
|
checkedList.push(node.id)
|
}
|
node.checked = node.isDelete === 0
|
node.nodeTimeStart = node.nodeTimeStart || undefined //自项目开始第N天
|
node.nodeTimeDays = node.nodeTimeDays || undefined //持续天数
|
if(node.notify){
|
node.notifyTempStageNodeId = node.notify.map(n=>n.notifyTempStageNodeId)
|
}
|
|
})
|
stage.checkedList = checkedList
|
})
|
this.tree = res
|
})
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|