/* * @Author : yuan * @Date : 2025-09-28 09:31:16 * @LastEditors : yuan * @LastEditTime : 2025-09-28 09:55:05 * @FilePath : \src\router\index.js * @Description : * Copyright 2025 OBKoro1, All Rights Reserved. * 2025-09-28 09:31:16 */ import pagesJson from "@/pages.json" // 路径常量 export const HOME_PATH = "/pages/map/index" export const LOGIN_PATH = "/pages/login/index" export const ERROR404_PATH = "/pages/common/404/index" /** * 解析路由地址 * @param {object} pagesJson * @returns [{"path": "/pages/tab/map/index","needLogin": false},...] */ function parseRoutes (pagesJson = {}) { if (!pagesJson.pages) { pagesJson.pages = [] } if (!pagesJson.subPackages) { pagesJson.subPackages = [] } function parsePages (pages = [], rootPath = "") { const routes = [] for (let i = 0; i < pages.length; i++) { routes.push({ path: rootPath ? `/${rootPath}/${pages[i].path}` : `/${pages[i].path}`, needLogin: pages[i].needLogin === true }) } return routes } function parseSubPackages (subPackages = []) { const routes = [] for (let i = 0; i < subPackages.length; i++) { routes.push(...parsePages(subPackages[i].pages, subPackages[i].root)) } return routes } return [ ...parsePages(pagesJson.pages), ...parseSubPackages(pagesJson.subPackages) ] } export const routes = parseRoutes(pagesJson) /** * 当前路由 * @returns {string} 当前路由 */ export function currentRoute () { // getCurrentPages() 至少有1个元素,所以不再额外判断 const pages = getCurrentPages() const currentPage = pages[pages.length - 1] return currentPage?.$page?.fullPath || currentPage.route } /** * 去除查询字符串 * @param {string} path * @returns {string} 去除查询字符串后的路径 */ export function removeQueryString (path = "") { return path.split("?")[0] } /** * 路径是否存在 * @param {string} path * @returns {boolean} 路径是否存在 */ export function isPathExists (path = "") { const cleanPath = removeQueryString(path) return routes.some(item => item.path === cleanPath) } /** * 是否是tabbar页面路径 * @param {string} path * @returns {boolean} 是否是tabbar页面 */ export function isTabBarPath (path = "") { const cleanPath = removeQueryString(path) return ( pagesJson.tabBar?.list?.some(item => `/${item.pagePath}` === cleanPath) === true ) }