feat(collect): 补资料改为订单号直连并按状态一次性提交
- 公开补资料页 /supplement/:订单号 直接按平台订单号查询,不再依赖链接记录;旧 token 链接一律 404 - 仅「待完善 + 未指派 + 无拼单份额」可提交,提交后状态变为待分配,重复提交返回 409 - 非可编辑工单只返回商品、工单号、状态与客服提示,不返回已填资料和截图 - 管理端新增「重置补资料」:待分配且未指派、无份额、未发布时一键重置回待完善 - 新增 canResetMaterial 能力与 material_reset 流转事件,工单状态文案统一为「待分配」
This commit is contained in:
@@ -770,8 +770,19 @@ export function submitAdminWorkOrderMaterial(
|
||||
}
|
||||
|
||||
export function createAdminWorkOrderMaterialLink(workOrderId: number) {
|
||||
return apiPost<{ token: string; expiresAt: string; reused: boolean }>(
|
||||
`/api/v1/admin/worker-platform/orders/${workOrderId}/material-link`,
|
||||
return apiPost<{
|
||||
token: string
|
||||
/** 公开 URL 使用的平台订单号;旧后端可能没有该字段,前端仅用于滚动发布兜底。 */
|
||||
platformOrderId?: string
|
||||
expiresAt: string
|
||||
reused: boolean
|
||||
}>(`/api/v1/admin/worker-platform/orders/${workOrderId}/material-link`)
|
||||
}
|
||||
|
||||
/** 客服重置补资料:仅「待分配 + 未指派 + 无份额 + 未发布」可重置回待完善。 */
|
||||
export function resetAdminWorkOrderMaterialStatus(workOrderId: number) {
|
||||
return apiPost<{ order: WorkOrder }>(
|
||||
`/api/v1/admin/worker-platform/orders/${workOrderId}/reset-material`,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -22,16 +22,22 @@ export async function uploadFile(file: File, scene: string, scope: UploadScope)
|
||||
/**
|
||||
* 一次性补资料链接的截图上传。
|
||||
*
|
||||
* 与公开 collect/upload 的区别:先把 token 放在路径里,后端会校验链接
|
||||
* 是否仍可用;链接已使用/过期时不会落文件。
|
||||
* 与公开 collect/upload 的区别:路径里带平台订单号,多工单时再带 workOrderId;
|
||||
* 后端会校验对应链接是否仍可用,链接已使用/过期时不会落文件。
|
||||
*/
|
||||
export async function uploadCollectMaterialLinkFile(file: File, scene: string, token: string) {
|
||||
export async function uploadCollectMaterialLinkFile(
|
||||
file: File,
|
||||
scene: string,
|
||||
code: string,
|
||||
workOrderId?: number,
|
||||
) {
|
||||
const uploadTarget = await optimizeImageForUpload(file, scene)
|
||||
const form = new FormData()
|
||||
form.append('file', uploadTarget)
|
||||
form.append('scene', scene)
|
||||
const query = workOrderId ? `?workOrderId=${encodeURIComponent(String(workOrderId))}` : ''
|
||||
const response = await apiPostForm<{ file: UploadedFile }>(
|
||||
`/api/v1/collect/link/${encodeURIComponent(token)}/upload`,
|
||||
`/api/v1/collect/link/${encodeURIComponent(code)}/upload${query}`,
|
||||
form,
|
||||
)
|
||||
return response.data.file
|
||||
|
||||
@@ -381,19 +381,20 @@ export function submitCollectOrder(payload: {
|
||||
)
|
||||
}
|
||||
|
||||
export function fetchCollectMaterialLink(token: string) {
|
||||
return apiGet<CollectMaterialLinkInfo>(`/api/v1/collect/link/${encodeURIComponent(token)}`)
|
||||
export function fetchCollectMaterialLink(code: string) {
|
||||
return apiGet<CollectMaterialLinkInfo>(`/api/v1/collect/link/${encodeURIComponent(code)}`)
|
||||
}
|
||||
|
||||
export function submitCollectMaterialLink(
|
||||
token: string,
|
||||
code: string,
|
||||
payload: {
|
||||
workOrderId?: number
|
||||
fields: Record<string, string>
|
||||
screenshots?: UploadedFile[]
|
||||
},
|
||||
) {
|
||||
return apiPost<CollectMaterialLinkSubmitResult>(
|
||||
`/api/v1/collect/link/${encodeURIComponent(token)}/submit`,
|
||||
`/api/v1/collect/link/${encodeURIComponent(code)}/submit`,
|
||||
payload,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user