ERPTurbo_Admin/packages/app-operation/src/components/Biz/typing.ts
shenyifei f36678fe6c feat(order): 添加订单费用支付功能并重构费用列表组件
- 添加 OrderCostPay 组件用于处理订单费用支付功能
- 新增 ExpenseCostCard、ExpenseCostCreate、ExpenseProvisionCard、ExpenseProvisionCreate 组件
- 更新 ExpenseCostList 组件实现费用录入和管理功能
- 创建 ExpenseProvisionList 组件用于计提汇总管理
- 在 BizContainer 中集成 orderCost 类型的表单渲染
- 添加 ExpenseCostTypeList 组件用于费用类型管理
- 重构 OrderCostList 组件移除行选择功能并整合支付功能
- 扩展 typing.ts 定义新增 orderCost 类型支持
- 更新 index.ts 导出新增的费用管理相关组件
2026-01-08 11:00:53 +08:00

270 lines
7.3 KiB
TypeScript

import { ProCardProps } from '@ant-design/pro-card/es/ProCard';
import {
ActionType,
DragTableProps,
DrawerFormProps,
ModalFormProps,
PageContainerProps,
ProColumns,
ProDescriptionsItemProps,
ProTableProps,
} from '@ant-design/pro-components';
import { ProListMetas, ProListProps } from '@ant-design/pro-list';
import { TourStepProps } from 'antd';
import { TabsProps } from 'antd/es/tabs';
import { Dayjs } from 'dayjs';
import React, { MutableRefObject } from 'react';
export type BizValueType =
| 'user'
| 'customField'
| 'status'
| 'remark'
| 'order'
| 'dealer'
| 'paymentTask'
| 'company'
| 'orderCost'
| 'supplier';
export type FormType = 'modal' | 'drawer' | 'step';
export type ModeType =
| 'tree'
| 'page'
| 'drag'
| 'list'
| 'calender'
| 'detail'
| 'create'
| 'update'
| 'import'
| 'destroy';
export interface ApiProps<Func extends Record<string, any>> {
rowKey?: string;
permission?: string;
intlPrefix?: string;
func?: Func;
method?: string;
methodUpper?: string;
isMobile?: boolean;
}
export type BizFormType<BizCreateCmd extends Record<string, any>> =
| ({ formType: 'modal' } & { fieldProps?: ModalFormProps<BizCreateCmd> })
| ({ formType: 'drawer' } & { fieldProps?: DrawerFormProps<BizCreateCmd> })
| ({ formType: 'step' } & { fieldProps?: DrawerFormProps<BizCreateCmd> });
export type BizCreateProps<
BizVO extends Record<string, any>,
BizCreateCmd extends Record<string, any>,
Func extends Record<string, any>,
> = {
formType?: FormType;
formContext?: React.ReactNode;
initValues?: Record<string, any>;
onFinish?: (record: BizVO) => void;
trigger?: () => React.ReactNode;
showNextCreate?: boolean;
showUserCard?: boolean;
request?: (formData: BizCreateCmd) => Promise<boolean | undefined>;
display?: (record?: BizVO) => boolean;
} & ApiProps<Func> &
BizFormType<BizCreateCmd>;
export type BizImportProps<
BizVO extends Record<string, any>,
BizCreateCmd extends Record<string, any>,
Func extends Record<string, any>,
> = {
formType?: FormType;
columns: ProColumns<BizVO, BizValueType>[];
transformData: (record: Record<string, any>) => Promise<BizCreateCmd>;
initValues?: Record<string, any>;
onFinish?: () => void;
trigger?: () => React.ReactNode;
tips?: string;
display?: () => boolean;
} & ApiProps<Func> &
BizFormType<BizCreateCmd>;
export type BizUpdateProps<
BizVO extends Record<string, any>,
BizUpdateCmd extends Record<string, any>,
Func extends Record<string, any>,
> = {
rowId?: string;
row?: BizVO;
formType?: FormType;
formContext?: React.ReactNode;
initValues?: Record<string, any>;
onFinish?: (record: BizUpdateCmd) => void;
transform?: (record: BizVO) => Promise<Record<string, any>>;
trigger?: (record?: BizVO) => React.ReactNode;
request?: (formData: BizUpdateCmd) => Promise<boolean | undefined>;
display?: (record?: BizVO) => boolean;
positionKey?: string;
} & ApiProps<Func> &
BizFormType<BizUpdateCmd>;
export type BizListProps<
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
Func extends Record<string, any>,
> = {
columns: ProColumns<BizVO, BizValueType>[];
metas: ProListMetas<BizVO>;
options?: (
record: BizVO,
actionRef: MutableRefObject<ActionType | undefined>,
) => React.ReactNode;
fieldProps?: ProListProps<BizVO, BizPageQry>;
trigger?: () => React.ReactNode;
} & ApiProps<Func>;
export type BizPageProps<
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
Func extends Record<string, any>,
> = {
columns: ProColumns<BizVO, BizValueType>[];
options?: (
record: BizVO,
actionRef: MutableRefObject<ActionType | undefined>,
) => React.ReactNode;
fieldProps?: ProTableProps<BizVO, BizPageQry, BizValueType>;
trigger?: () => React.ReactNode;
} & ApiProps<Func>;
export interface BizTreeProps<
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
Func extends Record<string, any>,
> extends ApiProps<Func> {
columns: ProColumns<BizVO, BizValueType>[];
options?: (
record: BizVO,
actionRef: MutableRefObject<ActionType | undefined>,
) => React.ReactNode;
fieldProps?: ProTableProps<BizVO, BizPageQry, BizValueType>;
trigger?: () => React.ReactNode;
}
export interface BizDragProps<
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
Func extends Record<string, any>,
> extends ApiProps<Func> {
columns: ProColumns<BizVO, BizValueType>[];
options?: (
record: BizVO,
actionRef: MutableRefObject<ActionType | undefined>,
) => React.ReactNode;
fieldProps?: DragTableProps<BizVO, BizPageQry>;
trigger?: () => React.ReactNode;
mode?: ModeType;
}
export interface BizCalenderProps<
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
Func extends Record<string, any>,
> extends ApiProps<Func> {
fieldProps: {
rowKey: string;
cardProps?: ProCardProps;
rowName?: string;
params?: BizPageQry;
detailRender?: (record: BizVO, value: Dayjs) => React.ReactNode;
actionRef?: MutableRefObject<{ reload: () => void } | undefined>;
};
trigger?: () => React.ReactNode;
}
export type FormContextMode = 'tab' | 'flat';
export type BizDetailProps<
BizVO extends Record<string, any>,
Func extends Record<string, any>,
> = {
rowId?: string;
row?: BizVO;
formType: FormType;
formContext?: (
record: BizVO,
onValueChange: () => void,
) => TabsProps['items'];
formContextMode?: FormContextMode;
initValues?: (rowId: string) => Record<string, any>;
onFinish?: (record: BizVO) => void;
trigger?: (record?: BizVO) => React.ReactNode;
display?: (record?: BizVO) => boolean;
columns?: ProDescriptionsItemProps<BizVO, BizValueType>[];
positionKey?: string;
showDetail?: boolean;
} & ApiProps<Func> &
BizFormType<BizVO>;
export interface BizDestroyProps<
BizVO extends Record<string, any>,
Func extends Record<string, any>,
> extends ApiProps<Func> {
rowId?: string;
row?: BizVO;
onFinish?: () => void;
display?: (record?: BizVO) => boolean;
disable?: (record?: BizVO) => boolean;
positionKey?: string;
}
export type RemarkProps = {
mode?: 'textarea' | 'editor';
ghost?: () => boolean;
};
export interface BizTourProps {
steps?: TourStepProps[];
expandSteps?: TourStepProps[];
}
export type BizProps<
Func extends Record<string, any>,
BizVO extends Record<string, any>,
BizPageQry extends Record<string, any>,
BizCreateCmd extends Record<string, any>,
BizUpdateCmd extends Record<string, any>,
> = {
rowKey: string;
permission: string;
func: Func;
method: string;
methodUpper: string;
intlPrefix: string;
onValueChange?: () => void;
remark?: RemarkProps;
status?: boolean;
modeType: ModeType;
container: {
ghost?: boolean;
fieldProps?: PageContainerProps;
};
tour?: false | BizTourProps;
page?: false | BizPageProps<BizVO, BizPageQry, Func>;
list?: false | BizListProps<BizVO, BizPageQry, Func>;
tree?: false | BizTreeProps<BizVO, BizPageQry, Func>;
drag?: false | BizDragProps<BizVO, BizPageQry, Func>;
calender?: false | BizCalenderProps<BizVO, BizPageQry, Func>;
create?: false | BizCreateProps<BizVO, BizCreateCmd, Func>;
update?: false | BizUpdateProps<BizVO, BizUpdateCmd, Func>;
destroy?: false | BizDestroyProps<BizVO, Func>;
detail?: false | BizDetailProps<BizVO, Func>;
batchImport?: false | BizImportProps<BizVO, BizCreateCmd, Func>;
};
// 定义固定位置按钮类型
export type FixedPositionKey = 'edit' | 'view' | 'delete';
export type InsertPosition =
| `before:${FixedPositionKey}`
| `after:${FixedPositionKey}`;