import { host, device_type } from "./constants"; function showError(error) { const errorText = error.statusCode !== 200 ? error.errMsg : error.data.msg; uni.showToast({ title: `发生错误: ${errorText}`, duration: 2000, icon: "none", }); throw new Error(errorText); } function getType(data, option) { // 获取请求方式 let token = uni.getStorageSync("token"); var method = typeof option == "string" ? option : option.method; var type = { method, header: { // 'content-type': 'application/x-www-form-urlencoded' "Content-Type": "application/json; charset=utf-8", "JWT-TOKEN": token, "XX-Device-Type": device_type, ...option.header, }, }; // 判断是否为数组 if (data instanceof Array) { // 数组不需要展开 type.data = data; } else if (data instanceof Object) { type.data = { ...data, }; } else { type.data = data; } return type; } /** * @param {Object} url 接口地址 * @param {Object/String} option 接口配置 * option类型为string时等同于{method: xxx} * @param {String} option.host 接口域名 * @param {String} option.method 接口类型 * @param {Object} data 接口传参 */ function request(url, option, data = {}, noLoading) { if (!noLoading) { uni.showLoading(); } var fullUrl; if (typeof option == "object" && option.host) { fullUrl = option.host + url; } else { // fullUrl = host + "/api/" + url; fullUrl = "/api/" + url; } var option = { url: fullUrl, ...getType(data, option), }; console.log({ ...option, header: null, }); return uni.request(option).then( (res) => { if (!noLoading) { uni.hideLoading(); } const response = res[1]; if (!response || !response.data) { uni.showToast({ title: "网络异常,请稍后再试", icon: "none", }); } const code = response.data.code; if (typeof option == "object" && option.host) { if (response.statusCode !== 200) { showError(response); } } else { if (code == 602 || code == 601 || code == 603) { uni.showModal({ title: "提示", content: "登录已过期,请重新登录", showCancel: false, success: (res) => { uni.reLaunch({ url: "../login/login", }); }, }); return; } // 判断是否是jinke接口返回的内容 if (response.data.status == 100) return response.data.data; if (code !== 200) { showError(response); // console.error(response) // uni.showToast({ // title: `获取数据失败: ${response.data.msg}`, // icon: "none" // }); } } return response.data; }, (error) => { console.log(error); } ); } export default request;