diff --git a/frontend/src/pages/admin/AdminDashboard.tsx b/frontend/src/pages/admin/AdminDashboard.tsx index a312c24..8f1a66d 100644 --- a/frontend/src/pages/admin/AdminDashboard.tsx +++ b/frontend/src/pages/admin/AdminDashboard.tsx @@ -4,7 +4,7 @@ import { RefreshCw, Loader2, AlertCircle, ArrowRight, Clock, MessageCircle, CheckCircle2, Users, } from "lucide-react"; import { useNavigate } from "react-router-dom"; -import { Radio, DatePicker, Drawer, Input } from "antd"; +import { Radio, DatePicker, Drawer, Input, Select } from "antd"; import dayjs, { type Dayjs } from "dayjs"; import { fetchDashboardStats, fetchWipTasks, fetchDashboardMessages, fetchCompletedTasks, fetchRejectedTasks, fetchUserOperations, @@ -269,9 +269,11 @@ export default function AdminDashboard() { const [rejectedTasks, setRejectedTasks] = useState([]); const [rejectedLoading, setRejectedLoading] = useState(false); - // 人员操作统计 + // 人员操作统计(抽屉) + const [opsDrawerOpen, setOpsDrawerOpen] = useState(false); const [opStats, setOpStats] = useState([]); const [opLoading, setOpLoading] = useState(false); + const [opFilterUser, setOpFilterUser] = useState(""); // 人员选择,'' = 全部 const navigate = useNavigate(); @@ -327,7 +329,7 @@ export default function AdminDashboard() { .finally(() => setRejectedLoading(false)); }; - // 人员操作统计 — 跟随顶部时间筛选 + // 人员操作统计 — 跟随顶部时间筛选(打开抽屉时加载) const loadUserOperations = useCallback(() => { setOpLoading(true); const { since, until } = rangeToParams(dateKey, customRange); @@ -337,7 +339,11 @@ export default function AdminDashboard() { .finally(() => setOpLoading(false)); }, [dateKey, customRange]); - useEffect(() => { loadUserOperations(); }, [loadUserOperations]); + const openOpsDrawer = () => { + setOpsDrawerOpen(true); + setOpFilterUser(""); + loadUserOperations(); + }; const onMsgSearch = (value: string) => { setMsgKeyword(value); @@ -540,54 +546,15 @@ export default function AdminDashboard() { className="flex w-full items-center justify-between rounded-lg bg-purple-50 px-4 py-3 text-left text-sm font-medium text-purple-700 hover:bg-purple-100 transition-colors"> 💬 协同留言 + {/* 👥 人员操作统计入口 */} + - {/* ═══ 人员操作统计 ═══ */} -
-
-

- 👥 人员操作统计 -

- 接收 / 转交 / 上传备注 · 跟随时间筛选 -
- {opLoading ? ( -
- -
- ) : opStats.length === 0 ? ( -
该时段暂无操作记录
- ) : ( -
- - - - - - - - - - - - - {opStats.map((u, idx) => ( - - - - - - - - - ))} - -
#人员接收转交上传备注总次数
{idx + 1}{u.user_name}{u.receive_count}{u.transfer_count}{u.record_count}{u.total}
-
- )} -
- {/* ═══ 留言抽屉 ═══ */} 💬 协同留言板 全厂 · {msgTotal} 条} @@ -707,6 +674,65 @@ export default function AdminDashboard() { )} + + {/* ═══ 人员操作统计抽屉 ═══ */} + 👥 人员操作统计 {opStats.length} 人} + open={opsDrawerOpen} + onClose={() => setOpsDrawerOpen(false)} + size="large" + styles={{ body: { padding: 16, background: "#f8fafc" } }} + > + {/* 人员选择 */} +
+