import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import { Button, DatePicker, Form, Input, Modal, Select } from "antd"; import { useCallback, useEffect, useState, useRef } from "react"; import _ from "lodash"; import { useMainContext } from "../layout/MainProvider"; import DeviceTable from "./devicetable/page"; import DeviceModal from "./devicemodal/page"; import React from "react"; import { SearchOutlined, ReloadOutlined, PlusOutlined, ImportOutlined, ExportOutlined, UpOutlined, DownOutlined, } from "@ant-design/icons"; import DepartmentSelect from "@web/src/components/models/department/department-select"; import SystemTypeSelect from "@web/src/app/main/devicepage/select/System-select"; import DeviceTypeSelect from "@web/src/app/main/devicepage/select/Device-select"; import dayjs from "dayjs"; // 添加筛选条件类型 type SearchCondition = { deletedAt: null; systemType?: string; deviceType?: string; deptId?: string; responsiblePerson?: { contains: string }; createdAt?: { gte: string; lte: string; } }; export default function DeviceMessage() { const { form, formValue, setFormValue, setVisible, setSearchValue, editingRecord, } = useMainContext(); // 控制展开/收起状态 const [expanded, setExpanded] = useState(false); // 添加所有筛选条件的状态 const [selectedSystem, setSelectedSystem] = useState(null); const [selectedDeviceType, setSelectedDeviceType] = useState(null); const [selectedDept, setSelectedDept] = useState(null) const [time, setTime] = useState(""); const [ipAddress, setIpAddress] = useState(""); const [macAddress, setMacAddress] = useState(""); const [serialNumber, setSerialNumber] = useState(""); const [assetNumber, setAssetNumber] = useState(""); const [manufacturer, setManufacturer] = useState(""); const [model, setModel] = useState(""); const [location, setLocation] = useState(""); const [status, setStatus] = useState(null); const [selectedSystemTypeId, setSelectedSystemTypeId] = useState(""); // 创建ref以访问DeviceTable内部方法 const tableRef = useRef(null); // 存储选中行的状态 const [selectedKeys, setSelectedKeys] = useState([]); const [selectedData, setSelectedData] = useState([]); const handleNew = () => { form.setFieldsValue(formValue); console.log(editingRecord); setVisible(true); }; // 查询按钮点击处理 const handleSearch = () => { // 构建查询条件 const whereCondition: SearchCondition = { deletedAt: null, ...(selectedSystem && { systemType: selectedSystem }), ...(selectedDeviceType && { deviceType: selectedDeviceType }), ...(selectedDept && { deptId: selectedDept }), ...(time && { createdAt: { gte: dayjs(time).startOf('day').toISOString(), lte: dayjs(time).endOf('day').toISOString() } }), // ...(status && { status: { contains: status } }), }; // 更新查询条件到全局上下文 setSearchValue(whereCondition as any); // 也可以直接使用refetch方法进行刷新,确保查询条件生效 // 如果DeviceTable组件暴露了refetch方法,可以通过ref调用 }; // 重置按钮处理 const handleReset = () => { setSelectedSystem(null); setSelectedDeviceType(null); setSelectedDept(null); setTime(""); setIpAddress(""); setMacAddress(""); setSerialNumber(""); setAssetNumber(""); setManufacturer(""); setModel(""); setLocation(""); // 重置为只查询未删除的记录 setSearchValue({ deletedAt: null } as any); }; // 修复DepartmentSelect的onChange类型 const handleDeptChange = (value: string | string[]) => { setSelectedDept(value as string); }; // 处理选择变更的回调 const handleSelectedChange = (keys: React.Key[], data: any[]) => { console.log("选中状态变化:", keys.length); setSelectedKeys(keys); setSelectedData(data); }; // 处理导出按钮点击 const handleExport = () => { if (tableRef.current) { tableRef.current.handleExportSelected(); } }; // 系统类别变化处理 const handleSystemTypeChange = (value: string) => { setSelectedSystemTypeId(value); form.setFieldValue('deviceType', undefined); // 清空已选故障类型 }; return (
故障收录检索
{/* 搜索区域 - 分为左右两块布局 */}
{/* 左侧搜索框区域 */}
{/* 第一行搜索框 - 始终显示 */}
{/*