You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

179 lines
4.5 KiB

import axios from 'axios'
import Qs from "qs";
import { getStore } from '/utils/storage'
import toLogin from './login'
const instance = axios.create({
transformRequest: [
function(data) {
data = Qs.stringify(data);
return data;
}
],
// www.yjlive.cn
baseURL: "http://mall.yyundong.com/portalapi/",
// baseURL: "http://www.yyundong.com:8083/",
timeout: 30000
});
instance.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded";
const defaultOpt = { login: true };
const methodsToken = [
"user.info",
"user.editinfo",
"user.changeavatar",
"user.logout",
"user.addgoodsbrowsing",
"user.delgoodsbrowsing",
"user.goodsbrowsing",
"user.goodscollection",
"user.goodscollectionlist",
"user.vuesaveusership",
"user.saveusership",
"user.getshipdetail",
"user.setdefship",
"user.editship",
"user.removeship",
"user.getusership",
"api/wxpay/user.pay",
"user.orderevaluate",
"user.getuserdefaultship",
"user.issign",
"user.sign",
"user.mypoint",
"user.userpointlog",
"user.getbankcardlist",
"user.getdefaultbankcard",
"user.addbankcard",
"user.removebankcard",
"user.setdefaultbankcard",
"user.getbankcardinfo",
"user.editpwd",
"user.forgotpwd",
"user.recommend",
"user.balancelist",
"user.sharecode",
"user.cash",
"user.cashlist",
"user.myinvite",
"user.activationinvite",
"coupon.getcoupon",
"coupon.usercoupon",
"cart.add",
"cart.del",
"cart.getlist",
"cart.setnums",
"cart.getnumber",
"order.cancel",
"order.del",
"order.details",
"order.confirm",
"order.getlist",
"order.create",
"submitPreview",
"order.getship",
"order.getorderlist",
"order.getorderstatusnum",
"order.aftersaleslist",
"order.aftersalesinfo",
"order.aftersalesstatus",
"order.addaftersales",
"order.sendreship",
"order.iscomment",
"payments.getinfo",
"user.getuserpoint",
"coupon.getcouponkey",
"store.isclerk",
"store.storeladinglist",
"store.ladinginfo",
"store.lading",
"store.ladingdel",
"distribution_center-api-info",
"distribution_center-api-applydistribution",
"distribution_center-api-setstore",
"distribution_center-api-myorder",
"pintuan.pintuanteam",
"lottery-api-getLotteryConfig",
"lottery-api-lottery",
"lottery-api-lotteryLog"
];
function baseRequest(options) {
const token = getStore('token');
const headers = options.headers || {};
headers["Accept"] = "application/json";
headers["Content-Type"] = "application/x-www-form-urlencoded";
headers["authorization"] = token;
headers["storeid"] = 2;
options.headers = headers;
if (options.login && !token) {
// toLogin();
// return Promise.reject({ msg: "未登录", toLogin: true });
}
console.log(options);
var url = options.url.substring(1, options.url.length);
// 判断token是否存在
if (methodsToken.indexOf(url) >= 0) {
if (!token) {
// this.$router.push({path: '/page/Login/login'})
toLogin();
return Promise.reject({ msg: "未登录", toLogin: true });
} else {
//data.authorization = userToken;
}
}
return instance(options).then(res => {
const data = res.data || {};
if (res.status !== 200)
return Promise.reject({ msg: "请求失败", res, data });
if ([410000, 410001, 410002, 100].indexOf(data.status) !== -1) {
// this.$router.push({path: '/page/Login/login'})
toLogin();
return Promise.reject({ msg: res.data.msg, res, data, toLogin: true });
} else if (data.code === 200) {
return Promise.resolve(data, res);
} else {
return Promise.reject({ msg: res.data.msg, res, data });
}
});
}
/**
* http 请求基础类
* 参考文档 https://www.kancloud.cn/yunye/axios/234845
*
*/
const request = ["post", "put", "patch"].reduce((request, method) => {
/**
*
* @param url string 接口地址
* @param data object get参数
* @param options object axios 配置项
* @returns {AxiosPromise}
*/
request[method] = (url, data, options = {}) => {
return baseRequest(
Object.assign({ url, data, method }, defaultOpt, options)
);
};
return request;
}, {});
["get", "delete", "head"].forEach(method => {
/**
*
* @param url string 接口地址
* @param params object get参数
* @param options object axios 配置项
* @returns {AxiosPromise}
*/
request[method] = (url, params = {}, options = {}) => {
return baseRequest(
Object.assign({ url, params, method }, defaultOpt, options)
);
};
});
export default request;