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

新增工单编号自动生成函数,并在创建工单时自动填充编号。同时优化表单渲染逻辑,仅在新建工单时显示编号字段。
This commit is contained in:
zhang1106
2026-01-21 17:03:01 +08:00
parent ee1e10d84e
commit e9f786655a
+25 -4
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,9 +533,18 @@ function TicketManagement() {
}, [deviceSource, devices]); }, [deviceSource, devices]);
const renderFormItems = useCallback(() => { const renderFormItems = useCallback(() => {
return ticketFields.map(field => { const items = [];
if (!editingTicket) {
items.push(
<Form.Item key="ticketId" name="ticketId" label="工单编号">
<Input placeholder="自动生成" disabled style={{ background: '#f5f5f5' }} />
</Form.Item>
);
}
ticketFields.forEach(field => {
if (field.fieldName === 'ticketId' || field.fieldName === 'deviceId') {
if (field.fieldName === 'deviceId') { if (field.fieldName === 'deviceId') {
return ( items.push(
<React.Fragment key="deviceSource"> <React.Fragment key="deviceSource">
<Form.Item label="设备来源" required> <Form.Item label="设备来源" required>
<Select value={deviceSource} onChange={handleDeviceSourceChange} style={{ width: 200 }}> <Select value={deviceSource} onChange={handleDeviceSourceChange} style={{ width: 200 }}>
@@ -538,9 +556,12 @@ function TicketManagement() {
</React.Fragment> </React.Fragment>
); );
} }
return renderFormItem(field); } else {
items.push(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