Files
TakeoutSaaS.TenantUI/apps/web-antd/src/views/finance/transaction/composables/transaction-page/drawer-actions.ts

79 lines
2.3 KiB
TypeScript

/**
* 文件职责:交易流水详情与关联订单抽屉动作。
*/
import type { FinanceTransactionDetailDto } from '#/api/finance';
import type { OrderAllDetailDto } from '#/api/order';
import { getFinanceTransactionDetailApi } from '#/api/finance';
import { getOrderAllDetailApi } from '#/api/order';
interface DrawerActionOptions {
isRelatedOrderDrawerOpen: { value: boolean };
isRelatedOrderLoading: { value: boolean };
isTransactionDetailLoading: { value: boolean };
isTransactionDrawerOpen: { value: boolean };
relatedOrderDetail: { value: null | OrderAllDetailDto };
selectedStoreId: { value: string };
transactionDetail: { value: FinanceTransactionDetailDto | null };
}
/** 创建抽屉动作。 */
export function createDrawerActions(options: DrawerActionOptions) {
function setTransactionDrawerOpen(value: boolean) {
options.isTransactionDrawerOpen.value = value;
if (!value) {
options.transactionDetail.value = null;
}
}
function setRelatedOrderDrawerOpen(value: boolean) {
options.isRelatedOrderDrawerOpen.value = value;
if (!value) {
options.relatedOrderDetail.value = null;
}
}
async function openTransactionDetail(transactionId: string) {
if (!options.selectedStoreId.value || !transactionId) {
return;
}
options.isTransactionDrawerOpen.value = true;
options.transactionDetail.value = null;
options.isTransactionDetailLoading.value = true;
try {
options.transactionDetail.value = await getFinanceTransactionDetailApi({
storeId: options.selectedStoreId.value,
transactionId,
});
} finally {
options.isTransactionDetailLoading.value = false;
}
}
async function openRelatedOrder(orderNo: string) {
if (!options.selectedStoreId.value || !orderNo) {
return;
}
options.isRelatedOrderDrawerOpen.value = true;
options.relatedOrderDetail.value = null;
options.isRelatedOrderLoading.value = true;
try {
options.relatedOrderDetail.value = await getOrderAllDetailApi({
storeId: options.selectedStoreId.value,
orderNo,
});
} finally {
options.isRelatedOrderLoading.value = false;
}
}
return {
openRelatedOrder,
openTransactionDetail,
setRelatedOrderDrawerOpen,
setTransactionDrawerOpen,
};
}