From d6107055b05322c2b133f46082d3d4c7f57037d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com> Date: Tue, 7 Mar 2023 15:16:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=91=E5=BD=A2=E9=83=A8=E9=97=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/compenents/treeDepartment/index.tsx | 53 ++++++++++++++++--------- src/pages/member/index.tsx | 18 ++++++--- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/src/compenents/treeDepartment/index.tsx b/src/compenents/treeDepartment/index.tsx index e2bb5c5..fe008b2 100644 --- a/src/compenents/treeDepartment/index.tsx +++ b/src/compenents/treeDepartment/index.tsx @@ -1,12 +1,14 @@ import { Button, Input, message, Tree } from "antd"; import { useState, useEffect } from "react"; import { department } from "../../api/index"; +interface Option { + key: string | number; + title: string; + children?: Option[]; +} interface PropInterface { - defaultExpandedKeys: any; - defaultSelectedKeys: any; - defaultCheckedKeys: any; - onUpdate: () => void; + onUpdate: (keys: any) => void; } export const TreeDepartment = (props: PropInterface) => { @@ -15,23 +17,38 @@ export const TreeDepartment = (props: PropInterface) => { useEffect(() => { setLoading(true); department.departmentList().then((res: any) => { - setTreeData(res.data); + const departments = res.data.departments; + const new_arr: Option[] = checkArr(departments, 0); + setTreeData(new_arr); setTimeout(() => { setLoading(false); }, 1000); }); }, []); - const onSelect = () => {}; - const onCheck = () => {}; - return ( - - ); + + const checkArr = (departments: any[], id: number) => { + const arr = []; + for (let i = 0; i < departments[id].length; i++) { + if (!departments[departments[id][i].id]) { + arr.push({ + title: departments[id][i].name, + key: departments[id][i].id, + }); + } else { + const new_arr: Option[] = checkArr(departments, departments[id][i].id); + arr.push({ + title: departments[id][i].name, + key: departments[id][i].id, + children: new_arr, + }); + } + } + return arr; + }; + + const onSelect = (selectedKeys: any, info: any) => { + props.onUpdate(selectedKeys); + }; + + return ; }; diff --git a/src/pages/member/index.tsx b/src/pages/member/index.tsx index 4ffa0b7..d038696 100644 --- a/src/pages/member/index.tsx +++ b/src/pages/member/index.tsx @@ -17,6 +17,7 @@ import { PlusOutlined, ReloadOutlined } from "@ant-design/icons"; import { user } from "../../api/index"; import { dateFormat } from "../../utils/index"; import { Link, useNavigate } from "react-router-dom"; +import { TreeDepartment } from "../../compenents"; interface DataType { id: React.Key; @@ -32,15 +33,16 @@ export const MemberPage: React.FC = () => { const navigate = useNavigate(); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [loading, setLoading] = useState(true); - const [page, setPage] = useState(1); - const [size, setSize] = useState(10); + const [page, setPage] = useState(1); + const [size, setSize] = useState(10); const [list, setList] = useState([]); - const [total, setTotal] = useState(0); + const [total, setTotal] = useState(0); const [refresh, setRefresh] = useState(false); const [nickname, setNickname] = useState(""); const [email, setEmail] = useState(""); const [id_card, setIdCard] = useState(""); + const [dep_ids, setDepIds] = useState([]); const columns: ColumnsType = [ { @@ -104,7 +106,7 @@ export const MemberPage: React.FC = () => { useEffect(() => { getData(); - }, [refresh, page, size]); + }, [refresh, page, size, dep_ids]); const onSelectChange = (newSelectedRowKeys: React.Key[]) => { console.log("selectedRowKeys changed: ", newSelectedRowKeys); @@ -112,12 +114,14 @@ export const MemberPage: React.FC = () => { }; const getData = () => { + let depIds = dep_ids.join(","); setLoading(true); user .userList(page, size, { nickname: nickname, email: email, id_card: id_card, + dep_ids: depIds, }) .then((res: any) => { setList(res.data.data); @@ -171,7 +175,11 @@ export const MemberPage: React.FC = () => { return ( <> - + +
+ setDepIds(keys)} /> +
+