add:新增验证视频可选上传功能

This commit is contained in:
2026-10-24 16:12:56 +08:00
parent 25756901cc
commit 0ee5554f57
28 changed files with 1588 additions and 51 deletions
+13
View File
@@ -18,3 +18,16 @@ export async function uploadFile(file: File, scene: string, scope: UploadScope)
const response = await apiPostForm<{ file: UploadedFile }>(endpoint, form)
return response.data.file
}
/**
* 验收视频上传:视频已在浏览器内压好,这里不再做图片压缩。
* 带上 durationSeconds 供服务端在容器解析不到时长时兜底(见 resolveVideoDuration)。
*/
export async function uploadVideoFile(file: File, scene: string, durationSeconds: number) {
const form = new FormData()
form.append('file', file)
form.append('scene', scene)
form.append('durationSeconds', String(durationSeconds))
const response = await apiPostForm<{ file: UploadedFile }>('/api/v1/worker/files/upload', form)
return response.data.file
}
+19 -9
View File
@@ -9,6 +9,8 @@ import type {
WorkerCancelRequest,
WorkerCancelRequestRisk,
WorkerAnnouncementConfig,
WorkerAcceptanceConfig,
WorkerAcceptanceVideo,
WorkerOrderFeedback,
WorkerAfterSalesCase,
WorkerHallCategoriesResponse,
@@ -143,6 +145,11 @@ export function fetchWorkerAnnouncement() {
return apiGet<WorkerAnnouncementConfig>('/api/v1/worker/announcement')
}
/** 验收视频配置(后台可改):时长上限、目标高度、码率等,压缩前读取。 */
export function fetchWorkerAcceptanceConfig() {
return apiGet<WorkerAcceptanceConfig>('/api/v1/worker/acceptance/config')
}
export function fetchWorkerWalletLedgers(params?: Record<string, unknown>) {
return apiGet<WorkerListResponse<WorkerWalletLedger>>(
'/api/v1/worker/profile/wallet-ledgers',
@@ -301,10 +308,16 @@ export function saveWorkerOrderNote(workOrderId: number, note: string) {
return apiPost<{ order: WorkOrder }>(`/api/v1/worker/orders/${workOrderId}/note`, { note })
}
export function submitWorkerAcceptance(
workOrderId: number,
payload: { note?: string; imageUrls?: string[]; files?: UploadedFile[]; shareId?: number },
) {
export type WorkerAcceptancePayload = {
note?: string
imageUrls?: string[]
files?: UploadedFile[]
/** 验收视频(非必填);null 在草稿阶段表示删除,已提交阶段服务端只接受替换 */
video?: WorkerAcceptanceVideo | null
shareId?: number
}
export function submitWorkerAcceptance(workOrderId: number, payload: WorkerAcceptancePayload) {
return apiPost<{ order: WorkOrder; share?: WorkOrderShare }>(
`/api/v1/worker/orders/${workOrderId}/submit-acceptance`,
payload,
@@ -328,10 +341,7 @@ export function remindWorkerAcceptance(workOrderId: number) {
)
}
export function saveWorkerAcceptanceDraft(
workOrderId: number,
payload: { note?: string; imageUrls?: string[]; files?: UploadedFile[]; shareId?: number },
) {
export function saveWorkerAcceptanceDraft(workOrderId: number, payload: WorkerAcceptancePayload) {
return apiPost<{ order: WorkOrder; share?: WorkOrderShare }>(
`/api/v1/worker/orders/${workOrderId}/acceptance-draft`,
payload,
@@ -340,7 +350,7 @@ export function saveWorkerAcceptanceDraft(
export function supplementWorkerAcceptedOrderEvidence(
workOrderId: number,
payload: { files: UploadedFile[]; shareId?: number },
payload: { files: UploadedFile[]; video?: WorkerAcceptanceVideo | null; shareId?: number },
) {
return apiPost<{ order: WorkOrder; share?: WorkOrderShare }>(
`/api/v1/worker/orders/${workOrderId}/acceptance-evidence`,