diff --git a/admin/src/api.ts b/admin/src/api.ts index bfe2bf6..7d0a451 100644 --- a/admin/src/api.ts +++ b/admin/src/api.ts @@ -826,6 +826,28 @@ export function listCleaningSettlements( return request>(session, `/cleaning/settlements?${params}`); } +export function exportCleaningSettlements( + session: ApiSession, + input: { + status?: SettlementStatus; + payoutState?: PayoutStateFilter; + storeId?: string; + cleanerUserId?: string; + } +) { + const params = new URLSearchParams(); + if (input.status) params.set('status', input.status); + if (input.payoutState) params.set('payoutState', input.payoutState); + if (input.storeId) params.set('storeId', input.storeId); + if (input.cleanerUserId) params.set('cleanerUserId', input.cleanerUserId); + return request<{ + items: CleaningSettlement[]; + total: number; + exported: number; + truncated: boolean; + }>(session, `/cleaning/settlements/export?${params}`); +} + export function listCleaningSettlementCandidates( session: ApiSession, input: { page: number; pageSize: number; storeId?: string; cleanerUserId?: string } @@ -867,6 +889,32 @@ export function confirmCleaningSettlement(session: ApiSession, settlementId: str ); } +export function cancelCleaningSettlement(session: ApiSession, settlementId: string, reason: string) { + return request( + session, + `/cleaning/settlements/${encodeURIComponent(settlementId)}/cancel`, + { + method: 'POST', + body: JSON.stringify({ reason }) + } + ); +} + +export function markCleaningSettlementPaid( + session: ApiSession, + settlementId: string, + input: { payoutChannel: string; payoutReference: string; note?: string } +) { + return request( + session, + `/cleaning/settlements/${encodeURIComponent(settlementId)}/paid`, + { + method: 'POST', + body: JSON.stringify(input) + } + ); +} + export function executeWechatTransfer( session: ApiSession, settlementId: string, diff --git a/admin/src/components/CleaningSettlementsPanel.vue b/admin/src/components/CleaningSettlementsPanel.vue index d0b6b49..71013f3 100644 --- a/admin/src/components/CleaningSettlementsPanel.vue +++ b/admin/src/components/CleaningSettlementsPanel.vue @@ -56,7 +56,12 @@ > 批量同步 - + 导出 @@ -108,7 +113,7 @@ - + @@ -390,7 +413,7 @@ - +
单号{{ detailDialog.detail.settlement.settlementNo }} @@ -416,6 +439,9 @@ + + + @@ -427,6 +453,9 @@ {{ compactText(detailDialog.detail.settlement.payoutReference) }} + + {{ compactText(detailDialog.detail.settlement.payoutRequestNo) }} + {{ compactText(detailDialog.detail.settlement.payoutPackageInfo) }} @@ -436,7 +465,45 @@ {{ compactText(detailDialog.detail.settlement.note) }} + + {{ compactText(detailDialog.detail.settlement.cancelledBy) }} + + + {{ shortDate(detailDialog.detail.settlement.cancelledAt) }} + +
+

反向记录

+ + + + + + + + + + + +
+
+

状态历史

+ + + + + + + + + + + + + +