Vue\vue3_admin\src\utils\request.ts
// 进行axios 二次封装:使用请求与响应拦截器
import axios from "axios";
import { ElMessage } from "element-plus";
import { GET_TOKEN } from '@/utils/token';
// import pinia from "@/stores";
// import useUserStore from '@/stores/modules/user'
// 创建axios实例
const request = axios.create({
baseURL: import.meta.env.VITE_SERVER + import.meta.env.VITE_APP_BASE_API, // 基础路径上会携带host/api
timeout: 5000 // 超时时间配置
})
// const userStore = useUserStore(pinia)
// 会存在数据复制,导致数据不同步
// token存储在localStorage
// const token = localStorage.getItem('TOKEN');
// const token = GET_TOKEN();
// // const token = userStore.token;
// console.log('TOKEN', token);
// 请求拦截器
request.interceptors.request.use((config) => {
// 返回配置对象,config配置对象,headers属性请求头,经常给服务器端携带公共参数
// console.log('config', config);
// config.headers['Access-Control-Allow-Origin'] = "*"
if (GET_TOKEN()) {
config.headers['Token'] = GET_TOKEN()
}
return config;
});
// 响应拦截器
request.interceptors.response.use((response) => {
// 成功的回调
return response.data;
}, (error) => {
// 失败的回调,处理网络错误
let msg = '';
const status = error.response.status;
switch (status) {
case 401:
msg = "token过期";
break;
case 403:
msg = '无权访问';
break;
case 404:
msg = "请求地址错误";
break;
case 500:
msg = "后端服务异常,请尝试刷新或重新登录!";
break;
default:
msg = "网络故障";
break;
}
ElMessage({
type: 'error',
message: msg
})
return Promise.reject(error);
});
// 对外暴露
export default request;
Vue\vue3_admin\src\api\acl\user\type.ts
//用户管理相关数据的ts类型
// 用户数据ts类型
export interface UserData {
id?: string | number, // 用户ID
username: string, // 登录名
nickName: string, // 用户昵称
password?: string, // 登录密码
state?: string, // 用户状态
userLevel?: string | number, // 用户等级
role?: string, // 生产者标识
role_id?: string | number, // 角色ID
role_name?: string,
avatar?: string, // 用户头像
create_time?: string, // 创建时间
update_time?: string, // 更新时间
}
interface getUserListDataType {
message: string,
time: string,
records: UserData[],
total: number,
size: number,
current: number,
searchCount: boolean,
pages: number,
}
export interface getUserListResponseData {
code: number,
data: getUserListDataType,
}
interface getUserInfoDataType {
message: string,
time: string,
records: UserData,
}
// 获取用户详情接口的ts类型
export interface getUserInfoResponseData {
code: number,
data: getUserInfoDataType,
}
// 角色与职责岗位的ts类型
export interface groupData {
id: number, // ID
gid: number, // 角色固定ID
group_name: string, // 角色名
create_time?: string,
update_time?: string,
remark?: string, // 备注
}
export interface roleData {
id?: number | string, // ID
role_name: string, // 岗位名
create_time?: string,
update_time?: string,
remark?: string, // 备注
}
// 包含当前用户全部职责数据的ts类型
export type roleDataList = roleData[];
interface getRolesDataType {
message: string,
time: string,
assignRoles: roleDataList,
allRolesList: roleDataList,
}
// 获取用户角色与职责的详情接口的ts类型
export interface getRolesResponseData {
code: number,
data: getRolesDataType,
}
// 给用户分配职责岗位接口携带参数的ts类型
export interface setRolesData {
userRolesList: number[],
userId: number
}
Vue\vue3_admin\src\api\acl\user\index.ts
// 用户管理相关模块接口
import request from '@/utils/request'
import type { responseData } from '@/api/user/type'
import type { getRolesResponseData, getUserListResponseData, setRolesData, UserData } from './type'
// 用户管理的相关请求地址
enum API {
// 查询已有用户信息
USER_URL = '/acl/user',
// 新增用户
ADD_USER = '/acl/user/save',
// 修改用户
UPDATE_USER = '/acl/user/update',
// 删除已有的用户信息
DEL_USER_INFO = '/acl/user/deleteUser',
// 批量删除已有的用户信息
DEL_MUL_USER_INFO = '/acl/user/deleteMultipleUser',
// 获取全部职位,以及当前账号拥有的职位接口
ALL_DUTY_URL = '/acl/user/roles',
// 更新用户职责岗位
UPDATE_USER_DUTY = '/acl/user/updateRoles',
}
// 获取用户信息的请求
export const reqAllUserList = (page: number, limit: number) => request.get<any, getUserListResponseData>(API.USER_URL + `/${page}/${limit}`)
// 搜索用户信息的请求
export const reqSearchUserList = (page: number, limit: number, data: any) => request.post<any, getUserListResponseData>(API.USER_URL + `/${page}/${limit}`, data)
// 新增用户或更新用户的接口
export const reqAddOrUpdateUser = (data: UserData) => {
// 携带参数有ID则为更新
if (data.id) {
return request.post<any, responseData>(API.UPDATE_USER, data)
} else {
// 新增
return request.post<any, responseData>(API.ADD_USER, data)
}
}
// 删除用户的接口
export const reqDelUserInfo = (id: number) => request.get<any, responseData>(API.DEL_USER_INFO + `/${id}`)
// 批量删除用户的接口
export const reqMulDelUserInfo = (data: number[]) => request.post<any, responseData>(API.DEL_MUL_USER_INFO, data)
// 获取当前用户已有的职位与全部职位的请求接口
export const reqUserRoles = (id: number) => request.get<any, getRolesResponseData>(API.ALL_DUTY_URL + `/${id}`)
// 更新用户职责岗位的请求接口
export const reqUpdateUserRoles = (data: setRolesData) => request.post<any, responseData>(API.UPDATE_USER_DUTY, data)