12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react';
  2. import { Button, Card, Tree, Modal } from 'antd';
  3. import useBool from '@/utils/hooks/useBool';
  4. import arr2Tree from '@/utils/arr2Tree';
  5. export default (props) => {
  6. const { role } = props;
  7. const [loading, startLoading, cancelLoading] = useBool();
  8. const [list, setList] = React.useState([]);
  9. const [treeData, setTreeData] = React.useState([]);
  10. const title = role ? `${role.name} - 授权菜单` : '授权菜单';
  11. const onSelect = (selectedKeys, info) => {
  12. console.log('selected', selectedKeys, info);
  13. };
  14. const onCheck = (checkedKeys, info) => {
  15. console.log('onCheck', checkedKeys, info);
  16. };
  17. React.useEffect(() => {
  18. if (!role) {
  19. setList([]);
  20. }
  21. }, [role]);
  22. React.useEffect(() => {
  23. // 先转为需要的格式
  24. const arr = list.map(x => ({ title: x.name, key: x.id, parentId: x.parentId }));
  25. // 再转为 tree
  26. setTreeData(arr2Tree(arr));
  27. }, [list]);
  28. return (
  29. <Card
  30. loading={loading}
  31. title={title}
  32. extra={<Button type='primary' ghost>保存</Button>}
  33. >
  34. <Tree
  35. checkable
  36. onSelect={onSelect}
  37. onCheck={onCheck}
  38. treeData={treeData}
  39. />
  40. </Card>
  41. )
  42. }