Skip to content

PageContainer 内容页容器 ​

用于详情页或列表页的最外层,统一提供面包屑、返回入口、页面标题、右侧操作区和主内容区。业务列表页推荐与 ProPage 组合。

引入 ​

ts
import { createApp } from 'vue'
import { PageContainer } from '@szhn/dh-design-pc'

const app = createApp({})
app.use(PageContainer)

基础用法 ​

文档预览未挂载业务路由,下面的示例手动传入面包屑。真实项目中建议使用默认的自动面包屑。

自动面包屑和标题 ​

breadcrumb 默认为 auto,会按 vue-router 的当前匹配路由生成面包屑;页面标题默认取当前路由的 meta.title。为每层路由配好 meta.title 后,页面中无需再传 title 或 breadcrumb。

ts
const routes = [
  {
    path: '/ledger',
    component: () => import('./LedgerLayout.vue'),
    meta: { title: '台账管理' },
    children: [
      {
        path: 'detail',
        component: () => import('./LedgerDetail.vue'),
        meta: { title: '明细数据台账' },
      },
    ],
  },
]
vue
<template>
  <dh-page-container>
    <div>页面内容</div>
  </dh-page-container>
</template>

设置 meta.hideInBreadcrumb: true 或 meta.hideChildrenInMenu: true 可隐藏对应的面包屑节点。手动传入时,数据格式为 [{ title: '台账管理', path: '/ledger' }, { title: '明细数据台账' }]。

与 ProPage 组合 ​

筛选表格页标准结构:外层 PageContainer,内层 ProPage。

隐藏面包屑 / 返回 ​

布局顶栏已有面包屑时,可关闭内容区路径;无返回场景可关 showBack。

vue
<dh-page-container :show-breadcrumb="false" :show-back="false" title="仅标题">
  <dh-pro-page ... />
</dh-page-container>

自定义页头 ​

extra 插槽用于页头右侧操作。点击返回时会先触发 back 事件,然后执行默认返回。

vue
<dh-page-container title="数据详情" @back="recordBack">
  <template #extra>
    <el-button type="primary">编辑</el-button>
  </template>
  <detail-content />
</dh-page-container>

API ​

Props ​

属性名说明类型默认值
title页头标题;未传时依次取当前路由 meta.title 和最后一个面包屑标题string—
show-back是否显示返回入口booleantrue
show-breadcrumb是否显示面包屑区域booleantrue
breadcrumb自动生成、隐藏或手动传入面包屑'auto' | false | PcPageBreadcrumbItem[]'auto'
breadcrumb-variant面包屑样式'text' | 'filled''filled'
breadcrumb-separator面包屑分隔符string'>'
title-resolver标题文案转换函数,可用于处理多语言 key(titleOrKey: string) => string—

PcPageBreadcrumbItem 包含必填的 title 和可选的 path。除了通过 title-resolver 单独传入,也可在应用入口统一配置:

ts
import { pageContainerTitleResolverKey } from '@szhn/dh-design-pc'

app.provide(pageContainerTitleResolverKey, key => i18n.global.t(key))

Events ​

事件名说明回调参数
back点击返回时触发,随后默认执行路由返回—

Slots ​

插槽名说明
default主内容(通常为 ProPage)
extra页头右侧操作
title自定义标题
breadcrumb完全自定义面包屑区域

Expose ​

名称说明
breadcrumbItems当前面包屑数据
resolvedTitle当前页头标题
buildBreadcrumbFromRoute()按当前路由重新生成面包屑数据

业务页推荐写法 ​

vue
<template>
  <dh-page-container>
    <dh-pro-page :columns="columns" :request="request" />
  </dh-page-container>
</template>

路由:

ts
meta: { title: '明细数据台账' }

禁止在业务页传入 ['业务台账管理', '台账分类管理', ...] 字符串数组作为默认路径。