From 1f78061ec9555df64a334d9333f7fb9d2da25feb Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Mon, 23 Sep 2024 08:38:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84client-drawer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/system/client/client-drawer.vue | 89 +++++++++---------- .../src/views/system/client/index.vue | 5 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/apps/web-antd/src/views/system/client/client-drawer.vue b/apps/web-antd/src/views/system/client/client-drawer.vue index 21c338c5..ddef4dd5 100644 --- a/apps/web-antd/src/views/system/client/client-drawer.vue +++ b/apps/web-antd/src/views/system/client/client-drawer.vue @@ -5,7 +5,7 @@ import { useVbenDrawer } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { useVbenForm } from '#/adapter'; -import { clientAdd, clientUpdate } from '#/api/system/client'; +import { clientAdd, clientInfo, clientUpdate } from '#/api/system/client'; import { drawerSchema } from './data'; import SecretInput from './secret-input.vue'; @@ -14,7 +14,7 @@ const emit = defineEmits<{ reload: [] }>(); interface DrawerProps { update: boolean; - record?: any; + id?: number | string; } const isUpdate = ref(false); @@ -32,45 +32,28 @@ const [BasicForm, formApi] = useVbenForm({ wrapperClass: 'grid-cols-2', }); -function setupForm(update: boolean, record?: any) { - formApi.setState((prev) => { - return { - ...prev, - schema: prev.schema?.map((item) => { - if (item.fieldName === 'clientId') { - return { - ...item, - dependencies: { - show: () => update, - triggerFields: [''], - }, - }; - } - if ( - item.fieldName === 'clientKey' || - item.fieldName === 'clientSecret' - ) { - return { - ...item, - componentProps: { - ...item.componentProps, - disabled: update, - }, - }; - } - if (item.fieldName === 'status') { - return { - ...item, - componentProps: { - ...item.componentProps, - disabled: record?.id === 1, - }, - }; - } - return item; - }), - }; - }); +function setupForm(update: boolean) { + formApi.updateSchema([ + { + dependencies: { + show: () => update, + triggerFields: [''], + }, + fieldName: 'clientId', + }, + { + componentProps: { + disabled: update, + }, + fieldName: 'clientKey', + }, + { + componentProps: { + disabled: update, + }, + fieldName: 'clientSecret', + }, + ]); } const [BasicDrawer, drawerApi] = useVbenDrawer({ @@ -81,13 +64,24 @@ const [BasicDrawer, drawerApi] = useVbenDrawer({ return null; } drawerApi.drawerLoading(true); - const { record, update } = drawerApi.getData() as DrawerProps; + const { id, update } = drawerApi.getData() as DrawerProps; isUpdate.value = update; // 初始化 - setupForm(update, record); - if (update && record) { + setupForm(update); + if (update && id) { + const record = await clientInfo(id); + // 不能禁用id为1的记录 + formApi.updateSchema([ + { + componentProps: { + disabled: record.id === 1, + }, + fieldName: 'status', + }, + ]); + for (const key in record) { - await formApi.setFieldValue(key, record[key]); + await formApi.setFieldValue(key, record[key as keyof typeof record]); } } drawerApi.drawerLoading(false); @@ -102,7 +96,6 @@ async function handleConfirm() { return; } const data = await formApi.getValues(); - console.log(data); await (isUpdate.value ? clientUpdate(data) : clientAdd(data)); emit('reload'); await handleCancel(); @@ -130,7 +123,11 @@ async function handleCancel() { diff --git a/apps/web-antd/src/views/system/client/index.vue b/apps/web-antd/src/views/system/client/index.vue index c338eb75..cbc8af6a 100644 --- a/apps/web-antd/src/views/system/client/index.vue +++ b/apps/web-antd/src/views/system/client/index.vue @@ -1,5 +1,6 @@