fix: 已经存在rules时,required不生效
This commit is contained in:
parent
fb43e54847
commit
8d93e047d0
|
|
@ -1,17 +1,16 @@
|
||||||
<script lang="tsx">
|
<script lang="tsx">
|
||||||
import type { PropType, Ref } from 'vue';
|
import type { PropType, Ref } from 'vue';
|
||||||
import type { FormActionType, FormProps } from '../types/form';
|
import { computed, defineComponent, toRefs, unref } from 'vue';
|
||||||
import type { FormSchema } from '../types/form';
|
import type { FormActionType, FormProps, FormSchema } from '../types/form';
|
||||||
import type { ValidationRule } from 'ant-design-vue/lib/form/Form';
|
import type { ValidationRule } from 'ant-design-vue/lib/form/Form';
|
||||||
import type { TableActionType } from '/@/components/Table';
|
import type { TableActionType } from '/@/components/Table';
|
||||||
import { defineComponent, computed, unref, toRefs } from 'vue';
|
import { Col, Divider, Form } from 'ant-design-vue';
|
||||||
import { Form, Col, Divider } from 'ant-design-vue';
|
|
||||||
import { componentMap } from '../componentMap';
|
import { componentMap } from '../componentMap';
|
||||||
import { BasicHelp } from '/@/components/Basic';
|
import { BasicHelp } from '/@/components/Basic';
|
||||||
import { isBoolean, isFunction, isNull } from '/@/utils/is';
|
import { isBoolean, isFunction, isNull } from '/@/utils/is';
|
||||||
import { getSlot } from '/@/utils/helper/tsxHelper';
|
import { getSlot } from '/@/utils/helper/tsxHelper';
|
||||||
import { createPlaceholderMessage, setComponentRuleType } from '../helper';
|
import { createPlaceholderMessage, setComponentRuleType } from '../helper';
|
||||||
import { upperFirst, cloneDeep } from 'lodash-es';
|
import { cloneDeep, upperFirst } from 'lodash-es';
|
||||||
import { useItemLabelWidth } from '../hooks/useLabelWidth';
|
import { useItemLabelWidth } from '../hooks/useLabelWidth';
|
||||||
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
|
|
||||||
|
|
@ -178,18 +177,27 @@
|
||||||
|
|
||||||
const getRequired = isFunction(required) ? required(unref(getValues)) : required;
|
const getRequired = isFunction(required) ? required(unref(getValues)) : required;
|
||||||
|
|
||||||
if ((!rules || rules.length === 0) && getRequired) {
|
/*
|
||||||
rules = [{ required: getRequired, validator }];
|
* 1、若设置了required属性,又没有其他的rules,就创建一个验证规则;
|
||||||
|
* 2、若设置了required属性,又存在其他的rules,则只rules中不存在required属性时,才添加验证required的规则
|
||||||
|
* 也就是说rules中的required,优先级大于required
|
||||||
|
*/
|
||||||
|
if (getRequired) {
|
||||||
|
if (!rules || rules.length === 0) {
|
||||||
|
rules = [{ required: getRequired, validator }];
|
||||||
|
} else {
|
||||||
|
const requiredIndex: number = rules.findIndex((rule) => Reflect.has(rule, 'required'));
|
||||||
|
|
||||||
|
if (requiredIndex === -1) {
|
||||||
|
rules.push({ required: getRequired, validator });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const requiredRuleIndex: number = rules.findIndex(
|
const requiredRuleIndex: number = rules.findIndex(
|
||||||
(rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator'),
|
(rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator'),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (requiredRuleIndex === -1 && getRequired) {
|
|
||||||
rules.push({ required: getRequired, validator });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requiredRuleIndex !== -1) {
|
if (requiredRuleIndex !== -1) {
|
||||||
const rule = rules[requiredRuleIndex];
|
const rule = rules[requiredRuleIndex];
|
||||||
const { isShow } = getShow();
|
const { isShow } = getShow();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue