From f0b24cc18afc8ee0cef185a385270b098cdd0b4f Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 28 Aug 2025 21:55:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor(system/storage):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E9=85=8D=E7=BD=AE=E6=97=B6=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E6=8C=81Secret=20Key=E4=B8=BA=E7=A9=BA=E5=B0=86=E4=B8=8D?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/GiForm/src/GiForm.vue | 10 +++++++++- src/components/GiForm/src/type.ts | 2 +- src/views/system/config/storage/AddModal.vue | 13 ++++++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) 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 {