diff --git a/src/config/menuConfig.js b/src/config/menuConfig.js index 456f46f..019faee 100644 --- a/src/config/menuConfig.js +++ b/src/config/menuConfig.js @@ -4,7 +4,6 @@ import { UnorderedListOutlined, UserOutlined, } from "@ant-design/icons"; -import { lazy } from "react"; const menuConfig = [ { @@ -31,6 +30,12 @@ const menuConfig = [ icon: FileDoneOutlined, roles: ["LEADER"], }, + { + path: "/leader/my-approval", + label: "审批记录", + icon: UnorderedListOutlined, + roles: ["LEADER"], + }, ]; export default menuConfig; diff --git a/src/pages/leader/Approval.jsx b/src/pages/leader/Approval.jsx index 325f313..002e5f8 100644 --- a/src/pages/leader/Approval.jsx +++ b/src/pages/leader/Approval.jsx @@ -2,9 +2,8 @@ import { Button, message, 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"; -import { current } from "@reduxjs/toolkit"; +import { selectUserId } from "../../features/auth/authSlice"; export default function LeaderApproval() { const [reservations, setReservations] = useState([]); diff --git a/src/pages/leader/MyApproval.jsx b/src/pages/leader/MyApproval.jsx new file mode 100644 index 0000000..01ba1a6 --- /dev/null +++ b/src/pages/leader/MyApproval.jsx @@ -0,0 +1,121 @@ +import { Button, Form, Input, Table, Tag } from "antd"; +import { useForm } from "antd/es/form/Form"; +import Column from "antd/es/table/Column"; +import { useEffect, useState } from "react"; +import { useSelector } from "react-redux"; +import axiosInstance from "../../api/axios"; +import { selectUserId } from "../../features/auth/authSlice"; + +export default function LeaderMyApproval() { + const [approvals, setApprovals] = useState([]); + const [form] = useForm(); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + }); + + const userId = useSelector(selectUserId); + + const fetchData = async (pagination, searchParam) => { + const data = await axiosInstance.get(`/approval/leader/${userId}`, { + params: { + page: pagination.current, + size: pagination.pageSize, + applicantName: searchParam?.applicantName, + deviceName: searchParam?.deviceName, + }, + }); + + setApprovals(data.records); + setPagination({ + ...pagination, + total: data.total, + }); + }; + + useEffect(() => { + fetchData(pagination); + }, []); + + const handlePageChange = async (pagination) => { + const values = await form.validateFields(); + fetchData(pagination, values); + }; + + const handleSearch = async () => { + const values = await form.validateFields(); + fetchData( + { + current: 1, + pageSize: pagination.pageSize, + }, + values + ); + }; + + return ( +