import Vue from 'vue' import axios from 'axios' // import QS from 'qs' import store from '@/store' // import router from '../../router' import { Loading, Message } from 'element-ui' Vue.prototype.$http = axios // Vue.prototype.qs = QS; // Vue.use(ElementUI) var loading let needLoadingRequestCount = 0 let showLoadingConfig = '' function getLang() { let currentLanguage = store.state.currentLanguage let langParam = '' switch (currentLanguage) { case 'zh': langParam = 'zh_CN' break case 'en': langParam = 'en_US' break } return langParam } // 环境的切换 if (process.env.NODE_ENV == 'development') { // axios.defaults.baseURL = 'http://8.142.139.165:7080' // 湖里区 // axios.defaults.baseURL = 'http://124.71.87.250/' // axios.defaults.baseURL = 'http://139.9.66.234:30/' // axios.defaults.baseURL = 'http://14.29.220.211:6023/' // axios.defaults.baseURL = 'https://zhgd.loganwy.com/' //龙光 // axios.defaults.baseURL = 'https://zhgd-uat.logan.com.cn/' // axios.defaults.baseURL = 'http://36.137.53.203:9090/' // 南昌地铁 17512009894 123456789 gdjt 87654321 // axios.defaults.baseURL = 'http://192.168.34.125:6023/' // axios.defaults.baseURL = 'http://124.71.178.44:100/' // 河南 // tag: 本地 // axios.defaults.baseURL = 'http://192.168.34.174:6023/' // 老大本地 // axios.defaults.baseURL = 'http://192.168.34.125:6023/' //杨意本地 http/1.1 axios.defaults.baseURL = 'http://192.168.34.216:6023/' // 邱平毅本地 // axios.defaults.baseURL = 'http://192.168.34.231:6023/'; //杨思瑞本地 // axios.defaults.baseURL = 'http://47.97.202.104:6023/'; // axios.defaults.baseURL = 'http://139.9.66.234:8/'; // axios.defaults.baseURL = 'http://120.196.217.6:7000/'; // 鹤洲 // axios.defaults.baseURL = 'http://182.90.224.237:7000/'; // 广西 // axios.defaults.baseURL = 'http://120.196.217.6:7000/' //鹤洲 // axios.defaults.baseURL = 'http://117.156.17.59:9090/'; // // axios.defaults.baseURL = 'http://120.236.247.200:9000/'; //横琴线上 // axios.defaults.baseURL = 'http://223.82.100.80:9000/'; //南昌地铁 // axios.defaults.baseURL = 'http://139.9.66.234:40001/'; //南昌地铁二期 // axios.defaults.baseURL = 'http://124.71.178.44:30/'; // axios.defaults.baseURL = 'http://192.168.34.125:9090/'; // axios.defaults.baseURL = 'http://192.168.88.220:6023/'; // axios.defaults.baseURL = 'https://192.168.34.125:6688/'; //本地 http/2 // axios.defaults.baseURL = 'http://124.71.178.44:8/'; //本地 http/3 // axios.defaults.baseURL = 'http://124.71.178.44:9000/'; //中建 cscec101 123456 // axios.defaults.baseURL = 'https://jk.cscec1b1.com:5138/';//沃尔 // axios.defaults.baseURL = 'http://61.190.32.219:9050/' // axios.defaults.baseURL = 'http://183.95.84.54:5800/'//合展-宿迁 zxsd 123456 // axios.defaults.baseURL = 'http://183.95.84.54:9500/'//贵州-敏尚 17512075572 123456 // axios.defaults.baseURL = 'http://183.95.84.34:7185/' //测试服 // axios.defaults.baseURL = 'http://183.60.227.61:30246/' // axios.defaults.baseURL = 'http://183.60.227.61:30249/' //测试服2 // axios.defaults.baseURL = 'http://183.60.227.61:20561/' //龙光地产 龙光地产 123456 // axios.defaults.baseURL = 'http://218.92.215.138:9090/' //盐城 新佳城小区 123456 // axios.defaults.baseURL = 'http://36.137.53.203:9090/' //盐城 gdjt 123456789 // axios.defaults.baseURL = 'http://183.234.150.152:9090/' //华发 huaxin 123456789 } else if (process.env.NODE_ENV == 'debug') { axios.defaults.baseURL = 'https://www.ceshi.com' } else if (process.env.NODE_ENV == 'production') { let host = window.location.host axios.defaults.baseURL = window.location.protocol + '//' + host + '/' // axios.defaults.baseURL ='http://192.168.34.125:6023/' // axios.defaults.baseURL = window.location.protocol + "//" + host.split(":")[0] + ":6023" + "/" // axios.defaults.baseURL = 'http://zhgd.loganwy.com/' } // tag: 河南 if (COMPANY == 'henan') { axios.defaults.baseURL = 'http://124.71.178.44:100/' } // axios.defaults.baseURL = store.getters.BASEURL //'http://124.71.178.44:100/'axios.defaults.timeout = 600000; // console.log('store.state.userInfo',store) if (store.state.userInfo) { axios.defaults.headers.common['Authorization'] = 'Bearer' + ' ' + store.state.userInfo.token axios.defaults.headers.common['operateId'] = store.state.userInfo.userId } // http请求拦截器 axios.interceptors.request.use( config => { // 分屏插件兼容配置 const screensBaseURL = sessionStorage.getItem('screens-baseURL') if (config.url.indexOf(screensBaseURL) !== -1) { delete config.headers.common['operateId'] if (config.url === screensBaseURL + '/login') { const Authorization = sessionStorage.getItem('screens-Authorization') config.headers.common['Authorization'] = Authorization } else { delete config.headers.common['Authorization'] const token = sessionStorage.getItem('screens-token') config.headers.common['token'] = token } return config } if (showLoadingConfig == '' || showLoadingConfig == undefined) { showFullScreenLoading() } return config }, error => { tryHideFullScreenLoading() // Message.error('加载超时'); return Promise.reject(error) } ) // 响应拦截器 axios.interceptors.response.use( response => { tryHideFullScreenLoading() if (response.status === 200) { return Promise.resolve(response) } else { return Promise.reject(response) } }, // 服务器状态码不是2开头的的情况 // 这里可以跟你们的后台开发人员协商好统一的错误状态码 // 然后根据返回的状态码进行一些操作,例如登录过期提示,错误提示等等 // 下面列举几个常见的操作,其他需求可自行扩展 error => { tryHideFullScreenLoading() if (error.response.status) { console.log('----------', error.response) let errorUrl = error.response.config.baseURL console.log('-----------------', errorUrl) let screensUrl = sessionStorage.getItem('screens-baseURL') const url = error.response.url if (errorUrl == screensUrl || url === '26938512:7zS9LX2X8u4tW4Ps0ZjN/login') { return } else { switch (error.response.status) { // 401: 未登录 // 未登录则跳转登录页面,并携带当前页面的路径 // 在登录成功后返回当前页面,这一步需要在登录页操作。 case 401: // Message.error('会话已失效,请重新登录') // logout() break // 403 token过期 // 登录过期对用户进行提示 // 清除本地token和清空vuex中token对象 // 跳转登录页面 case 403: Message.error('登录过期,请重新登录') logout() break // 404请求不存在 case 404: Message.error('网络请求不存在') break case 500: Message.error('服务器错误') break } return Promise.reject(error.response) } } } ) /** * get方法,对应get请求 * @param {String} url [请求的url地址] * @param {Object} params [请求时携带的参数] */ function logout() { store.commit('setUserInfo', null) store.commit('setMapBackArr', []) store.commit('setMoudle', null) store.commit('setProDetail', null) sessionStorage.clear() let json = { name: '工作站', id: 1, url: '/projectV2/taskList', menuList: [ { id: 100000, menuName: '任务清单', path: '/projectV2/taskList' }, { id: 100001, menuName: '通知公告', path: '/projectV2/noticeList' }, { id: 100002, menuName: '工作日程', path: '/projectV2/workerSchedule' } ] } this.$store.commit('setCurModule', json) setTimeout(() => { window.location.href = '/index.html#/login' }, 1000) } export function get(url, params, config) { showLoadingConfig = config url = url + '?lang=' + getLang() return new Promise((resolve, reject) => { axios .get(url, { params: params }) .then(res => { if (res.data.code == 200) { resolve(res.data) } else { Message.error(res.data.message) } }) .catch(err => { reject(err.data) }) }) } /** * post方法,对应post请求 * @param {String} url [请求的url地址] * @param {Object} params [请求时携带的参数] */ export function post(url, params, config) { showLoadingConfig = config url = url + '?lang=' + getLang() return new Promise((resolve, reject) => { axios .post(url, params) .then(res => { if (res.data.code == 200) { resolve(res.data) } else { if (res.data.status !== 'SUCCESS') { Message.error(res.data.message) } else { resolve(res.data) } } }) .catch(err => { reject(err.data) }) }) } /** * put方法,对应put请求 * @param {String} url [请求的url地址] * @param {Object} params [请求时携带的参数] */ export function put(url, params, config) { showLoadingConfig = config url = url + '?lang=' + getLang() return new Promise((resolve, reject) => { axios .put(url, params) .then(res => { if (res.data.code == 200) { resolve(res.data) } else { Message.error(res.data.message) } }) .catch(err => { reject(err.data) }) }) } export function showFullScreenLoading() { if (needLoadingRequestCount === 0) { startLoading() } needLoadingRequestCount++ } export function tryHideFullScreenLoading() { if (needLoadingRequestCount <= 0) return needLoadingRequestCount-- if (needLoadingRequestCount === 0) { endLoading() } } function startLoading() { loading = Loading.service({ lock: true, text: '加载中...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.5)' }) } function endLoading() { loading.close() }