123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- 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 ,Toast } 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',
- timeout: 20000,
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'pl': pl
- },
- })
- var bool = true; //五秒执行一次变量
- 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 === 0) {//请求失败
- Notify({
- message: response.data.message,
- color: '#ad0000',
- background: '#d1d1d1',
- });
- return Promise.reject('error')
- } else if (response.data.code === 2) {//未登录
- localStorage.removeItem('Wx-Token')
- localStorage.removeItem('wx_user_info')
- router.replace({
- name: 'courseAuth'
- })
- // return Promise.reject('error')
- } else if (response.data.code === 3) {//无权限
- router.replace({
- name: 'courseHome'
- })
- // return Promise.reject('error')
- } else if (response.data.code === 999) {//系统异常
- localStorage.removeItem('Wx-Token')
- localStorage.removeItem('wx_user_info')
- router.replace({
- name: 'courseAuth'
- })
- // return Promise.reject('error')
- } else {
- return response
- }
- },
- error => {
- if (error.message == 'interrupt') {
- return Promise.reject(error.message)
- }
- //五秒内只执行一次
- if (bool) {
- if (error.message == 'timeout of 10000ms exceeded') {
- Notify({
- type: 'warning',
- message: "网络连接超时,请稍后重试",
- duration: 3000,
- });
- }
- if (error.message == 'Network Error') {
- Notify({
- type: 'danger',
- message: "网络连接失败,请检查您的网络",
- duration: 3000,
- });
- }
- bool = false
- setTimeout(() => {
- bool = true
- }, 5000)
- }
- 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();
- }else{
- return Promise.reject(new Error('No token, request aborted.'));
- }
- 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;
- })
- };
|