diff --git a/src/hooks/usePermission.ts b/src/hooks/usePermission.ts index 5f6c126..27fcab3 100644 --- a/src/hooks/usePermission.ts +++ b/src/hooks/usePermission.ts @@ -1,11 +1,12 @@ import { useAuthStore } from '@/store' +import { isArray, isString } from 'radash' /** 权限判断 */ export function usePermission() { const authStore = useAuthStore() function hasPermission( - permission?: Entity.RoleType[], + permission?: Entity.RoleType | Entity.RoleType[], ) { if (!permission) return true @@ -14,9 +15,16 @@ export function usePermission() { return false const { role } = authStore.userInfo + // 角色为super可直接通过 let has = role.includes('super') if (!has) { - has = permission.every(i => role.includes(i)) + if (isArray(permission)) + // 角色为数组, 判断是否有交集 + has = permission.some(i => role.includes(i)) + + if (isString(permission)) + // 角色为字符串, 判断是否包含 + has = role.includes(permission) } return has } diff --git a/src/layouts/components/tab/TabBar.vue b/src/layouts/components/tab/TabBar.vue index 6892848..01c8469 100644 --- a/src/layouts/components/tab/TabBar.vue +++ b/src/layouts/components/tab/TabBar.vue @@ -14,6 +14,7 @@ import Reload from './Reload.vue' import TabBarItem from './TabBarItem.vue' const tabStore = useTabStore() +const { tabs } = storeToRefs(useTabStore()) const appStore = useAppStore() const router = useRouter() @@ -101,11 +102,9 @@ function onClickoutside() { showDropdown.value = false } -// const [DefineTabItem, ReuseTabItem] = createReusableTemplate<{ route: RouteLocationNormalized }>() - const el = ref() -useDraggable(el, tabStore.tabs, { +useDraggable(el, tabs, { animation: 150, ghostClass: 'ghost', }) diff --git a/src/layouts/components/tab/TabBarItem.vue b/src/layouts/components/tab/TabBarItem.vue index a43d640..6a3fb4c 100644 --- a/src/layouts/components/tab/TabBarItem.vue +++ b/src/layouts/components/tab/TabBarItem.vue @@ -38,4 +38,4 @@ const emit = defineEmits<{ - \ No newline at end of file + diff --git a/src/service/api/login.ts b/src/service/api/login.ts index bf05ecf..76645d4 100644 --- a/src/service/api/login.ts +++ b/src/service/api/login.ts @@ -21,5 +21,5 @@ export function fetchUpdateToken(data: any) { } export function fetchUserRoutes(params: { id: number }) { - return request.Get >('/getUserRoutes', { params }) + return request.Get>('/getUserRoutes', { params }) } diff --git a/src/service/http/alova.ts b/src/service/http/alova.ts index 3ad78e1..a13e85a 100644 --- a/src/service/http/alova.ts +++ b/src/service/http/alova.ts @@ -2,7 +2,8 @@ import { local } from '@/utils' import { createAlova } from 'alova' import { createServerTokenAuthentication } from 'alova/client' import adapterFetch from 'alova/fetch' -import VueHook, { type VueHookType } from 'alova/vue' +import VueHook from 'alova/vue' +import type { VueHookType } from 'alova/vue' import { DEFAULT_ALOVA_OPTIONS, DEFAULT_BACKEND_OPTIONS, diff --git a/src/typings/global.d.ts b/src/typings/global.d.ts index d90956b..0790ab1 100644 --- a/src/typings/global.d.ts +++ b/src/typings/global.d.ts @@ -28,6 +28,12 @@ declare namespace NaiveUI { type ThemeColor = 'default' | 'error' | 'primary' | 'info' | 'success' | 'warning' } +// 修复naive-ui的TabPane组件的slots类型 https://github.com/tusen-ai/naive-ui/issues/6779 ,但是直接这样会导致更多类型报错,也无法查看naive-ui的源码 +// declare module 'naive-ui' { +// interface TabPaneSlots { +// tab?: () => VNode[] +// } +// } declare namespace Storage { interface Session { dict: DictMap diff --git a/src/views/dashboard/monitor/components/chart.vue b/src/views/dashboard/monitor/components/chart.vue index 6df7eb8..727a6fb 100644 --- a/src/views/dashboard/monitor/components/chart.vue +++ b/src/views/dashboard/monitor/components/chart.vue @@ -1,5 +1,6 @@ diff --git a/src/views/dashboard/workbench/components/chart.vue b/src/views/dashboard/workbench/components/chart.vue index cad75e8..2bb4461 100644 --- a/src/views/dashboard/workbench/components/chart.vue +++ b/src/views/dashboard/workbench/components/chart.vue @@ -1,5 +1,6 @@