chore: sync release updates

This commit is contained in:
wushumin
2026-05-22 15:47:23 +08:00
parent be64b8e5b7
commit baef2fb64c
23 changed files with 879 additions and 131 deletions

View File

@@ -1,4 +1,4 @@
import { request, uploadFile } from "../utils/request";
import { request, uploadDirectFile, uploadFile } from "../utils/request";
import type { AdminSessionInfo } from "../utils/auth";
export interface AdminLoginResponse {
@@ -15,6 +15,56 @@ export interface AdminFileAsset {
mime_type?: string;
}
export interface AdminDirectUploadMeta {
original_name?: string;
file_size?: number;
mime_type?: string;
}
export type AdminUploadScene = "appraisal_evidence" | "zhongjian_report" | "warehouse_inbound_evidence" | "warehouse_return_packing";
export interface AdminDirectUploadPolicy {
enabled: boolean;
upload_url?: string;
form_data?: Record<string, string | number>;
asset?: AdminFileAsset;
max_size?: number;
max_size_text?: string;
expires_at?: string;
}
function filenameFromPath(filePath: string) {
return filePath.split(/[\\/]/).pop() || `upload-${Date.now()}`;
}
async function uploadManagedAdminFile(
filePath: string,
scene: AdminUploadScene,
fallbackUrl: string,
meta: AdminDirectUploadMeta = {},
fallbackFormData: Record<string, string | number> = {},
) {
const policy = await request<AdminDirectUploadPolicy>("/api/admin/file-upload/direct-policy", {
method: "POST",
data: {
upload_scene: scene,
original_name: meta.original_name || filenameFromPath(filePath),
file_size: meta.file_size || 0,
mime_type: meta.mime_type || "",
},
});
const formData = { ...fallbackFormData, upload_scene: scene };
if (!policy.enabled) {
return uploadFile<AdminFileAsset>(fallbackUrl, filePath, formData);
}
if (!policy.upload_url || !policy.form_data || !policy.asset) {
throw new Error("OSS 上传签名无效,请稍后重试");
}
await uploadDirectFile(policy.upload_url, filePath, policy.form_data);
return policy.asset;
}
export interface PaginatedList<T> {
list: T[];
total?: number;
@@ -445,8 +495,13 @@ export const adminApi = {
data,
});
},
uploadWarehouseInboundEvidenceFile(filePath: string) {
return uploadFile<AdminFileAsset>("/api/admin/warehouse-workbench/inbound/evidence/upload", filePath);
uploadWarehouseInboundEvidenceFile(filePath: string, meta: AdminDirectUploadMeta = {}) {
return uploadManagedAdminFile(
filePath,
"warehouse_inbound_evidence",
"/api/admin/warehouse-workbench/inbound/evidence/upload",
meta,
);
},
lookupZhongjianWarehouseTransfer(internalTagNo: string) {
return request<AdminWarehouseWorkbenchContext>("/api/admin/warehouse-workbench/zhongjian/lookup", {
@@ -488,8 +543,13 @@ export const adminApi = {
data: { internal_tag_no: internalTagNo },
});
},
uploadWarehouseReturnPackingFile(filePath: string) {
return uploadFile<AdminFileAsset>("/api/admin/warehouse-workbench/return/packing/upload", filePath);
uploadWarehouseReturnPackingFile(filePath: string, meta: AdminDirectUploadMeta = {}) {
return uploadManagedAdminFile(
filePath,
"warehouse_return_packing",
"/api/admin/warehouse-workbench/return/packing/upload",
meta,
);
},
shipWarehouseReturn(data: { internal_tag_no: string; express_company: string; tracking_no: string; packing_attachments?: AdminFileAsset[] }) {
return request<AdminWarehouseWorkbenchContext>("/api/admin/warehouse-workbench/return/ship", {
@@ -530,8 +590,14 @@ export const adminApi = {
data,
});
},
uploadAppraisalEvidenceFile(filePath: string, taskId?: number) {
return uploadFile<AdminFileAsset>("/api/admin/appraisal-task/evidence/upload", filePath, taskId ? { task_id: taskId } : {});
uploadAppraisalEvidenceFile(
filePath: string,
taskId?: number,
meta: AdminDirectUploadMeta = {},
scene: AdminUploadScene = "appraisal_evidence",
) {
const formData: Record<string, string | number> = taskId ? { task_id: taskId } : {};
return uploadManagedAdminFile(filePath, scene, "/api/admin/appraisal-task/evidence/upload", meta, formData);
},
deleteAppraisalEvidenceFile(fileUrl: string, taskId?: number) {
return request<{ file_url: string }>("/api/admin/appraisal-task/evidence/delete", {