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 @@