ADD
This commit is contained in:
parent
7042f3ef48
commit
4fa3c20664
|
@ -0,0 +1,10 @@
|
|||
const DashboardPage = () => {
|
||||
|
||||
return (
|
||||
<div className="min-h-screen">
|
||||
<h1>Dashboard</h1>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default DashboardPage;
|
|
@ -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 || "无描述"
|
||||
}));
|
||||
|
||||
// 创建工作簿
|
||||
|
@ -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: (
|
||||
<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"
|
||||
|
|
|
@ -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>("");
|
||||
|
|
|
@ -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(
|
||||
"系统设置",
|
||||
|
|
|
@ -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: "登录",
|
||||
|
|
Loading…
Reference in New Issue