diff --git a/src/config/menuConfig.js b/src/config/menuConfig.js
index b4e32f7..2db2373 100644
--- a/src/config/menuConfig.js
+++ b/src/config/menuConfig.js
@@ -20,28 +20,22 @@ const menuConfig = [
},
{
- path: "/leader/approval",
+ path: "/approval",
label: "预约审批",
icon: FileDoneOutlined,
- roles: ["LEADER"],
+ roles: ["LEADER", "DEVICE_ADMIN"],
},
{
- path: "/leader/my-approval",
+ path: "/my-approval",
label: "审批记录",
icon: UnorderedListOutlined,
- roles: ["LEADER"],
- },
- {
- path: "/device-admin/approval",
- label: "预约审批",
- icon: FileDoneOutlined,
- roles: ["DEVICE_ADMIN"],
+ roles: ["LEADER", "DEVICE_ADMIN"],
},
{
path: "/userdetail",
label: "个人信息",
icon: UserOutlined,
- roles: ["USER", "DEVICE_ADMIN"],
+ roles: ["USER", "LEADER", "DEVICE_ADMIN", "ADMIN"],
},
];
diff --git a/src/config/roleRouteConfig.js b/src/config/roleRouteConfig.js
index ad3fca9..f98c679 100644
--- a/src/config/roleRouteConfig.js
+++ b/src/config/roleRouteConfig.js
@@ -1,8 +1,8 @@
const roleRoute = {
USER: "/user/reserve",
ADMIN: "/admin/user-manage",
- LEADER: "/leader/approval",
- DEVICE_ADMIN: "/device-admin/approval",
+ LEADER: "/approval",
+ DEVICE_ADMIN: "/approval",
};
export default roleRoute;
diff --git a/src/pages/deviceAdmin/Approval.jsx b/src/pages/deviceAdmin/Approval.jsx
deleted file mode 100644
index ebf7768..0000000
--- a/src/pages/deviceAdmin/Approval.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import ApprovalTable from "../../components/ApprovalTable";
-
-export default function DeviceAdminApproval() {
- return ;
-}
diff --git a/src/pages/leader/Approval.jsx b/src/pages/leader/Approval.jsx
deleted file mode 100644
index 3420380..0000000
--- a/src/pages/leader/Approval.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import ApprovalTable from "../../components/ApprovalTable";
-
-export default function LeaderApproval() {
- return ;
-}
diff --git a/src/components/ApprovalTable.jsx b/src/pages/shared/Approval.jsx
similarity index 82%
rename from src/components/ApprovalTable.jsx
rename to src/pages/shared/Approval.jsx
index 3da6381..c3a8f1c 100644
--- a/src/components/ApprovalTable.jsx
+++ b/src/pages/shared/Approval.jsx
@@ -2,10 +2,11 @@ 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 axiosInstance from "../api/axios";
-import { selectUserId } from "../features/auth/authSlice";
+import axiosInstance from "../../api/axios";
+import { selectUserId } from "../../features/auth/authSlice";
+import { selectUserRole } from "../../features/auth/authSlice";
-export default function ApprovalTable({ showNeedAssist }) {
+export default function Approval() {
const [reservations, setReservations] = useState([]);
const [pagination, setPagination] = useState({
current: 1,
@@ -14,6 +15,11 @@ export default function ApprovalTable({ showNeedAssist }) {
});
const userId = useSelector(selectUserId);
+ const roles = useSelector(selectUserRole);
+ let showNeedAssist = false;
+ if (roles.some((r) => r === "DEVICE_ADMIN")) {
+ showNeedAssist = true;
+ }
const fetchData = async (pagination) => {
const data = await axiosInstance.get(`/reservation/approval/${userId}`, {
@@ -34,12 +40,12 @@ export default function ApprovalTable({ showNeedAssist }) {
fetchData(pagination);
}, []);
- const handlePageChange = (pagination) => {
- fetchData(pagination);
+ const handlePageChange = async (pagination) => {
+ await fetchData(pagination);
};
- const handleApproval = (reservationId, isApprove, needAssist) => {
- axiosInstance.post("/approval", {
+ const handleApproval = async (reservationId, isApprove, needAssist) => {
+ await axiosInstance.post("/approval", {
userId,
reservationId,
isApprove,
@@ -52,7 +58,7 @@ export default function ApprovalTable({ showNeedAssist }) {
current: 1,
};
setPagination(newPagination);
- fetchData(newPagination);
+ await fetchData(newPagination);
};
// "预约人、所属团队、联系方式、预约设备、预约时间: 设备详情、"
diff --git a/src/pages/leader/MyApproval.jsx b/src/pages/shared/MyApproval.jsx
similarity index 84%
rename from src/pages/leader/MyApproval.jsx
rename to src/pages/shared/MyApproval.jsx
index 01ba1a6..3cce9e5 100644
--- a/src/pages/leader/MyApproval.jsx
+++ b/src/pages/shared/MyApproval.jsx
@@ -6,7 +6,7 @@ import { useSelector } from "react-redux";
import axiosInstance from "../../api/axios";
import { selectUserId } from "../../features/auth/authSlice";
-export default function LeaderMyApproval() {
+export default function MyApproval() {
const [approvals, setApprovals] = useState([]);
const [form] = useForm();
const [pagination, setPagination] = useState({
@@ -18,7 +18,7 @@ export default function LeaderMyApproval() {
const userId = useSelector(selectUserId);
const fetchData = async (pagination, searchParam) => {
- const data = await axiosInstance.get(`/approval/leader/${userId}`, {
+ const data = await axiosInstance.get(`/approval/${userId}`, {
params: {
page: pagination.current,
size: pagination.pageSize,
@@ -93,13 +93,21 @@ export default function LeaderMyApproval() {
{
+ render={(_, { decision, status }) => {
if (decision === 1) {
- return (
-
- 通过
-
- );
+ if (status === "APPROVED_ASSIST") {
+ return (
+
+ 通过,需要协助
+
+ );
+ } else {
+ return (
+
+ 通过
+
+ );
+ }
}
if (decision === 0) {
return (
diff --git a/src/pages/UserDetail.jsx b/src/pages/shared/UserDetail.jsx
similarity index 97%
rename from src/pages/UserDetail.jsx
rename to src/pages/shared/UserDetail.jsx
index 59d3a30..24c63f2 100644
--- a/src/pages/UserDetail.jsx
+++ b/src/pages/shared/UserDetail.jsx
@@ -2,8 +2,8 @@ import { Button, Col, Form, Input, message, Row } from "antd";
import { useForm } from "antd/es/form/Form";
import { useEffect, useState } from "react";
import { useSelector } from "react-redux";
-import axiosInstance from "../api/axios";
-import { selectUserId } from "../features/auth/authSlice";
+import axiosInstance from "../../api/axios";
+import { selectUserId } from "../../features/auth/authSlice";
export default function UserDetail() {
const [form] = useForm();
diff --git a/src/pages/user/MyReservation.jsx b/src/pages/user/MyReservation.jsx
index 8b36f57..a8e78e1 100644
--- a/src/pages/user/MyReservation.jsx
+++ b/src/pages/user/MyReservation.jsx
@@ -74,11 +74,29 @@ export default function MyReservation() {
title="预约状态"
key="statusLabel"
dataIndex="statusLabel"
- render={(_, { statusLabel }) => {
- const color = statusLabel === "通过" ? "green" : "yellow";
+ render={(_, record) => {
+ if (record.statusLabel === "通过") {
+ return (
+
+ 通过
+
+ );
+ } else if (record.statusLabel === "不通过") {
+ return (
+
+ 不通过
+
+ );
+ } else if (record.statusLabel === "通过,需要协助实验") {
+ return (
+
+ 通过,需要协助实验
+
+ );
+ }
return (
-
- {statusLabel}
+
+ {record.statusLabel}
);
}}
diff --git a/src/pages/user/Reserve.jsx b/src/pages/user/Reserve.jsx
index 5d9a28f..d31fbe1 100644
--- a/src/pages/user/Reserve.jsx
+++ b/src/pages/user/Reserve.jsx
@@ -95,7 +95,6 @@ export default function Reserve() {
key="action"
render={(_, record) => (
- 查看日历
setSelectedDevice(record)}>预约
)}
diff --git a/src/router/index.jsx b/src/router/index.jsx
index 5a3f688..60967ab 100644
--- a/src/router/index.jsx
+++ b/src/router/index.jsx
@@ -6,8 +6,10 @@ import LeaderMyApproval from "../pages/leader/MyApproval";
import Login from "../pages/Login";
import MyReservation from "../pages/user/MyReservation";
import Reserve from "../pages/user/Reserve";
-import UserDetail from "../pages/UserDetail";
+import UserDetail from "../pages/shared/UserDetail";
import ProtectedRoute from "./ProtectedRoute";
+import Approval from "../pages/shared/Approval";
+import MyApproval from "../pages/shared/MyApproval";
const router = createBrowserRouter([
{
@@ -37,26 +39,15 @@ const router = createBrowserRouter([
],
},
{
- path: "leader",
- element: ,
+ element: ,
children: [
{
path: "approval",
- element: ,
+ element: ,
},
{
path: "my-approval",
- element: ,
- },
- ],
- },
- {
- path: "device-admin",
- element: ,
- children: [
- {
- path: "approval",
- element: ,
+ element: ,
},
],
},