From e9f786655aac4ed8b88e9cbbd2cf1272839a2c4f Mon Sep 17 00:00:00 2001 From: zhang1106 <849185023@qq.com> Date: Wed, 21 Jan 2026 17:03:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=B7=A5=E5=8D=95=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=A5=E5=8D=95=E7=BC=96=E5=8F=B7=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增工单编号自动生成函数,并在创建工单时自动填充编号。同时优化表单渲染逻辑,仅在新建工单时显示编号字段。 --- frontend/src/pages/TicketManagement.jsx | 51 +++++++++++++++++-------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/frontend/src/pages/TicketManagement.jsx b/frontend/src/pages/TicketManagement.jsx index 4b31c6a..61c8383 100644 --- a/frontend/src/pages/TicketManagement.jsx +++ b/frontend/src/pages/TicketManagement.jsx @@ -72,6 +72,13 @@ const getPriorityText = (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() { const [tickets, setTickets] = useState([]); const [devices, setDevices] = useState([]); @@ -360,6 +367,8 @@ function TicketManagement() { } else { form.resetFields(); setDeviceSource('select'); + const newTicketId = generateTicketId(); + form.setFieldsValue({ ticketId: newTicketId }); } setModalVisible(true); }, []); @@ -524,23 +533,35 @@ function TicketManagement() { }, [deviceSource, devices]); const renderFormItems = useCallback(() => { - return ticketFields.map(field => { - if (field.fieldName === 'deviceId') { - return ( - - - - - {renderDeviceFormItems()} - - ); + const items = []; + if (!editingTicket) { + items.push( + + + + ); + } + ticketFields.forEach(field => { + if (field.fieldName === 'ticketId' || field.fieldName === 'deviceId') { + if (field.fieldName === 'deviceId') { + items.push( + + + + + {renderDeviceFormItems()} + + ); + } + } 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) => (