|  |  |  | 
|---|
|  |  |  | // 引入状态码statusCode | 
|---|
|  |  |  | const statusCode = require('./statusCode') | 
|---|
|  |  |  | // 定义请求路径, BASEURL: 普通请求API; CBASEURL: 中台API,不使用中台可不引入CBASEURL | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | BASEURL | 
|---|
|  |  |  | } = require('./config') | 
|---|
|  |  |  | const config = require('./config') | 
|---|
|  |  |  | // 定义默认参数 | 
|---|
|  |  |  | const defaultOptions = { | 
|---|
|  |  |  | data: {}, | 
|---|
|  |  |  | 
|---|
|  |  |  | data, | 
|---|
|  |  |  | ignoreToken, | 
|---|
|  |  |  | form, | 
|---|
|  |  |  | isShowLoding | 
|---|
|  |  |  | isShowLoding, | 
|---|
|  |  |  | timeout, | 
|---|
|  |  |  | header, | 
|---|
|  |  |  | useParams | 
|---|
|  |  |  | } = _options | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 检查url是否为undefined | 
|---|
|  |  |  | if (!url) { | 
|---|
|  |  |  | console.error('请求URL不能为空'); | 
|---|
|  |  |  | return Promise.reject(new Error('请求URL不能为空')); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const app = getApp() | 
|---|
|  |  |  | // 设置请求头 | 
|---|
|  |  |  | let header = {} | 
|---|
|  |  |  | if (form) { | 
|---|
|  |  |  | header = { | 
|---|
|  |  |  | 'content-type': 'application/x-www-form-urlencoded' | 
|---|
|  |  |  | 
|---|
|  |  |  | 'content-type': 'application/json' //自定义请求头信息 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!timeout) { | 
|---|
|  |  |  | timeout = 60000 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!ignoreToken) { | 
|---|
|  |  |  | // 从全局变量中获取token | 
|---|
|  |  |  | let token = app.globalData.token | 
|---|
|  |  |  | header.Authorization = `Bearer ${token}` | 
|---|
|  |  |  | } | 
|---|
|  |  |  | header.tag = app.globalData.tag; | 
|---|
|  |  |  | header.appId = app.globalData.AppID; | 
|---|
|  |  |  | return new Promise((resolve, reject) => { | 
|---|
|  |  |  | console.log("url:" + BASEURL + url); | 
|---|
|  |  |  | // 获取最新的 BASEURL | 
|---|
|  |  |  | let currentBaseUrl = app.globalData.baseUrl || config.BASEURL; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log("url:" + currentBaseUrl + url); | 
|---|
|  |  |  | if (isShowLoding) { | 
|---|
|  |  |  | wx.showLoading({ | 
|---|
|  |  |  | title: '通信中...', // 加载动画标题 | 
|---|
|  |  |  | 
|---|
|  |  |  | if (url.startsWith('http')) { | 
|---|
|  |  |  | myUrl = url; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | myUrl = BASEURL + url; | 
|---|
|  |  |  | myUrl = currentBaseUrl + url; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 如果 useParams 为 true,拼接查询参数 | 
|---|
|  |  |  | if (useParams && data) { | 
|---|
|  |  |  | const queryString = objToQueryString(data); // 使用上面定义的函数 | 
|---|
|  |  |  | myUrl += `?${queryString}`; // 拼接查询字符串 | 
|---|
|  |  |  | data = {}; // 请求体数据设为空 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wx.request({ | 
|---|
|  |  |  | url: myUrl, | 
|---|
|  |  |  | data, | 
|---|
|  |  |  | header, | 
|---|
|  |  |  | method, | 
|---|
|  |  |  | timeout: timeout, | 
|---|
|  |  |  | success: (res) => { | 
|---|
|  |  |  | let { | 
|---|
|  |  |  | statusCode: code | 
|---|
|  |  |  | 
|---|
|  |  |  | if (isShowLoding) { | 
|---|
|  |  |  | wx.hideLoading(); // 隐藏加载动画 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // showToast(err.errMsg) | 
|---|
|  |  |  | reject(err) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function objToQueryString(obj) { | 
|---|
|  |  |  | return Object.keys(obj) | 
|---|
|  |  |  | .map(key => { | 
|---|
|  |  |  | // 对键和值进行 URL 编码 | 
|---|
|  |  |  | return `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`; | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .join('&'); // 将所有键值对用 '&' 连接起来 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 封装toast函数 | 
|---|
|  |  |  | function showToast(title, icon = 'none', duration = 2500, mask = false) { | 
|---|
|  |  |  | wx.showToast({ | 
|---|