feat: update appraisal ordering and payment flows

This commit is contained in:
wushumin
2026-06-03 18:14:40 +08:00
parent 0838db5aba
commit 6383ec5a2a
50 changed files with 6143 additions and 988 deletions

View File

@@ -2,10 +2,12 @@ import { parseUploadResponse, request } from "../utils/request";
import { buildAuthHeaders } from "../utils/auth";
import { resolveApiBaseUrl } from "../utils/env";
import { resolveOrderSourceChannel } from "../utils/order-source";
import type { PaymentLaunchInfo } from "./app";
export interface CatalogOption {
brand_id?: number;
brand_name?: string;
brand_en_name?: string;
}
export interface CategoryOption {
@@ -36,6 +38,10 @@ export interface DraftDetail {
draft_id: number;
service_provider: string;
service_mode: string;
price_package_id: number;
price_package_name: string;
price_package_code: string;
price_package_price: number;
current_step: number;
product_info: Record<string, any>;
extra_info: Record<string, any>;
@@ -48,6 +54,9 @@ export interface PreviewData {
service_summary: {
service_provider: string;
service_provider_text: string;
price_package_id: number;
price_package_name: string;
price_package_code: string;
};
product_summary: {
product_name: string;
@@ -71,23 +80,60 @@ export interface PreviewData {
}>;
}
export interface AppraisalServicePackage {
id: number;
service_provider: string;
service_provider_text: string;
package_name: string;
package_code: string;
price: number;
description: string;
is_enabled: boolean;
is_default: boolean;
sort_order: number;
sla_hours: number;
}
export interface AppraisalServiceConfig {
service_provider: string;
service_provider_text: string;
price: number;
sla_hours: number;
default_package_id: number;
default_package: AppraisalServicePackage | null;
packages: AppraisalServicePackage[];
}
export interface SubmitResult {
order_id: number;
order_no: string;
appraisal_no: string;
pay_amount: number;
next_status: string;
payment: PaymentLaunchInfo | null;
payment_launch_failed?: boolean;
payment_error?: string;
}
export const appraisalApi = {
createDraft(serviceProvider: string) {
return request<{ draft_id: number; service_provider: string; service_mode: string }>(
createDraft(serviceProvider: string, pricePackageId?: number, pricePackageCode?: string) {
return request<{
draft_id: number;
service_provider: string;
service_mode: string;
price_package_id: number;
price_package_name: string;
price_package_code: string;
price_package_price: number;
}>(
"/api/app/appraisal/draft/create",
{
method: "POST",
data: {
service_provider: serviceProvider,
service_mode: "physical",
price_package_id: pricePackageId || undefined,
price_package_code: pricePackageCode || undefined,
},
},
);
@@ -111,6 +157,9 @@ export const appraisalApi = {
getCategories() {
return request<{ list: CategoryOption[] }>("/api/app/catalog/categories");
},
getServiceConfigs() {
return request<{ list: AppraisalServiceConfig[] }>("/api/app/appraisal/service-configs");
},
getUploadTemplate(categoryId: number, serviceProvider: string) {
return request<{ template_id: number; required_items: UploadItem[]; optional_items: UploadItem[] }>(
"/api/app/appraisal/upload-template",