Vue\vue3_admin\src\utils\request.ts
import axios from "axios";
import { ElMessage } from "element-plus";
import { GET_TOKEN } from '@/utils/token';
const request = axios.create({
baseURL: import.meta.env.VITE_SERVER + import.meta.env.VITE_APP_BASE_API,
timeout: 5000
})
request.interceptors.request.use((config) => {
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
export interface UserData {
id?: string | number,
username: string,
nickName: string,
password?: string,
state?: string,
userLevel?: string | number,
role?: string,
role_id?: string | number,
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,
}
export interface getUserInfoResponseData {
code: number,
data: getUserInfoDataType,
}
export interface groupData {
id: number,
gid: number,
group_name: string,
create_time?: string,
update_time?: string,
remark?: string,
}
export interface roleData {
id?: number | string,
role_name: string,
create_time?: string,
update_time?: string,
remark?: string,
}
export type roleDataList = roleData[];
interface getRolesDataType {
message: string,
time: string,
assignRoles: roleDataList,
allRolesList: roleDataList,
}
export interface getRolesResponseData {
code: number,
data: getRolesDataType,
}
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) => {
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)