// import axios from 'axios'
|
// import store from '../store/index'
|
// // import {getCurrentInstance} from 'vue'
|
// import { useRouter, useRoute } from 'vue-router'
|
// const router = useRouter();
|
// axios.defaults.timeout = 50000;
|
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
|
|
// import { ElLoading as Loading, ElMessage as Message } from 'element-plus';
|
|
|
// let loadingInstance;
|
// let loadingStatus = false;
|
// http: //10.6.100.56:9290
|
// if (process.env.NODE_ENV == 'development') {
|
// // axios.defaults.baseURL = 'http://10.6.100.142:9290';
|
// axios.defaults.baseURL = 'http://10.6.100.116:9290';
|
// }
|
// else if (process.env.NODE_ENV == 'debug') {
|
// axios.defaults.baseURL = 'http://10.6.100.116:9290';
|
|
// // axios.defaults.baseURL = 'http://127.0.0.1:9290';
|
// }
|
|
// else if (process.env.NODE_ENV == 'production') {
|
// axios.defaults.baseURL = 'http://10.6.100.116:9290';
|
|
// // axios.defaults.baseURL = 'http://127.0.0.1:9290';
|
// }
|
// if (!axios.defaults.baseURL.endsWith('/')) {
|
// axios.defaults.baseURL += "/";
|
// }
|
|
|
// let ipAddress = axios.defaults.baseURL;
|
// axios.interceptors.request.use((config) => {
|
// return config;
|
// }, (error) => {
|
// return Promise.reject(error);
|
// });
|
|
// axios.interceptors.response.use((res) => {
|
|
// closeLoading();
|
|
// checkResponse(res);
|
|
// return Promise.resolve(res);
|
// }, (error) => {
|
// closeLoading();
|
// let httpMessage = '';
|
// if (error.response) {
|
// if (error.response.status == '401') {
|
// if (error.response.data && error.response.data.code == 401) {
|
// if (!localStorage.getItem('user')) {
|
// Message.error({
|
// showClose: true,
|
// message: '登陆已过期',
|
// type: 'error'
|
// });
|
// }
|
// toLogin();
|
// return;
|
// }
|
|
// }
|
// if (error.response.status == '404') {
|
// httpMessage = "未找到请求地址";
|
// } else if (error.response.data && error.response.data.message) {
|
// httpMessage = error.response.data.message;
|
// }
|
// } else {
|
// httpMessage = '服务器处理异常'
|
// }
|
// redirect(httpMessage);
|
// return Promise.reject(error.response || {}, httpMessage);
|
// });
|
|
// function closeLoading() {
|
// if (loadingInstance) {
|
// loadingInstance.close();
|
// }
|
// if (loadingStatus) {
|
// loadingStatus = false;
|
// if (loadingInstance) {
|
// loadingInstance.close();
|
// }
|
// }
|
|
// }
|
|
// function checkResponse(res) {
|
// //刷新token
|
// if (!res.headers) {
|
// if (res.getResponseHeader("widesea_exp") == "1") {
|
// replaceToken();
|
// }
|
// } else if (res.headers.widesea_exp == "1") {
|
// replaceToken();
|
// }
|
// }
|
|
// const _Authorization = 'Authorization';
|
|
// function showLoading(loading) {
|
// if (!loading || loadingStatus) {
|
// return;
|
// }
|
// loadingInstance = Loading.service({
|
// lock: true,
|
// text: 'Loading',
|
// customClass: "http-loading",
|
// background: typeof loading == "string" ? loading : '正在处理.....',
|
// background: 'rgba(58, 61, 63, 0.32)'
|
// });
|
// }
|
|
// function getToken() {
|
// return store.getters.getToken();
|
// }
|
|
// /*
|
// url
|
// params请求后台的参数,如:{name:123,values:['a','b','c']}
|
// loading是否显示遮罩层,可以传入true.false.及提示文本
|
// config配置信息,如{timeout:3000,headers:{token:123}}
|
// */
|
// function post(url, params, loading, config) {
|
// showLoading(loading);
|
// axios.defaults.headers[_Authorization] = getToken();
|
// return new Promise((resolve, reject) => {
|
// axios.post(url, params, config)
|
// .then(response => {
|
// resolve(response.data);
|
// }, err => {
|
// reject(err && err.data && err.data.message ? err.data.message : '服务器处理异常');
|
// })
|
// .catch((error) => {
|
// reject(error)
|
// })
|
// })
|
// }
|
|
// //=true异步请求时会显示遮罩层,=字符串,异步请求时遮罩层显示当前字符串
|
// function get(url, param, loading, config) {
|
// showLoading(loading);
|
// axios.defaults.headers[_Authorization] = getToken();
|
// return new Promise((resolve, reject) => {
|
// axios.get(url, config)
|
// .then(response => {
|
// // console.log(response)
|
// resolve(response.data)
|
// }, err => {
|
// reject(err)
|
// })
|
// .catch((error) => {
|
// reject(error)
|
// })
|
// })
|
// }
|
|
// //url:url地址
|
// //params:请求参数
|
// //fileName:下载的文件名
|
// //loading:是否显示加载状态
|
// function download(url, params, fileName, loading, callback) {
|
// fileName = fileName.replace(">", ">").replace("<", "<");
|
// post(url, params, loading, { responseType: 'blob' }).then(content => {
|
// const blob = new Blob([content])
|
// 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)
|
// }
|
// callback && callback();
|
// })
|
// }
|
|
|
// function createXHR() {
|
// if (XMLHttpRequest) {
|
// return new XMLHttpRequest();
|
// }
|
// if (ActiveXObject) {
|
// if (typeof arguments.callee.activeXString != "string") {
|
// var versions = [
|
// "MSXML2.XMLHttp.6.0",
|
// "MSXML2.XMLHttp",
|
// "MSXML2.XMLHttp.3.0"
|
// ];
|
// for (var i = 0; i < versions.length; i++) {
|
// try {
|
// new ActiveXObject(versions[i]);
|
// arguments.callee.activeXString = versions[i];
|
// break;
|
// } catch (e) {
|
// console.log(e);
|
// }
|
// }
|
// }
|
// return new ActiveXObject(arguments.callee.activeXString);
|
// }
|
// }
|
|
// function redirect(responseText, message) {
|
// try {
|
// let responseData = typeof responseText == 'string' ? JSON.parse(responseText) : responseText;
|
// if ((responseData.hasOwnProperty('code') && responseData.code == 401) ||
|
// (responseData.data && responseData.data.code == 401)) {
|
// closeLoading();
|
// toLogin();
|
// } else {
|
// if (message) {
|
// Message.error({
|
// showClose: true,
|
// message: message,
|
// type: 'error'
|
// });
|
// }
|
// }
|
// } catch (error) {
|
// console.log(error);
|
// Message.error({
|
// showClose: true,
|
// message: responseText,
|
// type: 'error'
|
// });
|
// }
|
// }
|
|
|
// function toLogin() {
|
// // const vueinstance= getCurrentInstance();
|
// if (window.location.hash) {
|
// window.location.href = window.location.origin + '/#/login'
|
// return
|
// }
|
// window.location.href = window.location.origin + '/login'
|
// // router.push({ path: '/login', params: { r: Math.random() } });
|
// }
|
// //动态刷新token
|
// function replaceToken() {
|
// ajax({
|
// url: "/api/User/replaceToken",
|
// param: {},
|
// json: true,
|
// success: function(x) {
|
// if (x.status) {
|
// let userInfo = store.getters.getUserInfo();
|
// userInfo.token = x.data;
|
// store.commit('setUserInfo', userInfo);
|
// } else {
|
// console.log(x.message);
|
// toLogin();
|
// }
|
// },
|
// errror: function(ex) {
|
// console.log(ex);
|
// toLogin();
|
// },
|
// type: "post",
|
// async: false
|
// });
|
|
|
// }
|
|
// function ajax(param) {
|
// let httpParam =
|
// Object.assign({
|
// url: '',
|
// headers: {},
|
// param: {},
|
// json: true,
|
// success: function() {},
|
// errror: function() {},
|
// type: 'post',
|
// async: true
|
// }, param);
|
|
// httpParam.url = axios.defaults.baseURL + httpParam.url.replace(/\/?/, '');
|
// httpParam.headers[_Authorization] = getToken();
|
// var xhr = createXHR();
|
// xhr.onreadystatechange = function() {
|
// if (xhr.status == 403 || xhr.status == 401) {
|
// redirect(xhr.responseText);
|
// return;
|
// }
|
// checkResponse(xhr);
|
// if (xhr.readyState == 4 && xhr.status == 200) {
|
// httpParam.success(httpParam.json ? JSON.parse(xhr.responseText) : xhr.responseText);
|
// return;
|
// }
|
// if (xhr.status != 0 && xhr.readyState != 1) {
|
// httpParam.errror(xhr);
|
// }
|
// };
|
// //初始化请求
|
// xhr.open(
|
// httpParam.type,
|
// httpParam.url,
|
// httpParam.async
|
// );
|
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
// for (const key in httpParam.headers) {
|
// xhr.setRequestHeader(key, httpParam.headers[key]);
|
// }
|
// let dataStr = '';
|
// for (const key in httpParam.param) {
|
// dataStr += key + "=" + httpParam.param[key];
|
// }
|
// try {
|
// xhr.send(dataStr);
|
// } catch (error) {
|
// toLogin();
|
// }
|
// }
|
|
// ajax.post = function(url, param, success, errror) {
|
// ajax({ url: url, param: param, success: success, error: errror, type: 'post' })
|
// }
|
// ajax.get = function(url, param, success, errror) {
|
// ajax({ url: url, param: param, success: success, error: errror, type: 'get' })
|
// }
|
// export default { post, get, download, ajax, ipAddress }
|
//-------------
|
import axios from 'axios'
|
import store from '../store/index'
|
// import {getCurrentInstance} from 'vue'
|
import { useRouter, useRoute } from 'vue-router'
|
const router = useRouter();
|
axios.defaults.timeout = 50000;
|
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
|
|
import { ElLoading as Loading, ElMessage as Message } from 'element-plus';
|
|
|
let loadingInstance;
|
let loadingStatus = false;
|
if (process.env.NODE_ENV == 'development') {
|
// axios.defaults.baseURL = 'http://10.6.100.142:9290';
|
axios.defaults.baseURL = 'http://127.0.0.1:9290';
|
} else if (process.env.NODE_ENV == 'debug') {
|
axios.defaults.baseURL = 'http://10.6.100.116:9290';
|
|
// axios.defaults.baseURL = 'http://127.0.0.1:9290';
|
} else if (process.env.NODE_ENV == 'production') {
|
axios.defaults.baseURL = 'http://10.6.100.116:9290';
|
|
// axios.defaults.baseURL = 'http://127.0.0.1:9290';
|
}
|
if (!axios.defaults.baseURL.endsWith('/')) {
|
axios.defaults.baseURL += "/";
|
}
|
|
|
let ipAddress = axios.defaults.baseURL;
|
axios.interceptors.request.use((config) => {
|
return config;
|
}, (error) => {
|
return Promise.reject(error);
|
});
|
|
axios.interceptors.response.use((res) => {
|
|
closeLoading();
|
|
checkResponse(res);
|
|
return Promise.resolve(res);
|
}, (error) => {
|
closeLoading();
|
let httpMessage = '';
|
if (error.response) {
|
if (error.response.status == '401') {
|
if (error.response.data && error.response.data.code == 401) {
|
if (!localStorage.getItem('user')) {
|
Message.error({
|
showClose: true,
|
message: '登陆已过期',
|
type: 'error'
|
});
|
}
|
toLogin();
|
return;
|
}
|
|
}
|
if (error.response.status == '404') {
|
httpMessage = `API请求地址未找到: ${error.config.url}`;
|
} else if (error.response.data && error.response.data.message) {
|
httpMessage = error.response.data.message;
|
} else {
|
httpMessage = `服务器错误 ${error.response.status}: ${error.response.statusText}`;
|
}
|
} else if (error.request) {
|
// 请求已发出,但没有收到响应
|
httpMessage = `无法连接到服务器: ${axios.defaults.baseURL}`;
|
} else {
|
httpMessage = `请求错误: ${error.message}`;
|
}
|
Message.error({
|
showClose: true,
|
message: httpMessage,
|
type: 'error'
|
});
|
return Promise.reject(error.response || {}, httpMessage);
|
});
|
|
function closeLoading() {
|
if (loadingInstance) {
|
loadingInstance.close();
|
}
|
if (loadingStatus) {
|
loadingStatus = false;
|
if (loadingInstance) {
|
loadingInstance.close();
|
}
|
}
|
|
}
|
|
function checkResponse(res) {
|
//刷新token
|
if (!res.headers) {
|
if (res.getResponseHeader("widesea_exp") == "1") {
|
replaceToken();
|
}
|
} else if (res.headers.widesea_exp == "1") {
|
replaceToken();
|
}
|
}
|
|
const _Authorization = 'Authorization';
|
|
function showLoading(loading) {
|
if (!loading || loadingStatus) {
|
return;
|
}
|
loadingInstance = Loading.service({
|
lock: true,
|
text: 'Loading',
|
customClass: "http-loading",
|
background: typeof loading == "string" ? loading : '正在处理.....',
|
background: 'rgba(58, 61, 63, 0.32)'
|
});
|
}
|
|
function getToken() {
|
return store.getters.getToken();
|
}
|
|
/*
|
url
|
params请求后台的参数,如:{name:123,values:['a','b','c']}
|
loading是否显示遮罩层,可以传入true.false.及提示文本
|
config配置信息,如{timeout:3000,headers:{token:123}}
|
*/
|
function post(url, params, loading, config) {
|
showLoading(loading);
|
axios.defaults.headers[_Authorization] = getToken();
|
return new Promise((resolve, reject) => {
|
axios.post(url, params, config)
|
.then(response => {
|
resolve(response.data);
|
}, err => {
|
reject(err && err.data && err.data.message ? err.data.message : '服务器处理异常');
|
})
|
.catch((error) => {
|
reject(error)
|
})
|
})
|
}
|
|
//=true异步请求时会显示遮罩层,=字符串,异步请求时遮罩层显示当前字符串
|
function get(url, param, loading, config) {
|
showLoading(loading);
|
axios.defaults.headers[_Authorization] = getToken();
|
return new Promise((resolve, reject) => {
|
axios.get(url, config)
|
.then(response => {
|
// console.log(response)
|
resolve(response.data)
|
}, err => {
|
reject(err)
|
})
|
.catch((error) => {
|
reject(error)
|
})
|
})
|
}
|
|
//url:url地址
|
//params:请求参数
|
//fileName:下载的文件名
|
//loading:是否显示加载状态
|
function download(url, params, fileName, loading, callback) {
|
fileName = fileName.replace(">", ">").replace("<", "<");
|
post(url, params, loading, { responseType: 'blob' }).then(content => {
|
const blob = new Blob([content])
|
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)
|
}
|
callback && callback();
|
})
|
}
|
|
|
function createXHR() {
|
if (XMLHttpRequest) {
|
return new XMLHttpRequest();
|
}
|
if (ActiveXObject) {
|
if (typeof arguments.callee.activeXString != "string") {
|
var versions = [
|
"MSXML2.XMLHttp.6.0",
|
"MSXML2.XMLHttp",
|
"MSXML2.XMLHttp.3.0"
|
];
|
for (var i = 0; i < versions.length; i++) {
|
try {
|
new ActiveXObject(versions[i]);
|
arguments.callee.activeXString = versions[i];
|
break;
|
} catch (e) {
|
console.log(e);
|
}
|
}
|
}
|
return new ActiveXObject(arguments.callee.activeXString);
|
}
|
}
|
|
function redirect(responseText, message) {
|
try {
|
let responseData = typeof responseText == 'string' ? JSON.parse(responseText) : responseText;
|
if ((responseData.hasOwnProperty('code') && responseData.code == 401) ||
|
(responseData.data && responseData.data.code == 401)) {
|
closeLoading();
|
toLogin();
|
} else {
|
if (message) {
|
Message.error({
|
showClose: true,
|
message: message,
|
type: 'error'
|
});
|
}
|
}
|
} catch (error) {
|
console.log(error);
|
Message.error({
|
showClose: true,
|
message: responseText,
|
type: 'error'
|
});
|
}
|
}
|
|
|
function toLogin() {
|
// const vueinstance= getCurrentInstance();
|
if (window.location.hash) {
|
window.location.href = window.location.origin + '/#/login'
|
return
|
}
|
window.location.href = window.location.origin + '/login'
|
// router.push({ path: '/login', params: { r: Math.random() } });
|
}
|
//动态刷新token
|
function replaceToken() {
|
ajax({
|
url: "/api/User/replaceToken",
|
param: {},
|
json: true,
|
success: function(x) {
|
if (x.status) {
|
let userInfo = store.getters.getUserInfo();
|
userInfo.token = x.data;
|
store.commit('setUserInfo', userInfo);
|
} else {
|
console.log(x.message);
|
toLogin();
|
}
|
},
|
errror: function(ex) {
|
console.log(ex);
|
toLogin();
|
},
|
type: "post",
|
async: false
|
});
|
|
|
}
|
|
function ajax(param) {
|
let httpParam =
|
Object.assign({
|
url: '',
|
headers: {},
|
param: {},
|
json: true,
|
success: function() {},
|
errror: function() {},
|
type: 'post',
|
async: true
|
}, param);
|
|
httpParam.url = axios.defaults.baseURL + httpParam.url.replace(/\/?/, '');
|
httpParam.headers[_Authorization] = getToken();
|
var xhr = createXHR();
|
xhr.onreadystatechange = function() {
|
if (xhr.status == 403 || xhr.status == 401) {
|
redirect(xhr.responseText);
|
return;
|
}
|
checkResponse(xhr);
|
if (xhr.readyState == 4 && xhr.status == 200) {
|
httpParam.success(httpParam.json ? JSON.parse(xhr.responseText) : xhr.responseText);
|
return;
|
}
|
if (xhr.status != 0 && xhr.readyState != 1) {
|
httpParam.errror(xhr);
|
}
|
};
|
//初始化请求
|
xhr.open(
|
httpParam.type,
|
httpParam.url,
|
httpParam.async
|
);
|
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
for (const key in httpParam.headers) {
|
xhr.setRequestHeader(key, httpParam.headers[key]);
|
}
|
let dataStr = '';
|
for (const key in httpParam.param) {
|
dataStr += key + "=" + httpParam.param[key];
|
}
|
try {
|
xhr.send(dataStr);
|
} catch (error) {
|
toLogin();
|
}
|
}
|
|
ajax.post = function(url, param, success, errror) {
|
ajax({ url: url, param: param, success: success, error: errror, type: 'post' })
|
}
|
ajax.get = function(url, param, success, errror) {
|
ajax({ url: url, param: param, success: success, error: errror, type: 'get' })
|
}
|
export default { post, get, download, ajax, ipAddress }
|