Your Name ed57529902
All checks were successful
Build and Push Docker Image / build (push) Successful in 3m50s
fix:更新优化
2026-01-25 22:28:01 +08:00

187 lines
4.1 KiB
TypeScript

import {
MyColorPicker,
MyIconSelect,
MyMoneyInput,
MyPercentInput,
MyUploadImages,
rulesHelper,
} from '@/common';
import { ProFormColumnsType } from '@ant-design/pro-components';
// import { MyRichText } from '../components/FormFields/MyRichText';
type ReturnType = ProFormColumnsType<any, 'text'>;
type PropsType = { required?: boolean } & ReturnType;
export const MyFormItems = {
Text(props: PropsType): ReturnType {
return {
formItemProps: {
...(props?.required ? rulesHelper.text : {}),
},
...props,
};
},
Integer(props: { min?: number } & PropsType): ReturnType {
return {
valueType: 'digit',
formItemProps: {
...(props?.required ? rulesHelper.number : {}),
},
fieldProps: {
min: props.min ?? 1,
},
...props,
};
},
Numeric(props: PropsType): ReturnType {
return {
valueType: 'digit',
formItemProps: {
...(props?.required ? rulesHelper.number : {}),
},
fieldProps: {
precision: 2,
min: 0,
},
...props,
};
},
UploadImages({
max = 1,
help,
uploadType = 'image',
...rest
}: {
max?: number | undefined;
help?: string;
uploadType?: 'image' | 'file' | 'video' | 'audio' | undefined;
} & PropsType): ReturnType {
return {
renderFormItem() {
return (
<MyUploadImages
max={max}
uploadType={uploadType}
{...rest?.fieldProps}
/>
);
},
formItemProps: {
help,
...(rest.required ?? false ? rulesHelper.upload({ max }) : {}),
},
...rest,
};
},
EnumRadio(props: PropsType): ReturnType {
return {
valueType: 'radioButton',
proFieldProps: {
placeholder: `请选择${props.title}`,
},
formItemProps: {
...(props?.required ? rulesHelper.text : {}),
},
fieldProps: {
buttonStyle: 'solid',
},
...props,
};
},
EnumCheckbox(props: PropsType): ReturnType {
return {
valueType: 'checkbox',
proFieldProps: {
placeholder: `请选择${props.title}`,
},
formItemProps: {
...(props?.required ? rulesHelper.array : {}),
},
...props,
};
},
EnumSelect(props: PropsType): ReturnType {
return {
valueType: 'select',
proFieldProps: {
placeholder: `请选择`,
},
formItemProps: {
...(props?.required ? rulesHelper.text : {}),
},
...props,
};
},
Switch(props: PropsType): ReturnType {
return {
valueType: 'switch',
initialValue: props.initialValue ?? false,
...props,
};
},
DatePicker(props: PropsType): ReturnType {
return {
valueType: 'date',
formItemProps: {
...(props?.required ? rulesHelper.text : {}),
},
...props,
};
},
Select(props: PropsType): ReturnType {
return {
valueType: 'select',
proFieldProps: {
placeholder: `请选择${props.title}`,
},
...props,
};
},
// EnumSelect(props: PropsType): ReturnType {
// const valueType = props.valueType ?? 'radioButton';
// const buttonStyle =
// valueType === 'radioButton'
// ? {
// buttonStyle: 'solid',
// }
// : {};
// },
IconSelect(props?: PropsType): ReturnType {
return {
key: 'icon',
title: '图标',
renderFormItem: () => <MyIconSelect />,
...props,
};
},
ColorPicker(props?: PropsType): ReturnType {
return {
key: 'color',
dataIndex: 'color',
title: '颜色',
renderFormItem: () => <MyColorPicker />,
...props,
};
},
Percent(props?: PropsType): ReturnType {
return {
renderFormItem: () => <MyPercentInput />,
formItemProps: {
...(props?.required ? rulesHelper.number : {}),
},
...props,
};
},
Money(props?: PropsType): ReturnType {
return {
renderFormItem: () => <MyMoneyInput />,
formItemProps: {
...(props?.required ? rulesHelper.number : {}),
},
...props,
};
},
};