From a27825570e9c2d0053c634ecd081cd9871a31b49 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 12 Jun 2026 18:35:28 +0800
Subject: [PATCH] 1
---
src/router/index.js | 78 ++++++++++++++++++++++++++++++++++----
1 files changed, 69 insertions(+), 9 deletions(-)
diff --git a/src/router/index.js b/src/router/index.js
index cbfd7d4..fc969e8 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -42,7 +42,14 @@
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
{ path: '/home', component: _import('modules/user/user'), name: 'home', meta: { title: '首页' } },
{ path: '/prodInfo', component: _import('modules/prod/prodInfo'), name: 'prodInfo', meta: { title: '产品详情' } },
- { path: '/message', component: _import('message/index'), name: 'message', meta: { title: '产品详情' } }
+ { path: '/message', component: _import('message/index'), name: 'message', meta: { title: '产品详情' } },
+ // 美股交割合约单:固定路由,不依赖 tz_sys_menu 配置
+ {
+ path: '/us-spots-us-pickAddr',
+ component: _import('modules/us-spots/us-pickAddr'),
+ name: 'us-spots-us-pickAddr',
+ meta: { title: '交割合约单(US)', isTab: true, menuId: 1981 }
+ }
],
beforeEnter (to, from, next) {
let authorization = Vue.cookie.get('Authorization')
@@ -79,17 +86,14 @@
appType:1
},
)
- }).then(({ data }) => {
+ }).then(({ data }) => {
+ const menuList = pinFixedUsPickAddrMenu(data.menuList || [])
sessionStorage.setItem('authorities', JSON.stringify(data.authorities || '[]'))
- //sessionStorage.setItem('authorities', JSON.stringify(menu.authorities || '[]'))(本地模拟)
- //fnAddDynamicMenuRoutes(menu.menuList)(本地模拟)
- fnAddDynamicMenuRoutes(data.menuList)
+ fnAddDynamicMenuRoutes(menuList)
router.options.isAddDynamicMenuRoutes = true
- sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
- //sessionStorage.setItem('menuList', JSON.stringify(menu.menuList || '[]'))(本地模拟)
+ sessionStorage.setItem('menuList', JSON.stringify(menuList || '[]'))
//
- let menuList = data.menuList
// console.log("menuList = " + JSON.stringify(menuList));
let urls = []
for(let i = 0 ;menuList && i < menuList.length ; i++){
@@ -115,6 +119,58 @@
})
}
})
+
+/**
+ * 固定注入「交割合约单(US)」到左侧菜单(orderNum>23),不依赖数据库菜单配置
+ */
+function pinFixedUsPickAddrMenu (menuList) {
+ const url = 'us-spots/us-pickAddr'
+ if (menuTreeHasUrl(menuList, url)) {
+ return menuList
+ }
+ menuList.push({
+ menuId: 1981,
+ parentId: 0,
+ name: '交割合约单(US)',
+ url: url,
+ perms: '',
+ type: 1,
+ icon: 'sql',
+ orderNum: 24,
+ list: null,
+ appType: '1'
+ })
+ menuList.sort((a, b) => (a.orderNum || 0) - (b.orderNum || 0))
+ return menuList
+}
+
+function menuTreeHasUrl (list, url) {
+ if (!list || !list.length) {
+ return false
+ }
+ for (const node of list) {
+ if (node.url === url) {
+ return true
+ }
+ if (node.list && menuTreeHasUrl(node.list, url)) {
+ return true
+ }
+ }
+ return false
+}
+
+function ensureEssentialUsRoutes (routes) {
+ const name = 'us-spots-us-pickAddr'
+ if (routes.some((r) => r.name === name)) {
+ return
+ }
+ routes.push({
+ path: '/us-spots-us-pickAddr',
+ component: _import('modules/us-spots/us-pickAddr'),
+ name: name,
+ meta: { title: '交割合约单(US)', isTab: true, menuId: 1981, isDynamic: true, iframeUrl: '' }
+ })
+}
/**
* 判断当前路由类型, global: 全局路由, main: 主入口路由
@@ -174,8 +230,12 @@
if (temp.length >= 1) {
fnAddDynamicMenuRoutes(temp, routes)
} else {
+ ensureEssentialUsRoutes(routes)
+ const fixedChildren = mainRoutes.children.filter((r) => r.meta && !r.meta.isDynamic)
mainRoutes.name = 'main-dynamic'
- mainRoutes.children = routes
+ mainRoutes.children = fixedChildren.concat(
+ routes.filter((r) => !fixedChildren.some((f) => f.name === r.name))
+ )
router.addRoutes([
mainRoutes,
{ path: '*', redirect: { name: '404' } }
--
Gitblit v1.9.3