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 { ColumnsType } from "antd/es/table";
import { api, useDevice, useStaff } from "@nice/client"; import { api, useDevice, useStaff } from "@nice/client";
import { useEffect, useState, useImperativeHandle, forwardRef, useRef } from "react"; 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 [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
const onSelectChange = (newSelectedRowKeys: React.Key[]) => { const onSelectChange = (newSelectedRowKeys: React.Key[], selectedRows: any[]) => {
setSelectedRowKeys(newSelectedRowKeys); setSelectedRowKeys(newSelectedRowKeys);
}; };
//导出函数 //导出函数
@ -252,7 +252,8 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
}; };
return statusMap[item.deviceStatus] || "未知"; 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 = { const rowSelection = {
selectedRowKeys, selectedRowKeys,
onChange: onSelectChange, 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 // 这个属性保证翻页时选中状态不丢失 preserveSelectedRowKeys: true // 这个属性保证翻页时选中状态不丢失
} }
const TableHeader = () => ( const TableHeader = () => (
@ -496,6 +511,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) =>
rowKey="id" rowKey="id"
columns={columns} columns={columns}
dataSource={devices} dataSource={devices}
size="middle"
tableLayout="fixed" tableLayout="fixed"
rowClassName={(record, index) => rowClassName={(record, index) =>
index % 2 === 0 ? "bg-white" : "bg-gray-100" index % 2 === 0 ? "bg-white" : "bg-gray-100"

View File

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

View File

@ -8,6 +8,7 @@ import {
UserOutlined, UserOutlined,
TeamOutlined, TeamOutlined,
KeyOutlined, KeyOutlined,
HomeOutlined,
} from "@ant-design/icons"; } from "@ant-design/icons";
function getItem( function getItem(
@ -28,6 +29,7 @@ function getItem(
}; };
} }
const items = [ const items = [
getItem("首页", "/dashboard", <HomeOutlined />, null, null),
getItem("故障收录检索", "/device", <BookOutlined />, null, null), getItem("故障收录检索", "/device", <BookOutlined />, null, null),
getItem( getItem(
"系统设置", "系统设置",

View File

@ -9,6 +9,8 @@ import { MainLayout } from "../app/main/layout/MainLayout";
import DeviceMessage from "../app/main/devicepage/page"; import DeviceMessage from "../app/main/devicepage/page";
import AdminLayout from "../components/layout/admin/AdminLayout"; import AdminLayout from "../components/layout/admin/AdminLayout";
import { adminRoute } from "./admin-route"; import { adminRoute } from "./admin-route";
import WithAuth from "../components/utils/with-auth";
import DashboardPage from "../app/main/devicepage/dashboard/page";
interface CustomIndexRouteObject extends IndexRouteObject { interface CustomIndexRouteObject extends IndexRouteObject {
name?: string; name?: string;
breadcrumb?: string; breadcrumb?: string;
@ -39,20 +41,24 @@ export const routes: CustomRouteObject[] = [
children: [ children: [
{ {
index: true, index: true,
element: <DeviceMessage></DeviceMessage>, element: <WithAuth><DashboardPage></DashboardPage></WithAuth>,
}, },
{ {
path: "/device", path: "/device",
element: <DeviceMessage></DeviceMessage>, element: <WithAuth><DeviceMessage></DeviceMessage></WithAuth>,
}, },
{ {
path: "/admin", path: "/admin",
element: <AdminLayout></AdminLayout>, element: <WithAuth><AdminLayout></AdminLayout></WithAuth>,
children: adminRoute.children, children: adminRoute.children,
} }
], ],
},] },]
}, },
{
path: "/dashboard",
element: <WithAuth><DashboardPage/></WithAuth>,
},
{ {
path: "/login", path: "/login",
breadcrumb: "登录", breadcrumb: "登录",