hejianhao
2026-01-09 be5d0750301ebad72f9f7f94e3b878bce43d4ec8
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import SystemLayer from "../systemLayer";
import {Button, Popconfirm, Tree} from "antd";
import React from "react";
import EditLayerForm from "../forms/edit-layer-form";
import {formatNode, getRoot} from "../../../api/hierarchy";
 
class LayerTree extends SystemLayer {
 
    getRoot = async () => {
        const result = await getRoot({id: this.props.hierarchyId})
        if (result.data.status === 'OK') {
            this.setState({
                treeList: formatNode(result.data.data.root.children)
            })
        }
    }
 
    reloadEntities() {
        // 这里数据的组织形式和其他的不一样,需要特殊处理
        this.getRoot()
    }
 
    handleTreeSelect = (selectedKeys, info) => {
        let selectedData = selectedKeys.length > 0 ? info.node.props.data : null
        this.setState({
            selectedNode: selectedData
        })
        if(selectedData) {
            this.handleListBodyChange('parentPath', selectedData.path)
        }
 
        this.props.onSelect(selectedData)
    };
 
    handleEditNode = () => {
        if(!this.state.selectedNode) {
            return
        }
        this.setState({
            currentRowData: this.state.selectedNode,
            editModalVisible: true
        })
    }
 
    handleDeleteNode = () => {
        this.handleDeleteEntity(this.state.selectedNode)
        this.setState({
            selectedNode: null
        }, () => {
            this.props.onSelect()
        })
    }
 
    // add
 
    initView() {
        this.hierarchyId = this.props.hierarchyId
        super.initView();
 
        this.setState({
            selectedNode: null
        })
    }
 
    render() {
        return (
            <div>
                <div className="flex" hidden={!this.props.enableEdit}>
                    <Button onClick={this.handleAddEntity}>添加类别</Button>&nbsp;&nbsp;
                    <Button disabled={!this.state.selectedNode} onClick={this.handleEditNode} icon="edit">修改</Button>&nbsp;&nbsp;
                    <Popconfirm
                        placement="topLeft"
                        title={'确定要删除吗?'}
                        onConfirm={this.handleDeleteNode}
                        okText="是"
                        cancelText="否"
                    >
                        <Button disabled={!this.state.selectedNode} icon="delete" title="删除">删除</Button>
                    </Popconfirm>
                </div>
                <Tree
                    treeData={this.state.treeList}
                    onSelect={this.handleTreeSelect}
                    multiple={false}
                >
                </Tree>
                <EditLayerForm
                    currentRowData={this.state.currentRowData}
                    wrappedComponentRef={formRef => this.editFormRef = formRef}
                    visible={this.state.editModalVisible}
                    confirmLoading={this.state.editModalLoading}
                    onCancel={this.handleEditEntityCancel}
                    onOk={this.handleEditEntityOk}/>
 
            </div>
        )
    }
}
 
export default LayerTree;