|
@@ -1,271 +1,294 @@
|
|
|
-import axios from "axios";
|
|
|
+import axios from 'axios'
|
|
|
import { MessageBox, Message, Loading } from 'element-ui'
|
|
|
-import { getToken,removeToken } from '@/utils/auth'
|
|
|
-import {tansParams,judgmentNetworkReturnAddress} from "@/utils/public";
|
|
|
-
|
|
|
+import { getToken, removeToken } from '@/utils/auth'
|
|
|
+import { tansParams, judgmentNetworkReturnAddress } from '@/utils/public'
|
|
|
|
|
|
//判定http或者https
|
|
|
-let urlText = window.location.href.split('://')[0]+'://';
|
|
|
+let urlText = window.location.href.split('://')[0] + '://'
|
|
|
//弹窗状态开关
|
|
|
-let messageData = null;
|
|
|
+let messageData = null
|
|
|
|
|
|
// 弹层数据
|
|
|
-let loadingInstance = {};
|
|
|
+let loadingInstance = {}
|
|
|
let options = {
|
|
|
- spinner:"",
|
|
|
- background: 'rgba(255, 255, 255, 0.1)'
|
|
|
-};
|
|
|
-let loadingCount = 0;
|
|
|
+ spinner: '',
|
|
|
+ background: 'rgba(255, 255, 255, 0.1)'
|
|
|
+}
|
|
|
+let loadingCount = 0
|
|
|
|
|
|
// 允许跨域
|
|
|
-axios.defaults.headers.post["Access-Control-Allow-Origin-Type"] = "*";
|
|
|
+axios.defaults.headers.post['Access-Control-Allow-Origin-Type'] = '*'
|
|
|
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
|
|
|
|
|
|
// 创建 axios 请求实例
|
|
|
const serviceAxios = axios.create({
|
|
|
- baseURL: urlText+judgmentNetworkReturnAddress(), // 基础请求地址
|
|
|
- timeout: 10000, // 请求超时设置
|
|
|
- withCredentials: false, // 跨域请求是否需要携带 cookie
|
|
|
-});
|
|
|
-
|
|
|
+ baseURL: urlText + judgmentNetworkReturnAddress(), // 基础请求地址
|
|
|
+ timeout: 10000, // 请求超时设置
|
|
|
+ withCredentials: false // 跨域请求是否需要携带 cookie
|
|
|
+})
|
|
|
|
|
|
// 创建请求拦截
|
|
|
serviceAxios.interceptors.request.use(config => {
|
|
|
- // 弹层相关
|
|
|
- loadingInstance = Loading.service(options)
|
|
|
- const isToken = (config.headers || {}).isToken === false
|
|
|
- if (getToken() && !isToken) {
|
|
|
- config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
|
|
- }
|
|
|
- // get请求映射params参数
|
|
|
- if (config.method === 'get' && config.params) {
|
|
|
- let url = config.url + '?' + tansParams(config.params);
|
|
|
- url = url.slice(0, -1);
|
|
|
- config.params = {};
|
|
|
- config.url = url;
|
|
|
- }
|
|
|
- // 弹层相关
|
|
|
- loadingCount ++;
|
|
|
- return config;
|
|
|
- },
|
|
|
- (error) => {
|
|
|
- // 弹层相关
|
|
|
- loadingCount --;
|
|
|
- if(loadingCount===0){
|
|
|
- loadingInstance.close();
|
|
|
- }
|
|
|
- Promise.reject(error);
|
|
|
+ // 弹层相关
|
|
|
+ loadingInstance = Loading.service(options)
|
|
|
+ const isToken = (config.headers || {}).isToken === false
|
|
|
+ if (getToken() && !isToken) {
|
|
|
+ config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
|
|
|
}
|
|
|
-);
|
|
|
-
|
|
|
+ // get请求映射params参数
|
|
|
+ if (config.method === 'get' && config.params) {
|
|
|
+ let url = config.url + '?' + tansParams(config.params)
|
|
|
+ url = url.slice(0, -1)
|
|
|
+ config.params = {}
|
|
|
+ config.url = url
|
|
|
+ }
|
|
|
+ // 弹层相关
|
|
|
+ loadingCount++
|
|
|
+ return config
|
|
|
+ },
|
|
|
+ (error) => {
|
|
|
+ // 弹层相关
|
|
|
+ loadingCount--
|
|
|
+ if (loadingCount === 0) {
|
|
|
+ loadingInstance.close()
|
|
|
+ }
|
|
|
+ Promise.reject(error)
|
|
|
+ }
|
|
|
+)
|
|
|
|
|
|
// 创建响应拦截
|
|
|
serviceAxios.interceptors.response.use(res => {
|
|
|
- // 弹层相关
|
|
|
- loadingCount --;
|
|
|
- if(loadingCount===0) {
|
|
|
- loadingInstance.close();
|
|
|
+ // 弹层相关
|
|
|
+ loadingCount--
|
|
|
+ if (loadingCount === 0) {
|
|
|
+ loadingInstance.close()
|
|
|
+ }
|
|
|
+ // 未设置状态码则默认成功状态
|
|
|
+ const code = res.data.code || 200
|
|
|
+ // 获取错误信息
|
|
|
+ if (code == 5002) {
|
|
|
+ if (getToken()) {
|
|
|
+ removeToken()
|
|
|
+ MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }
|
|
|
+ ).then(() => {
|
|
|
+ if (localStorage.getItem('entranceJumpType') == 'PC') {
|
|
|
+ window.location.href = process.env.VUE_APP_OUT_URL
|
|
|
+ } else {
|
|
|
+ window.location.href = '#/'
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else if (code == 5005) {
|
|
|
+ if (getToken()) {
|
|
|
+ removeToken()
|
|
|
+ MessageBox.confirm('没有相关权限,请重新登录', '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }
|
|
|
+ ).then(() => {
|
|
|
+ if (localStorage.getItem('entranceJumpType') == 'PC') {
|
|
|
+ window.location.href = process.env.VUE_APP_OUT_URL
|
|
|
+ } else {
|
|
|
+ window.location.href = '#/'
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else if (code == 5007) {
|
|
|
+ return res.data
|
|
|
+ } else if (code != 200) {
|
|
|
+ if (!messageData) {
|
|
|
+ messageData = Message({
|
|
|
+ message: res.data.message,
|
|
|
+ type: 'error',
|
|
|
+ offset: 100
|
|
|
+ })
|
|
|
+ setTimeout(function() {
|
|
|
+ messageData = null
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+ return res.data
|
|
|
+ // return Promise.reject(new Error('系统未知错误,请联系管理员'))
|
|
|
+ } else {
|
|
|
+ return res.data
|
|
|
+ }
|
|
|
+ },
|
|
|
+ (error) => {
|
|
|
+ if (error.response.data.code == 5002) {
|
|
|
+ removeToken()
|
|
|
+ MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
}
|
|
|
- // 未设置状态码则默认成功状态
|
|
|
- const code = res.data.code || 200;
|
|
|
- // 获取错误信息
|
|
|
- if(code == 5002){
|
|
|
- if(getToken()){
|
|
|
- removeToken();
|
|
|
- MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- showCancelButton:false,
|
|
|
- closeOnClickModal:false,
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }
|
|
|
- ).then(() => {
|
|
|
- if(localStorage.getItem('entranceJumpType') == 'PC'){
|
|
|
- window.location.href = process.env.VUE_APP_OUT_URL;
|
|
|
- }else{
|
|
|
- window.location.href='#/';
|
|
|
- }
|
|
|
- }).catch(() => {});
|
|
|
- }
|
|
|
- }else if (code == 5005) {
|
|
|
- if(getToken()){
|
|
|
- removeToken();
|
|
|
- MessageBox.confirm('没有相关权限,请重新登录', '系统提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- showCancelButton:false,
|
|
|
- closeOnClickModal:false,
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }
|
|
|
- ).then(() => {
|
|
|
- if(localStorage.getItem('entranceJumpType') == 'PC'){
|
|
|
- window.location.href = process.env.VUE_APP_OUT_URL;
|
|
|
- }else{
|
|
|
- window.location.href='#/';
|
|
|
- }
|
|
|
- }).catch(() => {});
|
|
|
- }
|
|
|
- }else if(code == 5007){
|
|
|
- return res.data
|
|
|
- }else if (code != 200) {
|
|
|
- if(!messageData){
|
|
|
- messageData = Message({
|
|
|
- message: res.data.message,
|
|
|
- type: 'error',
|
|
|
- offset:100
|
|
|
- })
|
|
|
- setTimeout(function(){
|
|
|
- messageData = null
|
|
|
- },1000);
|
|
|
- }
|
|
|
- return res.data
|
|
|
- // return Promise.reject(new Error('系统未知错误,请联系管理员'))
|
|
|
+ ).then(() => {
|
|
|
+ if (localStorage.getItem('entranceJumpType') == 'PC') {
|
|
|
+ window.location.href = process.env.VUE_APP_OUT_URL
|
|
|
} else {
|
|
|
- return res.data
|
|
|
+ window.location.href = '#/'
|
|
|
}
|
|
|
- },
|
|
|
- (error) => {
|
|
|
- // 弹层相关
|
|
|
- loadingCount --;
|
|
|
- if(loadingCount===0){
|
|
|
- loadingInstance.close();
|
|
|
- }
|
|
|
- let { message } = error;
|
|
|
- if (message == "Network Error") {
|
|
|
- message = "服务连接异常";
|
|
|
- }
|
|
|
- else if (message.includes("timeout")) {
|
|
|
- message = "系统接口请求超时";
|
|
|
- }
|
|
|
- else if (message.includes("Request failed with status code")) {
|
|
|
- if(message.substr(message.length - 3) == 401){
|
|
|
- if(getToken()){
|
|
|
- removeToken();
|
|
|
- MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- showCancelButton:false,
|
|
|
- closeOnClickModal:false,
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }
|
|
|
- ).then(() => {
|
|
|
- if(localStorage.getItem('entranceJumpType') == 'PC'){
|
|
|
- window.location.href = process.env.VUE_APP_OUT_URL;
|
|
|
- }else{
|
|
|
- window.location.href='#/';
|
|
|
- }
|
|
|
- }).catch(() => {});
|
|
|
- }
|
|
|
- }else{
|
|
|
- messageData = Message({
|
|
|
- message: message,
|
|
|
- type: 'error',
|
|
|
- offset:100
|
|
|
- })
|
|
|
- setTimeout(function(){
|
|
|
- messageData = null
|
|
|
- },1000);
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 弹层相关
|
|
|
+ loadingCount--
|
|
|
+ if (loadingCount === 0) {
|
|
|
+ loadingInstance.close()
|
|
|
+ }
|
|
|
+ let { message } = error
|
|
|
+ if (message == 'Network Error') {
|
|
|
+ message = '服务连接异常'
|
|
|
+ }
|
|
|
+ else if (message.includes('timeout')) {
|
|
|
+ message = '系统接口请求超时'
|
|
|
+ }
|
|
|
+ else if (message.includes('Request failed with status code')) {
|
|
|
+ if (message.substr(message.length - 3) == 401) {
|
|
|
+ if (getToken()) {
|
|
|
+ removeToken()
|
|
|
+ MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ showCancelButton: false,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
}
|
|
|
- return Promise.reject(error)
|
|
|
- }
|
|
|
- if(!messageData){
|
|
|
- messageData = Message({
|
|
|
- message: message,
|
|
|
- type: 'error',
|
|
|
- duration: 5 * 1000,
|
|
|
- offset:100
|
|
|
- })
|
|
|
- setTimeout(function(){
|
|
|
- messageData = null
|
|
|
- },1000);
|
|
|
+ ).then(() => {
|
|
|
+ if (localStorage.getItem('entranceJumpType') == 'PC') {
|
|
|
+ window.location.href = process.env.VUE_APP_OUT_URL
|
|
|
+ } else {
|
|
|
+ window.location.href = '#/'
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ })
|
|
|
}
|
|
|
- return Promise.reject(error)
|
|
|
+ } else {
|
|
|
+ messageData = Message({
|
|
|
+ message: message,
|
|
|
+ type: 'error',
|
|
|
+ offset: 100
|
|
|
+ })
|
|
|
+ setTimeout(function() {
|
|
|
+ messageData = null
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+ return Promise.reject(error)
|
|
|
}
|
|
|
-);
|
|
|
+ if (!messageData) {
|
|
|
+ messageData = Message({
|
|
|
+ message: message,
|
|
|
+ type: 'error',
|
|
|
+ duration: 5 * 1000,
|
|
|
+ offset: 100
|
|
|
+ })
|
|
|
+ setTimeout(function() {
|
|
|
+ messageData = null
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+ return Promise.reject(error)
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
// 通用下载方法
|
|
|
export function download(url, params, filename) {
|
|
|
- return serviceAxios.post(url, params, {
|
|
|
- transformRequest: [(params) => {
|
|
|
- return this.tansParams(params)
|
|
|
- }],
|
|
|
- headers: {
|
|
|
- 'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
- "Access-Control-Allow-Origin": "*",
|
|
|
- token:getToken(),
|
|
|
+ return serviceAxios.post(url, params, {
|
|
|
+ transformRequest: [(params) => {
|
|
|
+ return this.tansParams(params)
|
|
|
+ }],
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded',
|
|
|
+ 'Access-Control-Allow-Origin': '*',
|
|
|
+ token: getToken()
|
|
|
|
|
|
- },
|
|
|
- responseType: 'blob'
|
|
|
- }).then((data) => {
|
|
|
- const content = data
|
|
|
- const blob = new Blob([content])
|
|
|
- if ('download' in document.createElement('a')) {
|
|
|
- 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)
|
|
|
- document.body.removeChild(elink)
|
|
|
- } else {
|
|
|
- navigator.msSaveBlob(blob, filename)
|
|
|
- }
|
|
|
- this.msgSuccess('正在下载,请稍候')
|
|
|
- }).catch((r) => {
|
|
|
- //console.error(r)
|
|
|
- })
|
|
|
+ },
|
|
|
+ responseType: 'blob'
|
|
|
+ }).then((data) => {
|
|
|
+ const content = data
|
|
|
+ const blob = new Blob([content])
|
|
|
+ if ('download' in document.createElement('a')) {
|
|
|
+ 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)
|
|
|
+ document.body.removeChild(elink)
|
|
|
+ } else {
|
|
|
+ navigator.msSaveBlob(blob, filename)
|
|
|
+ }
|
|
|
+ this.msgSuccess('正在下载,请稍候')
|
|
|
+ }).catch((r) => {
|
|
|
+ //console.error(r)
|
|
|
+ })
|
|
|
}
|
|
|
+
|
|
|
// 通用文件下载方法POST请求
|
|
|
-export function downloadPost(fileUrl,fleName) {
|
|
|
- const newUrl = urlText + judgmentNetworkReturnAddress() + fileUrl;
|
|
|
- const x = new XMLHttpRequest();
|
|
|
- x.open("post", newUrl, true);
|
|
|
- x.setRequestHeader("Authorization",getToken());
|
|
|
- x.responseType = "blob";
|
|
|
- x.onload = () => {
|
|
|
- const url = URL.createObjectURL(x.response);
|
|
|
- const a = document.createElement("a");
|
|
|
- a.href = url;
|
|
|
- a.download = fleName;
|
|
|
- a.target = "_blank";
|
|
|
- a.click();
|
|
|
- };
|
|
|
- x.send();
|
|
|
- this.msgSuccess('正在下载,请稍候')
|
|
|
+export function downloadPost(fileUrl, fleName) {
|
|
|
+ const newUrl = urlText + judgmentNetworkReturnAddress() + fileUrl
|
|
|
+ const x = new XMLHttpRequest()
|
|
|
+ x.open('post', newUrl, true)
|
|
|
+ x.setRequestHeader('Authorization', getToken())
|
|
|
+ x.responseType = 'blob'
|
|
|
+ x.onload = () => {
|
|
|
+ const url = URL.createObjectURL(x.response)
|
|
|
+ const a = document.createElement('a')
|
|
|
+ a.href = url
|
|
|
+ a.download = fleName
|
|
|
+ a.target = '_blank'
|
|
|
+ a.click()
|
|
|
+ }
|
|
|
+ x.send()
|
|
|
+ this.msgSuccess('正在下载,请稍候')
|
|
|
}
|
|
|
+
|
|
|
// 通用文件下载方法GET请求
|
|
|
-export function downloadGet(fileUrl,fleName) {
|
|
|
- const newUrl = urlText + judgmentNetworkReturnAddress() + fileUrl;
|
|
|
- const x = new XMLHttpRequest();
|
|
|
- x.open('get', newUrl, true)
|
|
|
- x.setRequestHeader("Authorization",getToken());
|
|
|
- x.responseType = "blob";
|
|
|
- x.onload = () => {
|
|
|
- const url = URL.createObjectURL(x.response);
|
|
|
- const a = document.createElement("a");
|
|
|
- a.href = url;
|
|
|
- a.download = fleName;
|
|
|
- a.target = "_blank";
|
|
|
- a.click();
|
|
|
- };
|
|
|
- x.send();
|
|
|
- this.msgSuccess('正在下载,请稍候')
|
|
|
+export function downloadGet(fileUrl, fleName) {
|
|
|
+ const newUrl = urlText + judgmentNetworkReturnAddress() + fileUrl
|
|
|
+ const x = new XMLHttpRequest()
|
|
|
+ x.open('get', newUrl, true)
|
|
|
+ x.setRequestHeader('Authorization', getToken())
|
|
|
+ x.responseType = 'blob'
|
|
|
+ x.onload = () => {
|
|
|
+ const url = URL.createObjectURL(x.response)
|
|
|
+ const a = document.createElement('a')
|
|
|
+ a.href = url
|
|
|
+ a.download = fleName
|
|
|
+ a.target = '_blank'
|
|
|
+ a.click()
|
|
|
+ }
|
|
|
+ x.send()
|
|
|
+ this.msgSuccess('正在下载,请稍候')
|
|
|
}
|
|
|
+
|
|
|
// 通用URL地址文件下载方法
|
|
|
-export function downloadUrl(fileUrl,fleName) {
|
|
|
- const x = new XMLHttpRequest();
|
|
|
- x.open('get', fileUrl, true)
|
|
|
- x.setRequestHeader("Authorization",getToken());
|
|
|
- x.responseType = "blob";
|
|
|
- x.onload = () => {
|
|
|
- const url = URL.createObjectURL(x.response);
|
|
|
- const a = document.createElement("a");
|
|
|
- a.href = url;
|
|
|
- a.download = fleName;
|
|
|
- a.target = "_blank";
|
|
|
- a.click();
|
|
|
- };
|
|
|
- x.send();
|
|
|
- this.msgSuccess('正在下载,请稍候')
|
|
|
+export function downloadUrl(fileUrl, fleName) {
|
|
|
+ const x = new XMLHttpRequest()
|
|
|
+ x.open('get', fileUrl, true)
|
|
|
+ x.setRequestHeader('Authorization', getToken())
|
|
|
+ x.responseType = 'blob'
|
|
|
+ x.onload = () => {
|
|
|
+ const url = URL.createObjectURL(x.response)
|
|
|
+ const a = document.createElement('a')
|
|
|
+ a.href = url
|
|
|
+ a.download = fleName
|
|
|
+ a.target = '_blank'
|
|
|
+ a.click()
|
|
|
+ }
|
|
|
+ x.send()
|
|
|
+ this.msgSuccess('正在下载,请稍候')
|
|
|
}
|
|
|
-export default serviceAxios;
|
|
|
+
|
|
|
+export default serviceAxios
|