fix: 按轨迹新手指引模式补齐订单/渠道指引菜单与路由映射
generate-menu-excel、vite dev SPA 白名单、top-nav path 映射与 locale 区分同名「新手指引」。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
2f230d3761
commit
b87301e89d
@ -304,6 +304,17 @@ const menuData = [
|
||||
hideInMenu: false,
|
||||
},
|
||||
// 二级菜单 - 订单
|
||||
{
|
||||
level: 2,
|
||||
name: '新手指引',
|
||||
permissionCode: 'Order',
|
||||
route: '/order/guide',
|
||||
component: 'views/order/orderGuide/index',
|
||||
icon: 'icon-book',
|
||||
order: 0,
|
||||
hideInMenu: false,
|
||||
parentRoute: '/order',
|
||||
},
|
||||
{
|
||||
level: 2,
|
||||
name: '我要查价',
|
||||
@ -361,6 +372,17 @@ const menuData = [
|
||||
hideInMenu: false,
|
||||
},
|
||||
// 二级菜单 - 渠道
|
||||
{
|
||||
level: 2,
|
||||
name: '新手指引',
|
||||
permissionCode: 'Channel',
|
||||
route: '/channel/guide',
|
||||
component: 'views/channel/channelGuide/index',
|
||||
icon: 'icon-book',
|
||||
order: 0,
|
||||
hideInMenu: false,
|
||||
parentRoute: '/channel',
|
||||
},
|
||||
{
|
||||
level: 2,
|
||||
name: '销售产品',
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<component :is="getSubMenuIcon(menuItem, item, menuNameToLocaleKeyMap)" />
|
||||
</span>
|
||||
<span class="child-menu-item__text">
|
||||
{{ formatMenuTitle(menuItem.name || menuItem.meta?.title) }}
|
||||
{{ formatMenuTitle(menuItem.name || menuItem.meta?.title, menuItem.path || menuItem.route) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -169,7 +169,7 @@ import {
|
||||
useHiprintClientState,
|
||||
} from '@/utils/hiprint/hiprintClientState';
|
||||
import { getMapIdFromAccessToken } from '@/utils/jwt';
|
||||
import { getSubMenuIcon } from '@/utils/menu-icon';
|
||||
import { getSubMenuIcon, PATH_TO_LOCALE_KEY } from '@/utils/menu-icon';
|
||||
import { canAccessCustomerPortalRoute } from '@/utils/login-portal';
|
||||
import { resolveCurrentCustomer } from '@/api/customer/resolve';
|
||||
import { CUSTOMER_BALANCE_CHANGED_EVENT } from '@/api/customer/accountFlow';
|
||||
@ -405,6 +405,9 @@ const belongTopMenu = computed(() => {
|
||||
return '';
|
||||
});
|
||||
|
||||
// 路径 → locale(同名菜单如「新手指引」须按 path 区分)
|
||||
const pathToLocaleKeyMap = PATH_TO_LOCALE_KEY;
|
||||
|
||||
// 中文菜单名称到 locale key 的映射表
|
||||
const menuNameToLocaleKeyMap: Record<string, string> = {
|
||||
'首页': 'menu.home',
|
||||
@ -483,8 +486,12 @@ const menuNameToLocaleKeyMap: Record<string, string> = {
|
||||
};
|
||||
|
||||
// 格式化菜单标题
|
||||
const formatMenuTitle = (title?: string) => {
|
||||
const formatMenuTitle = (title?: string, path?: string) => {
|
||||
if (!title) return '';
|
||||
const routePath = path?.trim();
|
||||
if (routePath && pathToLocaleKeyMap[routePath]) {
|
||||
return t(pathToLocaleKeyMap[routePath]) || title;
|
||||
}
|
||||
// 如果是 locale key,直接翻译
|
||||
if (title.startsWith('menu.')) {
|
||||
return t(title) || title;
|
||||
@ -576,7 +583,14 @@ const pathToRouteNameMap: Record<string, string> = {
|
||||
'/channel/weightRounding': 'WeightRounding',
|
||||
'/channel/autoTrigger': 'AutoTrigger',
|
||||
'/channel/issueTemplate': 'IssueTemplate',
|
||||
'/channel/guide': 'ChannelGuide',
|
||||
'/order/guide': 'OrderGuide',
|
||||
'/order/priceCheck': 'PriceCheck',
|
||||
'/order/placeOrder': 'PlaceOrder',
|
||||
'/order/myOrders': 'MyOrders',
|
||||
'/order/batchJobs': 'OrderBatchJobs',
|
||||
// Track 相关路由
|
||||
'/track/guide': 'TrackGuide',
|
||||
'/track/order': 'TrackOrder',
|
||||
'/track/warningOrder': 'TrackWarningOrder',
|
||||
'/track/state': 'TrackState',
|
||||
|
||||
@ -104,6 +104,13 @@ export function resolveArcoIcon(icon?: string | null): Component | null {
|
||||
return (Icons as Record<string, Component>)[pascal] ?? null
|
||||
}
|
||||
|
||||
/** 同名菜单(如「新手指引」)按 path 区分 locale */
|
||||
export const PATH_TO_LOCALE_KEY: Record<string, string> = {
|
||||
'/track/guide': 'menu.track.trackGuide',
|
||||
'/order/guide': 'menu.order.orderGuide',
|
||||
'/channel/guide': 'menu.channel.channelGuide',
|
||||
}
|
||||
|
||||
type MenuIconItem = {
|
||||
name?: string
|
||||
path?: string
|
||||
@ -118,6 +125,10 @@ function resolveLocaleKey(
|
||||
menuItem: MenuIconItem,
|
||||
nameToLocaleKeyMap?: Record<string, string>,
|
||||
): string | undefined {
|
||||
const routePath = (menuItem.path || menuItem.route || '').trim()
|
||||
if (routePath && PATH_TO_LOCALE_KEY[routePath]) {
|
||||
return PATH_TO_LOCALE_KEY[routePath]
|
||||
}
|
||||
const title = menuItem.name || menuItem.meta?.title || ''
|
||||
if (!title) return undefined
|
||||
if (title.startsWith('menu.')) return title
|
||||
|
||||
@ -258,7 +258,9 @@ export default defineConfig(({ mode }) => {
|
||||
'/channel/autoTrigger',
|
||||
'/channel/issueTemplate',
|
||||
'/channel/labelDesign',
|
||||
'/channel/guide',
|
||||
// Order 相关前端路由
|
||||
'/order/guide',
|
||||
'/order/priceCheck',
|
||||
'/order/placeOrder',
|
||||
'/order/myOrders',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user