#20 通用模块: - MinioService: MinIO 文件上传/下载/桶管理 - @DataScope 注解: 数据权限切片 - ExcelUtils: EasyExcel 导出 - IdUtils: Snowflake ID 生成器 - BaseEntity: MyBatis-Plus 基础实体 #23 前端框架: - Vue3 + TypeScript + Vite + Element Plus + ECharts + Pinia - 路由系统: 登录守卫 + 动态路由 - 登录页: 渐变背景 + Axios+Sa-Token 认证 - 仪表盘: 统计卡片 + 供水趋势折线图 + 片区饼图 - MainLayout: 侧边栏菜单 + 顶栏用户下拉(退出) - API 层: Axios 请求/响应拦截器 + Token 自动注入 - 系统管理骨架: 用户/角色/菜单/部门 列表页
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import request from './request'
|
||||
|
||||
export function login(username: string, password: string) {
|
||||
return request.post('/base/auth/login', { username, password })
|
||||
}
|
||||
|
||||
export function getUserInfo() {
|
||||
return request.get('/base/auth/user-info')
|
||||
}
|
||||
|
||||
export function logout() {
|
||||
return request.post('/base/auth/logout')
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
const request = axios.create({ baseURL: '/api', timeout: 15000 })
|
||||
|
||||
request.interceptors.request.use(config => {
|
||||
const token = localStorage.getItem('token')
|
||||
if (token) config.headers.Authorization = token
|
||||
return config
|
||||
})
|
||||
|
||||
request.interceptors.response.use(
|
||||
res => {
|
||||
const data = res.data
|
||||
if (data.code !== 200) { ElMessage.error(data.message); return Promise.reject(data) }
|
||||
return data
|
||||
},
|
||||
err => { ElMessage.error(err.message); return Promise.reject(err) }
|
||||
)
|
||||
|
||||
export default request
|
||||
Reference in New Issue
Block a user