import Vue from 'vue' import axios from 'axios' import qs from 'qs' import md5 from 'js-md5'; import constant from './constant.js'; // #ifdef H5 let baseURL = constant.H5 let key = constant.H5_KEY // #endif // #ifdef APP-PLUS let baseURL = constant.APP let key = constant.APP_KEY // #endif const service = axios.create({ withCredentials: true, crossDomain: true, baseURL, timeout: 160000 }) // request拦截器,在请求之前做一些处理 service.interceptors.request.use( config => { // console.log('showDialog' + Vue.prototype.$showDialog) if (Vue.prototype.$showDialog) { uni.showLoading({ title: 'loading', mask: true }) } // if (config.url == '/api/user/addressSave') { // config.headers['Content-Type'] = 'application/json' // } // if (store.state.token) { // // 给请求头添加user-token // config.headers["user-token"] = store.state.token; // } const ticket = uni.getStorageSync('ticket') let dataStr = []; if (config.method == 'get') { if (config.url.split('?').length > 1) { dataStr = config.url.split('?')[1].split('&'); } } if (config.method == 'post') { dataStr = qs.stringify(config.data).split('&'); // dataStr = JSON.stringify(config.data); // dataStr = config.data; // dataStr = config.data.name; } config.data = {}; dataStr.forEach(function(e) { console.log(e,666666) config.data[e.split('=')[0]] = e.split('=')[1]; }); // console.log(ticket) if (ticket != '') { config.data['ticket'] = ticket } var keys = []; let sign = ''; for (var k in config.data) keys.push(k); keys.sort(function(a, b) { return a < b ? -1 : 1; }) // console.log("keys==========="); keys.forEach(function(e) { if (config.data[e] || config.data[e] == '') { sign += e + '=' + config.data[e] + '&' } }); // console.log("签名参数==========="); // console.log(config.url); // console.log(sign + key); sign = md5(sign + key); // console.log("提交参数==========="); // console.log(qs.stringify(config.data)); if (config.method == 'post') { // console.log(config.data,666666) config.data['sign'] = sign config.data = qs.stringify(config.data) } if (config.method == 'get') { if (ticket != '') { config.url = config.url + '&ticket=' + ticket + '&sign=' + sign } else { config.url = config.url + '?sign=' + sign } } // console.log(config) return config; }, error => { // console.log(error); // for debug return Promise.reject(error); } ); //配置成功后的拦截器 // service.interceptors.response.use(res => { // console.log('过期了吗') // uni.hideLoading() // console.log(res) // console.log(res.data) // console.log(res.data.data[0].nameAlias) // if (res.data.success || res.data.errCode === 'USER.0017') { // console.log(res.data.success) // return res.data // } else { // uni.showToast({ // title: res.data.errMsg, // icon: 'none', // duration: 1500 // }) // if (res.data.errCode === 'USER.0010') { // uni.removeStorage({ // key: 'logInfo', // success: function (res) { // uni.reLaunch({url: '/pages/login/index'}) // }, // fail: (err) => { // } // }); // h5判断删除了 之后添加 // var url = location.href; // if(url.indexOf('pages')>-1){ // uni.setStorage({ // key: 'url', // data: url, // success: function() { // console.log('success') // } // }); // }else{ // uni.removeStorageSync('url') // } // // h5判断删除了 之后添加 // } // uni.$emit('refreshQrCode') // return Promise.reject(res.data.errMsg); // } // }, error => { // return Promise.reject(error) // }) axios.defaults.adapter = function(config) { //自己定义个适配器,用来适配uniapp的语法 return new Promise((resolve, reject) => { // console.log(config) var settle = require('axios/lib/core/settle'); var buildURL = require('axios/lib/helpers/buildURL'); uni.request({ method: config.method.toUpperCase(), url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer), header: config.headers, data: config.data, dataType: config.dataType, responseType: config.responseType, sslVerify: config.sslVerify, complete: function complete(response) { //console.log("执行完成:",config.baseURL + buildURL(config.url, config.params, config.paramsSerializer),response.data) response = { data: response.data, status: response.statusCode, errMsg: response.errMsg, header: response.header, config: config }; settle(resolve, reject, response); }, fail: res => { uni.showToast({ title: res, icon: 'none', duration: 1500 }) } }) }) } export default service