diff --git a/schoolNewsWeb/src/apis/index.ts b/schoolNewsWeb/src/apis/index.ts index 297e0b9..ddc750c 100644 --- a/schoolNewsWeb/src/apis/index.ts +++ b/schoolNewsWeb/src/apis/index.ts @@ -43,7 +43,7 @@ export const TokenManager = { * 创建axios实例 */ const request = axios.create({ - baseURL: process.env.VITE_API_BASE_URL || "/api", + baseURL: import.meta.env.VITE_API_BASE_URL || "/api", timeout: 30000, headers: { 'Content-Type': 'application/json;charset=UTF-8', @@ -178,40 +178,54 @@ request.interceptors.response.use( } ); +/** + * API封装 + */ /** * API封装 */ export const api = { /** - * GET请求 + * GET请求 - data参数会作为URL查询参数追加 */ - get(url: string, config?: CustomAxiosRequestConfig): Promise>> { + get(url: string, data?: any, config?: CustomAxiosRequestConfig): Promise>> { + // 如果有data参数,将其转换为URL查询参数 + if (data) { + const params = new URLSearchParams(); + Object.keys(data).forEach(key => { + if (data[key] !== undefined && data[key] !== null) { + params.append(key, String(data[key])); + } + }); + const queryString = params.toString(); + url += (url.includes('?') ? '&' : '?') + queryString; + } return request.get>(url, config); }, /** - * POST请求 + * POST请求 - data参数放到请求体 */ post(url: string, data?: any, config?: CustomAxiosRequestConfig): Promise>> { return request.post>(url, data, config); }, /** - * PUT请求 + * PUT请求 - data参数放到请求体 */ put(url: string, data?: any, config?: CustomAxiosRequestConfig): Promise>> { return request.put>(url, data, config); }, /** - * DELETE请求 + * DELETE请求 - data参数放到请求体 */ - delete(url: string, config?: CustomAxiosRequestConfig): Promise>> { - return request.delete>(url, config); + delete(url: string, data?: any, config?: CustomAxiosRequestConfig): Promise>> { + return request.delete>(url, { ...config, data }); }, /** - * PATCH请求 + * PATCH请求 - data参数放到请求体 */ patch(url: string, data?: any, config?: CustomAxiosRequestConfig): Promise>> { return request.patch>(url, data, config); diff --git a/schoolNewsWeb/src/apis/auth.ts b/schoolNewsWeb/src/apis/system/auth.ts similarity index 97% rename from schoolNewsWeb/src/apis/auth.ts rename to schoolNewsWeb/src/apis/system/auth.ts index 64b6163..57225ab 100644 --- a/schoolNewsWeb/src/apis/auth.ts +++ b/schoolNewsWeb/src/apis/system/auth.ts @@ -4,7 +4,7 @@ * @since 2025-10-06 */ -import { api } from './index'; +import { api } from '@/apis/index'; import type { LoginParam, LoginDomain } from '@/types'; /** diff --git a/schoolNewsWeb/src/apis/menu.ts b/schoolNewsWeb/src/apis/system/menu.ts similarity index 98% rename from schoolNewsWeb/src/apis/menu.ts rename to schoolNewsWeb/src/apis/system/menu.ts index 778c13f..42b2c21 100644 --- a/schoolNewsWeb/src/apis/menu.ts +++ b/schoolNewsWeb/src/apis/system/menu.ts @@ -4,7 +4,7 @@ * @since 2025-10-06 */ -import { api } from './index'; +import { api } from '@/apis/index'; import type { SysMenu, MenuTreeNode } from '@/types'; /** diff --git a/schoolNewsWeb/src/apis/system/permission.ts b/schoolNewsWeb/src/apis/system/permission.ts new file mode 100644 index 0000000..43a5e48 --- /dev/null +++ b/schoolNewsWeb/src/apis/system/permission.ts @@ -0,0 +1,66 @@ +/** + * @description 权限相关API + * @author yslg + * @since 2025-10-06 + */ +import { api } from '@/apis/index'; +import { SysPermission } from '@/types'; + + +export const permissionApi = { + + /** + * @description 获取权限信息 + * @param permission 权限 + * @author yslg + * @ since 2025-10-08 + */ + async getPermission(permission: SysPermission|null=null): Promise { + const response = await api.get('/permissions/permission', permission); + return response.data.dataList!; + }, + + /** + * @description 添加权限 + * @param permission 权限 + * @author yslg + * @ since 2025-10-08 + */ + async addPermission(permission: SysPermission): Promise { + const response = await api.post('/permissions/permission', permission); + return response.data.dataList!; + }, + + /** + * @description 更新权限 + * @param permission 权限 + * @author yslg + * @ since 2025-10-08 + */ + async updatePermission(permission: SysPermission): Promise { + const response = await api.put('/permissions/permission', permission); + return response.data.dataList!; + }, + + /** + * @description 删除权限 + * @param permission 权限 + * @author yslg + * @ since 2025-10-08 + */ + async deletePermission(permission: SysPermission): Promise { + const response = await api.delete('/permissions/permission', permission); + return response.data.dataList!; + }, + + /** + * @description 获取权限列表 + * @param permission 权限 + * @author yslg + * @ since 2025-10-08 + */ + async getPermissionList(permission: SysPermission|null=null): Promise { + const response = await api.post('/permissions/list', permission); + return response.data.dataList!; + } +} \ No newline at end of file diff --git a/schoolNewsWeb/src/apis/user.ts b/schoolNewsWeb/src/apis/system/user.ts similarity index 99% rename from schoolNewsWeb/src/apis/user.ts rename to schoolNewsWeb/src/apis/system/user.ts index 98dbfa1..4c5ee7a 100644 --- a/schoolNewsWeb/src/apis/user.ts +++ b/schoolNewsWeb/src/apis/system/user.ts @@ -4,7 +4,7 @@ * @since 2025-10-06 */ -import { api } from './index'; +import { api } from '@/apis/index'; import type { SysUser, SysUserInfo, UserVO, PageDomain, PageParam } from '@/types'; /** diff --git a/schoolNewsWeb/src/main.ts b/schoolNewsWeb/src/main.ts index 99b0612..4c4798a 100644 --- a/schoolNewsWeb/src/main.ts +++ b/schoolNewsWeb/src/main.ts @@ -18,15 +18,10 @@ async function initApp() { // 在路由初始化前,尝试恢复登录状态并生成动态路由 const authState = (store.state as any).auth; - console.log('[应用初始化] 检查登录状态...'); - console.log('[应用初始化] Token:', !!authState.token); - console.log('[应用初始化] 菜单数量:', authState.menus?.length || 0); if (authState.token && authState.menus && authState.menus.length > 0) { try { - console.log('[应用初始化] 开始生成动态路由...'); await store.dispatch('auth/generateRoutes'); - console.log('[应用初始化] 动态路由生成成功'); } catch (error) { console.error('[应用初始化] 动态路由生成失败:', error); } diff --git a/schoolNewsWeb/src/store/modules/auth.ts b/schoolNewsWeb/src/store/modules/auth.ts index d5942f4..d34bcc2 100644 --- a/schoolNewsWeb/src/store/modules/auth.ts +++ b/schoolNewsWeb/src/store/modules/auth.ts @@ -6,7 +6,7 @@ import { Module } from 'vuex'; import { LoginDomain, SysMenu, SysPermission } from '@/types'; -import { authApi } from '@/apis/auth'; +import { authApi } from '@/apis/system/auth'; import router from '@/router'; import { getFirstAccessibleMenuUrl, buildMenuTree } from '@/utils/route-generator'; diff --git a/schoolNewsWeb/src/types/permission/index.ts b/schoolNewsWeb/src/types/permission/index.ts index 870d945..ddeb613 100644 --- a/schoolNewsWeb/src/types/permission/index.ts +++ b/schoolNewsWeb/src/types/permission/index.ts @@ -10,6 +10,8 @@ import { BaseDTO } from '../base'; * 系统权限 */ export interface SysPermission extends BaseDTO { + /** 主键ID */ + id?:string; /** 权限ID */ permissionID?: string; /** 权限名称 */ @@ -20,7 +22,9 @@ export interface SysPermission extends BaseDTO { code?: string; /** 创建人 */ creator?: string; + creatorName?: string; /** 更新人 */ updater?: string; + updaterName?: string; } diff --git a/schoolNewsWeb/src/views/login/Login.vue b/schoolNewsWeb/src/views/login/Login.vue index 6b5bc20..740da74 100644 --- a/schoolNewsWeb/src/views/login/Login.vue +++ b/schoolNewsWeb/src/views/login/Login.vue @@ -92,7 +92,7 @@ import { useRouter, useRoute } from 'vue-router'; import { useStore } from 'vuex'; import { ElMessage, type FormInstance, type FormRules } from 'element-plus'; import type { LoginParam } from '@/types'; -import { authApi } from '@/apis/auth'; +import { authApi } from '@/apis/system/auth'; // 响应式引用 const loginFormRef = ref(); diff --git a/schoolNewsWeb/src/views/manage/system/MenuManageView.vue b/schoolNewsWeb/src/views/manage/system/MenuManageView.vue index e69de29..7650aca 100644 --- a/schoolNewsWeb/src/views/manage/system/MenuManageView.vue +++ b/schoolNewsWeb/src/views/manage/system/MenuManageView.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/schoolNewsWeb/src/views/manage/system/PermissionManageView.vue b/schoolNewsWeb/src/views/manage/system/PermissionManageView.vue index e69de29..8b0a250 100644 --- a/schoolNewsWeb/src/views/manage/system/PermissionManageView.vue +++ b/schoolNewsWeb/src/views/manage/system/PermissionManageView.vue @@ -0,0 +1,358 @@ + + + + + \ No newline at end of file diff --git a/schoolNewsWeb/src/views/manage/system/RoleManageView.vue b/schoolNewsWeb/src/views/manage/system/RoleManageView.vue index e69de29..6047f87 100644 --- a/schoolNewsWeb/src/views/manage/system/RoleManageView.vue +++ b/schoolNewsWeb/src/views/manage/system/RoleManageView.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file