From 87d8360e6451e0f3ceba637a2a58528738462eb2 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Sat, 15 Aug 2026 15:03:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=A3=E7=BB=83=E4=B8=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=A2=E5=8D=95=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/worker-platform/admin-service.ts | 20 +++++++++++++++---- .../pages/admin/panels/WorkOrdersPanel.tsx | 8 ++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/backend/src/services/worker-platform/admin-service.ts b/apps/backend/src/services/worker-platform/admin-service.ts index e1a4e286..a0bb7a0f 100644 --- a/apps/backend/src/services/worker-platform/admin-service.ts +++ b/apps/backend/src/services/worker-platform/admin-service.ts @@ -738,11 +738,15 @@ export async function submitAdminWorkOrderMaterial( ) { const workOrder = await getRequiredWorkOrder(workOrderId) if ( - ![WORK_ORDER_STATUS.PENDING_MATERIAL, WORK_ORDER_STATUS.UNASSIGNED].includes( + ![ + WORK_ORDER_STATUS.PENDING_MATERIAL, + WORK_ORDER_STATUS.UNASSIGNED, + WORK_ORDER_STATUS.IN_PROGRESS, + ].includes( workOrder.status as never, ) ) { - throw createHttpError('当前状态不能补充资料', { + throw createHttpError('当前状态不能更新订单资料', { statusCode: 409, errorCode: 'work_order_material_status_invalid', }) @@ -765,7 +769,12 @@ export async function submitAdminWorkOrderMaterial( source: 'admin', }, } - const nextStatus = complete ? WORK_ORDER_STATUS.UNASSIGNED : WORK_ORDER_STATUS.PENDING_MATERIAL + const nextStatus = + workOrder.status === WORK_ORDER_STATUS.IN_PROGRESS + ? WORK_ORDER_STATUS.IN_PROGRESS + : complete + ? WORK_ORDER_STATUS.UNASSIGNED + : WORK_ORDER_STATUS.PENDING_MATERIAL const updated = await updateWorkOrder(workOrder.id, { status: nextStatus, material_json: material, @@ -775,7 +784,10 @@ export async function submitAdminWorkOrderMaterial( workOrderId: workOrder.id, actorType: 'admin', actorId: '', - eventType: 'material_completed', + eventType: + workOrder.status === WORK_ORDER_STATUS.IN_PROGRESS + ? 'material_updated' + : 'material_completed', fromStatus: workOrder.status, toStatus: nextStatus, payloadJson: JSON.stringify({ fields: submittedFields, complete }), diff --git a/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx b/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx index 666748cf..dc0f867d 100644 --- a/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx @@ -344,7 +344,7 @@ export default function WorkOrdersPanel() { values.fields || {}, materialScreenshots, ), - '订单资料已保存', + materialOrder.status === 'in_progress' ? '订单资料已更新' : '订单资料已保存', ) if (!succeeded) return setMaterialOrder(null) @@ -685,12 +685,12 @@ export default function WorkOrdersPanel() { 取消指派 ) : null} - {row.status === 'pending_material' ? ( + {['pending_material', 'in_progress'].includes(row.status) ? ( ) : null} {row.status === 'unassigned' ? ( @@ -1228,7 +1228,7 @@ export default function WorkOrdersPanel() { { setMaterialOrder(null)