组件系统概览
欢迎使用我们的组件系统!这是一个基于 Vue 3 和 Element Plus 构建的企业级组件库,旨在帮助开发者快速构建高质量的管理后台和业务应用。
🎯 设计原则
- 统一性 - 保持设计风格和交互模式的一致性
- 高效性 - 开箱即用,减少重复开发工作
- 可扩展 - 支持自定义配置和扩展功能
- 易维护 - 清晰的 API 设计和完善的文档
📊 组件统计
分类 | 组件数量 | 描述 |
---|---|---|
基础组件 | 4+ | 图标、标签等基础 UI 元素 |
表单组件 | 12+ | 各种表单输入控件和选择器 |
数据展示 | 4+ | 数据卡片、详情对话框等展示组件 |
反馈组件 | 2+ | 搜索表单、选择标签等交互组件 |
业务组件 | 4+ | 充值、媒体库等业务特定组件 |
布局组件 | 2+ | 页面背景、iframe 等布局组件 |
🗂️ 组件分类
🧱 基础组件
提供最基础的 UI 元素,是其他组件的构建基础。
组件名 | 描述 | 主要功能 |
---|---|---|
Icon | 图标组件 | 统一的图标展示,支持多种图标库 |
SvgIcon | SVG 图标 | 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 | 充值组件 | 在线充值功能,支持微信支付 |
AImportExcel | Excel 导入 | 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 模式切换
🔧 开发指南
组件开发规范
命名规范
- 组件名使用 PascalCase:
ADataCard
- 文件名使用 PascalCase:
ADataCard.vue
- Props 使用 camelCase:
showValue
- 组件名使用 PascalCase:
类型定义
typescriptinterface ComponentProps { /** 必填属性说明 */ modelValue: string /** 可选属性说明,带默认值 */ size?: 'small' | 'default' | 'large' }
插槽设计
vue<!-- 具名插槽 --> <slot name="header" :data="data" /> <!-- 作用域插槽 --> <slot name="item" :item="item" :index="index" />
最佳实践
- 性能优化:使用
computed
和watch
合理处理响应式数据 - 错误处理:提供友好的错误提示和降级方案
- 无障碍访问:遵循 ARIA 规范,支持键盘导航
- 国际化支持:预留国际化接口,支持多语言
最后更新时间:2024年