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)} />
+
+