123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import router from '@/router'
- import axios from 'axios'
- import qs from 'qs'
- import Vue from 'vue'
- import {getWxToken,setWxToken,openError} from '@/utils/auth'
- import {Dialog,Notify} from 'vant'
- Vue.use(Dialog).use(Notify)
- let pl = 'a'
- if (window.plus) {
- if (navigator.userAgent.indexOf('Android') > 0) {
- pl = 'a'
- } else {
- pl = 'i'
- }
- } else {
- pl = 'b'
- }
- let url = '';
- const request = axios.create({
- // baseURL: process.env.BASE_API,
- baseURL: 'https://oa.g107.com',
- // baseURL:'http://192.168.0.66:8081',
- timeout: 20000,
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'pl': pl
- },
- // transformRequest: [function(data) {
- // return qs.stringify(data)
- // }]
- })
- request.interceptors.request.use(
- config => {
- // url = config.url;
- // if (getWxToken()) {
- // config.headers['A-Token'] = getWxToken()
- // }
- return config
- },
- error => {
- Promise.reject(error)
- }
- )
- request.interceptors.response.use(
- response => {
- if (response.data.code === 1) {
- if (response.data.data&&response.data.data.utoken) {
- if (response.data.data.utoken != getWxToken()) {
- setWxToken(response.data.data.utoken)
- }
- }
- return response
- } else if (response.data.code === 401) {
- openError({
- url: url,
- token: getWxToken(),
- error: JSON.stringify(response),
- message: '微信账号的接口'
- });
- Dialog.alert({
- message: '您已登录超时,请重新登录',
- }).then(() => {
- if (window.plus) {
- plus.storage.clear()
- } else {
- window.localStorage.clear()
- }
- router.replace({
- name: 'courseHome'
- })
- });
- } else if (response.data.code === 0) {
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#d1d1d1',
- });
- return Promise.reject('error')
- } else if (response.data.code === 2) {
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#ffe1e1',
- });
- return Promise.reject('error')
- } else if (response.data.code === 999) {
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#ffe1e1',
- });
- return Promise.reject('error')
- } else if (response.data.code === 3) {
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#ffe1e1',
- });
- return Promise.reject('error')
- } else if (response.data.code === 0) { //系统过期
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#ffe1e1',
- });
- return Promise.reject('error')
- } else {
- return response
- }
- },
- error => {
- if (error.message == 'interrupt') {
- return Promise.reject(error.message)
- }
- return Promise.reject(error)
- }
- )
- // 接口再次封装
- var CancelToken = axios.CancelToken;
- Vue.$httpRequestList = [];
- //isToken 是微信的TOKEN 用来绑定
- export default (type, url, data, heaStr, isToken,Content_Type) => {
- var Accept,ContentType
- var Token = ''
- switch (heaStr) {
- case undefined:
- Accept = 'application/json, text/plain, */*'
- break
- case '':
- Accept = 'application/json, text/plain, */*'
- break
- case 'v2':
- Accept = 'application/vnd.test.v2+json'
- break;
- case 'v3':
- Accept = 'application/vnd.test.v3+json'
- break;
- }
- if (getWxToken()) {
- Token = getWxToken();
- }
- if (isToken) {
- Token = isToken
- }
- if (Content_Type == '' || Content_Type == undefined) {
- // ContentType = 'application/x-www-form-urlencoded'
- ContentType = 'application/json'
- }else{
- ContentType = Content_Type
- }
- return new Promise((resolve, reject) => { //封装ajax
- var aa = {
- method: type,
- url: url,
- headers: {
- 'Accept': Accept,
- 'A-Token': Token,
- 'Content-Type': ContentType
- },
- cancelToken: new CancelToken(c => { //强行中断请求要用到的
- Vue.$httpRequestList.push(c);
- })
- }
- var json = (type == 'get') ? Object.assign(aa, {
- params: data
- }) : Object.assign(aa, {
- data: data
- });
- var ajax = request(json).then(res => {
- resolve(res);
- }).catch(error => { //中断请求和请求出错的处理
- if (error == "interrupt") {
- return;
- } else {
- reject(error);
- }
- })
- return ajax;
- })
- };
|