Skip to content

导航到 Calendar 视图时未激活正确视图类型(viewName 被忽略) #893

@hotlong

Description

@hotlong

问题复现

  • 在 CRM 应用(或类似场景)侧边栏点击 "Calendar" 菜单。
  • 实际展示的是表格列表视图(grid),而不是 calendar。

代码根因

  • CRM app 的 navigation 配置项如下:
    {
      id: 'nav_events',
      type: 'object',
      objectName: 'event',
      viewName: 'calendar', // 已正确配置,期望打开 calendar 视图
      label: { key: 'crm.navigation.calendar', defaultValue: 'Calendar' },
      icon: 'calendar'
    }
  • Event 对象的 listViews 也已正确定义 calendar 类型:
    listViews: {
      calendar: { type: 'calendar', ...calendarConfig }, ... }
    }
  • 但 platform 的 NavigationRenderer/resolveHref 函数忽略了 viewName,只生成为 /apps/crm_app/event,未带上 /view/calendar
    case 'object':
      return { href: `${basePath}/${item.objectName ?? ''}`, external: false };
  • 导致 ObjectView fallback 到 grid 视图。

影响

  • 不能通过导航直接打开 calendar/kanban 等特定视图,只会显示默认 grid 视图。
  • "Calendar"、"Pipeline"等菜单都会丢失视图参数,严重影响多视图体验。

修复建议

  1. NavigationItem 类型添加 viewName 属性。
  2. NavigationRenderer.resolveHref 中,如果 item.viewName 存在,URL 应拼接 /view/${item.viewName},如 /apps/crm_app/event/view/calendar

参考案例

  • examples/crm/src/apps/crm.app.ts
  • examples/crm/src/views/event.view.ts
  • packages/layout/src/NavigationRenderer.tsx

截图

复现截图

本问题属于平台 bug,请尽快修复。

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions