feat(detail-page-structure-progress-actions): 统一详情处理进度与操作区
这个提交包含在:
@@ -1,6 +1,7 @@
|
||||
import { apiRequestBlob, apiRequestData, type ApiBlobResponse } from "./http";
|
||||
import { buildAttachmentFileUrl, type AttachmentGovernanceFields } from "../lib/attachmentGovernance";
|
||||
import type { RiskFlag } from "./feeControl";
|
||||
import type { ProcessingProgress } from "../types/processingProgress";
|
||||
|
||||
export type PaymentBatchEntityType = "reimbursement" | "travel_order";
|
||||
export type PaymentBatchStatus = "draft" | "reviewed" | "executed" | "failed" | "cancelled";
|
||||
@@ -75,6 +76,10 @@ export type PaymentBatch = {
|
||||
items: PaymentBatchItem[];
|
||||
};
|
||||
|
||||
export type PaymentBatchDetail = PaymentBatch & {
|
||||
processingProgress: ProcessingProgress;
|
||||
};
|
||||
|
||||
export type PaymentBatchCandidate = {
|
||||
entityId: string;
|
||||
entityType: "reimbursement";
|
||||
@@ -123,7 +128,7 @@ export async function fetchPaymentBatches(query: { entityType?: PaymentBatchEnti
|
||||
}
|
||||
|
||||
export async function fetchPaymentBatchDetail(batchId: string) {
|
||||
return apiRequestData<{ item: PaymentBatch }>(`/api/payment-batches/${batchId}`);
|
||||
return apiRequestData<{ item: PaymentBatchDetail }>(`/api/payment-batches/${batchId}`);
|
||||
}
|
||||
|
||||
export async function fetchPaymentBatchCandidates(query: { q?: string; page?: number; pageSize?: number } = {}) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { apiRequestBlob, apiRequestData } from "./http";
|
||||
import type { ExpenseStandardCheck, PrecheckResponse, RiskFlag } from "./feeControl";
|
||||
import { buildAttachmentFileUrl, type AttachmentGovernanceFields } from "../lib/attachmentGovernance";
|
||||
import type { ProcessingProgress, ProcessingStage } from "../types/processingProgress";
|
||||
|
||||
export type ReimbursementStatus =
|
||||
| "draft"
|
||||
@@ -112,21 +113,8 @@ export type ReimbursementWorkflowProgress = {
|
||||
}>;
|
||||
};
|
||||
|
||||
export type ReimbursementProcessingStage = {
|
||||
key: string;
|
||||
label: string;
|
||||
state: "completed" | "current" | "pending" | "exception";
|
||||
actorName: string | null;
|
||||
occurredAt: string | null;
|
||||
result: string | null;
|
||||
comment: string | null;
|
||||
detail: string | null;
|
||||
targetHref: string | null;
|
||||
};
|
||||
|
||||
export type ReimbursementProcessingProgress = {
|
||||
stages: ReimbursementProcessingStage[];
|
||||
};
|
||||
export type ReimbursementProcessingStage = ProcessingStage;
|
||||
export type ReimbursementProcessingProgress = ProcessingProgress;
|
||||
|
||||
export type ReimbursementApprovalHistoryItem = {
|
||||
id: string;
|
||||
|
||||
在新工单中引用
屏蔽一个用户