123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- // import React, { useState } from "react";
- // import { Tree, Icon, Card } from "antd";
- // import { nanoid } from "nanoid";//生成唯一id
- // import { duration } from "moment";
- // import TreeTitle from './TreeTitle'
-
- // const { TreeNode } = Tree;
- // //树形数据
- // const treeData = [
- // {
- // value: "0",
- // defaultValue: "0",
- // key: "0",
- // parentKey: '0',
- // isEditable: false,
- // children: [
- // {
- // value: "0",
- // key: "0-1",
- // defaultValue: "0-1",
- // isEditable: false,
- // },
- // ],
- // },
-
- // ];
-
- // const expandedKeyArr = ["0"];
- // export default function TreeDemo() {
- // const [data, setData] = useState(treeData);//获取值,及时更新被修改的值。变量
- // const [expandedKeys, setExpandedKeys] = useState(expandedKeyArr);//状态
- // // const onExpand = (expandedKeys) => {
- // // //记录折叠的key值
- // // setExpandedKeys(expandedKeys);
- // // };
- // //开始渲染树形节点 data拿到数据
- // const renderTreeNodes = (data) => {
- // //遍历项目
- // let nodeArr = data.map((item) => {
-
- // const Title = (
- // <TreeTitle
- // value={item.value}
- // isDelete={item.parentKey !== "0"}
- // onAdd={() => onAdd(item.key)}
- // onDelete={() => onDelete(item.key)}
- // onChange={(val) => onChange(val, item.key)}
- // />
- // );
- // if (item.children) {
- // return (
- // <TreeNode title={Title} key={item.key} dataRef={item}>
- // {/* 渲染 */}
- // {renderTreeNodes(item.children)}
- // </TreeNode>
- // );
- // }
- // //返回他的标题,和key值
- // return <TreeNode title={Title} key={item.key} />;
- // });
- // //返回节点
- // return nodeArr;
- // }
- // //新增
- // const onAdd = (key) => {
- // if (expandedKeys.indexOf(key) === -1) {
- // expandedKeyArr.push(key);
- // }
- // setExpandedKeys(expandedKeyArr.slice());
- // addNode(key, treeData);//添加节点 树形
- // //useState里数据务必为immutable (不可赋值的对象),所以必须加上slice()返回一个新的数组对象
- // setData(treeData.slice());//添加子项
- // };
- // //编辑
- // //拿到key treeData数据--setData设置数据---slice删除数据中已返回的元素 [aa,bb,cc,dd,ee]--slice(2)输出[cc,dd,ee]
- // const onEdit = (key) => {
- // editNode(key, treeData);
- // setData(treeData.slice());
- // };
- // const editNode = (key, data) =>
- // data.forEach((item) => {
- // if (item.key === key) {
- // //编辑状态 true
-
- // item.isEditable = true;
- // } else {
-
- // //编辑状态 false
- // item.isEditable = false;
- // }
- // item.value = item.defaultValue; // 当某节点处于编辑状态,并改变数据,点击编辑其他节点时,此节点变成不可编辑状态,value 需要回退到 defaultvalue
- // //当某子项处于编辑状态,改变数据,点击其他时候,此项变成不可编辑
- // if (item.children) {
- // editNode(key, item.children);
- // //编辑子节点
- // }
- // });
-
- // const addNode = (key, data) =>
- // data.forEach((item) => {
- // if (item.key === key) {//如果拿到的key相同则判断子项
- // if (item.children) {
- // item.children.push({
- // value: "default",//创建新的子项默认值
- // key: nanoid(), // 这个 key 应该是唯一的
- // });
- // } else {
- // item.children = [];
- // item.children.push({
- // value: "default",
- // key: nanoid(),
- // });
- // }
- // return;
- // }
- // if (item.children) {
- // addNode(key, item.children);
- // }
- // });
-
- // const onChange = (val, key) => {
- // changeNode(key, val, treeData);
- // setData(treeData.slice());
- // };
-
- // const changeNode = (key, value, data) =>
- // data.forEach((item) => {
- // if (item.key === key) {//新增子项内容赋值
- // item.value = value;
- // }
- // if (item.children) {
- // changeNode(key, value, item.children);//子项
- // }
- // });
-
- // //确认保存节点
- // const saveNode = (key, data) =>
- // data.forEach((item) => {
- // if (item.key === key) {
- // item.defaultValue = item.value;//item.value内容赋值给defaultValue
- // }
- // //子项保存不能编辑
- // if (item.children) {
- // saveNode(key, item.children);
- // }
- // //项目是否能编辑
- // item.isEditable = false;
- // });
-
- // //取消确认
- // const closeNode = (key, defaultValue, data) =>
- // data.forEach((item) => {
- // item.isEditable = false;
- // if (item.key === key) {
- // item.value = defaultValue;
- // }
- // if (item.children) {
- // closeNode(key, defaultValue, item.children);
- // }
- // });
- // // slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
- // const onDelete = (key) => {
- // deleteNode(key, treeData);
- // setData(treeData.slice());
- // };
- // //删除节点
- // const deleteNode = (key, data) =>
- // //拿到每个key数据, 如果要删除的key相同,则删除,并返回。如果不同判断子项
- // data.forEach((item, index) => {
- // if (item.key === key) {
- // data.splice(index, 1);//从某个位置开始删除元素
- // return;
- // } else {
- // if (item.children) {
- // deleteNode(key, item.children);
- // }
- // }
- // });
-
- // return (
- // <div>
- // <Card style={{ width: '90%' }}>
- // <Tree
- // switcherIcon={<Icon type="down-square" theme="filled" />}
- // expandedKeys={expandedKeys}
- // // onExpand={onExpand}
- // >
- // {renderTreeNodes(data)}
- // </Tree>
- // </Card>
-
- // </div>
- // );
- // }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- import { Row, Col, Card, Tree, DatePicker, Form, Input, InputNumber, Radio, Button } from 'antd'
- import { title } from 'echarts/lib/theme/dark';
- import React, { useEffect, useState, useCallback,useRef } from 'react';
- import TreedataFrom from './form';
-
- const { TreeNode,DirectoryTree } = Tree;
-
- // const [treeData, settreeData] = useState([])
-
-
- const treeData = [
- {
- title: '分厂厂长管理',
- key: '0-0',
- children: [
- { title: '刘厂长', key: '0-0-0-1' },
- { title: '王副厂长', key: '0-0-0-2' },
- ],
- },
- {
- title: '分厂员工管理',
- key: '0-0-1',
- children: [
- { title: '王王王', key: '0-0-1-0' },
- { title: '张张张', key: '0-0-1-1' },
- { title: '刘刘刘', key: '0-0-1-2' },
- ],
- },
- ];
-
- class Demo extends React.Component {
-
- state = {
- expandedKeys: ['0-0', '0-0-1'],
- autoExpandParent: false,
- checkedKeys: ['0-0-1'],
- selectedKeys: [],
- };
-
- onExpand = expandedKeys => {
- //自动展开
- console.log('onExpand', expandedKeys);
- // 如果没有将 autoExpandParent 设置为 false,如果子项展开,父项不能折叠。
- // 或者,您可以删除所有扩展的子键。
- this.setState({
- expandedKeys,
- autoExpandParent: false,
- });
- };
-
- onCheck = checkedKeys => {
- //单击复选框
- console.log('onCheck', checkedKeys);
- this.setState({ checkedKeys });
-
- };
-
- onSelect = (selectedKeys, info) => {
- //单击姓名
- for (let i = 0; i < selectedKeys.length; i++) {
- const element = selectedKeys[i];
- console.log(element);
- }
-
- console.log('onSelect',info);
- this.setState({ selectedKeys });
- };
-
- renderTreeNodes = data =>
- data.map(item => {
- if (item.children) {
- return (
- <TreeNode title={item.title} key={item.key} dataRef={item} >
- {this.renderTreeNodes(item.children)}
- </TreeNode>
- );
- }
- return <TreeNode key={item.key} {...item} />;
- });
-
-
-
- render() {
- return (
- <Card>
- <Row>
- <Col xs={{ span: 5, offset: 1 }} lg={{ span: 6, offset: 0 }}>
- <Card>
- <Tree
- // checkable
- showLine={true}
- onExpand={this.onExpand}
- expandedKeys={this.state.expandedKeys}
- autoExpandParent={this.state.autoExpandParent}
- onCheck={this.onCheck}
- checkedKeys={this.state.checkedKeys}
- onSelect={this.onSelect}
- selectedKeys={this.state.selectedKeys}
- >
- {this.renderTreeNodes(treeData)}
- </Tree >
- </Card>
- </Col>
- <Col xs={{ span: 10, offset: 10 }} lg={{ span: 10, offset: 4 }}>
- <Card>
- <TreedataFrom />
- </Card>
- </Col>
- </Row>
- </Card>
- );
- }
- }
-
- export default Demo
|