import Notify from './Notify.js'; import { notification } from 'ant-design-vue'; export default { pageSize: 20, /** * 使用 BootstarpDialog 处理Ajax请求异常 * @param {*} XMLHttpRequest * @param {*} textStatus * @param {*} errorThrown */ processException: function (XMLHttpRequest, textStatus, errorThrown) { var _self = this; console.log(XMLHttpRequest); if (XMLHttpRequest.status == 400) { // 400 Bad Request Notify.error('400', XMLHttpRequest.responseText, true); } else if (XMLHttpRequest.status == 401) { var currentUrl = window.location; var href = window.location.href; // 当前未处于登陆的界面 // 系统未登录 if (href.indexOf('login') < 0 && href.indexOf('redirectUrl=') < 0) { // 处理钉钉免登陆 const clientId = this.getRouteParam('clientId'); const appName = this.getRouteParam('appName'); const corpId = this.getRouteParam('corpId'); let newUrl; if (clientId != null && clientId.length > 0 && appName != null && appName.length > 0 && corpId != null && corpId.length > 0) { newUrl = _self.getRedirectUrl('#/login?clientId=' + clientId + '&appName=' + appName + '&corpId=' + corpId + '&redirectUrl=' + encodeURIComponent(currentUrl)); } else { newUrl = _self.getRedirectUrl('#/login?redirectUrl=' + encodeURIComponent(currentUrl)); } window.location = newUrl; } } else if (XMLHttpRequest.status == 500) { // 500 Internal Server Error Notify.error('500', XMLHttpRequest.responseText, true); if (XMLHttpRequest.responseText.indexOf('登录超时') > 0) { // 如果异常信息包含“登录超时”,则2秒后跳转到登录页面 setTimeout(function () { window.location = _self.getRedirectUrl('#/login'); }, 2 * 1000); } } else { Notify.error('服务器异常', XMLHttpRequest.responseText, true); } }, /** * 使用 ant-design-vue 处理Ajax请求异常 * @param {*} XMLHttpRequest */ processExceptionWithAntV: function (XMLHttpRequest) { var _self = this; console.log(XMLHttpRequest); notification.error({ message: XMLHttpRequest.status, description: XMLHttpRequest.responseText, }); if (XMLHttpRequest.status == 401) { var currentUrl = window.location; var href = window.location.href; // 当前未处于登陆的界面 // 系统未登录 if (href.indexOf('login') < 0 && href.indexOf('redirectUrl=') < 0) { // 处理钉钉免登陆 const clientId = this.getRouteParam('clientId'); const appName = this.getRouteParam('appName'); const corpId = this.getRouteParam('corpId'); let newUrl; if (clientId != null && clientId.length > 0 && appName != null && appName.length > 0 && corpId != null && corpId.length > 0) { newUrl = _self.getRedirectUrl('index.html#/login?clientId=' + clientId + '&appName=' + appName + '&corpId=' + corpId + '&redirectUrl=' + encodeURIComponent(currentUrl)); } else { newUrl = _self.getRedirectUrl('index.html#/login?redirectUrl=' + encodeURIComponent(currentUrl)); } window.location = newUrl; } } else if (XMLHttpRequest.status == 500) { // 500 Internal Server Error if (XMLHttpRequest.responseText.indexOf('登录超时') >= 0) { // 如果异常信息包含“登录超时”,则2秒后跳转到登录页面 setTimeout(function () { window.location = _self.getRedirectUrl('index.html#/login'); }, 2 * 1000); } } }, /** * 获取主机地址 */ getRootPath: function () { var protocol = window.location.protocol; //console.log("protocol:" + protocol); var host = window.location.host; //console.log("host:" + host); var localhostPaht = protocol + '//' + host; //console.log("localhostPaht:" + localhostPaht); return localhostPaht; }, getHostPageBaseURL: function () { //return this.getRootPath() + '/'; // changed by jack 增加代理的配置。 if(typeof REMOTE_DEV_PORT !== 'undefined' && REMOTE_DEV_PORT != null){ return this.getRootPath() + '/proxy/' + REMOTE_DEV_PORT; }else{ return this.getRootPath(); } }, // 获取图片路径url getFileServerUrl: function () { return this.getHostPageBaseURL() + '/'; }, // 获取API的地址 getApiURL: function (apiName) { if(apiName.startsWith('/')){ return this.getHostPageBaseURL() + '/api' + apiName; }else{ return this.getHostPageBaseURL() + '/api/' + apiName; } }, /** * 获取API的地址 * @param {*} apiName * @returns */ getApiUrl2: function (apiName) { if (apiName === undefined || apiName === null || apiName.length === 0) { return this.getHostPageBaseURL(); } if (apiName[0] === '/') { return this.getHostPageBaseURL() + apiName; } else { return this.getHostPageBaseURL() + '/' + apiName; } }, // 获取测试API的地址 getTestApiURL: function (apiName) { return 'http://xxx/' + 'api/' + apiName; }, // 获取图片路径 getImageUrl: function (imageName) { if (imageName == null || imageName == '') { return this.getFileServerUrl() + 'notFound.png'; } else { return this.getFileServerUrl() + imageName; } }, // 获取图片路径 getImageSrc: function (className, imageName) { var accountId = localStorage.getItem('#accountId'); if (imageName == null) { return null; } return '/api/file/imageDownload?className=' + className + '&fileName=' + imageName; }, // 获取略缩图图片路径 getThumbnailImageSrc: function (className, imageName) { var accountId = localStorage.getItem('#accountId'); if (imageName == null) { return null; } return '/api/file/thumbnailImageDownload?className=' + className + '&fileName=' + imageName; }, /** * 获取附件的路径 * @param {[type]} className [description] * @param {[type]} imageName [description] * @return {[type]} [description] */ getAttachmentsSrc: function (className, imageName) { var accountId = localStorage.getItem('#accountId'); return this.getFileServerUrl() + 'Files/' + accountId + '/Attachments/' + className + '/' + imageName; }, // 获取图片路径 getVideoSrc: function (className, imageName) { var accountId = localStorage.getItem('#accountId'); if (imageName == undefined || imageName == '') { return this.getHostPageBaseURL() + 'static/image/noImage.jpg'; } return this.getFileServerUrl() + 'Files/' + accountId + '/Video/' + className + '/' + imageName; }, // 给请求头中加上account和token信息 addTokenToRequest: function (request) { var token = localStorage.getItem('#token'); var account = localStorage.getItem('#accountId'); request.setRequestHeader('account', account); request.setRequestHeader('token', token); }, /** * 获取Token */ getToken: function () { return localStorage.getItem('#token'); }, // 清空 Cookie clearCookie: function () { // eslint-disable-next-line var keys = document.cookie.match('/[^ =;]+(?=\=)/g'); if (keys) { for (var i = keys.length; i--;) { // 清除当前域名路径的有限日期 document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString(); // Domain Name域名 清除当前域名的 document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString(); // 清除一级域名下的或指定的 document.cookie = keys[i] + '=0;path=/;domain=baidu.com;expires=' + new Date(0).toUTCString(); } } }, // 获取路由中的参数 getRouteParam: function (name) { var reg = new RegExp('(^|\\?|&)' + name + '=([^&]*)(\\s|&|$)', 'i'); if (reg.test(location.href)) return unescape(RegExp.$2.replace(/\+/g, ' ')); return ''; }, /** * 获取跳转的路径 * @param {*} url */ getRedirectUrl: function (url) { return this.getHostPageBaseURL() + '/' + url; }, clearLocalStorage: function () { // 清理localStorage时需要保留的参数列表 var reserveParams = ['hostPageBaseURL', 'workShopId', 'resourceInstanceId', 'resourceInstanceName', 'apsBaseUrl', 'cameraBaseURL']; //存放的信息 var reserveParamValues = []; //获取参数信息 var len = reserveParams.length; for (let i = 0; i < len; i++) { var reserveParam = reserveParams[i]; var reserveParamValue = ''; if (localStorage.getItem(reserveParam) != undefined) { reserveParamValue = localStorage.getItem(reserveParam); } reserveParamValues.push(reserveParamValue); } //清理localStorage window.localStorage.clear(); //还原参数信息 for (let i = 0; i < len; i++) { localStorage.setItem(reserveParams[i], reserveParamValues[i]); } }, };