feat(工单管理): 添加工单编号自动生成功能
新增工单编号自动生成函数,并在创建工单时自动填充编号。同时优化表单渲染逻辑,仅在新建工单时显示编号字段。
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user