import router from '@/router'; export const getPortFromUrl=(url) =>{ try { const portPattern = /:\d+/; const urlObj = new URL(url); const portMatch = portPattern.exec(urlObj.host)[0].slice(1); // 去掉冒号 return parseInt(portMatch, 10); // 转换为整数 } catch (error) { console.error(error.message); return null; } }; export const doHostName=(hostname)=>{ /* if(hostname.includes('localhost')){ return hostname; }*/ return hostname.substring(hostname.indexOf(".")+1); }; export const getApsPage = () => { // 首页部署在各个环境的端口 /* const loginPathMap = { prod:`//${window.location.hostname}:9080`, test:`//192.168.20.119:9080`, // 想跳到本地启动的登录页的话需要把dev改成你本地项目路径 dev: `//192.168.8.112:8080` };*/ //return loginPathMap[environmentType()] let port=getPortFromUrl(window.location.href);//获得端口号 let hostname=window.location.hostname;// 一级域名 if(hostname.includes('fai365.com')||hostname.includes('smartai.com')||hostname.includes('navicat.com')) {// 代表存在域名 hostname='aps.'+doHostName(hostname); } if(hostname.includes('localhost')){ port=process.env.VUE_APP_APS_PORT;//端口号与 .env.development 中 VUE_APP_APS_PORT 跟本地aps项目的端口号保持一致 } if(router.mode==='history'){ if(port){ return `${hostname}:${port}`; }else{ return `${hostname}`; } }else{ if(port){ return `${hostname}:${port}`+'/#'; }else{ return `${hostname}`+'/#'; } } }; /** * @param dataList 原列表数据 * @param childFieldName 子级属性名称 * @param pIdFieldName 关联上级节点属性名称 * @param idFieldName 节点属性名称 * @param rootValue 根节点的值(一般是小于等于0数) * */ export const getTreeData=(dataList,childFieldName='children',pIdFieldName='parentId',idFieldName = 'id',rootValue=0)=>{ const rootArr=[]; //1.先获取根节点列表 dataList.forEach(item=>{ if(item[pIdFieldName]===rootValue){//是根节点 //1.1 递归获取根节点的所有下级节点 const children= getChildrenNode(item[idFieldName],dataList); if(Array.isArray(children)&&children.length>0){ item[childFieldName]=children; } rootArr.push(item) } }); //2.递归获取根节点的所有下级节点 function getChildrenNode(parentId,dataList) { //1.根据根节点获取 子节点列表 const childrenArr=dataList.filter(item=>parentId===item[pIdFieldName]); //2.孩子有可能还有孩子 遍历孩子进行重新递归 childrenArr.forEach(item=>{ const children=getChildrenNode(item[idFieldName],dataList); if(children.length>0){ item[childFieldName]=children; } }); return childrenArr; } return rootArr; };