From afa5f08a8a6ba65a81e7e856ae186ee72f55a834 Mon Sep 17 00:00:00 2001 From: BenjaminNH <1249376374@qq.com> Date: Mon, 30 Jun 2025 10:22:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E8=B4=9F=E8=B4=A3=E4=BA=BA=E6=9F=A5=E7=9C=8B=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/menuConfig.js | 7 +- src/pages/leader/Approval.jsx | 3 +- src/pages/leader/MyApproval.jsx | 121 ++++++++++++++++++++++++++++++++ src/router/index.jsx | 5 ++ 4 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 src/pages/leader/MyApproval.jsx 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 ( +