Skip to content

公共组件

概述

公共组件位于 src/components/ 目录,通过 unplugin-vue-components 自动注册,无需手动 import 即可在模板中使用。

SearchForm -- 可折叠搜索表单

内联搜索表单,当搜索条件超过指定数量时自动折叠,点击"展开"/"收起"切换显示。

Props

属性类型默认值说明
modelValueRecord<string, any>--搜索表单数据(v-model)
collapsiblebooleantrue是否支持折叠
showCountnumber3折叠时显示的表单项数量

事件

事件名说明
search点击搜索按钮
reset点击重置按钮

示例

vue
<SearchForm v-model="queryParams" @search="getLists" @reset="resetParams">
    <el-form-item label="用户名">
        <el-input v-model="queryParams.username" />
    </el-form-item>
    <el-form-item label="状态">
        <el-select v-model="queryParams.status">
            <el-option label="启用" :value="1" />
            <el-option label="禁用" :value="0" />
        </el-select>
    </el-form-item>
</SearchForm>

TableColumnSetting -- 表格列显隐切换

弹出面板,允许用户勾选/取消表格列的显示,支持全选和重置。

Props

属性类型说明
columnsColumnConfig[]列配置数组,包含 proplabel

示例

vue
<div class="toolbar">
    <TableColumnSetting :columns="columns" @change="handleColumnChange" />
</div>

ImportData -- 数据导入

支持 xlsx/xls/csv 格式的数据导入组件,内置模板下载、拖拽上传和导入结果展示。

Props

属性类型说明
templateUrlstring下载模板的 URL
importApiFunction执行导入的 API 函数

示例

vue
<ImportData
    template-url="/adminapi/admin/import-template"
    :import-api="adminApi.import"
/>

Region -- 地区级联选择器

基于 el-cascader 封装的地区选择器,支持二级(省/市)和三级(省/市/区)联动。

Props

属性类型默认值说明
modelValue(string | number)[][]选中的地区编码数组
level2 | 33级联层级
placeholderstring'请选择地区'占位文字
disabledbooleanfalse是否禁用

示例

vue
<Region v-model="formData.region" :level="3" />

DragSort -- 拖拽排序

基于原生 HTML5 Drag API 的拖拽排序组件,支持自定义列表项渲染。

Props

属性类型默认值说明
modelValueany[]--列表数据(v-model)
rowKeystring'id'列表项唯一键
showHandlebooleantrue是否显示拖拽手柄图标

示例

vue
<DragSort v-model="list" @change="handleSortChange">
    <template #default="{ item }">
        <span>{{ item.name }}</span>
    </template>
</DragSort>

Watermark -- 页面水印

在包裹区域上覆盖 Canvas 生成的文字水印层,常用于后台管理页面的信息安全保护。

Props

属性类型默认值说明
textstring''水印文字
fontSizenumber16字体大小
colorstring'rgba(0,0,0,0.08)'水印颜色
rotatenumber-22旋转角度
gapnumber100水印间距

示例

vue
<Watermark :text="userStore.getAdminName">
    <router-view />
</Watermark>

DetailDesc -- 详情描述列表

网格布局的详情展示组件,适用于数据详情页。

Props

属性类型默认值说明
titlestring--标题
columnnumber3每行列数
borderbooleantrue是否显示边框

示例

vue
<DetailDesc title="订单信息" :column="2">
    <DetailDescItem label="订单号">{{ order.order_no }}</DetailDescItem>
    <DetailDescItem label="创建时间">{{ order.created_at }}</DetailDescItem>
    <DetailDescItem label="状态"><StatusTag :status="order.status" /></DetailDescItem>
</DetailDesc>

StatusTag -- 状态标签

基于 el-tag 封装的状态展示组件,内置默认状态映射,支持自定义。

Props

属性类型默认值说明
statusnumber | string--状态值
mapRecord<string | number, StatusConfig>默认映射自定义状态映射
effect'dark' | 'light' | 'plain''light'标签样式
sizestring'default'标签尺寸

默认状态映射

标签文字标签类型
0禁用danger
1启用success
2待审核warning
3已驳回info

示例

vue
<!-- 使用默认映射 -->
<StatusTag :status="row.status" />

<!-- 自定义映射 -->
<StatusTag :status="row.pay_status" :map="{
    0: { label: '未支付', type: 'info' },
    1: { label: '已支付', type: 'success' },
    2: { label: '已退款', type: 'warning' }
}" />

基于 MIT 许可发布