|
@@ -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 type { FormSchema } from '../types/form';
|
|
|
|
|
|
+ import { computed, defineComponent, toRefs, unref } from 'vue';
|
|
|
|
+ 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 { Form, Col, Divider } from 'ant-design-vue';
|
|
|
|
|
|
+ import { Col, Divider, Form } 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();
|