ContiNew
前端开发

组件库

介绍 src/components 下的 Gi 组件库与通用业务组件,说明各自适用场景与选用建议。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

src/components/ 下约 30 个组件目录,分两类:Gi 前缀的通用封装(表格、表单、布局件)和面向具体业务场景的组件(分片上传、行为验证、用户选择等)。组件经自动导入插件全局注册,页面里直接用,不需要 import。

GiTable 与 GiForm

列表页的标配组合是 GiForm(搜索区)+ GiTable(数据区),外层再套 GiPageLayout。

GiTable 在 Arco Table 之上加了工具栏(刷新、列显隐、密度、全屏)和内置分页,数据、列配置、加载态直接透传。典型用法如下。

<template>
  <GiTable
    row-key="id"
    :data="dataList"
    :columns="columns"
    :loading="loading"
    :pagination="pagination"
    :disabled-tools="['size']"
    :disabled-column-keys="['nickname']"
    @refresh="search"
  >
    <template #top>
      <GiForm v-model="queryForm" search :columns="queryFormColumns" @search="search" @reset="reset" />
    </template>
    <template #toolbar-left>
      <a-button v-permission="['system:user:create']" type="primary" @click="onAdd">新增</a-button>
    </template>
    <template #status="{ record }">
      <GiCellStatus :status="record.status" />
    </template>
  </GiTable>
</template>

disabled-tools 隐藏指定工具栏按钮,disabled-column-keys 锁定不允许隐藏的列,@refresh 绑定工具栏刷新按钮。数据获取一般配 useTable hook,它接管分页参数、加载态和删除后刷新。

GiForm 用 columns 配置驱动,每项声明 type(input / select / range-picker 等)、label、field、props,加 search 属性后变成内联搜索表单(带查询/重置按钮和折叠)。列配置里 span 支持响应式断点,例如 span: { xs: 24, sm: 8, xxl: 8 }。

import type { ColumnItem } from '@/components/GiForm'

const queryFormColumns: ColumnItem[] = [
  { type: 'input', label: '用户名', field: 'description', props: { placeholder: '用户名/昵称' } },
  { type: 'select', label: '状态', field: 'status', props: { options: statusList } },
]

单元格展示组件

GiCell 系列解决列表里高频的展示格式。

组件场景
GiCellAvatar头像 + 名称组合
GiCellGender性别图标
GiCellStatus启用/禁用状态点
GiCellTag单值字典标签(按字典项 extra 配色,见 字典使用)
GiCellTags多值标签列表

布局类组件

组件场景
GiPageLayout页面骨架,提供头部、左侧、内容区插槽,列表页的标准外壳
GiSplitPane / SplitPanel可拖拽分割的双栏(左树右表分栏实际用 GiPageLayout 的 #left 插槽实现,见用户管理页)
GiEditTable可编辑表格,单元格内嵌表单控件
GiFooter页脚(版权、备案号)
ParentView多级菜单的中间占位组件,动态路由 component 填 ParentView 时映射到它

业务组件

组件场景使用方示例
MultipartUpload大文件分片上传(对接后端 /system/multipart-upload)文件管理
FilePreview图片/音视频/PDF/Office 在线预览文件管理
Verify行为验证码(滑动拼图,对接 AJ-Captcha)登录页邮箱/手机登录
UserSelect用户选择器(按部门过滤、搜索、多选)公告指定用户、角色分配用户
GenCronCron 表达式生成器(页面以 CronModal 弹窗形式引用)任务管理新增弹窗
GiIconSelector图标选择器菜单管理
GiSvgIconSVG 图标渲染(配合菜单图标字段)布局菜单
GiThemeBtn主题切换按钮头部工具栏
GiIframe内嵌外部页面接口文档、更新日志页

其余小组件按需取用:Chart(ECharts 封装)、GiCodeView(代码高亮展示)、JsonPretty(JSON 美化)、TextCopy / CellCopy(点击复制)、GiDot(状态点)、GiSpace(间距)、DateRangePicker(日期范围)。

选用建议

新页面优先复用既有组合而不是重写:GiPageLayout + GiForm + GiTable 覆盖九成列表页;左树右表结构用 GiPageLayout 的 #left 插槽放树组件(参考用户管理页);详情展示用抽屉(a-drawer)而非新路由页,配合路由 meta.activeMenu 保持父菜单高亮。通用性足够的新组件放进 src/components/ 并按 Gi 前缀命名,一次性组件留在页面目录的 components/ 下(动态路由扫描会剔除页面内 components 目录,见 路由与页签)。

相关源码

目录