// 静态路由配置
// 书写格式与动态路由格式一致，全部经由框架统一转换
// 比较动态路由在meta中多加入了role角色权限，为数组类型。一个菜单是否有权限显示，取决于它以及后代菜单是否有权限。
// routes 显示在左侧菜单中的路由(显示顺序在动态路由之前)

const routes = []

export default {
	getRouteList: function (selectedRoutes, roles) {
		if (!selectedRoutes) {
			selectedRoutes = routes;
		}
		if (roles) {
			if (roles.length === 1 && roles[0] === 'admin') {
				return selectedRoutes;
			}
			else {
				var menu = [];
				//过滤
				selectedRoutes.forEach(route => {
					const tmp = { ...route }
					if (this.hasPermission(roles, tmp)) {
						if (tmp.children) {
							tmp.children = this.getRouteList(tmp.children, roles)
						}
						menu.push(tmp)
					}
				})
				return menu;

			}
		}
		else {
			return [];
		}
	},
	hasPermission: function (roles, route) {
		if (roles === null || roles === undefined || roles.length === 0) {
			return false
		}
		if (roles[0] === '') {
			return false
		}
		if (route.meta && route.meta.roles) {
			return roles.some(role => route.meta.roles.includes(role))
		} else {
			return true
		}
	}
};
