123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*
- * @Author : yuanrunwei
- * @Date : 2020-05-18 12:05:37
- * @LastEditors: XuTongZhang
- * @LastEditTime: 2020-08-12 11:55:58
- * @FilePath : \batterycloud-admin\src\common\api\axios.js
- */
- import axios from 'axios'
- import vue from '../../main'
- import { Message, Loading } from 'element-ui'
- // import { all } from 'core-js/fn/promise'
- let api = ''
- let loading
- const whiteList = ['test', 'production']
- const allowList = [ // 文件请求路径数组
- '/admin/export/export2Web'
- ]
- const service = axios.create({
- baseURL: process.env.VUE_APP_API + '/admin',
- // baseURL: 'http://47.100.59.52:7785',
- timeout: 90000
- })
- service.interceptors.request.use(
- config => {
- // if (allowList.indexOf(config.url) === -1) {
- let data = {
- 'from': 0,
- 'page': 1,
- 'rows': 10,
- 'companyId': 2 || localStorage.getItem('managerid') - 0,
- 'sidx': '',
- 'sord': '',
- 'token': localStorage.getItem('token'),
- 'reqdata': {}
- }
- config.data = Object.assign(data, config.data)
- // }
- loading = Loading.service({
- lock: true,
- text: 'Loading',
- spinner: 'el-icon-loading',
- background: 'rgba(0, 0, 0, 0.7)'
- })
- if (allowList.includes(config.url)) {
- // config.headers['Content-Type'] = 'application/vnd.ms-excel'
- // console.log(config)
- config.responseType = 'blob'
- }
- config.headers['Authorization'] = localStorage.getItem('token')
- api = config.url
- return config
- },
- error => {
- Promise.reject(error)
- }
- )
- service.interceptors.response.use(
- res => {
- console.log(res)
- let a = false
- return new Promise((resolve, reject) => {
- allowList.forEach(item => {
- if (res.config.url === process.env.VUE_APP_API + item) {
- // resolve(res.data)
- const content = res.data
- const blob = new Blob([content])
- console.log(blob)
- const fileName = '人才库.xls'
- if ('download' in document.createElement('a')) { // 非IE下载
- const elink = document.createElement('a')
- elink.download = fileName
- elink.style.display = 'none'
- elink.href = URL.createObjectURL(blob)
- document.body.appendChild(elink)
- elink.click()
- URL.revokeObjectURL(elink.href) // 释放URL 对象
- document.body.removeChild(elink)
- } else { // IE10+下载
- navigator.msSaveBlob(blob, fileName)
- }
- a = true
- }
- })
- if (a) {
- loading.close()
- return
- }
- if (res.data.state === 206) {
- localStorage.clear()
- // sessionStorage.claer()
- vue.$cookies.removeCookies()
- loading.close()
- setTimeout(() => {
- location.reload()
- }, 100)
- }
- // if (allowList.indexOf(api) !== -1) {
- // loading.close()
- // resolve(res.data)
- // } else {
- if (res.status === 200) {
- if (res.data.state !== 100) {
- Message({
- message: res.data.msg,
- type: 'error',
- duration: 5 * 1000
- })
- loading.close()
- reject(res.data.msg)
- } else {
- resolve(res.data)
- loading.close()
- }
- } else {
- loading.close()
- Message({
- message: res.statusText,
- type: 'error',
- duration: 5 * 1000
- })
- if (res.status > 100 && res.status < 200) {
- if (whiteList.indexOf(process.env.NODE_ENV) !== -1) {
- let url = `http://monitor.info666.com/monitor/alert?projectAbbr=batterycloud-test&errorMsg=接口:${api}(${res.statusText})&logPath=前端开发环境(${process.env.NODE_ENV})`
- axios.get(url)
- loading.close()
- }
- }
- loading.close()
- reject(res)
- }
- // }
- })
- },
- error => {
- loading.close()
- Message({
- message: '请求异常' + error,
- type: 'error',
- duration: 5 * 1000
- })
- }
- )
- export default service
|