08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiMain / store / modules / app.js
import { getMenus, getQuickNav,getLeastRecentlyUsed,getPermissions } from '../../api/menu'
const portal = {
    namespaced: true,
    state: {
        powerList:[],
        menusList:[],
        menus:[],
        defTabs: [],
        navs: [],
        latelyNavs:[],
        config:window.__sysConfig
    },
    mutations: {
        SET_powerList: (state, powerList) => {
            state.powerList = powerList
        },
        SET_menusList: (state, menusList) => {
            state.menusList = menusList
        },
        SET_menus: (state, menus) => {
            state.menus = menus
        },
        SET_defTabs: (state, data) => {
            state.defTabs = data
        },
        SET_navs: (state, navs) => {
            state.navs = navs
        },
        SET_latelyNavs: (state, latelyNavs) => {
            state.latelyNavs = latelyNavs
        },
    },
    actions: {
        //取功能菜单
        async getMenus({ commit, state }) {
            await getMenus().then(res => {
                const data = res.dataPack;
                commit('SET_menusList', [...data]);
                console.log(`SET_menusList:`,data);
                let treeData=[...data],defTabs=[];
                getActiveItem(treeData);
                /*获取默认打开项*/
                function getActiveItem(_arr){
                    for(let item of _arr){
                        _arr.map(item=>{
                            //构建 树 map
                            if(item.children&&item.children.length>0){
                                getActiveItem(item.children);
                            }
                            for(let i = (state.defTabs||[]).length-1;i>=0;i--){
                                if(state.defTabs[i].fresguid!=item.fresguid){
                                    defTabs.push(item);
                                    break;
                                }
                            }
                        });
                    }
                }
                commit('SET_defTabs', [...defTabs,...state.defTabs]);
                console.info('menusTree:',treeData);
                commit('SET_menus', treeData);
                return data;
            });
        },
        //取左侧快速
        async getQuickNav({ commit, state }) {
            await getQuickNav().then(res => {
                const data = res.data.dataPack.rows;
                console.log(`getQuickNav`)
                let defTabs=[],flag=false;
                data.map(item=>{ 
                    flag=false;
                    for(let i = state.defTabs.length-1;i>=0;i--){
                        if(state.defTabs[i].resId==item.resId){
                            flag = true;
                            break;
                        }
                    }
                    if(item.isActive&&!flag) defTabs.push(item);
                });   
                commit('SET_defTabs', [...defTabs,...state.defTabs]);
                commit('SET_navs', data);
                return data;
            });
        },
        setQuickNav({ commit, state },data){
            commit('SET_navs', data);
        },
        async getLatelyUse({ commit, state }){
            let me =this;
            await getLeastRecentlyUsed(me.state.user.id).then(res => {
                const data = res.data.dataPack.rows;
                commit('SET_latelyNavs', data);
                return data;
            });
        },
        //取功能权限
        async getPowers({ commit, state }) {
            await getPermissions(this.state.user.id).then(res => {
                const data = res.data.dataPack.rows;
                commit('SET_powerList', [...data]);  
            });
        },
    }
}

export default portal