123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- import axios from 'axios';
- import qs from 'qs';
- import Vue from 'vue';
- import config from '@/config'
- // 获取CancelToken
- const CancelToken = axios.CancelToken;
- const source = CancelToken.source();
- var http = axios.create({
- timout: 30000
- });
- // axios request 拦截器
- http.interceptors.request.use(
- (config) => {
- // 所有请求都添加/sc-user-auth前缀,方便接口代理
- // config.url = `/sc-user-auth${config.url}`;
- if (config.url.indexOf('/sc-user-auth') !== -1) {
- config.url = config.url;
- } else if (config.url.indexOf('/sc-message') !== -1) {
- config.url = config.url;
- } else if (config.url.indexOf('/sc-operation-manager') !== -1) {
- config.url = config.url;
- }
- else if (config.url.indexOf('/sc-zoniot-water') !== -1) {
- config.url = config.url;
- }
- else if (config.url.indexOf('/sc-user-center') !== -1) {
- config.url = config.url;
- }
- else if (config.url.indexOf('/sc-community') !== -1) {
- config.url = config.url;
- }
- else {
- config.url = `/sc-user-center${config.url}`;
- }
- // config.headers['Accept'] = '*/*'
- config.headers[localStorage.getItem('SC_token') && 'Authorization'] = 'Bearer ' + localStorage.getItem('SC_token');
- // 全局添加cancelToken
- config.cancelToken = source.token;
- return config;
- },
- (err) => {
- return Promise.reject(err);
- }
- );
- // axios响应拦截
- http.interceptors.response.use(
- (res) => {
- return Promise.resolve(res.data);
- },
- (err) => {
- if (err.response.status == 401) {
- axios({
- url: '/sc-user-auth/user/getUserStatus?accessToken=' + localStorage.getItem('SC_token'),
- method: 'get'
- }).then((response) => {
- if (window.relogin) return false;
- window.relogin = true;
- let data = response.data.data;
- if (data == 0) {
- Vue.prototype.$msgBox('你的登录已超时,请重新登录', '', 'warning', {
- width: '290px',
- showCancelButton: false,
- confirmButtonText: '确定',
- showClose: false
- }).then(() => {
- window.open(config.loginUrl, '_self');
- window.relogin = false;
- localStorage.removeItem('SC_token');
- }).catch(() => { });
- } else if (data == 1) {
- Vue.prototype.$msgBox('该账号已在其他地址登录,如需访问请重新登录', '', 'warning', {
- width: '290px',
- showCancelButton: false,
- confirmButtonText: '确定',
- showClose: false
- }).then(() => {
- window.open(config.loginUrl, '_self');
- window.relogin = false;
- localStorage.removeItem('SC_token');
- }).catch(() => { });
- } else {
- Vue.prototype.$msgBox('你的账号已被停用,如有问题请联系管理员', '', 'warning', {
- width: '290px',
- showCancelButton: false,
- confirmButtonText: '确定',
- showClose: false
- }).then(() => {
- window.open(config.loginUrl, '_self');
- window.relogin = false;
- localStorage.removeItem('SC_token');
- }).catch(() => { });
- }
- })
- return;
- }
- if (axios.isCancel(err)) return new Promise(() => { }); // 取消请求的情况下,终端Promise调用链
- return Promise.reject(err);
- }
- );
- export default {
- vm: '',
- post(url, data) {
- return new Promise((resolve, reject) => {
- http.post(url, data)
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- postForm(url, data) {
- return new Promise((resolve, reject) => {
- http.post(url, qs.stringify(data))
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- get(url, data) {
- for (let item in data) {
- if (data[item] && 'string' == typeof data[item]) {
- data[item] = data[item].replace(/[`!@#$%^&*()\[\]\\{}=\'\"\/<>]/g, '');
- }
- }
- return new Promise((resolve, reject) => {
- http.get(url, {
- params: data
- })
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- delete(url, data) {
- return new Promise((resolve, reject) => {
- http.delete(url, {
- params: data
- })
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- deleteJSON(url, data) {
- return new Promise((resolve, reject) => {
- http.delete(url, {
- data: data
- })
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- putForm(url, data) {
- return new Promise((resolve, reject) => {
- http.put(url, qs.stringify(data))
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- put(url, data) {
- return new Promise((resolve, reject) => {
- http.put(url, data)
- .then((res) => {
- this.callback(resolve, res);
- })
- .catch((err) => {
- this.reject(reject, err);
- });
- });
- },
- callback(resolve, res) {
- resolve(res);
- },
- reject(reject, err) {
- if (err instanceof Error) {
- ELEMENT.Message.error(err.message);
- }
- reject(err);
- }
- };
|