# 🇨🇳实用组件
以下提到的所有实用组件除部分组件外其余均在src/components/common
目录下存放,文件名称与组件名称一致。
# AppLayout/全局页面布局组件
AppLayout是一个布局组件,规定了菜单、头部的位置,在Eva中,所有的页面都会被AppLayout包裹起来。你可以修改此组件以达到您需要的自定义样式。
<el-container class="app-layout">
<el-aside :class="{ collapse: menuData.collapse }">
<!-- 菜单 -->
<Menu/>
</el-aside>
<el-main>
<!-- 头部 -->
<header>
<AppHeader/>
</header>
<main>
<!-- 内容 -->
<transition name="fade">
<router-view></router-view>
</transition>
</main>
</el-main>
</el-container>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# TableLayout/列表页面布局组件
TableLayout也是一个布局组件,为了能够更好统一列表页面的内容和样式,所有的列表页面均通过该组件进行布局。你可以修改此组件以达到您需要的自定义样式。
<TableLayout>
<template #search-form>
<!-- 搜索表单内容 -->
</template>
<template #space>
<!-- 搜索表单与表格之间的内容,通常啥也没有 -->
</template>
<template #table-wrap>
<!-- 表格与分页 -->
</template>
<!-- 新建/编辑 -->
</TableLayout>
2
3
4
5
6
7
8
9
10
11
12
参数说明
参数 | 说明 |
---|---|
authorized | 是否已授权访问 |
fullscreen | 是否全屏 |
slots
参数 | 说明 |
---|---|
default | 默认插槽,用于存放新建/编辑DOM和其它内容处理的DOM对象 |
search-form | 搜索表单 |
space | 搜索表单与表格之间的区域 |
table-wrap | 表格区域,包含分页都应在此处理 |
# AttachUploader/文件上传
<AttachUploader v-model="value"/>
参数说明
参数 | 说明 |
---|---|
accept | 接受上传的文件类型,同el-uploader accept |
iconClass | 图标,默认'iconfont icon-file1' |
modelValue | 文件的fileKey |
filename | 文件名称,默认'文件已上传' |
# AvatarUploader/头像上传
<AvatarUploader v-model="value"/>
参数说明
参数 | 说明 |
---|---|
modelValue | 头像的fileKey |
# DictCheckboxGroup/字典复选框
<DictCheckboxGroup code="CODE" v-model="value"
参数说明
参数 | 说明 |
---|---|
code | 字典编码 |
disabled | 是否禁用,默认为false |
# DictRadioGroup/字典单选框
<DictRadioGroup code="CODE" v-model="value"/>
参数说明
参数 | 说明 |
---|---|
code | 字典编码 |
disabled | 是否禁用,默认为false |
# DictSelect/字典下拉框
<DictSelect code="CODE" v-model="value"/>
参数说明
参数 | 说明 |
---|---|
code | 字典编码 |
disabled | 是否禁用,默认为false |
placeholder | 未选中状态下的提示 |
inline | 是否设置为行元素,默认为true |
multiple | 是否可多选,默认为false |
clearable | 可否清空,默认false |
# EmptyTip/无内容提示
<EmptyTip description="这里空空如也"/>
参数说明
参数 | 说明 |
---|---|
imageSize | 同el-empty image-size,默认55 |
description | 同el-empty description,默认'暂无数据' |
插槽
slot名称 | 说明 |
---|---|
default | 可用于实现自定义内容,如添加按钮等 |
# FormItemTip/提示文本
<FormItemTip>权限标识符为全局唯一的字符串</FormItemTip>
参数说明
参数 | 说明 |
---|---|
withIcon | 是否包含图标,默认为true |
color | 字体颜色,默认'#a0721e' |
iconClass | 图标class,默认'Warning' |
插槽
slot名称 | 说明 |
---|---|
default | 图标后的内容 |
icon | 如有特殊图标(如svg),可采用该插槽处理 |
# GlobalWindow/全局窗口
新建/编辑/详情等页面中的子页面,都应该使用全局窗口来完成,让使用体验保持高度一致。
<GlobalWindow
width="80%"
:title="XXX"
v-model:visible="visible"
>
</GlobalWindow>
2
3
4
5
6
参数说明
参数 | 说明 |
---|---|
width | 宽度,单位可以是px,也可以是% |
withFooter | 是否包含底部操作 |
confirmWorking | 确认按钮loading状态 |
confirmText | 确认按钮文案 |
cancelText | 取消按钮文案 |
title | 窗口标题 |
visible | 是否展示 |
closeOnPressEscape | 按ESC是否关闭 |
wrapperClosable | 点击遮罩层是否关闭 |
# Icon/图标
<!-- 使用对象 -->
<Icon :data="{ accessType: 'CLASS', className: 'el-icon-refresh' }"/>
<!-- 使用网络路径 -->
<Icon icon-uri="http://www.baidu.com/images/logo.png"/>
<!-- 使用CLASS(可自动识别element plus图标) -->
<Icon icon-class="Warning"/>
2
3
4
5
6
7
8
参数说明
参数 | 说明 |
---|---|
data | Object类型,CLASS图标格式为:{ accessType: 'CLASS', className: 'el-icon-refresh' };网络图标格式为: { accessType: 'URI', iconUri: '/images/icon.png' } |
iconClass | 图标class |
iconUri | 图标网络路径 |
size | 尺寸,默认为'inherit' |
# IconSelect/图标选择器
<IconSelect v-model="iconId"/>
参数说明
参数 | 说明 |
---|---|
clearable | 是否可清除,默认为true |
# ImportButton/导入按钮
转为导入制作的组件,点击导入按钮后,自动弹出导入窗口,并根据参数自动完成导入和下载模版功能。
<ImportButton
text="导入部门"
template-name="部门.xlsx"
template-path="/template/department.xlsx"
action="/system/department/import"
@success="search"
/>
2
3
4
5
6
7
参数说明
参数 | 说明 |
---|---|
title | 导入窗口标题 |
templatePath | 模版地址,如模版文件存放为“后端工程/files/t.xlsx",则路径为"t.xlsx" |
templateName | 下载后的模版文件名称 |
action | 导入接口地址 |
# Light/光球
光球用于表示数据的紧急状态。
<!-- 正常状态灯 -->
<Light />
<!-- 警告状态灯 -->
<Light type="warning"/>
<!-- 危险状态灯 -->
<Light type="danger"/>
2
3
4
5
6
7
8
参数说明
参数 | 说明 |
---|---|
type | 默认“default”,可选"warning"和"danger" |
size | 可选small、default、large |
# Loading/加载效果
<DataLoading icon-size="30px">
加载中
</DataLoading>
2
3
参数说明
参数 | 说明 |
---|---|
icon-size | 加载中图标尺寸,默认20px |
# MenuSelect/菜单选择器
<MenuSelect placeholder="请选择菜单" v-model="menuId" :inline="false"/>
参数说明
参数 | 说明 |
---|---|
inline | Boolean,是否设置为行元素,默认为true |
append-to-body | 是否将下拉选项添加到body标签中 |
placeholder | 未选中状态下的提示 |
clearable | Boolean,可否清空,默认false |
excludeId | 需要被排除选中的菜单ID |
# Pagination/分页器
分页器用于实现列表分页功能,基于element-ui实现。内置的分页器是为了使得网页所有的分页保持一致而存在。所以,您应该尽可能的使用它来完成分页。
<pagination
:pagination="tableData.pagination"
@size-change="handleSizeChange"
@current-change="handlePageChange"
>
</pagination>
2
3
4
5
6
参数说明
参数 | 说明 |
---|---|
pagination | 分页对象,来自BaseTable.vue组件,详见分页-删除-批量删除的实现 |
@size-change | 当页容量发生变化时触发 |
@current-change | 当页码发生变化时触发 |
# PasswordInput/密码输入框
部门属性仅chrome内核和safari支持
通常密码框浏览器会自动装载密码,提交时会提示记住密码。但对于始终都不允许自动填充的密码框,例如2FA认证的密码,这就需要对密码框做进一步处理。这就是PasswordInput
的作用。
<PasswordInput v-model="password"/>
参数说明
参数 | 说明 |
---|---|
withShowPassword | 是否允许显示密码操作,默认为true |
withoutAutoFill | 不自动填充,仅chrome内核和safari支持,默认为true |
maxlength | 最大长度 |
# PopoverCellValue/长文本展示
当某一个有限的空间要展示很多内容时,您可以采用此组件来完成,可提高用户体验。你可以在线上演示 (opens new window)/操作日志模块预览效果。
<PopoverCellValue :content="content"/>
参数说明
参数 | 说明 |
---|---|
content | 内容 |
trigger | 触发方式,同el-popover trigger |
lineClamp | 展示行数限制,默认为2 |
analyse | Boolean,是否自动对内容进行分析,开启后将自动识别是否为JSON字符串(如果是则会格式化后展示)。默认为true |
withOpera | 是否包含操作按钮 |
# RichEditor/富文本编辑器
<RichEditor
v-model="content"
height="500px"
:editor-config="editorConfig"
/>
2
3
4
5
参数说明
参数 | 说明 |
---|---|
height | 编辑器高度,默认为null |
placeholder | 输入提示文案,默认为:'请输入' |
mode | 编辑器模式,默认为:'simple' |
toolbarConfig | 工具栏配置,详见https://www.wangeditor.com/v5/toolbar-config.html#toolbarkeys,默认为{} |
editorConfig | 编辑器配置,默认为{} |
# Scrollbar/滚动条
<Scrollbar>
<el-menu></el-menu>
</Scrollbar>
2
3
# SearchForm/搜索表单
<SearchForm
ref="searchForm"
:model="searchForm"
label-width="80px"
>
<el-form-item label="手机尾号" prop="mobile"></el-form-item>
<!-- 表单按钮 -->
<template #buttons>
<el-button>搜索</el-button>
</template>
</SearchForm>
2
3
4
5
6
7
8
9
10
11
参数说明
参数 | 说明 |
---|---|
model | 表单数据对象 |
labelWidth | 字段长度 |
collapse | 是否需要展开/收起,默认为false |
buttonWidth | 按钮占据的宽度 |
slots
参数 | 说明 |
---|---|
buttons | 表单按钮 |
# SearchTable/表格
<SearchTable
v-loading="isWorking.search"
:data="tableData.list"
:default-sort="{ prop: 'createdAt', order: 'descending' }"
:fullscreen.sync="fullscreen"
buttons-width="310px"
>
<template #toolbar>
<!-- 工具栏 -->
</template>
<!-- 表格 -->
<el-table-column></el-table-column>
<template #buttons>
<!-- 表格行操作 -->
</template>
</SearchTable>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数说明
参数 | 说明 |
---|---|
data | 同el-table data |
defaultSort | 同el-table default-sort |
defaultExpandAll | 同el-table default-expand-all |
rowKey | 同el-table row-key |
showOverflowTooltip | 同el-table show-overflow-tooltip,默认为false |
tooltipEffect | 同el-table tooltip-effect |
rowClassName | 同el-table row-class-name |
digestType | 同el-alert type |
fullscreen | 全屏标识,默认为false |
digest | 摘要信息,默认为false |
withRefresh | 是否包含刷新,默认为true |
withDensity | 是否包含密度,默认为true |
withFullscreen | 是否包含全屏,默认为true |
buttonsWidth | 按钮占据的宽度,默认为150px |
slots
参数 | 说明 |
---|---|
default | 默认插槽,用于存放表格 |
toolbar | 工具栏 |
digest | 摘要内容 |
buttons | 行操作按钮 |
# TagCellValue/单元格标签
<TagCellValue :data="row.roles" label-key="name"/>
参数说明
参数 | 说明 |
---|---|
data | Array,数据 |
labelKey | 标签key,将采用指定字段读取对象中的数据 |
tagStyle | 标签样式处理器,默认为() => { return { background: '#f5f7fa', color: '#555' } } |
# TreeSelect/树选择器
系统内置的岗位选择器、菜单选择器、部门选择器等都是通过树选择器来完成的,详情请查阅vue-treeselect组件 (opens new window)
# TwoFAWindow/2FA认证窗口
<TwoFAWindow ref="twoFAWindow"></TwoFAWindow>
参数说明
参数 | 说明 |
---|---|
title | 标题,默认'安全验证' |
message | 更多消息内容 |
confirmText | 确认按钮文案 |
cancelText | 取消按钮文案 |
width | 宽度,默认480px |
方法说明
方法名称 | 说明 |
---|---|
open | 打开窗口 |
confirm | 确定 |
cancel | 取消 |
close | 关闭窗口 |
# Value/值加载
有时候你可能希望某一个值存在加载效果,那么你可以使用此组件来实现。
<template>
<Value :data="data" prop="cpu.physicalCount"/>
</template>
<script>
export default {
data() {
return {
data: {
cpu: {
// 默认值一定为null值才会出现loading效果
physicalCount: null
}
}
}
}
}
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数说明
参数 | 说明 |
---|---|
data | 值归属对象 |
prop | 值属性 |
icon-size | 加载中图标尺寸,默认20px |
prefix | 前缀 |
suffix | 后缀 |
handler | 值处理函数,接收参数value |
# NotAllow/不允许访问
用于访问不允许访问的页面时做提示
<NotAllowed>
自定义内容,无自定义内容时采用默认内容展示
</NotAllowed>
2
3
# Profile/视图访问控制
视图访问控制组件用于控制用户是否有权限访问视图。
<Profile :authorized="authorized">
满足权限后展示,否则展示无权限视图。
</Profile>
2
3
参数说明
参数 | 说明 |
---|---|
authorized | 是否已授权访问 |
# DepartmentSelect/部门选择器
注:定制了部门管理
模块后才有此组件
<DepartmentSelect
placeholder="请选择上级部门"
v-model="deptId"
:inline="false"
/>
2
3
4
5
参数说明
参数 | 说明 |
---|---|
inline | Boolean,是否设置为行元素,默认为true |
append-to-body | 是否将下拉选项添加到body标签中 |
multiple | 是否可多选 |
placeholder | 未选中状态下的提示 |
clearable | Boolean,可否清空,默认false |
excludeId | 需要被排除选中的部门ID |