rowKey="id" loading={tickets.isFetching} dataSource={tickets.data} pagination={{ pageSize: 12, showSizeChanger: false }} scroll={{ x: 1020 }} locale={{ emptyText: }} onRow={(row) => ({ onClick: () => setSelected(row) })} columns={[{ title: '场地与项目', width: 210, render: (_, row) => {row.buildingName} · {row.classroomName}{row.equipmentName || row.faultItem}
}, { title: '故障说明', dataIndex: 'description', ellipsis: true }, { title: '状态', width: 105, render: (_, row) => { const value = normalizedStatus(row.status); return {statusLabel[value]} } }, { title: '维修员', width: 125, render: (_, row) => row.assigneeName || 未分派 }, { title: '报修时间', width: 175, render: (_, row) => time(row.createdAt) }, { title: '操作', width: 245, fixed: 'right', onCell: () => ({ onClick: (event) => event.stopPropagation() }), render: (_, row) => { const value = normalizedStatus(row.status); return {isManager && value !== 4 && }{value === 2 && }{value === 3 && }
}}]} />
+ setSelected(undefined)}>{selected && <>{statusLabel[normalizedStatus(selected.status)]}{selected.buildingName} · {selected.classroomName}
>}
+ { setAssignOpen(false); setSelected(undefined) }} onOk={() => void assignForm.submit()} okText="确认分派" confirmLoading={!!busyId}>
+ { setCompleteOpen(false); setSelected(undefined) }} onOk={() => void completeForm.submit()} okText="完成工单" okButtonProps={{ color: 'green' }} confirmLoading={!!busyId}>
+ setQrOpen(false)}>{!qrImage &&
+ setEquipmentOpen(false)} width={680}>