From ebb4738be71608042b4057336f89be1b3f550db2 Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Tue, 8 Apr 2025 20:58:09 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=B5=81=E7=A8=8B=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=20useBeforeCloseDiff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process-definition-modal.vue | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/web-antd/src/views/workflow/processDefinition/process-definition-modal.vue b/apps/web-antd/src/views/workflow/processDefinition/process-definition-modal.vue index 22997090..b8ecb587 100644 --- a/apps/web-antd/src/views/workflow/processDefinition/process-definition-modal.vue +++ b/apps/web-antd/src/views/workflow/processDefinition/process-definition-modal.vue @@ -12,6 +12,7 @@ import { workflowDefinitionInfo, workflowDefinitionUpdate, } from '#/api/workflow/definition'; +import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; import { modalSchema } from './data'; @@ -65,8 +66,16 @@ async function setupCategorySelect() { ]); } +const { onBeforeClose, markInitialized, resetInitialized } = useBeforeCloseDiff( + { + initializedGetter: defaultFormValueGetter(formApi), + currentGetter: defaultFormValueGetter(formApi), + }, +); + const [BasicDrawer, modalApi] = useVbenModal({ - onCancel: handleCancel, + onBeforeClose, + onCancel: handleClosed, onConfirm: handleConfirm, async onOpenChange(isOpen) { if (!isOpen) { @@ -83,6 +92,7 @@ const [BasicDrawer, modalApi] = useVbenModal({ const record = await workflowDefinitionInfo(id); await formApi.setValues(record); } + await markInitialized(); modalApi.modalLoading(false); }, @@ -90,7 +100,7 @@ const [BasicDrawer, modalApi] = useVbenModal({ async function handleConfirm() { try { - modalApi.modalLoading(true); + modalApi.lock(true); const { valid } = await formApi.validate(); if (!valid) { return; @@ -103,17 +113,18 @@ async function handleConfirm() { await workflowDefinitionAdd(data); emit('reload', 'add'); } - await handleCancel(); + resetInitialized(); + modalApi.close(); } catch (error) { console.error(error); } finally { - modalApi.modalLoading(false); + modalApi.lock(false); } } -async function handleCancel() { - modalApi.close(); +async function handleClosed() { await formApi.resetForm(); + resetInitialized(); }