charles
2024-08-06 5ecb7958c96d3f0b6d47b79aff7eb306c2cf690f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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;
};