From 9db1087d321f9709c6c0a5f1259a6517d64bee7c Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Sat, 12 Apr 2025 10:38:14 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E5=B2=97=E4=BD=8D=20useBeforeCloseDi?= =?UTF-8?q?ff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/system/post/post-drawer.vue | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/web-antd/src/views/system/post/post-drawer.vue b/apps/web-antd/src/views/system/post/post-drawer.vue index 1b411838..ed4b963a 100644 --- a/apps/web-antd/src/views/system/post/post-drawer.vue +++ b/apps/web-antd/src/views/system/post/post-drawer.vue @@ -8,6 +8,7 @@ import { addFullName, cloneDeep } from '@vben/utils'; import { useVbenForm } from '#/adapter/form'; import { postAdd, postInfo, postUpdate } from '#/api/system/post'; import { getDeptTree } from '#/api/system/user'; +import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; import { drawerSchema } from './data'; @@ -50,8 +51,16 @@ async function setupDeptSelect() { ]); } +const { onBeforeClose, markInitialized, resetInitialized } = useBeforeCloseDiff( + { + initializedGetter: defaultFormValueGetter(formApi), + currentGetter: defaultFormValueGetter(formApi), + }, +); + const [BasicDrawer, drawerApi] = useVbenDrawer({ - onCancel: handleCancel, + onBeforeClose, + onClosed: handleClosed, onConfirm: handleConfirm, async onOpenChange(isOpen) { if (!isOpen) { @@ -67,31 +76,33 @@ const [BasicDrawer, drawerApi] = useVbenDrawer({ const record = await postInfo(id); await formApi.setValues(record); } + await markInitialized(); drawerApi.drawerLoading(false); }, }); async function handleConfirm() { try { - drawerApi.drawerLoading(true); + drawerApi.lock(true); const { valid } = await formApi.validate(); if (!valid) { return; } const data = cloneDeep(await formApi.getValues()); await (isUpdate.value ? postUpdate(data) : postAdd(data)); + resetInitialized(); emit('reload'); - await handleCancel(); + drawerApi.close(); } catch (error) { console.error(error); } finally { - drawerApi.drawerLoading(false); + drawerApi.lock(false); } } -async function handleCancel() { - drawerApi.close(); +async function handleClosed() { await formApi.resetForm(); + resetInitialized(); }