123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- import axios from 'axios'
- import qs from 'qs'
- import Vue from 'vue'
- import store from '@/store'
- import Router from '@/router'
- import {
- Message,
- MessageBox
- } from 'element-ui'
- import {
- getToken,
- removeAllToken
- } from '@/utils/auth'
- const service = axios.create({
- baseURL: process.env.BASE_API,
- // baseURL:'https://oa.g107.com',
- timeout: 20000, //
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- "Cache-Control": 'no-cache',
- 'pl': 'b'
- },
- transformRequest: [function (data) {
- return qs.stringify(data)
- }]
- })
- service.interceptors.request.use(
- config => {
- if (getToken()) {
- config.headers['A-TOKEN'] = getToken()
- }
- return config
- },
- error => {
- Promise.reject(error)
- }
- )
- // 50008:非法的token; 50012:其他客户端登录了; 401:Token 过期了; 2000 考勤系统的token过期
- var bool = true // 五秒执行一次变量
- service.interceptors.response.use(
- response => {
- const res = response.data
- if (res.code === 401) {
- MessageBox.confirm('你已被登出,请重新登录', '确定登出', {
- confirmButtonText: '重新登录',
- showClose: false,
- closeOnClickModal: false,
- closeOnPressEscape: false,
- showCancelButton: false,
- type: 'warning'
- }).then(() => {
- store.dispatch('LogOut')
- }).catch(() => {
- store.dispatch('LogOut')
- })
- return Promise.reject(response)
- } else if (res.code === 0) {
- if (res.msg == '') {
- return
- }
- if (bool) {
- Message({
- message: res.msg,
- duration: 1 * 3000
- })
- bool = false
- setTimeout(() => {
- bool = true
- }, 5000)
- } else { }
- return Promise.reject(response)
- } else if (res.code === 2001) {
- Message({
- message: res.msg
- })
- return Promise.reject(response)
- } else if (res.code === 999) {
- Message({
- message: res.msg
- })
- return Promise.reject(response)
- } else if (res.code === 3000) {
- Message({
- message: res.msg
- })
- return Promise.reject(response)
- } else if (res.code === 4444) {
- Message({
- message: res.msg
- })
- return Promise.reject(response)
- } else {
- return response
- }
- },
- error => {
- if (error.message == 'interrupt') { // 是强制中断请求就拦截报错
- return Promise.reject(error)
- }
- // 五秒内只执行一次
- if (bool) {
- Message({
- message: error.message == 'timeout of 20000ms exceeded' ? '请求服务器超时,请稍后重试' : '请求网络错误,请稍后重试',
- duration: 1 * 2000,
- type: 'error'
- })
- bool = false
- setTimeout(() => {
- bool = true
- }, 5000)
- } else {
- console.log('不执行')
- }
- return Promise.reject(error)
- }
- )
- // 接口再次封装
- var CancelToken = axios.CancelToken // 中断请求
- Vue.$axiosUserRequestList = []
- export default (type, url, data, versions, Content_Type, transform) => {
- var Accept, Token, ContentType, transformRequest = ''
- switch (versions) {
- case '':
- Accept = 'application/json, text/plain, */*'
- break
- case undefined:
- Accept = 'application/json, text/plain, */*'
- break
- case 'v2':
- Accept = 'application/vnd.test.v2+json'
- break
- case 'v3':
- Accept = 'application/vnd.test.v3+json'
- break
- case 'v4':
- Accept = 'application/vnd.test.v4+json'
- break
- }
- if (Content_Type == '' || Content_Type == undefined) {
- ContentType = 'application/x-www-form-urlencoded'
- } else {
- ContentType = Content_Type
- }
- if (transform) {
- transformRequest = transform
- }
- return new Promise((resolve, reject) => { // 封装ajax
- var aa = {
- method: type,
- url: url,
- headers: {
- 'Accept': Accept,
- 'Content-Type': ContentType,
- },
- cancelToken: new CancelToken(c => { // 强行中断请求要用到的
- Vue.$axiosUserRequestList.push(c)
- })
- }
- var json = (type == 'get') ? Object.assign(aa, {
- params: data
- }, transformRequest) : Object.assign(aa, {
- data: data
- }, transformRequest)
- var ajax = service(json).then(res => {
- resolve(res)
- }).catch(error => { // 中断请求和请求出错的处理
- if (error.message == 'interrupt') {
- return
- } else {
- reject(error)
- }
- })
- return ajax
- })
- }
|