|
|
|
@ -1,17 +1,16 @@ |
|
|
|
<script lang="tsx"> |
|
|
|
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 { 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 { BasicHelp } from '/@/components/Basic'; |
|
|
|
import { isBoolean, isFunction, isNull } from '/@/utils/is'; |
|
|
|
import { getSlot } from '/@/utils/helper/tsxHelper'; |
|
|
|
import { createPlaceholderMessage, setComponentRuleType } from '../helper'; |
|
|
|
import { upperFirst, cloneDeep } from 'lodash-es'; |
|
|
|
import { cloneDeep, upperFirst } from 'lodash-es'; |
|
|
|
import { useItemLabelWidth } from '../hooks/useLabelWidth'; |
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'; |
|
|
|
|
|
|
|
@ -178,18 +177,27 @@ |
|
|
|
|
|
|
|
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( |
|
|
|
(rule) => Reflect.has(rule, 'required') && !Reflect.has(rule, 'validator'), |
|
|
|
); |
|
|
|
|
|
|
|
if (requiredRuleIndex === -1 && getRequired) { |
|
|
|
rules.push({ required: getRequired, validator }); |
|
|
|
} |
|
|
|
|
|
|
|
if (requiredRuleIndex !== -1) { |
|
|
|
const rule = rules[requiredRuleIndex]; |
|
|
|
const { isShow } = getShow(); |
|
|
|
|