From b7897aea03235d453558483549e3f3c77cabe9b1 Mon Sep 17 00:00:00 2001 From: Feynman Date: Wed, 8 Apr 2026 22:13:13 +0800 Subject: [PATCH 1/5] refactor: update ApiServer and Applications components to use Composition API and improve permission handling; add new role data permission translations --- apps/daas/src/directives/index.ts | 3 +- apps/daas/src/i18n/langs/en.js | 1 + apps/daas/src/i18n/langs/zh-CN.js | 1 + apps/daas/src/i18n/langs/zh-TW.js | 1 + apps/daas/src/views/api-page/ApiServer.vue | 433 +++--- apps/daas/src/views/api-page/Applications.vue | 366 +++-- apps/daas/src/views/role/Role.vue | 1269 +++++++++++------ packages/business/src/locale/lang/en.js | 3 + packages/business/src/locale/lang/zh-CN.js | 3 + packages/business/src/locale/lang/zh-TW.js | 3 + .../business/src/views/data-server/List.vue | 98 +- packages/i18n/src/locale/lang/en.js | 13 +- packages/i18n/src/locale/lang/zh-CN.js | 12 + packages/i18n/src/locale/lang/zh-TW.js | 12 + packages/types/src/daas-components.d.ts | 6 + 15 files changed, 1269 insertions(+), 955 deletions(-) diff --git a/apps/daas/src/directives/index.ts b/apps/daas/src/directives/index.ts index 7232292211..1f19ad6a81 100644 --- a/apps/daas/src/directives/index.ts +++ b/apps/daas/src/directives/index.ts @@ -37,12 +37,11 @@ export function installDirectives(app) { app.provide('hasPermissionByCode', hasPermissionByCode) app.directive('readonlybtn', { - mounted(el, binding, vnode) { + mounted(el, binding) { const code = binding.value if (!hasPermissionByCode(code)) { el.remove() - vnode.child && vnode.child.$destroy() } }, }) diff --git a/apps/daas/src/i18n/langs/en.js b/apps/daas/src/i18n/langs/en.js index 21d7ddb000..2b8ccba682 100644 --- a/apps/daas/src/i18n/langs/en.js +++ b/apps/daas/src/i18n/langs/en.js @@ -1962,6 +1962,7 @@ export default { account_editFail: 'User name modification failed', role_allData: 'All role data', role_functionDataPermission: 'Function and data permissions', + role_dataPermission: 'Data Permissions', role_module: 'Module', role_choosePermissionTip: 'Please select the functions and data permissions available for this role (checking all role data means you can browse or operate the data of all roles, unchecking means you can only browse or operate your own data )', diff --git a/apps/daas/src/i18n/langs/zh-CN.js b/apps/daas/src/i18n/langs/zh-CN.js index 36e6a33ddd..c83a0d5128 100644 --- a/apps/daas/src/i18n/langs/zh-CN.js +++ b/apps/daas/src/i18n/langs/zh-CN.js @@ -1861,6 +1861,7 @@ export default { account_editFail: '用户名修改失败', role_allData: '全部角色数据', role_functionDataPermission: '功能与数据权限', + role_dataPermission: '数据权限', role_module: '模块', role_choosePermissionTip: '请选择此角色可用的功能和数据权限 (勾选全部角色数据表示可对全部角色的数据进行浏览或操作,不勾选则表示只能对自己的数据进行浏览或操作)', diff --git a/apps/daas/src/i18n/langs/zh-TW.js b/apps/daas/src/i18n/langs/zh-TW.js index 3a81b1147e..a6a0f01809 100644 --- a/apps/daas/src/i18n/langs/zh-TW.js +++ b/apps/daas/src/i18n/langs/zh-TW.js @@ -1853,6 +1853,7 @@ export default { account_editFail: '用戶名修改失敗', role_allData: '全部角色數據', role_functionDataPermission: '功能與數據權限', + role_dataPermission: '數據權限', role_module: '模塊', role_choosePermissionTip: '請選擇此角色可用的功能和數據權限 (勾選全部角色數據表示可對全部角色的數據進行瀏覽或操作,不勾選則表示只能對自己的數據進行瀏覽或操作)', diff --git a/apps/daas/src/views/api-page/ApiServer.vue b/apps/daas/src/views/api-page/ApiServer.vue index 1faeb2a99c..055437b654 100644 --- a/apps/daas/src/views/api-page/ApiServer.vue +++ b/apps/daas/src/views/api-page/ApiServer.vue @@ -1,4 +1,4 @@ - @@ -237,7 +179,7 @@ export default { - + @@ -708,14 +727,14 @@ defineExpose({ {{ $t('public_batch_publish') }} - + {{ $t('public_button_export') }} @@ -825,33 +844,40 @@ defineExpose({ fixed="right" > diff --git a/packages/i18n/src/locale/lang/en.js b/packages/i18n/src/locale/lang/en.js index b6b95135d3..15a5185f6f 100644 --- a/packages/i18n/src/locale/lang/en.js +++ b/packages/i18n/src/locale/lang/en.js @@ -368,7 +368,18 @@ export default { public_please_wait: 'Please wait a moment...', public_view_all: 'View All', - + public_edit_all: 'Edit All', + public_delete_all: 'Delete All', + public_reset_all: 'Reset All', + public_start_all: 'Start All', + public_stop_all: 'Stop All', + public_export_all: 'Export All', + public_publish_all: 'Publish All', + public_revoke_all: 'Revoke All', + public_button_expand_all: 'Expand All', + public_button_collapse_all: 'Collapse All', + public_select_all: 'Select All', + public_permissions_enabled: 'permissions enabled', public_today: 'Today', public_yesterday: 'Yesterday', public_this_hour: 'This Hour', diff --git a/packages/i18n/src/locale/lang/zh-CN.js b/packages/i18n/src/locale/lang/zh-CN.js index 3e053c0ae7..5875fb081a 100644 --- a/packages/i18n/src/locale/lang/zh-CN.js +++ b/packages/i18n/src/locale/lang/zh-CN.js @@ -369,6 +369,18 @@ export default { public_please_wait: '请稍等...', public_view_all: '查看全部', + public_edit_all: '编辑全部', + public_delete_all: '删除全部', + public_reset_all: '重置全部', + public_start_all: '启动全部', + public_stop_all: '停止全部', + public_export_all: '导出全部', + public_publish_all: '发布全部', + public_revoke_all: '撤销全部', + public_button_expand_all: '展开全部', + public_button_collapse_all: '收起全部', + public_select_all: '全选', + public_permissions_enabled: '权限已启用', public_today: '今天', public_yesterday: '昨天', diff --git a/packages/i18n/src/locale/lang/zh-TW.js b/packages/i18n/src/locale/lang/zh-TW.js index d301af3ff3..12c116f652 100644 --- a/packages/i18n/src/locale/lang/zh-TW.js +++ b/packages/i18n/src/locale/lang/zh-TW.js @@ -366,6 +366,18 @@ export default { public_please_wait: '請稍等...', public_view_all: '查看全部', + public_edit_all: '编辑全部', + public_delete_all: '删除全部', + public_reset_all: '重置全部', + public_start_all: '啟動全部', + public_stop_all: '停止全部', + public_export_all: '導出全部', + public_publish_all: '發佈全部', + public_revoke_all: '撤銷全部', + public_button_expand_all: '展開全部', + public_button_collapse_all: '收起全部', + public_select_all: '全選', + public_permissions_enabled: '權限已啟用', public_today: '今天', public_yesterday: '昨天', diff --git a/packages/types/src/daas-components.d.ts b/packages/types/src/daas-components.d.ts index 9d31fd0f43..5e1c43d663 100644 --- a/packages/types/src/daas-components.d.ts +++ b/packages/types/src/daas-components.d.ts @@ -124,6 +124,7 @@ declare module 'vue' { ILucideFolder: typeof import('~icons/lucide/folder')['default'] ILucideFolderClosed: typeof import('~icons/lucide/folder-closed')['default'] ILucideFolderOpen: typeof import('~icons/lucide/folder-open')['default'] + ILucideFoldVertical: typeof import('~icons/lucide/fold-vertical')['default'] ILucideGitBranch: typeof import('~icons/lucide/git-branch')['default'] ILucideGitCompareArrows: typeof import('~icons/lucide/git-compare-arrows')['default'] ILucideGithub: typeof import('~icons/lucide/github')['default'] @@ -168,6 +169,7 @@ declare module 'vue' { ILucideTriangleAlert: typeof import('~icons/lucide/triangle-alert')['default'] ILucideUndo: typeof import('~icons/lucide/undo')['default'] ILucideUndo2: typeof import('~icons/lucide/undo2')['default'] + ILucideUnfoldVertical: typeof import('~icons/lucide/unfold-vertical')['default'] ILucideUpload: typeof import('~icons/lucide/upload')['default'] ILucideUserRound: typeof import('~icons/lucide/user-round')['default'] ILucideWandSparkles: typeof import('~icons/lucide/wand-sparkles')['default'] @@ -177,6 +179,7 @@ declare module 'vue' { ILucideZoomOut: typeof import('~icons/lucide/zoom-out')['default'] IMingcuteAddFill: typeof import('~icons/mingcute/add-fill')['default'] IMingcuteAddLine: typeof import('~icons/mingcute/add-line')['default'] + IMingcuteAlertLine: typeof import('~icons/mingcute/alert-line')['default'] IMingcuteArrowRightLine: typeof import('~icons/mingcute/arrow-right-line')['default'] IMingcuteBrushLine: typeof import('~icons/mingcute/brush-line')['default'] IMingcuteCheckLine: typeof import('~icons/mingcute/check-line')['default'] @@ -322,6 +325,7 @@ declare global { const ILucideFolder: typeof import('~icons/lucide/folder')['default'] const ILucideFolderClosed: typeof import('~icons/lucide/folder-closed')['default'] const ILucideFolderOpen: typeof import('~icons/lucide/folder-open')['default'] + const ILucideFoldVertical: typeof import('~icons/lucide/fold-vertical')['default'] const ILucideGitBranch: typeof import('~icons/lucide/git-branch')['default'] const ILucideGitCompareArrows: typeof import('~icons/lucide/git-compare-arrows')['default'] const ILucideGithub: typeof import('~icons/lucide/github')['default'] @@ -366,6 +370,7 @@ declare global { const ILucideTriangleAlert: typeof import('~icons/lucide/triangle-alert')['default'] const ILucideUndo: typeof import('~icons/lucide/undo')['default'] const ILucideUndo2: typeof import('~icons/lucide/undo2')['default'] + const ILucideUnfoldVertical: typeof import('~icons/lucide/unfold-vertical')['default'] const ILucideUpload: typeof import('~icons/lucide/upload')['default'] const ILucideUserRound: typeof import('~icons/lucide/user-round')['default'] const ILucideWandSparkles: typeof import('~icons/lucide/wand-sparkles')['default'] @@ -375,6 +380,7 @@ declare global { const ILucideZoomOut: typeof import('~icons/lucide/zoom-out')['default'] const IMingcuteAddFill: typeof import('~icons/mingcute/add-fill')['default'] const IMingcuteAddLine: typeof import('~icons/mingcute/add-line')['default'] + const IMingcuteAlertLine: typeof import('~icons/mingcute/alert-line')['default'] const IMingcuteArrowRightLine: typeof import('~icons/mingcute/arrow-right-line')['default'] const IMingcuteBrushLine: typeof import('~icons/mingcute/brush-line')['default'] const IMingcuteCheckLine: typeof import('~icons/mingcute/check-line')['default'] From e70f1b6943d5acdc7b466573e9e1d903ffd56c15 Mon Sep 17 00:00:00 2001 From: Feynman Date: Thu, 9 Apr 2026 09:31:19 +0800 Subject: [PATCH 2/5] feat: add route codes for project management and data import/export in routes and role views --- apps/daas/src/router/routes.ts | 2 ++ apps/daas/src/views/role/Role.vue | 2 ++ 2 files changed, 4 insertions(+) diff --git a/apps/daas/src/router/routes.ts b/apps/daas/src/router/routes.ts index 9e8d9a6ff2..58c5ace58d 100644 --- a/apps/daas/src/router/routes.ts +++ b/apps/daas/src/router/routes.ts @@ -891,6 +891,7 @@ export const routes = [ import('@/views/data-import-export/ProjectManagement.vue'), meta: { title: 'page_title_project_management', + code: 'v2_project_management', }, }, { @@ -899,6 +900,7 @@ export const routes = [ component: () => import('@/views/data-import-export/List.vue'), meta: { title: 'page_title_data_import_export', + code: 'v2_project_import_and_export', }, }, ], diff --git a/apps/daas/src/views/role/Role.vue b/apps/daas/src/views/role/Role.vue index 38f8ea47b1..10dd2fcee8 100644 --- a/apps/daas/src/views/role/Role.vue +++ b/apps/daas/src/views/role/Role.vue @@ -252,6 +252,8 @@ const pageSort = [ { name: 'v2_function_management' }, { name: 'v2_custom_node' }, { name: 'v2_shared_cache' }, + { name: 'v2_project_management' }, + { name: 'v2_project_import_and_export' }, ], }, { From 946e4e11ec2be1e0102095461dd5ab85ae941ae4 Mon Sep 17 00:00:00 2001 From: Feynman Date: Thu, 9 Apr 2026 10:45:50 +0800 Subject: [PATCH 3/5] refactor: enhance permission handling in ApiServer, Applications, and List components; update button visibility based on user permissions --- apps/daas/src/views/api-page/ApiServer.vue | 28 ++++++----- apps/daas/src/views/api-page/Applications.vue | 32 ++++++++----- apps/daas/src/views/role/Role.vue | 4 -- .../business/src/views/connections/List.vue | 48 +++++++------------ .../business/src/views/data-server/List.vue | 21 ++++++-- 5 files changed, 68 insertions(+), 65 deletions(-) diff --git a/apps/daas/src/views/api-page/ApiServer.vue b/apps/daas/src/views/api-page/ApiServer.vue index 055437b654..6767c24936 100644 --- a/apps/daas/src/views/api-page/ApiServer.vue +++ b/apps/daas/src/views/api-page/ApiServer.vue @@ -231,14 +231,23 @@ const handleSortTable = ({ width="200" fixed="right" > -