diff --git a/src/config/menuConfig.js b/src/config/menuConfig.js index 735b8ab..456f46f 100644 --- a/src/config/menuConfig.js +++ b/src/config/menuConfig.js @@ -1,8 +1,10 @@ import { DesktopOutlined, + FileDoneOutlined, UnorderedListOutlined, UserOutlined, } from "@ant-design/icons"; +import { lazy } from "react"; const menuConfig = [ { @@ -23,6 +25,12 @@ const menuConfig = [ icon: UserOutlined, roles: ["USER"], }, + { + path: "/leader/approval", + label: "预约审批", + icon: FileDoneOutlined, + roles: ["LEADER"], + }, ]; export default menuConfig; diff --git a/src/config/roleRouteConfig.js b/src/config/roleRouteConfig.js new file mode 100644 index 0000000..ad3fca9 --- /dev/null +++ b/src/config/roleRouteConfig.js @@ -0,0 +1,8 @@ +const roleRoute = { + USER: "/user/reserve", + ADMIN: "/admin/user-manage", + LEADER: "/leader/approval", + DEVICE_ADMIN: "/device-admin/approval", +}; + +export default roleRoute; diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx index 24ade3a..31be108 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.jsx @@ -3,6 +3,7 @@ import { Button, Flex, Form, Input, message } from "antd"; import { useDispatch } from "react-redux"; import { useNavigate } from "react-router-dom"; import { login } from "../features/auth/authThunk"; +import roleRoute from "../config/roleRouteConfig"; export default function Login() { const dispatch = useDispatch(); @@ -10,8 +11,13 @@ export default function Login() { const onFinish = async (values) => { const res = await dispatch(login(values)).unwrap(); - message.success("登录成功"); - navigate("/user/reserve"); + const path = res.roles.map((r) => roleRoute[r]).find(Boolean); + if (path) { + message.success("登录成功"); + navigate(path); + } else { + message.error("系统错误"); + } }; return ( diff --git a/src/pages/leader/Approval.jsx b/src/pages/leader/Approval.jsx new file mode 100644 index 0000000..a61b78c --- /dev/null +++ b/src/pages/leader/Approval.jsx @@ -0,0 +1,92 @@ +import { Button, Space, Table } from "antd"; +import Column from "antd/es/table/Column"; +import { useEffect, useState } from "react"; +import { useSelector } from "react-redux"; +import { selectUserId } from "../../features/auth/authSlice"; +import axiosInstance from "../../api/axios"; + +export default function LeaderApproval() { + const [reservations, setReservations] = useState([]); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + }); + + const userId = useSelector(selectUserId); + + const fetchData = async (pagination) => { + const data = await axiosInstance.get(`/reservation/leader/${userId}`, { + params: { + page: pagination.current, + size: pagination.pageSize, + }, + }); + console.log(data); + + setReservations(data.records); + setPagination({ + ...pagination, + total: data.total, + }); + }; + + useEffect(() => { + fetchData(pagination); + }, []); + + const handlePageChange = (pagination) => { + fetchData(pagination); + }; + + const handleApproval = (reservationId, isApprove) => { + console.log(reservationId); + console.log(isApprove); + }; + + // "预约人、所属团队、联系方式、预约设备、预约时间: 设备详情、" + return ( +