Skip to content

组件系统概览

欢迎使用我们的组件系统!这是一个基于 Vue 3 和 Element Plus 构建的企业级组件库,旨在帮助开发者快速构建高质量的管理后台和业务应用。

🎯 设计原则

  • 统一性 - 保持设计风格和交互模式的一致性
  • 高效性 - 开箱即用,减少重复开发工作
  • 可扩展 - 支持自定义配置和扩展功能
  • 易维护 - 清晰的 API 设计和完善的文档

📊 组件统计

分类组件数量描述
基础组件4+图标、标签等基础 UI 元素
表单组件12+各种表单输入控件和选择器
数据展示4+数据卡片、详情对话框等展示组件
反馈组件2+搜索表单、选择标签等交互组件
业务组件4+充值、媒体库等业务特定组件
布局组件2+页面背景、iframe 等布局组件

🗂️ 组件分类

🧱 基础组件

提供最基础的 UI 元素,是其他组件的构建基础。

组件名描述主要功能
Icon图标组件统一的图标展示,支持多种图标库
SvgIconSVG 图标SVG 格式图标的渲染和管理
DictTag字典标签将字典值转换为标签展示,支持地区、级联数据

使用场景:

  • 页面布局和导航
  • 状态标识和分类展示
  • 数据字典值的可视化

📝 表单组件

基于 Element Plus 封装的表单控件,提供更丰富的功能和更好的使用体验。

组件名描述特色功能
AForm表单容器统一的表单布局和验证
AFormCascader级联选择器支持多级数据选择
AFormCheckbox复选框组多选数据处理
AFormDate日期选择日期和时间范围选择
AFormEditor富文本编辑器内容编辑和格式化
AFormFileUpload文件上传支持多种文件格式上传
AFormImgUpload图片上传图片上传和预览
AFormInput输入框增强的文本输入
AFormRadio单选框组单选数据处理
AFormSelect选择器下拉选择和搜索
AFormSwitch开关布尔值控制
AFormTreeSelect树选择层级数据选择
IconSelect图标选择器图标选择和预览

使用场景:

  • 数据录入和编辑表单
  • 用户信息收集
  • 配置管理界面

📊 数据展示

专注于数据的展示和可视化,提供清晰的信息呈现。

组件名描述适用场景
ADataCard数据卡片关键指标展示,支持趋势对比
ADetailDialog详情对话框数据详情查看,支持分组展示
TableToolbar表格工具栏表格操作按钮和搜索功能
Pagination分页组件数据分页导航

使用场景:

  • 仪表板和数据看板
  • 列表数据的详情查看
  • 表格数据的操作和导航

🔄 反馈组件

处理用户交互和状态反馈的组件。

组件名描述核心功能
ASearchForm搜索表单带动画效果的搜索表单容器
ASelectionTags选择标签多选内容的标签化展示

使用场景:

  • 数据筛选和搜索
  • 多选结果的展示
  • 用户操作状态反馈

💼 业务组件

针对特定业务场景开发的高级组件。

组件名描述业务价值
AOssMediaManager媒体库管理OSS 媒体资源的上传、管理和选择
ARecharge充值组件在线充值功能,支持微信支付
AImportExcelExcel 导入Excel 文件的导入和数据处理
UserSelect用户选择器用户选择和搜索功能

使用场景:

  • 内容管理系统
  • 电商和支付场景
  • 用户管理系统
  • 数据导入导出

🎨 布局组件

控制页面布局和视觉效果的组件。

组件名描述设计目的
APageBackground页面背景统一的页面背景样式
EnhancedIFrame增强 iframe功能增强的 iframe 组件

使用场景:

  • 页面视觉效果
  • 第三方内容嵌入
  • 整体布局控制

🚀 快速开始

安装依赖

bash
# 安装基础依赖
npm install vue@^3.0.0 element-plus

# 安装可选依赖(按需安装)
npm install element-china-area-data  # 地区数据支持

基础使用

vue
<template>
  <div>
    <!-- 数据展示卡片 -->
    <ADataCard
      title="用户统计"
      icon-code="user"
      :data-list="[
        { label: '今日新增', value: '126', percent: 12.5 },
        { label: '昨日', value: '98', percent: -5.2 }
      ]"
    />

    <!-- 搜索表单 -->
    <ASearchForm v-model="searchParams" title="查询条件">
      <el-form-item label="用户名">
        <el-input v-model="searchParams.username" />
      </el-form-item>
    </ASearchForm>

    <!-- 详情对话框 -->
    <ADetailDialog
      v-model="showDetail"
      title="用户详情"
      :data="userInfo"
      :fields="[
        { prop: 'name', label: '姓名' },
        { prop: 'email', label: '邮箱' },
        { prop: 'phone', label: '手机号' }
      ]"
    />
  </div>
</template>

<script setup>
import { ref } from 'vue'

const searchParams = ref({})
const showDetail = ref(false)
const userInfo = ref({
  name: '张三',
  email: 'zhangsan@example.com',
  phone: '13800138000'
})
</script>

🎨 主题定制

组件系统支持深度主题定制,遵循 Element Plus 的设计规范:

css
/* 自定义主题色彩 */
:root {
  --el-color-primary: #409EFF;
  --el-color-success: #67C23A;
  --el-color-warning: #E6A23C;
  --el-color-danger: #F56C6C;
}

/* 暗色模式支持 */
.dark {
  --el-bg-color: #141414;
  --el-text-color-primary: #E5EAF3;
}

📱 响应式设计

部分布局类组件支持响应式设计,适配不同屏幕尺寸:

支持响应式的组件:

  • ADataCard - 支持自定义栅格布局配置
  • AOssMediaManager - 媒体文件网格自适应布局
vue
<!-- ADataCard 响应式配置示例 -->
<ADataCard
  :col-config="{
    xs: 24,  // <768px 全宽
    sm: 12,  // ≥768px 半宽
    md: 8,   // ≥992px 1/3宽
    lg: 6,   // ≥1200px 1/4宽
    xl: 4    // ≥1920px 1/6宽
  }"
/>

其他组件的响应式特性:

  • 大部分表单组件继承 Element Plus 的响应式特性
  • 对话框组件在移动端会自动调整宽度
  • 搜索表单支持 inline 模式切换

🔧 开发指南

组件开发规范

  1. 命名规范

    • 组件名使用 PascalCase:ADataCard
    • 文件名使用 PascalCase:ADataCard.vue
    • Props 使用 camelCase:showValue
  2. 类型定义

    typescript
    interface ComponentProps {
      /** 必填属性说明 */
      modelValue: string
      /** 可选属性说明,带默认值 */
      size?: 'small' | 'default' | 'large'
    }
  3. 插槽设计

    vue
    <!-- 具名插槽 -->
    <slot name="header" :data="data" />
    <!-- 作用域插槽 -->
    <slot name="item" :item="item" :index="index" />

最佳实践

  • 性能优化:使用 computedwatch 合理处理响应式数据
  • 错误处理:提供友好的错误提示和降级方案
  • 无障碍访问:遵循 ARIA 规范,支持键盘导航
  • 国际化支持:预留国际化接口,支持多语言

最后更新时间:2024年