This commit is contained in:
Your Name 2025-05-20 11:49:59 +08:00
parent 7042f3ef48
commit 4fa3c20664
5 changed files with 44 additions and 12 deletions

View File

@ -0,0 +1,10 @@
const DashboardPage = () => {
return (
<div className="min-h-screen">
<h1>Dashboard</h1>
</div>
);
};
export default DashboardPage;

View File

@ -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<React.Key[]>([]);
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 || "无描述"
}));
// 创建工作簿
@ -447,7 +448,21 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
const rowSelection = {
selectedRowKeys,
onChange: onSelectChange,
columnWidth: 60,
columnWidth: 70,
columnTitle: (
<div className="flex items-center justify-center">
<Checkbox
indeterminate={selectedRowKeys?.length > 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: []);
}}
/>
<span className="ml-1.5 text-xs whitespace-nowrap"></span>
</div>
),
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"

View File

@ -46,9 +46,7 @@ export default function DeviceMessage() {
const [expanded, setExpanded] = useState(false);
// 添加所有筛选条件的状态
const [selectedSystem, setSelectedSystem] = useState<string | null>(null);
const [selectedDeviceType, setSelectedDeviceType] = useState<string[] | null>(
null
);
const [selectedDeviceType, setSelectedDeviceType] = useState<string | null>(null);
const [selectedDept, setSelectedDept] = useState<string | null>(null)
const [time, setTime] = useState<string>("");
const [ipAddress, setIpAddress] = useState<string>("");

View File

@ -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", <HomeOutlined />, null, null),
getItem("故障收录检索", "/device", <BookOutlined />, null, null),
getItem(
"系统设置",

View File

@ -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;
@ -39,20 +41,24 @@ export const routes: CustomRouteObject[] = [
children: [
{
index: true,
element: <DeviceMessage></DeviceMessage>,
element: <WithAuth><DashboardPage></DashboardPage></WithAuth>,
},
{
path: "/device",
element: <DeviceMessage></DeviceMessage>,
element: <WithAuth><DeviceMessage></DeviceMessage></WithAuth>,
},
{
path: "/admin",
element: <AdminLayout></AdminLayout>,
element: <WithAuth><AdminLayout></AdminLayout></WithAuth>,
children: adminRoute.children,
}
],
},]
},
{
path: "/dashboard",
element: <WithAuth><DashboardPage/></WithAuth>,
},
{
path: "/login",
breadcrumb: "登录",