From 85bc343dc1a801a4710a087bf1776dfe0753fbdc Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 26 Aug 2026 15:00:21 +0800 Subject: [PATCH] feat: Optimize the definition management page --- .../tools/AIToolDefinitionModal.vue | 5 +- .../tools/AIToolDefinitionTable.vue | 1 + .../workspaces/WorkspaceDefinitionModal.vue | 4 +- .../workspaces/WorkspaceDefinitionTable.vue | 46 ++++++++++- .../workspaces/WorkspaceResetApiKeyModal.vue | 71 +++++++++++++++++ .../@abp/ai-management/src/types/tools.ts | 1 + .../ai-management/src/types/workspaces.ts | 1 + .../@abp/components/src/vditor/Viewer.vue | 5 +- .../features/FeatureDefinitionTable.vue | 13 +-- .../groups/FeatureGroupDefinitionTable.vue | 16 ++-- .../groups/PermissionGroupDefinitionTable.vue | 79 +++++++++---------- .../permissions/PermissionDefinitionModal.vue | 16 +++- .../permissions/PermissionDefinitionTable.vue | 63 +++++++++++++-- .../definitions/SettingDefinitionTable.vue | 49 ++++++------ .../definitions/TemplateContentModal.vue | 4 +- .../definitions/TemplateDefinitionModal.vue | 6 +- .../definitions/TemplateDefinitionTable.vue | 10 ++- .../components/properties/PropertyTable.vue | 2 +- 18 files changed, 293 insertions(+), 99 deletions(-) create mode 100644 apps/vben5/packages/@abp/ai-management/src/components/workspaces/WorkspaceResetApiKeyModal.vue diff --git a/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionModal.vue b/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionModal.vue index b4c91f861..0f78aab90 100644 --- a/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionModal.vue +++ b/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionModal.vue @@ -52,6 +52,7 @@ const defaultModel: AIToolDefinitionVto = { name: '', isEnabled: true, isGlobal: false, + isStatic: false, isSystem: false, provider: '', extraProperties: {}, @@ -80,7 +81,7 @@ const getAIToolOptions = computed>(() => { // 表单允许编辑 const getIsAllowUpdate = computed(() => { if (formModel.value.id) { - if (formModel.value.isSystem) { + if (formModel.value.isSystem || formModel.value.isStatic) { return false; } return isGranted(AIToolDefinitionPermissions.Update); @@ -140,6 +141,7 @@ async function onInit() { modalApi.setState({ loading: true, title: $t('AIManagement.Tools:New'), + showConfirmButton: true, }); await onInitProviderOptions(); const { id } = modalApi.getData(); @@ -154,6 +156,7 @@ async function onInit() { (p) => p.name === dto.provider, ); modalApi.setState({ + showConfirmButton: !dto.isSystem && !dto.isStatic, title: $t('AIManagement.Tools:Edit'), }); } finally { diff --git a/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue b/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue index 72ebd68af..88f9ab131 100644 --- a/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue +++ b/apps/vben5/packages/@abp/ai-management/src/components/tools/AIToolDefinitionTable.vue @@ -220,6 +220,7 @@ async function onDelete(row: AIToolDefinitionRecordDto) { - + diff --git a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue index ce8793210..48075c404 100644 --- a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue +++ b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionModal.vue @@ -16,6 +16,7 @@ import { useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { + isNullOrWhiteSpace, listToTree, useLocalization, useLocalizationSerializer, @@ -94,9 +95,15 @@ const [Modal, modalApi] = useVbenModal({ }, onConfirm: async () => { await form.value?.validate(); + const input = toValue(formModel); const api = isEditModel.value - ? updateApi(formModel.value.name, toValue(formModel)) - : createApi(toValue(formModel)); + ? updateApi(formModel.value.name, input) + : createApi({ + ...input, + name: isNullOrWhiteSpace(input.parentName) + ? input.name + : `${input.parentName}.${input.name}`, + }); modalApi.setState({ submitting: true }); api .then((res) => { @@ -121,9 +128,11 @@ const [Modal, modalApi] = useVbenModal({ }); try { modalApi.setState({ loading: true }); - const { groupName, name } = modalApi.getData(); + const { groupName, name, parentName } = + modalApi.getData(); name && (await onGet(name)); await Promise.all([onInitGroups(groupName), onInitProviders()]); + formModel.value.parentName = parentName; } finally { modalApi.setState({ loading: false }); } @@ -251,6 +260,7 @@ function onPropDelete(prop: PropertyInfo) { > diff --git a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue index 8b4316a37..ccaabcd88 100644 --- a/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue +++ b/apps/vben5/packages/@abp/permissions/src/components/definitions/permissions/PermissionDefinitionTable.vue @@ -1,10 +1,12 @@ @@ -287,7 +312,7 @@ onMounted(onGet); + + +