- UserSelect 组件新增 defaultCurrentUser 配置,支持默认选中当前登录用户 - DeptSelect 组件重构为独立的树形选择器,支持 defaultCurrentDept 配置 - DeptSelect 支持 returnType 配置,可返回部门 ID 或部门名称 - 修复 useSelectRule 未将自定义 props 默认值传递给组件的问题 - 修复 DeptSelect 数据加载完成前回显失败的问题 - 同时支持 web-antd 和 web-ele 两个应用
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type { SelectRuleOption } from '#/components/form-create/typing';
|
|
|
|
import { buildUUID, cloneDeep } from '@vben/utils';
|
|
|
|
import {
|
|
localeProps,
|
|
makeRequiredRule,
|
|
} from '#/components/form-create/helpers';
|
|
import { selectRule } from '#/components/form-create/rules/data';
|
|
|
|
/**
|
|
* 通用选择器规则 hook
|
|
*
|
|
* @param option 规则配置
|
|
*/
|
|
export function useSelectRule(option: SelectRuleOption) {
|
|
const label = option.label;
|
|
const name = option.name;
|
|
const rules = cloneDeep(selectRule);
|
|
return {
|
|
icon: option.icon,
|
|
label,
|
|
name,
|
|
event: option.event,
|
|
rule() {
|
|
// 构建基础规则
|
|
const baseRule: any = {
|
|
type: name,
|
|
field: buildUUID(),
|
|
title: label,
|
|
info: '',
|
|
$required: false,
|
|
};
|
|
// 将自定义 props 的默认值添加到 rule 的 props 中
|
|
if (option.props && option.props.length > 0) {
|
|
baseRule.props = {};
|
|
option.props.forEach((prop: any) => {
|
|
if (prop.field && prop.value !== undefined) {
|
|
baseRule.props[prop.field] = prop.value;
|
|
}
|
|
});
|
|
}
|
|
return baseRule;
|
|
},
|
|
props(_: any, { t }: any) {
|
|
if (!option.props) {
|
|
option.props = [];
|
|
}
|
|
return localeProps(t, `${name}.props`, [
|
|
makeRequiredRule(),
|
|
...option.props,
|
|
...rules,
|
|
]);
|
|
},
|
|
};
|
|
}
|