From 05bc285d2f7001a170bc034a3419d1013a4d3e11 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 12:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/department/index.tsx | 2 +- src/pages/department/update.module.less | 0 src/pages/department/update.tsx | 165 ++++++++++++++++++++++++ src/pages/index.ts | 1 + src/pages/system/adminroles/update.tsx | 1 + src/router/routes.tsx | 6 + 6 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 src/pages/department/update.module.less create mode 100644 src/pages/department/update.tsx diff --git a/src/pages/department/index.tsx b/src/pages/department/index.tsx index fef729f..1750927 100644 --- a/src/pages/department/index.tsx +++ b/src/pages/department/index.tsx @@ -60,7 +60,7 @@ export const DepartmentPage: React.FC = () => { type="link" danger className="c-red" - onClick={() => navigate(`/system/adminroles/update/${record.id}`)} + onClick={() => navigate(`/department/update/${record.id}`)} > 详情 diff --git a/src/pages/department/update.module.less b/src/pages/department/update.module.less new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/department/update.tsx b/src/pages/department/update.tsx new file mode 100644 index 0000000..830c259 --- /dev/null +++ b/src/pages/department/update.tsx @@ -0,0 +1,165 @@ +import React, { useState, useEffect } from "react"; +import { Row, Col, Form, Input, Cascader, Button, message } from "antd"; +import styles from "./create.module.less"; +import { department } from "../../api/index"; +import { useParams, useNavigate } from "react-router-dom"; +import { BackBartment } from "../../compenents"; + +interface Option { + value: string | number; + label: string; + children?: Option[]; +} + +export const DepartmentUpdatePage: React.FC = () => { + const params = useParams(); + const navigate = useNavigate(); + const [form] = Form.useForm(); + const [loading, setLoading] = useState(true); + const [categories, setCategories] = useState([]); + const [parent_id, setParentId] = useState(0); + + useEffect(() => { + getParams(); + }, []); + + useEffect(() => { + getDetail(); + }, [params.depId]); + + const getParams = () => { + department.createDepartment().then((res: any) => { + const departments = res.data.departments; + const new_arr: Option[] = checkArr(departments, 0); + setCategories(new_arr); + }); + }; + + const getDetail = () => { + department.department(Number(params.depId)).then((res: any) => { + let data = res.data; + let arr = data.parent_chain.split(","); + let new_arr: any[] = []; + arr.map((num: any) => { + new_arr.push(Number(num)); + }); + form.setFieldsValue({ + name: data.name, + sort: data.sort, + parent_id: new_arr, + }); + setParentId(data.parent_id); + }); + }; + + 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({ + label: departments[id][i].name, + value: departments[id][i].id, + }); + } else { + const new_arr: Option[] = checkArr(departments, departments[id][i].id); + arr.push({ + label: departments[id][i].name, + value: departments[id][i].id, + children: new_arr, + }); + } + } + return arr; + }; + + const onFinish = (values: any) => { + let id = Number(params.depId); + department + .updateDepartment(id, values.name, parent_id, values.sort) + .then((res: any) => { + message.success("保存成功!"); + navigate(-1); + }); + }; + + const onFinishFailed = (errorInfo: any) => { + console.log("Failed:", errorInfo); + }; + + const handleChange = (value: any) => { + let it = value[value.length - 1]; + setParentId(it); + }; + + const displayRender = (label: any, selectedOptions: any) => { + return label[label.length - 1]; + }; + + return ( + <> + + +
+ +
+
+
+ + + + + + + + + + + + + +
+
+ +
+ + ); +}; diff --git a/src/pages/index.ts b/src/pages/index.ts index ecda755..a45a140 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -15,3 +15,4 @@ export * from "./system/adminroles/create"; export * from "./system/adminroles/update"; export * from "./department"; export * from "./department/create"; +export * from "./department/update"; diff --git a/src/pages/system/adminroles/update.tsx b/src/pages/system/adminroles/update.tsx index 613fb01..f68e1bf 100644 --- a/src/pages/system/adminroles/update.tsx +++ b/src/pages/system/adminroles/update.tsx @@ -15,6 +15,7 @@ export const AdminrolesUpdatePage: React.FC = () => { useEffect(() => { getParams(); }, []); + useEffect(() => { getDetail(); }, [params.roleId]); diff --git a/src/router/routes.tsx b/src/router/routes.tsx index e320dd7..21acabc 100644 --- a/src/router/routes.tsx +++ b/src/router/routes.tsx @@ -17,6 +17,7 @@ import { AdminrolesUpdatePage, DepartmentPage, DepartmentCreatePage, + DepartmentUpdatePage } from "../pages"; const routes: RouteObject[] = [ @@ -76,6 +77,11 @@ const routes: RouteObject[] = [ path: "/department/create", element: , }, + { + path: "/department/update/:depId", + element: , + }, + ], }, {