feat(@vben/web-antd): add finance cost management pages
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import type { CostDeleteModalState, CostDetailDrawerState } from '../../types';
|
||||
|
||||
/**
|
||||
* 文件职责:成本明细抽屉与删除弹窗动作。
|
||||
*/
|
||||
import type {
|
||||
FinanceCostCategoryCode,
|
||||
FinanceCostEntryDetailDto,
|
||||
} from '#/api/finance/cost';
|
||||
|
||||
interface DrawerActionOptions {
|
||||
deleteModalState: CostDeleteModalState;
|
||||
drawerState: CostDetailDrawerState;
|
||||
removeDetailItem: (
|
||||
category: FinanceCostCategoryCode,
|
||||
itemId: string | undefined,
|
||||
) => void;
|
||||
upsertDetailItem: (
|
||||
category: FinanceCostCategoryCode,
|
||||
detail: FinanceCostEntryDetailDto,
|
||||
mode: 'create' | 'edit',
|
||||
) => void;
|
||||
}
|
||||
|
||||
/** 创建抽屉与弹窗动作。 */
|
||||
export function createDrawerActions(options: DrawerActionOptions) {
|
||||
function openCreateDrawer(category: FinanceCostCategoryCode) {
|
||||
options.drawerState.open = true;
|
||||
options.drawerState.mode = 'create';
|
||||
options.drawerState.category = category;
|
||||
options.drawerState.sourceItem = undefined;
|
||||
}
|
||||
|
||||
function openEditDrawer(
|
||||
category: FinanceCostCategoryCode,
|
||||
item: FinanceCostEntryDetailDto,
|
||||
) {
|
||||
options.drawerState.open = true;
|
||||
options.drawerState.mode = 'edit';
|
||||
options.drawerState.category = category;
|
||||
options.drawerState.sourceItem = { ...item };
|
||||
}
|
||||
|
||||
function closeDrawer() {
|
||||
options.drawerState.open = false;
|
||||
options.drawerState.sourceItem = undefined;
|
||||
}
|
||||
|
||||
function submitDrawer(detail: FinanceCostEntryDetailDto) {
|
||||
options.upsertDetailItem(
|
||||
options.drawerState.category,
|
||||
detail,
|
||||
options.drawerState.mode,
|
||||
);
|
||||
closeDrawer();
|
||||
}
|
||||
|
||||
function openDeleteModal(
|
||||
category: FinanceCostCategoryCode,
|
||||
item: FinanceCostEntryDetailDto,
|
||||
) {
|
||||
options.deleteModalState.open = true;
|
||||
options.deleteModalState.category = category;
|
||||
options.deleteModalState.item = item;
|
||||
}
|
||||
|
||||
function closeDeleteModal() {
|
||||
options.deleteModalState.open = false;
|
||||
options.deleteModalState.item = undefined;
|
||||
}
|
||||
|
||||
function confirmDelete() {
|
||||
options.removeDetailItem(
|
||||
options.deleteModalState.category,
|
||||
options.deleteModalState.item?.itemId,
|
||||
);
|
||||
closeDeleteModal();
|
||||
}
|
||||
|
||||
return {
|
||||
closeDeleteModal,
|
||||
closeDrawer,
|
||||
confirmDelete,
|
||||
openCreateDrawer,
|
||||
openDeleteModal,
|
||||
openEditDrawer,
|
||||
submitDrawer,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user