diff --git a/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx b/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx index e9a03322..a2a5c07b 100644 --- a/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx @@ -780,20 +780,61 @@ export default function WorkOrdersPanel() { } /** 非精确匹配(订单规格信息不全 / 高配充低配)必须人工确认,后端也会二次拦截 */ - function confirmPartialMatch(matchType: string | undefined, onOk: () => void) { - if (matchType !== 'exact') { - modal.confirm({ - title: '该现货不是精确匹配,确认继续?', - content: - '订单规格信息不全或这件现货高于订单要求(高配充低配)。继续履约后无法自动回退,请确认商品与买家订单一致。', - okText: '确认履约', - okButtonProps: { danger: true }, - cancelText: '再想想', - onOk, - }) - return - } - onOk() + /** + * 匹配弹窗里的两个动作**都会立刻占用现货**,点错就得走「撤销寄售履约」才能退回来, + * 而且两个按钮挨在一起很容易点错,所以一律二次确认,并把后果写清楚: + * 用哪个号占用、给谁、要不要冻结押金、能不能回退。 + */ + function confirmConsignmentMatchAction(input: { + kind: 'assign_worker' | 'internal_stock' + matchType?: string + consignmentNo: string + workerName?: string + depositFen?: number | null + onOk: () => void + }) { + const isPartial = input.matchType !== 'exact' + const isAssignWorker = input.kind === 'assign_worker' + const depositText = + input.depositFen != null ? `履约押金 ¥${(input.depositFen / 100).toFixed(2)}` : '履约押金' + + modal.confirm({ + title: isAssignWorker ? '确认走接单平台指派打手?' : '确认用内部现货履约?', + width: 460, + content: ( +