You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
69 lines
1.5 KiB
import { FormSchema } from '@/components/Form';
|
|
|
|
type InputType = 'InputTextArea' | 'InputNumber' | 'Input';
|
|
export interface PromptProps {
|
|
title: string;
|
|
label?: string;
|
|
required?: boolean;
|
|
onOK?: Fn;
|
|
inputType?: InputType;
|
|
labelWidth?: number;
|
|
width?: string;
|
|
layout?: 'horizontal' | 'vertical' | 'inline';
|
|
defaultValue?: string | number;
|
|
}
|
|
|
|
interface genFormSchemasProps {
|
|
label?: string;
|
|
required?: boolean;
|
|
inputType?: InputType;
|
|
defaultValue?: string | number;
|
|
}
|
|
|
|
const inputTypeMap: {
|
|
[key in InputType]: {
|
|
colProps: { span: number; offset?: number };
|
|
componentProps: FormSchema['componentProps'];
|
|
};
|
|
} = {
|
|
InputTextArea: {
|
|
colProps: { span: 23 },
|
|
componentProps: {
|
|
placeholder: '请输入内容',
|
|
autoSize: { minRows: 2, maxRows: 6 },
|
|
maxlength: 255,
|
|
showCount: true,
|
|
},
|
|
},
|
|
InputNumber: {
|
|
colProps: { span: 20, offset: 2 },
|
|
componentProps: {
|
|
placeholder: '请输入数字',
|
|
min: 0,
|
|
},
|
|
},
|
|
Input: {
|
|
colProps: { span: 20, offset: 2 },
|
|
componentProps: {
|
|
placeholder: '请输入内容',
|
|
min: 0,
|
|
},
|
|
},
|
|
};
|
|
|
|
export function genFormSchemas({
|
|
label = '备注信息',
|
|
required = true,
|
|
inputType = 'InputTextArea',
|
|
defaultValue = '',
|
|
}: genFormSchemasProps) {
|
|
const formSchema: FormSchema = {
|
|
field: 'txt',
|
|
component: inputType,
|
|
label,
|
|
defaultValue,
|
|
required: Boolean(required),
|
|
...inputTypeMap[inputType],
|
|
};
|
|
return [formSchema];
|
|
}
|
|
|