GitBucket
4.6.0
Toggle navigation
Sign in
Files
Branches
1
Tags
Issues
Pull Requests
Labels
Milestones
Wiki
08335
/
hivui-platform-template
hivui平台项目模板
Browse code
@中文描述: 请求拼上根路径
@升级登记:1 @同步后端:0 @同步数据库:0 @同步配置:0 @向下兼容:1
master
1 parent
bc1cf2e
commit
21fd1baee376e08c5c40aeda879635a07110d316
hhb
authored
on 11 Sep 2023
Showing
3 changed files
project/hivuiBirt/funclib/AxiosUtil.js
project/hivuiBirt/funclib/LoadUtil.js
project/hivuiSam/funclib/LoadUtil.js
Ignore Space
Show notes
View
project/hivuiBirt/funclib/AxiosUtil.js
/** * 请求工具类,临时方案,待完善 * @author cls * @date 2021-01-30 */ import { baseURL, projectName, requestUrl } from '@birt/config' import Message from '../components/vue-m-message/index.js' import axios from 'axios'; import { getToken } from '@birt/utils/auth' var pn = projectName || 'birt' //请求状态码属性 const STATUS_KEY = "status"; //请求成功状态码 const STATUS_SUCCESS = 200; //超时 const STATUS_TIMEOUT = 418; // 检测登录超时 function checkTimeout(res) { if (res[STATUS_KEY] == STATUS_TIMEOUT) { // to re-login MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { confirmButtonText: 'Re-Login', cancelButtonText: 'Cancel', type: 'warning' }).then(() => { console.log("这里处理超时登录"); }) return true; } return false } debugger axios.baseURL = baseURL axios.interceptors.request.use( config => { // "3d3fe30c-3d99-41e8-9aea-addd8528aa07" // config.headers["Authorization"] = "bearer " + "b9e6a365-c551-4551-b258-c56e3acd0eed"; if (getToken()) { config.headers["Authorization"] = "bearer " + getToken(); } // else { // //没有token,跳转登录页 // if (window.HIVUI_SETTING.loginUrl) { // location = window.HIVUI_SETTING.loginUrl; // } else { // location = "/" + projectName + "/hivuiLogin/index.html#/"; // } // } if (!config.url.startsWith("/api") && config.url.indexOf(requestUrl) == -1) { config.url = requestUrl + config.url; } if (config.url.indexOf(pn) == -1) { if (config.url.indexOf('pn=birt') != -1) { var url = config.url.replace('birt', pn) console.log('url', url) config.url = url } else if (config.url.indexOf('pn=false') != -1) { var url = config.url.replace('false', pn) console.log('url', url) config.url = url } else { if (config.url.indexOf('?') == -1) { config.url += "?pn=" + pn; } else { config.url += "&pn=" + pn } } } if(window.hivuiBirt && window.hivuiBirt.user && window.hivuiBirt.user.fbzid){ let fbzid = window.hivuiBirt.user.fbzid; config.url += "&fbzid=" + fbzid }else if(localStorage.getItem("bzid")){ let fbzid = localStorage.getItem("bzid"); config.url += "&fbzid=" + fbzid } if(!config.url.startsWith(window.HIVUI_SETTING.url) && !config.url.includes('http')){ config.url = window.HIVUI_SETTING.url + config.url } return config }, error => { console.log(error) return Promise.reject(error) } ) axios.interceptors.response.use(function (response) { // 因返回mock数据包格式不统一,做兼容处理,枚举接口未返回status:200 var res = (response[STATUS_KEY] && response.dataPack) ? response : response.data; res = (res || response.dataPack) || response; let status = res[STATUS_KEY]; // 流程特殊添加options,流程批处理返回 let flowData = response.config && response.config.data; if (flowData && (typeof flowData == "string" && flowData.indexOf("__isIntercept") != -1) && JSON.parse(flowData).__isIntercept === false) { try { res.options = JSON.parse(response.config.data) } catch (e) { } } if (status && status != STATUS_SUCCESS && status != 207) { if (!checkTimeout(res)) { let msgType = "error"; if (res == 700) { msgType = "info"; } Message({ message: res.msg || 'error', type: msgType, duration: 5 * 1000 }) } return Promise.reject(res.msg || 'error') } else if (res[STATUS_KEY] == 401) { // Message({ // message: 'token失效', // type: 'error', // duration: 5 * 1000 // }) MessageBox.alert('你已被登出,请重新登录', '登录超时', { confirmButtonText: '重新登录', type: 'warning' }).then(() => { let loginUrl = window.HIVUI_SETTING.loginUrl if (window.HIVUI_SETTING.isSingleLogin) { loginUrl = window.HIVUI_SETTING.singleLoginUrl; } if (loginUrl.endsWith("=")) { let params = window.location.search.slice(1, -1).split("&").filter(item => { if (item.indexOf("ticket") == -1) { return item } }); loginUrl = loginUrl + window.location.origin + window.location.pathname + (params.length > 0 ? '?' : '') + params.join("&"); } window.location.href = loginUrl }) } else { return res } }, function (error) { const res = error.response.data; if (res[STATUS_KEY] == 401) { if(top&&top.window.SysPage&&top.window.SysPage.openMiniLogin){//小窗口 top.window.SysPage.openMiniLogin(); }else{ Message({ message: 'token失效', type: 'error', duration: 5 * 1000 }) } } else { if (!checkTimeout(res)) { Message({ showClose: true, message: res.msg || '未知错误', type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } } }); export default axios;
/** * 请求工具类,临时方案,待完善 * @author cls * @date 2021-01-30 */ import { baseURL, projectName, requestUrl } from '@birt/config' import Message from '../components/vue-m-message/index.js' import axios from 'axios'; import { getToken } from '@birt/utils/auth' var pn = projectName || 'birt' //请求状态码属性 const STATUS_KEY = "status"; //请求成功状态码 const STATUS_SUCCESS = 200; //超时 const STATUS_TIMEOUT = 418; // 检测登录超时 function checkTimeout(res) { if (res[STATUS_KEY] == STATUS_TIMEOUT) { // to re-login MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { confirmButtonText: 'Re-Login', cancelButtonText: 'Cancel', type: 'warning' }).then(() => { console.log("这里处理超时登录"); }) return true; } return false } debugger axios.baseURL = baseURL axios.interceptors.request.use( config => { // "3d3fe30c-3d99-41e8-9aea-addd8528aa07" // config.headers["Authorization"] = "bearer " + "b9e6a365-c551-4551-b258-c56e3acd0eed"; if (getToken()) { config.headers["Authorization"] = "bearer " + getToken(); } // else { // //没有token,跳转登录页 // if (window.HIVUI_SETTING.loginUrl) { // location = window.HIVUI_SETTING.loginUrl; // } else { // location = "/" + projectName + "/hivuiLogin/index.html#/"; // } // } if (!config.url.startsWith("/api") && config.url.indexOf(requestUrl) == -1) { config.url = requestUrl + config.url; } if (config.url.indexOf(pn) == -1) { if (config.url.indexOf('pn=birt') != -1) { var url = config.url.replace('birt', pn) console.log('url', url) config.url = url } else if (config.url.indexOf('pn=false') != -1) { var url = config.url.replace('false', pn) console.log('url', url) config.url = url } else { if (config.url.indexOf('?') == -1) { config.url += "?pn=" + pn; } else { config.url += "&pn=" + pn } } } if(window.hivuiBirt && window.hivuiBirt.user && window.hivuiBirt.user.fbzid){ let fbzid = window.hivuiBirt.user.fbzid; config.url += "&fbzid=" + fbzid }else if(localStorage.getItem("bzid")){ let fbzid = localStorage.getItem("bzid"); config.url += "&fbzid=" + fbzid } if(!config.url.startsWith(window.HIVUI_SETTING.serverUrl) && !config.url.includes('http')){ config.url = window.HIVUI_SETTING.serverUrl + config.url } return config }, error => { console.log(error) return Promise.reject(error) } ) axios.interceptors.response.use(function (response) { // 因返回mock数据包格式不统一,做兼容处理,枚举接口未返回status:200 var res = (response[STATUS_KEY] && response.dataPack) ? response : response.data; res = (res || response.dataPack) || response; let status = res[STATUS_KEY]; // 流程特殊添加options,流程批处理返回 let flowData = response.config && response.config.data; if (flowData && (typeof flowData == "string" && flowData.indexOf("__isIntercept") != -1) && JSON.parse(flowData).__isIntercept === false) { try { res.options = JSON.parse(response.config.data) } catch (e) { } } if (status && status != STATUS_SUCCESS && status != 207) { if (!checkTimeout(res)) { let msgType = "error"; if (res == 700) { msgType = "info"; } Message({ message: res.msg || 'error', type: msgType, duration: 5 * 1000 }) } return Promise.reject(res.msg || 'error') } else if (res[STATUS_KEY] == 401) { // Message({ // message: 'token失效', // type: 'error', // duration: 5 * 1000 // }) MessageBox.alert('你已被登出,请重新登录', '登录超时', { confirmButtonText: '重新登录', type: 'warning' }).then(() => { let loginUrl = window.HIVUI_SETTING.loginUrl if (window.HIVUI_SETTING.isSingleLogin) { loginUrl = window.HIVUI_SETTING.singleLoginUrl; } if (loginUrl.endsWith("=")) { let params = window.location.search.slice(1, -1).split("&").filter(item => { if (item.indexOf("ticket") == -1) { return item } }); loginUrl = loginUrl + window.location.origin + window.location.pathname + (params.length > 0 ? '?' : '') + params.join("&"); } window.location.href = loginUrl }) } else { return res } }, function (error) { const res = error.response.data; if (res[STATUS_KEY] == 401) { if(top&&top.window.SysPage&&top.window.SysPage.openMiniLogin){//小窗口 top.window.SysPage.openMiniLogin(); }else{ Message({ message: 'token失效', type: 'error', duration: 5 * 1000 }) } } else { if (!checkTimeout(res)) { Message({ showClose: true, message: res.msg || '未知错误', type: 'error', duration: 5 * 1000 }) return Promise.reject(error) } } }); export default axios;
Ignore Space
Show notes
View
project/hivuiBirt/funclib/LoadUtil.js
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ import Cookies from 'js-cookie' export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, loadCss(url) { let linkArr = document.getElementsByTagName("link"); let hasLoaded = false; for (let i = 0; i < linkArr.length; i++) { //判断当前css是否加载上 hasLoaded = (linkArr[i].href == url) ? true : false; } if (hasLoaded) { return; } let link = document.createElement('link') console.log('link==>', link) link.rel = 'stylesheet'; link.href = url; document.body.appendChild(link); }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}&locale=${Cookies.get("locale") || "zh-CN"}`; if(vId){ url += `&viewItemId=${vId}` } return window.HIVUI_SETTING.url + url; } };
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ import Cookies from 'js-cookie' export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, loadCss(url) { let linkArr = document.getElementsByTagName("link"); let hasLoaded = false; for (let i = 0; i < linkArr.length; i++) { //判断当前css是否加载上 hasLoaded = (linkArr[i].href == url) ? true : false; } if (hasLoaded) { return; } let link = document.createElement('link') console.log('link==>', link) link.rel = 'stylesheet'; link.href = url; document.body.appendChild(link); }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}&locale=${Cookies.get("locale") || "zh-CN"}`; if(vId){ url += `&viewItemId=${vId}` } return url; } };
Ignore Space
Show notes
View
project/hivuiSam/funclib/LoadUtil.js
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ import Cookies from 'js-cookie' export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, loadCss(url) { let linkArr = document.getElementsByTagName("link"); let hasLoaded = false; for (let i = 0; i < linkArr.length; i++) { //判断当前css是否加载上 hasLoaded = (linkArr[i].href == url) ? true : false; } if (hasLoaded) { return; } let link = document.createElement('link') console.log('link==>', link) link.rel = 'stylesheet'; link.href = url; document.body.appendChild(link); }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}&locale=${Cookies.get("locale") || "zh-CN"}`; if(vId){ url += `&viewItemId=${vId}` } return window.HIVUI_SETTING.url + url; } };
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ import Cookies from 'js-cookie' export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, loadCss(url) { let linkArr = document.getElementsByTagName("link"); let hasLoaded = false; for (let i = 0; i < linkArr.length; i++) { //判断当前css是否加载上 hasLoaded = (linkArr[i].href == url) ? true : false; } if (hasLoaded) { return; } let link = document.createElement('link') console.log('link==>', link) link.rel = 'stylesheet'; link.href = url; document.body.appendChild(link); }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}&locale=${Cookies.get("locale") || "zh-CN"}`; if(vId){ url += `&viewItemId=${vId}` } return url; } };
Show line notes below