diff --git a/src/components/GiForm/src/GiForm.vue b/src/components/GiForm/src/GiForm.vue index 98145b4..47d2bfd 100644 --- a/src/components/GiForm/src/GiForm.vue +++ b/src/components/GiForm/src/GiForm.vue @@ -199,9 +199,17 @@ const updateValue = (value: any, field: string) => { emit('update:modelValue', Object.assign(props.modelValue, { [field]: value })) } +/** 必填项 */ +const isRequired = (item: ColumnItem) => { + if (typeof item.required === 'boolean') return item.required + if (typeof item.required === 'function') { + return item.required(props.modelValue) + } +} + /** 表单项校验规则 */ const getFormItemRules = (item: ColumnItem) => { - if (item.required) { + if (isRequired(item)) { const defaultProps = getComponentBindProps(item) return [{ required: true, message: defaultProps.placeholder || `请输入${item.label}` }, ...(Array.isArray(item.rules) ? item.rules : [])] } diff --git a/src/components/GiForm/src/type.ts b/src/components/GiForm/src/type.ts index e66a48c..e5606e4 100644 --- a/src/components/GiForm/src/type.ts +++ b/src/components/GiForm/src/type.ts @@ -203,8 +203,8 @@ export interface ColumnItem { props?: ColumnItemProps gridItemProps?: A.GridItemProps formItemProps?: Omit // a-form-item的props - required?: boolean // 是否必填 rules?: A.FormItemInstance['$props']['rules'] // 表单校验规则 + required?: ColumnItemHide // 是否必填 hide?: ColumnItemHide // 是否隐藏 show?: ColumnItemShow // 是否显示(优先级比hide高) disabled?: ColumnItemDisabled // 是否禁用 diff --git a/src/views/system/config/storage/AddModal.vue b/src/views/system/config/storage/AddModal.vue index 09d67aa..3c3cb69 100644 --- a/src/views/system/config/storage/AddModal.vue +++ b/src/views/system/config/storage/AddModal.vue @@ -8,7 +8,14 @@ @before-ok="save" @close="reset" > - + + + @@ -77,7 +84,7 @@ const columns: ColumnItem[] = reactive([ field: 'secretKey', type: 'input', span: 24, - required: true, + required: () => !isUpdate.value, show: () => form.type === 2, }, { @@ -165,7 +172,7 @@ const save = async () => { if (isUpdate.value) { await updateStorage({ ...form, - secretKey: form.type === 2 && !form.secretKey.includes('*') ? encryptByRsa(form.secretKey) || '' : null, + secretKey: form.type === 2 && form.secretKey ? encryptByRsa(form.secretKey) || '' : null, }, dataId.value) Message.success('修改成功') } else {