diff --git a/apps/web/src/app/main/devicepage/devicetable/page.tsx b/apps/web/src/app/main/devicepage/devicetable/page.tsx index 01345b4..20c5ef3 100755 --- a/apps/web/src/app/main/devicepage/devicetable/page.tsx +++ b/apps/web/src/app/main/devicepage/devicetable/page.tsx @@ -77,6 +77,14 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => }, [devices]); // const { softDeleteByIds } = useStaff() + // 添加部门数据查询 + const { data: departments } = api.department.findMany.useQuery({ + where: { + deletedAt: null, + } + }, { + enabled: true, // 确保此查询被执行 + }); const getTermNameById = (termId, termType) => { if (!termId) return "未知"; @@ -138,7 +146,16 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => key: "deptId", align: "center", render: (text, record) => { - return (record as any)?.department?.name || "未知"; + // 如果有部门关联,显示部门名称 + if (record.deptId && (record as any)?.department?.name) { + return (record as any)?.department?.name; + } + // 否则显示responsiblePerson(如果存在) + if (record.responsiblePerson) { + return record.responsiblePerson; + } + // 最后才显示未知 + return "未知"; }, }, { @@ -289,12 +306,15 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => // 转换为符合系统格式的数据 const records = jsonData.map((row: any) => { - // 转换字段名和值映射 + const unitName = row['单位'] ? String(row['单位']) : ""; return { systemType: findTermIdByName(row['网系类别'], 'system_type'), deviceType: findTermIdByName(row['故障类型'], 'device_type'), showname: row['故障名称'] ? String(row['故障名称']) : "", - deptId: findDeptIdByName(row['单位']), + // 尝试关联部门ID + deptId: unitName ? findDeptIdByName(unitName) : null, + // 同时保存原始单位名称 + responsiblePerson: unitName, deviceStatus: getStatusKeyByValue(row['故障状态']), notes: row['描述'] ? String(row['描述']) : "" }; @@ -302,7 +322,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => // 确认是否有有效数据 if (records.length === 0) { toast.error("未找到有效数据"); - return; + return; } // 批量创建记录 await batchImportRecords(records); @@ -325,11 +345,17 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => return term?.id || null; }; - // 修改查找部门ID函数,从设备数据中获取部门信息 + // 改进查找部门ID函数 const findDeptIdByName = (name: string) => { if (!name || name === "未知") return null; - // 从已有设备数据中查找匹配的部门名称和ID + // 直接从部门数据中查找 + const department = departments?.find(dept => dept.name === name); + if (department) { + return department.id; + } + + // 备用:尝试从设备中查找 const matchedDevice = devices?.find(device => (device as any)?.department?.name === name ); @@ -457,7 +483,7 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => onChange={(e) => { const checked = e.target.checked; const newSelectedRowKeys = checked ? (devices || []).map(item => item.id) : []; - onSelectChange(newSelectedRowKeys, checked ? devices: []); + onSelectChange(newSelectedRowKeys, checked ? devices : []); }} /> 全选 @@ -514,8 +540,14 @@ const DeviceTable = forwardRef(({ onSelectedChange }: DeviceTableProps, ref) => size="middle" tableLayout="fixed" rowClassName={(record, index) => - index % 2 === 0 ? "bg-white" : "bg-gray-100" + index % 2 === 0 ? "bg-white hover:bg-blue-100" : "bg-gray-100 hover:bg-blue-100" } + onRow={(record) => { + return { + style: { cursor: 'pointer' }, + onMouseEnter: () => { }, // 触发悬停效果 + }; + }} onHeaderRow={() => { return { style: { diff --git a/apps/web/src/app/main/devicepage/page.tsx b/apps/web/src/app/main/devicepage/page.tsx index 8d301cc..aa13e96 100755 --- a/apps/web/src/app/main/devicepage/page.tsx +++ b/apps/web/src/app/main/devicepage/page.tsx @@ -140,92 +140,78 @@ export default function DeviceMessage() { }; return ( -