From 838b97b812b1f7132f687654e8c724e7a7388e10 Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Fri, 3 Oct 2025 11:42:26 +0800 Subject: [PATCH] Refactor attachment policy form (#7790) #### What type of PR is this? /area ui /milestone 2.22.x #### What this PR does / why we need it: Refactored AttachmentPolicyEditingModal.vue to group policy config fields under a 'config' group and improved the update logic to use JSON patch for displayName #### Does this PR introduce a user-facing change? ```release-note None ``` --- .../AttachmentPolicyEditingModal.vue | 43 +++++++++++-------- ui/src/locales/_missing_translations_es.yaml | 3 ++ ui/src/locales/en.yaml | 2 + ui/src/locales/zh-CN.yaml | 2 + ui/src/locales/zh-TW.yaml | 2 + 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/ui/console-src/modules/contents/attachments/components/AttachmentPolicyEditingModal.vue b/ui/console-src/modules/contents/attachments/components/AttachmentPolicyEditingModal.vue index 42f74a01d..5bae846cb 100644 --- a/ui/console-src/modules/contents/attachments/components/AttachmentPolicyEditingModal.vue +++ b/ui/console-src/modules/contents/attachments/components/AttachmentPolicyEditingModal.vue @@ -112,9 +112,8 @@ const isSubmitting = ref(false); const handleSave = async (data: { displayName: string; - [key: string]: unknown; + config: Record; }) => { - console.log(data); try { isSubmitting.value = true; if (isUpdateMode.value) { @@ -125,18 +124,18 @@ const handleSave = async (data: { await consoleApiClient.storage.policy.updatePolicyConfigByGroup({ name: policy.value.metadata.name, group: CONFIG_MAP_GROUP, - body: data, + body: data.config, }); - await coreApiClient.storage.policy.updatePolicy({ + await coreApiClient.storage.policy.patchPolicy({ name: policy.value.metadata.name, - policy: { - ...policy.value, - spec: { - ...policy.value.spec, - displayName: data.displayName, + jsonPatchInner: [ + { + op: "add", + path: "/spec/displayName", + value: data.displayName, }, - }, + ], }); } else { const { data: policies } = @@ -157,7 +156,7 @@ const handleSave = async (data: { await coreApiClient.configMap.createConfigMap({ configMap: { data: { - [CONFIG_MAP_GROUP]: JSON.stringify(data), + [CONFIG_MAP_GROUP]: JSON.stringify(data.config || {}), }, apiVersion: "v1alpha1", kind: "ConfigMap", @@ -207,16 +206,14 @@ const modalTitle = props.policy ref="modal" mount-to-body :title="modalTitle" - :width="600" + :width="650" @close="emit('close')" >
diff --git a/ui/src/locales/_missing_translations_es.yaml b/ui/src/locales/_missing_translations_es.yaml index f4bd7f025..f072a00ed 100644 --- a/ui/src/locales/_missing_translations_es.yaml +++ b/ui/src/locales/_missing_translations_es.yaml @@ -234,6 +234,9 @@ core: toast: group_name_exists: Group name already exists policy_editing_modal: + fields: + config: + label: Policy configuration toast: policy_name_exists: Storage policy name already exists upload_modal: diff --git a/ui/src/locales/en.yaml b/ui/src/locales/en.yaml index b94d42991..68fbe2e6a 100644 --- a/ui/src/locales/en.yaml +++ b/ui/src/locales/en.yaml @@ -750,6 +750,8 @@ core: fields: display_name: label: Display name + config: + label: Policy configuration toast: policy_name_exists: Storage policy name already exists upload_modal: diff --git a/ui/src/locales/zh-CN.yaml b/ui/src/locales/zh-CN.yaml index 6f96a77e8..fa56fe959 100644 --- a/ui/src/locales/zh-CN.yaml +++ b/ui/src/locales/zh-CN.yaml @@ -704,6 +704,8 @@ core: fields: display_name: label: 名称 + config: + label: 策略配置 toast: policy_name_exists: 存储策略名称已存在 upload_modal: diff --git a/ui/src/locales/zh-TW.yaml b/ui/src/locales/zh-TW.yaml index c1ebc3bba..573707737 100644 --- a/ui/src/locales/zh-TW.yaml +++ b/ui/src/locales/zh-TW.yaml @@ -689,6 +689,8 @@ core: fields: display_name: label: 名稱 + config: + label: 策略配置 toast: policy_name_exists: 儲存策略名稱已存在 upload_modal: