From 4fa3c206642a49e0d3f0bb9ec1387c5626af0ff8 Mon Sep 17 00:00:00 2001
From: Your Name <2499342078@qq.com>
Date: Tue, 20 May 2025 11:49:59 +0800
Subject: [PATCH] ADD
---
.../app/main/devicepage/dashboard/page.tsx | 10 +++++++
.../app/main/devicepage/devicetable/page.tsx | 26 +++++++++++++++----
apps/web/src/app/main/devicepage/page.tsx | 4 +--
.../src/app/main/layout/NavigationMenu.tsx | 2 ++
apps/web/src/routes/index.tsx | 14 +++++++---
5 files changed, 44 insertions(+), 12 deletions(-)
create mode 100644 apps/web/src/app/main/devicepage/dashboard/page.tsx
diff --git a/apps/web/src/app/main/devicepage/dashboard/page.tsx b/apps/web/src/app/main/devicepage/dashboard/page.tsx
new file mode 100644
index 0000000..37989f2
--- /dev/null
+++ b/apps/web/src/app/main/devicepage/dashboard/page.tsx
@@ -0,0 +1,10 @@
+const DashboardPage = () => {
+
+ return (
+
+
Dashboard
+
+ );
+};
+
+export default DashboardPage;
diff --git a/apps/web/src/app/main/devicepage/devicetable/page.tsx b/apps/web/src/app/main/devicepage/devicetable/page.tsx
index 0a80751..01345b4 100755
--- a/apps/web/src/app/main/devicepage/devicetable/page.tsx
+++ b/apps/web/src/app/main/devicepage/devicetable/page.tsx
@@ -1,4 +1,4 @@
-import { Button, Modal, Table, Upload } from "antd";
+import { Button, Checkbox, Modal, Table, Upload } from "antd";
import { ColumnsType } from "antd/es/table";
import { api, useDevice, useStaff } from "@nice/client";
import { useEffect, useState, useImperativeHandle, forwardRef, useRef } from "react";
@@ -221,7 +221,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
- const onSelectChange = (newSelectedRowKeys: React.Key[]) => {
+ const onSelectChange = (newSelectedRowKeys: React.Key[], selectedRows: any[]) => {
setSelectedRowKeys(newSelectedRowKeys);
};
//导出函数
@@ -252,7 +252,8 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
};
return statusMap[item.deviceStatus] || "未知";
})(),
- '时间': item.createdAt ? dayjs(item.createdAt).format('YYYY-MM-DD') : "未知"
+ '时间': item.createdAt ? dayjs(item.createdAt).format('YYYY-MM-DD') : "未知",
+ '描述': item.notes || "无描述"
}));
// 创建工作簿
@@ -261,7 +262,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
utils.book_append_sheet(wb, ws, "故障数据");
// 导出Excel文件
- writeFile(wb, `故障数据_${dayjs().format('YYYYMMDD_HHmmss')}.xlsx`);
+ writeFile(wb, `故障数据_${dayjs().format('YYYYMMDD_HHm mss')}.xlsx`);
toast.success(`成功导出 ${selectedData.length} 条数据`);
} catch (error) {
@@ -447,7 +448,21 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
const rowSelection = {
selectedRowKeys,
onChange: onSelectChange,
- columnWidth: 60,
+ columnWidth: 70,
+ columnTitle: (
+
+ 0 && selectedRowKeys?.length < (devices?.length || 0)}
+ checked={(devices?.length || 0) > 0 && selectedRowKeys?.length === (devices?.length || 0)}
+ onChange={(e) => {
+ const checked = e.target.checked;
+ const newSelectedRowKeys = checked ? (devices || []).map(item => item.id) : [];
+ onSelectChange(newSelectedRowKeys, checked ? devices: []);
+ }}
+ />
+ 全选
+
+ ),
preserveSelectedRowKeys: true // 这个属性保证翻页时选中状态不丢失
}
const TableHeader = () => (
@@ -496,6 +511,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
rowKey="id"
columns={columns}
dataSource={devices}
+ size="middle"
tableLayout="fixed"
rowClassName={(record, index) =>
index % 2 === 0 ? "bg-white" : "bg-gray-100"
diff --git a/apps/web/src/app/main/devicepage/page.tsx b/apps/web/src/app/main/devicepage/page.tsx
index 7941ce2..8d301cc 100755
--- a/apps/web/src/app/main/devicepage/page.tsx
+++ b/apps/web/src/app/main/devicepage/page.tsx
@@ -46,9 +46,7 @@ export default function DeviceMessage() {
const [expanded, setExpanded] = useState(false);
// 添加所有筛选条件的状态
const [selectedSystem, setSelectedSystem] = useState(null);
- const [selectedDeviceType, setSelectedDeviceType] = useState(
- null
- );
+ const [selectedDeviceType, setSelectedDeviceType] = useState(null);
const [selectedDept, setSelectedDept] = useState(null)
const [time, setTime] = useState("");
const [ipAddress, setIpAddress] = useState("");
diff --git a/apps/web/src/app/main/layout/NavigationMenu.tsx b/apps/web/src/app/main/layout/NavigationMenu.tsx
index e36a5a5..00ef337 100755
--- a/apps/web/src/app/main/layout/NavigationMenu.tsx
+++ b/apps/web/src/app/main/layout/NavigationMenu.tsx
@@ -8,6 +8,7 @@ import {
UserOutlined,
TeamOutlined,
KeyOutlined,
+ HomeOutlined,
} from "@ant-design/icons";
function getItem(
@@ -28,6 +29,7 @@ function getItem(
};
}
const items = [
+ getItem("首页", "/dashboard", , null, null),
getItem("故障收录检索", "/device", , null, null),
getItem(
"系统设置",
diff --git a/apps/web/src/routes/index.tsx b/apps/web/src/routes/index.tsx
index aea469f..251e563 100755
--- a/apps/web/src/routes/index.tsx
+++ b/apps/web/src/routes/index.tsx
@@ -9,6 +9,8 @@ import { MainLayout } from "../app/main/layout/MainLayout";
import DeviceMessage from "../app/main/devicepage/page";
import AdminLayout from "../components/layout/admin/AdminLayout";
import { adminRoute } from "./admin-route";
+import WithAuth from "../components/utils/with-auth";
+import DashboardPage from "../app/main/devicepage/dashboard/page";
interface CustomIndexRouteObject extends IndexRouteObject {
name?: string;
breadcrumb?: string;
@@ -37,22 +39,26 @@ export const routes: CustomRouteObject[] = [
children: [
{
children: [
- {
+ {
index: true,
- element: ,
+ element: ,
},
{
path: "/device",
- element: ,
+ element: ,
},
{
path: "/admin",
- element: ,
+ element: ,
children: adminRoute.children,
}
],
},]
},
+ {
+ path: "/dashboard",
+ element: ,
+ },
{
path: "/login",
breadcrumb: "登录",