From c2c874ae7a2dc8fb3e9703af2354acf222e784f3 Mon Sep 17 00:00:00 2001 From: shizhongming Date: Wed, 10 Apr 2024 18:14:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=9E=B6=E6=9E=84):=20=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/sys/model/userModel.ts | 5 +++-- .../smart-system/views/role/RoleListView.vue | 10 ++++++++-- .../tenantManager/SysTenantListView.api.ts | 6 +++--- .../tenant/tenantManager/SysTenantListView.vue | 4 ++-- src/store/modules/permission.ts | 2 +- src/store/modules/user.ts | 18 ++++++++++++------ src/utils/auth/index.ts | 6 +++--- types/store.d.ts | 6 ++++++ 8 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/api/sys/model/userModel.ts b/src/api/sys/model/userModel.ts index 548fd4ded..79858fd77 100644 --- a/src/api/sys/model/userModel.ts +++ b/src/api/sys/model/userModel.ts @@ -8,8 +8,9 @@ export interface LoginParams { } export interface RoleInfo { + roleCode: string; roleName: string; - value: string; + superAdminYn: boolean; } /** @@ -18,7 +19,7 @@ export interface RoleInfo { export interface LoginResultModel { user: GetUserInfoModel; token: string; - roles: Array; + roles: Array; permissions: Array; } diff --git a/src/modules/smart-system/views/role/RoleListView.vue b/src/modules/smart-system/views/role/RoleListView.vue index 3e0a2f0fc..369458b8a 100644 --- a/src/modules/smart-system/views/role/RoleListView.vue +++ b/src/modules/smart-system/views/role/RoleListView.vue @@ -84,12 +84,18 @@ border: true, stripe: true, height: 'auto', - highlightHoverRow: true, - highlightCurrentRow: true, pagerConfig: true, columnConfig: { resizable: true, }, + rowConfig: { + isHover: true, + isCurrent: true, + }, + sortConfig: { + remote: true, + defaultSort: { field: 'seq', order: 'asc' }, + }, useSearchForm: true, searchFormConfig: { compact: true, diff --git a/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.api.ts b/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.api.ts index acd2b7a0a..d947604bd 100644 --- a/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.api.ts +++ b/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.api.ts @@ -3,7 +3,7 @@ import { ApiServiceEnum, defHttp } from '@/utils/http/axios'; enum Api { list = '/sys/tenant/manager/list', getById = '/sys/tenant/manager/getById', - batchSaveUpdate = '/sys/tenant/manager/saveUpdateBatch', + saveUpdate = '/sys/tenant/manager/saveUpdate', delete = '/sys/tenant/manager/batchDeleteById', setUseYn = '/sys/tenant/manager/setUseYn', listIsolationStrategy = '/sys/tenant/manager/listIsolationStrategy', @@ -30,10 +30,10 @@ export const listApi = (params) => { }); }; -export const batchSaveUpdateApi = (modelList: any[]) => { +export const saveUpdateApi = (modelList: any[]) => { return defHttp.post({ service: ApiServiceEnum.SMART_SYSTEM, - url: Api.batchSaveUpdate, + url: Api.saveUpdate, data: modelList, }); }; diff --git a/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.vue b/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.vue index 02a8ca7fa..1d6bf8b06 100644 --- a/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.vue +++ b/src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.vue @@ -44,7 +44,7 @@ SYSTEM_TENANT_TYPE_DICT, } from './SysTenantListView.config'; import { - batchSaveUpdateApi, + saveUpdateApi, deleteApi, getByIdApi, listApi, @@ -138,7 +138,7 @@ return listApi(params.ajaxParameter); }, save: ({ body: { insertRecords, updateRecords } }) => - batchSaveUpdateApi([...insertRecords, ...updateRecords]), + saveUpdateApi([...insertRecords, ...updateRecords][0]), delete: ({ body: { removeRecords } }) => deleteApi(removeRecords), getById: (params) => getByIdApi(params.id), useYn: setUseYnApi, diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 38008f6f8..155f5158a 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -131,7 +131,7 @@ export const usePermissionStore = defineStore({ const { roles } = meta || {}; if (!roles) return true; // 进行角色权限判断 - return roleList.some((role) => roles.includes(role)); + return roleList.some((role) => roles.includes(role.roleCode)); }; const routeRemoveIgnoreFilter = (route: AppRouteRecordRaw) => { diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 859bdccdc..e917ef57c 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -1,8 +1,7 @@ -import type { UserInfo, UserTenant } from '#/store'; +import { RoleInfo, UserInfo, UserTenant } from '#/store'; import type { ErrorMessageMode } from '#/axios'; import { defineStore } from 'pinia'; import { store } from '@/store'; -import { RoleEnum } from '@/enums/roleEnum'; import { PageEnum } from '@/enums/pageEnum'; import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '@/enums/cacheEnum'; import { createPassword, getAuthCache, setAuthCache } from '@/utils/auth'; @@ -25,7 +24,7 @@ import { h } from 'vue'; interface UserState { userInfo: Nullable; token?: string; - roleList: string[]; + roleList: RoleInfo[]; sessionTimeout?: boolean; lastUpdateTime: number; } @@ -51,8 +50,8 @@ export const useUserStore = defineStore({ getToken(state): string { return state.token || getAuthCache(TOKEN_KEY); }, - getRoleList(state): string[] { - return state.roleList.length > 0 ? state.roleList : getAuthCache(ROLES_KEY); + getRoleList(state): RoleInfo[] { + return state.roleList.length > 0 ? state.roleList : getAuthCache(ROLES_KEY); }, getSessionTimeout(state): boolean { return !!state.sessionTimeout; @@ -69,13 +68,20 @@ export const useUserStore = defineStore({ getIsPlatformTenant(): boolean { return this.getUserTenant?.platformYn || false; }, + /** + * 是否是超级管理员用户 + * @param state + */ + getIsSuperAdmin(state): boolean { + return state.roleList.some((role) => role.superAdminYn); + }, }, actions: { setToken(info: string | undefined) { this.token = info ? info : ''; // for null or undefined value setAuthCache(TOKEN_KEY, info); }, - setRoleList(roleList: string[]) { + setRoleList(roleList: RoleInfo[]) { this.roleList = roleList; setAuthCache(ROLES_KEY, roleList); }, diff --git a/src/utils/auth/index.ts b/src/utils/auth/index.ts index 17fd98966..e976707c6 100644 --- a/src/utils/auth/index.ts +++ b/src/utils/auth/index.ts @@ -3,7 +3,7 @@ import { CacheTypeEnum, TOKEN_KEY } from '@/enums/cacheEnum'; import projectSetting from '@/settings/projectSetting'; import sha256 from 'crypto-js/sha256'; import { ApiServiceEnum, defHttp } from '@/utils/http/axios'; -import { UserInfo } from '#/store'; +import { RoleInfo, UserInfo } from '#/store'; import { useUserStore } from '@/store/modules/user'; import { usePermission } from '@/hooks/web/usePermission'; import { isString } from '@/utils/is'; @@ -45,7 +45,7 @@ export const createPassword = (username: string, password: string) => { */ export const isSuperAdmin = (): boolean => { const userStore = useUserStore(); - return userStore.getRoleList.includes('SUPERADMIN'); + return userStore.getIsSuperAdmin; }; /** @@ -99,7 +99,7 @@ export const getCurrentUserId = (): string | number => { return getUserInfo().userId; }; -export const getUserRole = (): string[] => { +export const getUserRole = (): RoleInfo[] => { const userStore = useUserStore(); return userStore.getRoleList; }; diff --git a/types/store.d.ts b/types/store.d.ts index 209f59415..af8b10a2d 100644 --- a/types/store.d.ts +++ b/types/store.d.ts @@ -89,3 +89,9 @@ export interface SystemProperties { */ captchaIdent?: string; } + +export interface RoleInfo { + roleCode: string; + roleName: string; + superAdminYn: boolean; +}