chore: sync release updates
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import axios from "axios";
|
||||
import request from "./request";
|
||||
import type { AdminSessionInfo } from "../utils/auth";
|
||||
|
||||
@@ -21,6 +22,59 @@ export interface AdminFileAsset {
|
||||
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;
|
||||
}
|
||||
|
||||
async function uploadFileToOss(uploadUrl: string, formData: Record<string, string | number>, file: File) {
|
||||
const ossFormData = new FormData();
|
||||
Object.entries(formData).forEach(([key, value]) => {
|
||||
ossFormData.append(key, String(value));
|
||||
});
|
||||
ossFormData.append("file", file);
|
||||
|
||||
await axios.post(uploadUrl, ossFormData, { timeout: 300000 });
|
||||
}
|
||||
|
||||
async function uploadManagedAdminFile(file: File, scene: AdminUploadScene, fallbackUrl: string, fallbackFields: Record<string, string | number> = {}) {
|
||||
const policyResponse = await request.post("/api/admin/file-upload/direct-policy", {
|
||||
upload_scene: scene,
|
||||
original_name: file.name,
|
||||
file_size: file.size,
|
||||
mime_type: file.type,
|
||||
}) as { code: number; message: string; data: AdminDirectUploadPolicy };
|
||||
|
||||
const policy = policyResponse.data;
|
||||
if (!policy.enabled) {
|
||||
const formData = new FormData();
|
||||
formData.append("file", file);
|
||||
formData.append("upload_scene", scene);
|
||||
Object.entries(fallbackFields).forEach(([key, value]) => {
|
||||
formData.append(key, String(value));
|
||||
});
|
||||
return request.post(fallbackUrl, formData, {
|
||||
headers: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
},
|
||||
}) as Promise<{ code: number; message: string; data: AdminFileAsset }>;
|
||||
}
|
||||
|
||||
if (!policy.upload_url || !policy.form_data || !policy.asset) {
|
||||
throw new Error("OSS 上传签名无效,请稍后重试");
|
||||
}
|
||||
|
||||
await uploadFileToOss(policy.upload_url, policy.form_data, file);
|
||||
return { code: 0, message: "ok", data: policy.asset };
|
||||
}
|
||||
|
||||
export interface AdminTransferFlowSummary {
|
||||
id: number;
|
||||
internal_tag_no: string;
|
||||
@@ -1800,24 +1854,12 @@ export const adminApi = {
|
||||
};
|
||||
}>;
|
||||
},
|
||||
uploadAppraisalEvidenceFile(file: File) {
|
||||
const formData = new FormData();
|
||||
formData.append("file", file);
|
||||
return request.post("/api/admin/appraisal-task/evidence/upload", formData, {
|
||||
headers: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
},
|
||||
}) as Promise<{
|
||||
uploadAppraisalEvidenceFile(file: File, scene: AdminUploadScene = "appraisal_evidence", taskId?: number) {
|
||||
const fallbackFields: Record<string, string | number> = taskId ? { task_id: taskId } : {};
|
||||
return uploadManagedAdminFile(file, scene, "/api/admin/appraisal-task/evidence/upload", fallbackFields) as Promise<{
|
||||
code: number;
|
||||
message: string;
|
||||
data: {
|
||||
file_id: string;
|
||||
file_url: string;
|
||||
thumbnail_url: string;
|
||||
name?: string;
|
||||
file_type?: string;
|
||||
mime_type?: string;
|
||||
};
|
||||
data: AdminFileAsset;
|
||||
}>;
|
||||
},
|
||||
deleteAppraisalEvidenceFile(fileUrl: string) {
|
||||
@@ -1888,14 +1930,15 @@ export const adminApi = {
|
||||
internal_tag_no: internalTagNo,
|
||||
}) as Promise<{ code: number; message: string; data: AdminWarehouseWorkbenchContext }>;
|
||||
},
|
||||
uploadWarehouseInboundEvidenceFile(file: File) {
|
||||
return uploadManagedAdminFile(file, "warehouse_inbound_evidence", "/api/admin/warehouse-workbench/inbound/evidence/upload") as Promise<{
|
||||
code: number;
|
||||
message: string;
|
||||
data: AdminFileAsset;
|
||||
}>;
|
||||
},
|
||||
uploadWarehouseReturnPackingFile(file: File) {
|
||||
const formData = new FormData();
|
||||
formData.append("file", file);
|
||||
return request.post("/api/admin/warehouse-workbench/return/packing/upload", formData, {
|
||||
headers: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
},
|
||||
}) as Promise<{
|
||||
return uploadManagedAdminFile(file, "warehouse_return_packing", "/api/admin/warehouse-workbench/return/packing/upload") as Promise<{
|
||||
code: number;
|
||||
message: string;
|
||||
data: AdminFileAsset;
|
||||
|
||||
Reference in New Issue
Block a user