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) ? (
}
onClick={() => openMaterialModal(row)}
>
- 补资料
+ {row.status === 'in_progress' ? '更新资料' : '补资料'}
) : null}
{row.status === 'unassigned' ? (
@@ -1228,7 +1228,7 @@ export default function WorkOrdersPanel() {
{
setMaterialOrder(null)