| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * 请求封装
- * 根据环境自动切换 API 地址
- */
- import config from '@/config/index.js'
- const {
- baseUrl,
- timeout,
- debug,
- env
- } = config
- const noTokenUrls = [
- '/oa/code/sendCode', // 获取验证码
- '/codeLogin', // 登录接口
- '/xcxLogin' // 一键登录
- ];
- // 核心请求方法
- const request = (url, method = 'GET', data = {}) => {
- // 1. 检查当前接口是否需要token
- const needToken = !noTokenUrls.some(path => url.startsWith(path));
- // 2. 获取本地存储的token
- const token = uni.getStorageSync('token') || '';
- const fullUrl = baseUrl + url;
- // 构建请求头(有token则自动携带)
- const header = {
- 'Content-Type': 'application/json;charset=UTF-8'
- };
- if (needToken && token) {
- header["Authorization"] = "Bearer " + token
- // Bearer
- }
- return new Promise((resolve, reject) => {
- uni.request({
- url: fullUrl,
- method: method.toUpperCase(), // 统一转大写避免错误
- data: data, // POST 参数放请求体
- header: header,
- timeout: 10000,
- success: (res) => {
- resolve(res.data);
- },
- fail: (err) => {
- // 统一错误提示
- uni.showToast({
- title: err.errMsg || '请求失败',
- icon: 'none'
- });
- reject(err);
- }
- });
- });
- };
- // 导出方法
- export default {
- // GET 请求
- get: (url, data = {}) => request(url, 'GET', data),
- // POST 请求
- post: (url, data = {}) => request(url, 'POST', data)
- };
|