feat(工单管理): 添加工单编号自动生成功能

新增工单编号自动生成函数,并在创建工单时自动填充编号。同时优化表单渲染逻辑,仅在新建工单时显示编号字段。
This commit is contained in:
zhang1106
2026-01-21 17:03:01 +08:00
parent ee1e10d84e
commit e9f786655a
+36 -15
View File
@@ -72,6 +72,13 @@ const getPriorityText = (priority) => {
return texts[priority] || priority; return texts[priority] || priority;
}; };
const generateTicketId = () => {
const prefix = 'TKT';
const timestamp = dayjs().format('YYYYMMDDHHmmss');
const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
return `${prefix}${timestamp}${random}`;
};
function TicketManagement() { function TicketManagement() {
const [tickets, setTickets] = useState([]); const [tickets, setTickets] = useState([]);
const [devices, setDevices] = useState([]); const [devices, setDevices] = useState([]);
@@ -360,6 +367,8 @@ function TicketManagement() {
} else { } else {
form.resetFields(); form.resetFields();
setDeviceSource('select'); setDeviceSource('select');
const newTicketId = generateTicketId();
form.setFieldsValue({ ticketId: newTicketId });
} }
setModalVisible(true); setModalVisible(true);
}, []); }, []);
@@ -524,23 +533,35 @@ function TicketManagement() {
}, [deviceSource, devices]); }, [deviceSource, devices]);
const renderFormItems = useCallback(() => { const renderFormItems = useCallback(() => {
return ticketFields.map(field => { const items = [];
if (field.fieldName === 'deviceId') { if (!editingTicket) {
return ( items.push(
<React.Fragment key="deviceSource"> <Form.Item key="ticketId" name="ticketId" label="工单编号">
<Form.Item label="设备来源" required> <Input placeholder="自动生成" disabled style={{ background: '#f5f5f5' }} />
<Select value={deviceSource} onChange={handleDeviceSourceChange} style={{ width: 200 }}> </Form.Item>
<Option value="select">从设备管理选择</Option> );
<Option value="manual">手动输入</Option> }
</Select> ticketFields.forEach(field => {
</Form.Item> if (field.fieldName === 'ticketId' || field.fieldName === 'deviceId') {
{renderDeviceFormItems()} if (field.fieldName === 'deviceId') {
</React.Fragment> items.push(
); <React.Fragment key="deviceSource">
<Form.Item label="设备来源" required>
<Select value={deviceSource} onChange={handleDeviceSourceChange} style={{ width: 200 }}>
<Option value="select">从设备管理选择</Option>
<Option value="manual">手动输入</Option>
</Select>
</Form.Item>
{renderDeviceFormItems()}
</React.Fragment>
);
}
} else {
items.push(renderFormItem(field));
} }
return renderFormItem(field);
}); });
}, [ticketFields, deviceSource, devices, handleDeviceSourceChange, renderDeviceFormItems, renderFormItem]); return items;
}, [ticketFields, deviceSource, devices, handleDeviceSourceChange, renderDeviceFormItems, renderFormItem, editingTicket]);
const getActionItems = useCallback((record) => ( const getActionItems = useCallback((record) => (
<Menu <Menu