From fab8454367432e226f60bf52e2178b6cd9a9b5aa Mon Sep 17 00:00:00 2001 From: lq Date: Mon, 5 May 2025 16:45:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E3=80=81=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/request.js | 67 ++++++ src/api/request/role.js | 10 + src/api/request/user.js | 57 +++++ src/layouts/MainLayout.vue | 6 +- src/stores/user.js | 31 ++- src/views/admin/Users.vue | 438 +++++++++++++++++-------------------- vite.config.js | 10 + 7 files changed, 360 insertions(+), 259 deletions(-) create mode 100644 src/api/request.js create mode 100644 src/api/request/role.js create mode 100644 src/api/request/user.js diff --git a/src/api/request.js b/src/api/request.js new file mode 100644 index 0000000..b34168a --- /dev/null +++ b/src/api/request.js @@ -0,0 +1,67 @@ +import axios from 'axios'; +import {message as msg} from "ant-design-vue"; + +// 创建 Axios 实例 +const service = axios.create({ + baseURL: '/api/', // 这里可以设置你的 API 基础地址 + timeout: 5000 // 请求超时时间 +}); + +// 请求拦截器 +service.interceptors.request.use( + config => { + // 从本地存储中获取 token + const token = localStorage.getItem('token'); + if (token) { + // 设置请求头中的 Authorization + config.headers['Authorization'] = `Bearer ${token}`; + } + return config; + }, + error => { + console.log(error); // 打印错误信息 + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + response => { + const {code, result, message} = response.data; + if (code === 0) { + return result; + } else { + msg.error(message).then(r => { + msg.destroy() + }) + return Promise.reject(new Error(result)); + } + }, + error => { + console.log('err' + error); // 打印错误信息 + return Promise.reject(error); + } +); + +// 封装 get 请求 +const get = (url, params = {}) => { + return service.get(url, { params }); +}; + +// 封装 post 请求 +const post = (url, data = {}) => { + return service.post(url, data); +}; + +// 封装上传文件请求 +const upload = (url, file) => { + const formData = new FormData(); + formData.append('file', file); + return service.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); +}; + +export { get, post, upload }; \ No newline at end of file diff --git a/src/api/request/role.js b/src/api/request/role.js new file mode 100644 index 0000000..db8ce81 --- /dev/null +++ b/src/api/request/role.js @@ -0,0 +1,10 @@ +import {get, post} from '../request.js' + +const prefix = 'role' + +export function roleListApi(credentials) { + return get(`${prefix}/list`, credentials) +} +export function roleOptionApi(credentials) { + return get(`${prefix}/option`, credentials) +} \ No newline at end of file diff --git a/src/api/request/user.js b/src/api/request/user.js new file mode 100644 index 0000000..ecae883 --- /dev/null +++ b/src/api/request/user.js @@ -0,0 +1,57 @@ +import {get, post} from '../request.js' + +const prefix = 'user' + +/** + * 登录 + * @param credentials + * @returns {Promise>} + */ +export function loginApi(credentials) { + return post('login', credentials) +} + +/** + * 获取用户列表 + * @param credentials + * @returns {Promise>} + */ +export function userListApi(credentials) { + return get(`${prefix}/list`, credentials) +} + +/** + * 创建用户 + * @param credentials + * @returns {Promise>} + */ +export function createUserApi(credentials) { + return post(`${prefix}/create`, credentials) +} + +/** + * 更新用户 + * @param credentials + * @returns {Promise>} + */ +export function updateUserApi(credentials) { + return post(`${prefix}/update`, credentials) +} + +/** + * 删除用户 + * @param credentials + * @returns {Promise>} + */ +export function deleteUserApi(credentials) { + return post(`${prefix}/delete`, credentials) +} + +/** + * 删除用户 + * @param credentials + * @returns {Promise>} + */ +export function resetPasswordApi(credentials) { + return post(`${prefix}/reset-password`, credentials) +} \ No newline at end of file diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 472c238..e010149 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -35,6 +35,7 @@ onMounted(() => { once: false }) }) +console.log(userStore.user)