|
|
|
|
@ -1,4 +1,13 @@
|
|
|
|
|
import { FormSchema } from '@/types/form'
|
|
|
|
|
import { CSSProperties, VNodeProps, VNode } from 'vue'
|
|
|
|
|
import {
|
|
|
|
|
InputProps,
|
|
|
|
|
AutocompleteProps,
|
|
|
|
|
InputNumberProps,
|
|
|
|
|
CascaderProps,
|
|
|
|
|
CascaderNode,
|
|
|
|
|
CascaderValue
|
|
|
|
|
} from 'element-plus'
|
|
|
|
|
|
|
|
|
|
export interface PlaceholderMoel {
|
|
|
|
|
placeholder?: string
|
|
|
|
|
@ -15,3 +24,816 @@ export type FormProps = {
|
|
|
|
|
isCustom?: boolean
|
|
|
|
|
labelWidth?: string | number
|
|
|
|
|
} & Recordable
|
|
|
|
|
|
|
|
|
|
export enum ComponentNameEnum {
|
|
|
|
|
RADIO_GROUP = 'RadioGroup',
|
|
|
|
|
RADIO_BUTTON = 'RadioButton',
|
|
|
|
|
CHECKBOX_GROUP = 'CheckboxGroup',
|
|
|
|
|
CHECKBOX_BUTTON = 'CheckboxButton',
|
|
|
|
|
INPUT = 'Input',
|
|
|
|
|
AUTOCOMPLETE = 'Autocomplete',
|
|
|
|
|
INPUT_NUMBER = 'InputNumber',
|
|
|
|
|
SELECT = 'Select',
|
|
|
|
|
CASCADER = 'Cascader',
|
|
|
|
|
SWITCH = 'Switch',
|
|
|
|
|
SLIDER = 'Slider',
|
|
|
|
|
TIME_PICKER = 'TimePicker',
|
|
|
|
|
DATE_PICKER = 'DatePicker',
|
|
|
|
|
RATE = 'Rate',
|
|
|
|
|
COLOR_PICKER = 'ColorPicker',
|
|
|
|
|
TRANSFER = 'Transfer',
|
|
|
|
|
DIVIDER = 'Divider',
|
|
|
|
|
TIME_SELECT = 'TimeSelect',
|
|
|
|
|
SELECT_V2 = 'SelectV2',
|
|
|
|
|
INPUT_PASSWORD = 'InputPassword',
|
|
|
|
|
EDITOR = 'Editor'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type CamelCaseComponentName = keyof typeof ComponentNameEnum extends infer K
|
|
|
|
|
? K extends string
|
|
|
|
|
? K extends `${infer A}_${infer B}`
|
|
|
|
|
? `${Capitalize<Lowercase<A>>}${Capitalize<Lowercase<B>>}`
|
|
|
|
|
: Capitalize<Lowercase<K>>
|
|
|
|
|
: never
|
|
|
|
|
: never
|
|
|
|
|
|
|
|
|
|
export type ComponentName = CamelCaseComponentName
|
|
|
|
|
|
|
|
|
|
export interface InputComponentProps {
|
|
|
|
|
value?: string | number
|
|
|
|
|
maxlength?: number | string
|
|
|
|
|
minlength?: number | string
|
|
|
|
|
showWordLimit?: boolean
|
|
|
|
|
placeholder?: string
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
formatter?: (value: string | number) => string
|
|
|
|
|
parser?: (value: string) => string
|
|
|
|
|
showPassword?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
prefixIcon?: string | JSX.Element
|
|
|
|
|
suffixIcon?: string | JSX.Element
|
|
|
|
|
type?: InputProps['type']
|
|
|
|
|
rows?: number
|
|
|
|
|
autosize?: boolean | { Pows?: numer; maxRows?: number }
|
|
|
|
|
autocomplete?: string
|
|
|
|
|
name?: string
|
|
|
|
|
readonly?: boolean
|
|
|
|
|
max?: number | string
|
|
|
|
|
min?: number | string
|
|
|
|
|
step?: number | string
|
|
|
|
|
resize?: InputProps['resize']
|
|
|
|
|
autofocus?: boolean
|
|
|
|
|
form?: string
|
|
|
|
|
label?: string
|
|
|
|
|
tabindex?: string | number
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
inputStyle?: string | CSSProperties | CSSProperties[] | string[]
|
|
|
|
|
on?: {
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
change?: (value: string | number) => void
|
|
|
|
|
clear?: () => void
|
|
|
|
|
input?: (value: string | number) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
prefix?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
suffix?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
prepend?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
append?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface AutocompleteComponentProps {
|
|
|
|
|
value?: string
|
|
|
|
|
placeholder?: string
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
valueKey?: string
|
|
|
|
|
debounce?: number
|
|
|
|
|
placement?: AutocompleteProps['placement']
|
|
|
|
|
fetchSuggestions?: (queryString: string, callback: (data: string[]) => void) => void
|
|
|
|
|
triggerOnFocus?: boolean
|
|
|
|
|
selectWhenUnmatched?: boolean
|
|
|
|
|
name?: string
|
|
|
|
|
label?: string
|
|
|
|
|
hideLoading?: boolean
|
|
|
|
|
popperClass?: string
|
|
|
|
|
popperAppendToBody?: boolean
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
highlightFirstItem?: boolean
|
|
|
|
|
fitInputWidth?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
select?: (item: any) => void
|
|
|
|
|
change?: (value: string | number) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
prefix?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
suffix?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
prepend?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
append?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface InputNumberComponentProps {
|
|
|
|
|
value?: number
|
|
|
|
|
min?: number
|
|
|
|
|
max?: number
|
|
|
|
|
step?: number
|
|
|
|
|
stepStrictly?: boolean
|
|
|
|
|
precision?: number
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
readonly?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
controls?: boolean
|
|
|
|
|
controlsPosition?: InputNumberProps['controlsPosition']
|
|
|
|
|
name?: string
|
|
|
|
|
label?: string
|
|
|
|
|
placeholder?: string
|
|
|
|
|
id?: string
|
|
|
|
|
valueOnClear?: number | null | 'min' | 'max'
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (currentValue: number | undefined, oldValue: number | undefined) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SelectOption {
|
|
|
|
|
label?: string
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
value?: any
|
|
|
|
|
key?: string | number
|
|
|
|
|
options?: SelectOption[]
|
|
|
|
|
[key: string]: any
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SelectComponentProps {
|
|
|
|
|
value?: string | number | boolean | Object
|
|
|
|
|
multiple?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
valueKey?: string
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
collapseTags?: boolean
|
|
|
|
|
collapseTagsTooltip?: number
|
|
|
|
|
multipleLimit?: number
|
|
|
|
|
name?: string
|
|
|
|
|
effect?: string
|
|
|
|
|
autocomplete?: string
|
|
|
|
|
placeholder?: string
|
|
|
|
|
filterable?: boolean
|
|
|
|
|
allowCreate?: boolean
|
|
|
|
|
filterMethod?: (query: string, item: any) => boolean
|
|
|
|
|
remote?: boolean
|
|
|
|
|
remoteMethod?: (query: string) => void
|
|
|
|
|
remoteShowSuffix?: boolean
|
|
|
|
|
loading?: boolean
|
|
|
|
|
loadingText?: string
|
|
|
|
|
noMatchText?: string
|
|
|
|
|
noDataText?: string
|
|
|
|
|
popperClass?: string
|
|
|
|
|
reserveKeyword?: boolean
|
|
|
|
|
defaultFirstOption?: boolean
|
|
|
|
|
popperAppendToBody?: boolean
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
persistent?: boolean
|
|
|
|
|
automaticDropdown?: boolean
|
|
|
|
|
clearIcon?: string | JSX.Element | null
|
|
|
|
|
fitInputWidth?: boolean
|
|
|
|
|
suffixIcon?: string | JSX.Element | null
|
|
|
|
|
tagType?: 'success' | 'info' | 'warning' | 'danger'
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
placement?:
|
|
|
|
|
| 'top'
|
|
|
|
|
| 'top-start'
|
|
|
|
|
| 'top-end'
|
|
|
|
|
| 'bottom'
|
|
|
|
|
| 'bottom-start'
|
|
|
|
|
| 'bottom-end'
|
|
|
|
|
| 'left'
|
|
|
|
|
| 'left-start'
|
|
|
|
|
| 'left-end'
|
|
|
|
|
| 'right'
|
|
|
|
|
| 'right-start'
|
|
|
|
|
| 'right-end'
|
|
|
|
|
maxCollapseTags?: number
|
|
|
|
|
/**
|
|
|
|
|
* 数据源的字段别名
|
|
|
|
|
*/
|
|
|
|
|
props?: {
|
|
|
|
|
key?: string
|
|
|
|
|
value?: string
|
|
|
|
|
label?: string
|
|
|
|
|
children?: string
|
|
|
|
|
}
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | number | boolean | Object) => void
|
|
|
|
|
visibleChange?: (visible: boolean) => void
|
|
|
|
|
removeTag?: (tag: any) => void
|
|
|
|
|
clear?: () => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (options: SelectOption[]) => JSX.Element[] | null
|
|
|
|
|
optionGroupDefault?: (item: SelectOption) => JSX.Element
|
|
|
|
|
optionDefault?: (option: SelectOption) => JSX.Element | null
|
|
|
|
|
prefix?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
empty?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
options?: SelectOption[]
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SelectV2ComponentProps {
|
|
|
|
|
value?: string | number | boolean | Object
|
|
|
|
|
multiple?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
valueKey?: string
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
clearIcon?: string | JSX.Element | null
|
|
|
|
|
collapseTags?: boolean
|
|
|
|
|
multipleLimit?: number
|
|
|
|
|
name?: string
|
|
|
|
|
effect?: string
|
|
|
|
|
autocomplete?: string
|
|
|
|
|
placeholder?: string
|
|
|
|
|
filterable?: boolean
|
|
|
|
|
allowCreate?: boolean
|
|
|
|
|
reserveKeyword?: boolean
|
|
|
|
|
noDataText?: string
|
|
|
|
|
popperClass?: string
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
persistent?: boolean
|
|
|
|
|
popperOptions?: any
|
|
|
|
|
automaticDropdown?: boolean
|
|
|
|
|
height?: number
|
|
|
|
|
scrollbarAlwaysOn?: boolean
|
|
|
|
|
remote?: boolean
|
|
|
|
|
remoteMethod?: (query: string) => void
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
placement?: AutocompleteProps['placement']
|
|
|
|
|
collapseTagsTooltip?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | number | boolean | Object) => void
|
|
|
|
|
visibleChange?: (visible: boolean) => void
|
|
|
|
|
removeTag?: (tag: any) => void
|
|
|
|
|
clear?: () => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
}
|
|
|
|
|
options?: SelectOption[]
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (option: SelectOption) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CascaderComponentProps {
|
|
|
|
|
value?: string | number | string[] | number[] | any
|
|
|
|
|
options?: Record<string, unknown>[]
|
|
|
|
|
props?: CascaderProps
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
placeholder?: string
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
showAllLevels?: boolean
|
|
|
|
|
collapseTags?: boolean
|
|
|
|
|
collapseTagsTooltip?: boolean
|
|
|
|
|
separator?: string
|
|
|
|
|
filterable?: boolean
|
|
|
|
|
filterMethod?: (node: CascaderNode, keyword: string) => boolean
|
|
|
|
|
debounce?: number
|
|
|
|
|
beforeFilter?: (value: string) => boolean
|
|
|
|
|
popperClass?: string
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
tagType?: ElementPlusInfoType
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: CascaderValue) => void
|
|
|
|
|
expandChange?: (value: CascaderValue) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
visibleChange?: (value: boolean) => void
|
|
|
|
|
removeTag?: (value: CascaderNode['valueByOption']) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
empty?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SwitchComponentProps {
|
|
|
|
|
value?: boolean | string | number
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
loading?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
width?: number | string
|
|
|
|
|
inlinePrompt?: boolean
|
|
|
|
|
activeIcon?: string | JSX.Element | null
|
|
|
|
|
inactiveIcon?: string | JSX.Element | null
|
|
|
|
|
activeText?: string
|
|
|
|
|
inactiveText?: string
|
|
|
|
|
activeValue?: boolean | string | number
|
|
|
|
|
inactiveValue?: boolean | string | number
|
|
|
|
|
name?: string
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
beforeChange?: (value: boolean) => boolean | Promise<boolean>
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: boolean | string | number) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface RateComponentProps {
|
|
|
|
|
value?: number
|
|
|
|
|
max?: number
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
allowHalf?: boolean
|
|
|
|
|
lowThreshold?: number
|
|
|
|
|
highThreshold?: number
|
|
|
|
|
colors?: string[] | Record<number, string>
|
|
|
|
|
voidColor?: string
|
|
|
|
|
disabledVoidColor?: string
|
|
|
|
|
icons?: string[] | JSX.Element[] | Record<number, string | JSX.Element>
|
|
|
|
|
voidIcon?: string | JSX.Element
|
|
|
|
|
disabledVoidIcon?: string | JSX.Element
|
|
|
|
|
showText?: boolean
|
|
|
|
|
showScore?: boolean
|
|
|
|
|
textColor?: string
|
|
|
|
|
texts?: string[]
|
|
|
|
|
scoreTemplate?: string
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
id?: string
|
|
|
|
|
label?: string
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: number) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ColorPickerComponentProps {
|
|
|
|
|
value?: string
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
showAlpha?: boolean
|
|
|
|
|
colorFormat?: 'hsl' | 'hsv' | 'hex' | 'rgb' | 'hex' | 'rgb'
|
|
|
|
|
predefine?: string[]
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
tabindex?: number | string
|
|
|
|
|
label?: string
|
|
|
|
|
id?: string
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string) => void
|
|
|
|
|
activeChange?: (value: string) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface TransferComponentProps {
|
|
|
|
|
value?: any[]
|
|
|
|
|
data?: any[]
|
|
|
|
|
filterable?: boolean
|
|
|
|
|
filterPlaceholder?: string
|
|
|
|
|
filterMethod?: (query: string, item: any) => boolean
|
|
|
|
|
targetOrder?: string
|
|
|
|
|
titles?: string[]
|
|
|
|
|
buttonTexts?: string[]
|
|
|
|
|
renderContent?: (
|
|
|
|
|
h: (type: string, props: VNodeProps | null, children?: string) => VNode,
|
|
|
|
|
option: any
|
|
|
|
|
) => JSX.Element
|
|
|
|
|
format?: {
|
|
|
|
|
noChecked?: string
|
|
|
|
|
hasChecked?: string
|
|
|
|
|
}
|
|
|
|
|
props?: {
|
|
|
|
|
label?: string
|
|
|
|
|
key?: string
|
|
|
|
|
disabled?: string
|
|
|
|
|
}
|
|
|
|
|
leftDefaultChecked?: any[]
|
|
|
|
|
rightDefaultChecked?: any[]
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (
|
|
|
|
|
value: number | string,
|
|
|
|
|
direction: 'left' | 'right',
|
|
|
|
|
movedKeys: string[] | number[]
|
|
|
|
|
) => void
|
|
|
|
|
leftCheckChange?: (value: any[]) => void
|
|
|
|
|
rightCheckChange?: (value: any[]) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
leftFooter?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
rightFooter?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface RadioOption {
|
|
|
|
|
label?: string
|
|
|
|
|
value?: string | number | boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
border?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
name?: string
|
|
|
|
|
[key: string]: any
|
|
|
|
|
}
|
|
|
|
|
export interface RadioGroupComponentProps {
|
|
|
|
|
value?: string | number | boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
textColor?: string
|
|
|
|
|
fill?: string
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
label?: string
|
|
|
|
|
name?: string
|
|
|
|
|
id?: string
|
|
|
|
|
options?: RadioOption[]
|
|
|
|
|
/**
|
|
|
|
|
* 数据源的字段别名
|
|
|
|
|
*/
|
|
|
|
|
props: {
|
|
|
|
|
label?: string
|
|
|
|
|
value?: string
|
|
|
|
|
disabled?: string
|
|
|
|
|
}
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | number | boolean) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface RadioButtonComponentProps {
|
|
|
|
|
value?: string | number | boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
textColor?: string
|
|
|
|
|
fill?: string
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
label?: string
|
|
|
|
|
name?: string
|
|
|
|
|
id?: string
|
|
|
|
|
options?: RadioOption[]
|
|
|
|
|
/**
|
|
|
|
|
* 数据源的字段别名
|
|
|
|
|
*/
|
|
|
|
|
props: {
|
|
|
|
|
label?: string
|
|
|
|
|
value?: string
|
|
|
|
|
disabled?: string
|
|
|
|
|
}
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | number | boolean) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CheckboxOption {
|
|
|
|
|
label?: string
|
|
|
|
|
value?: string | number | boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
trueLabel?: string | number
|
|
|
|
|
falseLabel?: string | number
|
|
|
|
|
border?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
name?: string
|
|
|
|
|
checked?: boolean
|
|
|
|
|
indeterminate?: boolean
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
tabindex?: number | string
|
|
|
|
|
id?: string
|
|
|
|
|
controls?: boolean
|
|
|
|
|
[key: string]: any
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CheckboxGroupComponentProps {
|
|
|
|
|
value?: string[] | number[]
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
min?: number
|
|
|
|
|
max?: number
|
|
|
|
|
label?: string
|
|
|
|
|
textColor?: string
|
|
|
|
|
fill?: string
|
|
|
|
|
tag?: string
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
options?: CheckboxOption[]
|
|
|
|
|
/**
|
|
|
|
|
* 数据源的字段别名
|
|
|
|
|
*/
|
|
|
|
|
props: {
|
|
|
|
|
label?: string
|
|
|
|
|
value?: string
|
|
|
|
|
disabled?: string
|
|
|
|
|
}
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | number | boolean) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DividerComponentProps {
|
|
|
|
|
value?: number | Array<number>
|
|
|
|
|
min?: number
|
|
|
|
|
max?: number
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
step?: number
|
|
|
|
|
showInput?: boolean
|
|
|
|
|
showInputControls?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
inputSize?: ElementPlusSize
|
|
|
|
|
showStops?: boolean
|
|
|
|
|
showTooltip?: boolean
|
|
|
|
|
formatTooltip?: (value: number) => string
|
|
|
|
|
range?: boolean
|
|
|
|
|
vertical?: boolean
|
|
|
|
|
height?: string
|
|
|
|
|
label?: string
|
|
|
|
|
rangeStartLabel?: string
|
|
|
|
|
rangeEndLabel?: string
|
|
|
|
|
formatValueText?: (value: number) => string
|
|
|
|
|
debounce?: number
|
|
|
|
|
tooltipClass?: string
|
|
|
|
|
placement?: string
|
|
|
|
|
marks?: Record<number, string>
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: number) => void
|
|
|
|
|
input?: (value: number) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DatePickerComponentProps {
|
|
|
|
|
value?: string | Date | number | string[]
|
|
|
|
|
readonly?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
editable?: boolean
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
placeholder?: string
|
|
|
|
|
startPlaceholder?: string
|
|
|
|
|
endPlaceholder?: string
|
|
|
|
|
type?:
|
|
|
|
|
| 'year'
|
|
|
|
|
| 'month'
|
|
|
|
|
| 'date'
|
|
|
|
|
| 'dates'
|
|
|
|
|
| 'week'
|
|
|
|
|
| 'datetime'
|
|
|
|
|
| 'datetimerange'
|
|
|
|
|
| 'daterange'
|
|
|
|
|
| 'monthrange'
|
|
|
|
|
format?: string
|
|
|
|
|
popperClass?: string
|
|
|
|
|
popperOptions?: Record<string, any>
|
|
|
|
|
rangeSeparator?: string
|
|
|
|
|
defaultValue?: Date | [Date, Date]
|
|
|
|
|
defaultTime?: Date | [Date, Date]
|
|
|
|
|
valueFormat?: string
|
|
|
|
|
id?: string
|
|
|
|
|
name?: string
|
|
|
|
|
unlinkPanels?: boolean
|
|
|
|
|
prefixIcon?: string | JSX.Element
|
|
|
|
|
clearIcon?: string | JSX.Element
|
|
|
|
|
validateEvent?: boolean
|
|
|
|
|
disabledDate?: (date: Date) => boolean
|
|
|
|
|
shortcuts?: Array<{ text: string; value: Date | Function }>
|
|
|
|
|
cellClassName?: string | ((date: Date) => string | undefined)
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | Date | number | string[]) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
calendarChange?: (val: [Date, Date]) => void
|
|
|
|
|
panelChange?: (date, mode, view) => void
|
|
|
|
|
visibleChange?: (visibility: boolean) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
rangeSeparator?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DateTimePickerComponentProps {
|
|
|
|
|
value?: string | Date | number | string[]
|
|
|
|
|
readonly?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
editable?: boolean
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
placeholder?: string
|
|
|
|
|
startPlaceholder?: string
|
|
|
|
|
endPlaceholder?: string
|
|
|
|
|
timeArrowControl?: boolean
|
|
|
|
|
type?: 'year' | 'month' | 'date' | 'datetime' | 'datetimerange' | 'daterange' | 'week'
|
|
|
|
|
format?: string
|
|
|
|
|
popperClass?: string
|
|
|
|
|
rangeSeparator?: string
|
|
|
|
|
defaultValue?: Date | [Date, Date]
|
|
|
|
|
defaultTime?: Date | [Date, Date]
|
|
|
|
|
valueFormat?: string
|
|
|
|
|
id?: string
|
|
|
|
|
name?: string
|
|
|
|
|
unlinkPanels?: boolean
|
|
|
|
|
prefixIcon?: string | JSX.Element
|
|
|
|
|
clearIcon?: string | JSX.Element
|
|
|
|
|
shortcuts?: Array<{ text: string; value: Date | Function }>
|
|
|
|
|
disabledDate?: (date: Date) => boolean
|
|
|
|
|
cellClassName?: string | ((date: Date) => string | undefined)
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (value: string | Date | number | string[]) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
calendarChange?: (val: [Date, Date]) => void
|
|
|
|
|
visibleChange?: (visibility: boolean) => void
|
|
|
|
|
}
|
|
|
|
|
slots?: {
|
|
|
|
|
default?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
rangeSeparator?: (...args: any[]) => JSX.Element | null
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface TimePickerComponentProps {
|
|
|
|
|
value?: string | Date | number | [Date, Date] | [number, number] | [string, string]
|
|
|
|
|
readonly?: boolean
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
editable?: boolean
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
placeholder?: string
|
|
|
|
|
startPlaceholder?: string
|
|
|
|
|
endPlaceholder?: string
|
|
|
|
|
isRange?: boolean
|
|
|
|
|
arrowControl?: boolean
|
|
|
|
|
popperClass?: string
|
|
|
|
|
rangeSeparator?: string
|
|
|
|
|
format?: string
|
|
|
|
|
defaultValue?: Date | [Date, Date]
|
|
|
|
|
id?: string
|
|
|
|
|
name?: string
|
|
|
|
|
label?: string
|
|
|
|
|
prefixIcon?: string | JSX.Element
|
|
|
|
|
clearIcon?: string | JSX.Element
|
|
|
|
|
disabledHours?: (role: string, comparingDate?: any) => number[]
|
|
|
|
|
disabledMinutes?: (hour: number, role: string, comparingDate?: any) => number[]
|
|
|
|
|
disabledSeconds?: (hour: number, minute: number, role: string, comparingDate?: any) => number[]
|
|
|
|
|
teleported?: boolean
|
|
|
|
|
tabindex?: number | string
|
|
|
|
|
on?: {
|
|
|
|
|
change: (
|
|
|
|
|
val: number | string | Date | [number, number] | [string, string] | [Date, Date]
|
|
|
|
|
) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
visibleChange?: (visibility: boolean) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface TimeSelectComponentProps {
|
|
|
|
|
value?: string
|
|
|
|
|
disabled?: boolean
|
|
|
|
|
editable?: boolean
|
|
|
|
|
clearable?: boolean
|
|
|
|
|
size?: ElementPlusSize
|
|
|
|
|
placeholder?: string
|
|
|
|
|
name?: string
|
|
|
|
|
effect?: string
|
|
|
|
|
prefixIcon?: string | JSX.Element
|
|
|
|
|
clearIcon?: string | JSX.Element
|
|
|
|
|
start?: string
|
|
|
|
|
end?: string
|
|
|
|
|
step?: string
|
|
|
|
|
minTime?: string
|
|
|
|
|
maxTime?: string
|
|
|
|
|
format?: string
|
|
|
|
|
on?: {
|
|
|
|
|
change?: (val: string) => void
|
|
|
|
|
blur?: (event: FocusEvent) => void
|
|
|
|
|
focus?: (event: FocusEvent) => void
|
|
|
|
|
}
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ColProps {
|
|
|
|
|
span?: number
|
|
|
|
|
xs?: number
|
|
|
|
|
sm?: number
|
|
|
|
|
md?: number
|
|
|
|
|
lg?: number
|
|
|
|
|
xl?: number
|
|
|
|
|
tag?: string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
import type { AxiosPromise } from 'axios'
|
|
|
|
|
|
|
|
|
|
export type FormSetPropsType = {
|
|
|
|
|
field: string
|
|
|
|
|
path: string
|
|
|
|
|
value: any
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type FormValueType = string | number | string[] | number[] | boolean | undefined | null
|
|
|
|
|
|
|
|
|
|
export type FormItemProps = {
|
|
|
|
|
labelWidth?: string | number
|
|
|
|
|
required?: boolean
|
|
|
|
|
rules?: Recordable
|
|
|
|
|
error?: string
|
|
|
|
|
showMessage?: boolean
|
|
|
|
|
inlineMessage?: boolean
|
|
|
|
|
style?: CSSProperties
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface FormSchema {
|
|
|
|
|
/**
|
|
|
|
|
* 唯一标识
|
|
|
|
|
*/
|
|
|
|
|
field: string
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 标题
|
|
|
|
|
*/
|
|
|
|
|
label?: string
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 提示信息
|
|
|
|
|
*/
|
|
|
|
|
labelMessage?: string
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* col组件属性
|
|
|
|
|
*/
|
|
|
|
|
colProps?: ColProps
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 表单组件属性,具体可以查看element-plus文档
|
|
|
|
|
*/
|
|
|
|
|
componentProps?:
|
|
|
|
|
| InputComponentProps
|
|
|
|
|
| AutocompleteComponentProps
|
|
|
|
|
| InputNumberComponentProps
|
|
|
|
|
| SelectComponentProps
|
|
|
|
|
| SelectV2ComponentProps
|
|
|
|
|
| CascaderComponentProps
|
|
|
|
|
| SwitchComponentProps
|
|
|
|
|
| RateComponentProps
|
|
|
|
|
| ColorPickerComponentProps
|
|
|
|
|
| TransferComponentProps
|
|
|
|
|
| RadioGroupComponentProps
|
|
|
|
|
| RadioButtonComponentProps
|
|
|
|
|
| DividerComponentProps
|
|
|
|
|
| DatePickerComponentProps
|
|
|
|
|
| DateTimePickerComponentProps
|
|
|
|
|
| TimePickerComponentProps
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* formItem组件属性,具体可以查看element-plus文档
|
|
|
|
|
*/
|
|
|
|
|
formItemProps?: FormItemProps
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 渲染的组件名称
|
|
|
|
|
*/
|
|
|
|
|
component?: ComponentName
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 初始值
|
|
|
|
|
*/
|
|
|
|
|
value?: FormValueType
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 是否隐藏
|
|
|
|
|
*/
|
|
|
|
|
hidden?: boolean
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @returns 远程加载下拉项
|
|
|
|
|
*/
|
|
|
|
|
api?: <T = any>() => AxiosPromise<T>
|
|
|
|
|
}
|
|
|
|
|
|