石广澎
2023-10-20 4cb068fb1d51129be7199cbd83fb0ef1f97915e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<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>