78 lines
1.8 KiB
TypeScript
78 lines
1.8 KiB
TypeScript
import { cloneDeep } from '@vben/utils';
|
||
|
||
import {
|
||
localeProps,
|
||
makeRequiredRule,
|
||
} from '#/components/form-create/helpers';
|
||
|
||
/** 省市区选择器规则 */
|
||
export function useAreaSelectRule() {
|
||
const label = '省市区选择器';
|
||
const name = 'AreaSelect';
|
||
|
||
return {
|
||
icon: 'icon-location',
|
||
label,
|
||
name,
|
||
rule() {
|
||
return {
|
||
type: name,
|
||
field: `area_${Date.now()}`,
|
||
title: label,
|
||
info: '',
|
||
$required: false,
|
||
modelField: 'value', // 特殊:ele 里是 model-value,antd 里是 value
|
||
};
|
||
},
|
||
props(_: any, { t }: any) {
|
||
return localeProps(t, `${name}.props`, [
|
||
makeRequiredRule(),
|
||
{
|
||
type: 'select',
|
||
field: 'level',
|
||
title: '选择层级',
|
||
value: 3,
|
||
options: [
|
||
{ label: '省', value: 1 },
|
||
{ label: '省/市', value: 2 },
|
||
{ label: '省/市/区', value: 3 },
|
||
],
|
||
info: '限制可选择的地区层级',
|
||
},
|
||
{
|
||
type: 'input',
|
||
field: 'placeholder',
|
||
title: '占位符',
|
||
value: '请选择省市区',
|
||
},
|
||
{
|
||
type: 'switch',
|
||
field: 'clearable',
|
||
title: '是否可清空',
|
||
value: true,
|
||
},
|
||
{
|
||
type: 'switch',
|
||
field: 'showAllLevels',
|
||
title: '显示完整路径',
|
||
value: true,
|
||
info: '输入框中是否显示选中值的完整路径',
|
||
},
|
||
{
|
||
type: 'input',
|
||
field: 'separator',
|
||
title: '分隔符',
|
||
value: '/',
|
||
info: '选项分隔符',
|
||
},
|
||
{
|
||
type: 'switch',
|
||
field: 'disabled',
|
||
title: '是否禁用',
|
||
value: false,
|
||
},
|
||
]);
|
||
},
|
||
};
|
||
}
|