支持已验收订单补图

This commit is contained in:
yml2213
2026-08-20 15:17:36 +08:00
parent 106992e7c5
commit 01a1f0cc93
2 changed files with 28 additions and 43 deletions
@@ -292,6 +292,13 @@ export default function WorkerOrdersPage() {
function openAcceptanceModal(order: WorkOrder) {
markOrderAsRead(order)
setEditingOrder(order)
if (canSupplementAcceptedEvidence(order)) {
// 已验收补图只上传新增文件,原有验收图片由服务端保留。
setAcceptanceFiles([])
form.resetFields()
setDetailOrder(null)
return
}
// 已提交:以已提交的验收资料为初始内容;未提交:以暂存草稿为初始内容
const source = hasSubmittedAcceptance(order)
? getWorkerAcceptance(order)
@@ -1307,18 +1314,25 @@ export default function WorkerOrdersPage() {
}
>
<Form form={form} layout="vertical" onFinish={submitAcceptance}>
<Form.Item label="完成说明" name="note">
<Input.TextArea rows={3} placeholder="可补充代练结果、注意事项或截图说明。" />
</Form.Item>
{!editingOrder || !canSupplementAcceptedEvidence(editingOrder) ? (
<Form.Item label="完成说明" name="note">
<Input.TextArea rows={3} placeholder="可补充代练结果、注意事项或截图说明。" />
</Form.Item>
) : null}
<Form.Item
label="验收图片"
required={
!editingOrder || !canAutoAcceptOrder(editingOrder, workerCanAutoAcceptWithoutEvidence)
!editingOrder ||
canSupplementAcceptedEvidence(editingOrder) ||
!canAutoAcceptOrder(editingOrder, workerCanAutoAcceptWithoutEvidence)
}
extra={
editingOrder && canAutoAcceptOrder(editingOrder, workerCanAutoAcceptWithoutEvidence)
? 'VIP 免审核可先提交,验收后需在 24 小时内补充图片。'
: undefined
editingOrder && canSupplementAcceptedEvidence(editingOrder)
? '仅可追加新图片,原有验收图片会保留。'
: editingOrder &&
canAutoAcceptOrder(editingOrder, workerCanAutoAcceptWithoutEvidence)
? 'VIP 免审核可先提交,验收后需在 24 小时内补充图片。'
: undefined
}
>
<ImageUpload
@@ -1375,10 +1389,7 @@ function canAutoAcceptOrder(order: WorkOrder, workerCanAutoAcceptWithoutEvidence
}
function canSupplementAcceptedEvidence(order: WorkOrder) {
const acceptance = getWorkerAcceptance(order)
if (order.status !== 'accepted' || acceptance?.reviewMode !== 'vip_auto') return false
const dueAt = Date.parse(String(acceptance.evidenceDueAt || ''))
return Number.isFinite(dueAt) && dueAt > Date.now()
return order.status === 'accepted'
}
function isVipEvidencePending(order: WorkOrder) {
@@ -1389,7 +1400,9 @@ function isVipEvidencePending(order: WorkOrder) {
/** 是否可编辑验收图片:未提交时可暂存,已提交(待验收)时可补充/修改 */
function canEditAcceptanceImages(order: WorkOrder) {
if (order.myShare) {
return ['joined', 'submitted'].includes(order.myShare.status) && order.status !== 'accepted'
return (
['joined', 'submitted'].includes(order.myShare.status) || canSupplementAcceptedEvidence(order)
)
}
return (
['in_progress', 'problem', 'pending_acceptance'].includes(order.status) ||
@@ -1402,7 +1415,7 @@ function hasSubmittedAcceptance(order: WorkOrder) {
if (order.myShare) {
return order.myShare.status === 'submitted'
}
return order.status === 'pending_acceptance' || order.acceptance?.reviewMode === 'vip_auto'
return order.status === 'pending_acceptance' || order.status === 'accepted'
}
function getDisplayOrderNo(order: Pick<WorkOrder, 'platformOrderId'> | null | undefined): string {