From 250b319c8926bf5ed6cc9f3627fcabe0ce0171ed Mon Sep 17 00:00:00 2001 From: Kven <2955163637@qq.com> Date: Fri, 30 May 2025 10:02:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(@vben/common-ui):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/adapter/vxe-table.ts | 9 ++++++++- apps/web-antd/src/store/auth.ts | 7 +++++++ apps/web-antd/src/views/user/data.ts | 20 ++++++++++---------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts index 397c04a..93a2c9b 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -11,9 +11,12 @@ import { objectOmit } from '@vueuse/core'; import { Button, Image, Popconfirm, Switch, Tag } from 'ant-design-vue'; import { $t } from '#/locales'; +import { useAuthStore } from '#/store'; import { useVbenForm } from './form'; +const authStore = useAuthStore(); + setupVbenVxeTable({ configVxeTable: (vxeUI) => { vxeUI.setConfig({ @@ -162,7 +165,11 @@ setupVbenVxeTable({ }); return optBtn; }) - .filter((opt) => opt.show !== false); + .filter( + (opt) => + opt.show !== false && + (!opt.permission || authStore.hasPerm(opt.permission)), + ); function renderBtn(opt: Recordable, listen = true) { return h( diff --git a/apps/web-antd/src/store/auth.ts b/apps/web-antd/src/store/auth.ts index 17417e7..2f40f74 100644 --- a/apps/web-antd/src/store/auth.ts +++ b/apps/web-antd/src/store/auth.ts @@ -134,6 +134,12 @@ export const useAuthStore = defineStore('auth', () => { loginLoading.value = false; } + // 👇 添加 hasPerm 方法 + function hasPerm(permission: string): boolean { + const userInfo = userStore.userInfo; + return Boolean(userInfo?.permissions?.includes(permission)); + } + return { $reset, authLogin, @@ -141,5 +147,6 @@ export const useAuthStore = defineStore('auth', () => { loginLoading, logout, csrfToken, + hasPerm, }; }); diff --git a/apps/web-antd/src/views/user/data.ts b/apps/web-antd/src/views/user/data.ts index dd65578..9b99429 100644 --- a/apps/web-antd/src/views/user/data.ts +++ b/apps/web-antd/src/views/user/data.ts @@ -186,17 +186,17 @@ export function useColumns( nameField: 'name', nameTitle: '用户', onClick: onActionClick, - options: [ - { - code: 'edit', - text: '修改', - }, - { - code: 'delete', - text: '删除', - }, - ], }, + options: [ + { + code: 'edit', + text: '修改', + }, + { + code: 'delete', + text: '删除', + }, + ], name: 'CellOperation', }, field: 'operation',