From 6f7d92594ea58dcd59cb67402189cc0f8cba3414 Mon Sep 17 00:00:00 2001 From: Zyy Date: Thu, 5 Nov 2026 12:11:52 +0800 Subject: [PATCH] fix(frontend): defer incomplete configuration errors until submit Avoid validating model access and plugin forms when switching modes. Keep error protection drafts quiet until input or submission, and retain condition identity when editing or removing entries. Co-authored-by: Codex --- .../components/AccountBatchEditModal.vue | 2 +- .../accounts/components/AccountEditModal.vue | 2 +- .../components/AccountModelAccessField.vue | 4 +-- .../components/account-create-modal/index.vue | 2 +- .../useAccountSettingsFormRules.ts | 3 +- .../plugins/components/PluginInstallModal.vue | 5 +-- .../AccountErrorProtectionCard.vue | 8 +++-- .../ProtectionConditionEditor.vue | 31 +++++++++++++------ .../error-protection/ProtectionRuleEditor.vue | 24 +++++++++++--- .../error-protection/ProtectionRuleRow.vue | 27 ++++++++++------ .../components/error-protection/form.ts | 14 ++++++--- .../composables/useSettingsFormRules.ts | 3 +- 12 files changed, 85 insertions(+), 40 deletions(-) diff --git a/frontend/src/views/accounts/components/AccountBatchEditModal.vue b/frontend/src/views/accounts/components/AccountBatchEditModal.vue index 2a16d56b6..3d2aaaf56 100644 --- a/frontend/src/views/accounts/components/AccountBatchEditModal.vue +++ b/frontend/src/views/accounts/components/AccountBatchEditModal.vue @@ -85,7 +85,7 @@ const schedulingMode = computed({ width="48rem" :show-close="!saving" :close-on-click-modal="!saving" :close-on-press-escape="!saving" > - + - +
diff --git a/frontend/src/views/accounts/components/AccountModelAccessField.vue b/frontend/src/views/accounts/components/AccountModelAccessField.vue index 86b2a84b4..4cd417f9b 100644 --- a/frontend/src/views/accounts/components/AccountModelAccessField.vue +++ b/frontend/src/views/accounts/components/AccountModelAccessField.vue @@ -23,9 +23,7 @@ const { t } = useI18n({ useScope: 'global' }) const model = defineModel({ required: true }) const formItem = useTemplateRef>('modelAccessItem') const refreshButton = useTemplateRef>('refreshButton') -watch(model, () => { - void formItem.value?.validate('change').catch(() => undefined) -}) +watch(model, () => formItem.value?.clearValidate()) // 未取得目录时不能判断缺失,成功返回空目录则可以 const catalog = ref>() const catalogObservedAtDisplay = ref() diff --git a/frontend/src/views/accounts/components/account-create-modal/index.vue b/frontend/src/views/accounts/components/account-create-modal/index.vue index 512b9c18d..911d0b875 100644 --- a/frontend/src/views/accounts/components/account-create-modal/index.vue +++ b/frontend/src/views/accounts/components/account-create-modal/index.vue @@ -159,7 +159,7 @@ async function requestCreate() {
- + - +