拖拽式仪表盘 - 布局模板文档
Dashboard Template
目录
注意
本文最后更新于 2023-12-08,文中内容可能已过时。
Dashboard
组件 1 是一个公共模板组件,用于快速创建 Dashboard 页面。
1 Basic Usage
每个模块的 dashboard 页面可继承
Dashboard
组件,如:1 2 3 4 5 6 7 8
<script> import Dashboard from '@/components/Dashboard' export default { name: 'Dashboard', extends: Dashboard, } </script>
使用
registerComponents
函数注册组件,通用组件模板中默认已导入,模块组件需要自行导入,如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<script> import Dashboard, { registerComponents } from '@/components/Dashboard' // 加载 widgets 目录下所有组件 const requireComponents = require.context('./widgets', true, /\.vue$/) const components = registerComponents(requireComponents) export default { name: 'Dashboard', extends: Dashboard, created() { // 加载组件列表 this.addComponents('组件分类', components) }, } </script>
设置默认布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<script> import Dashboard, { registerComponents } from '@/components/Dashboard' // ... export default { name: 'Dashboard', extends: Dashboard, data() { return { // 设置默认布局 defaultLayout: [ { i: 1, component: 'ExampleWidget', name: '便利贴', x: 0, y: 0, w: 8, h: 8, params: { content: 'hello world!' }}, // ... ], } }, // ... } </script>
完整例子详见
@/views/dashboard/index.vue
页面。
2 Export
registerComponents
(Function): 注册组件(widget.disabled 为 true 的组件不注册)- param
requireComponents
(Function): require.context 函数 - return (Array) 已注册的组件列表
- param
3 Provide
提供当前 dashboard 实例给后代组件注入,用于后代组件访问容器内的属性或方法。
$dashboard
(Object): 当前 dashboard 容器实例
4 Data Properties
componentsList
(Array): 组件列表 e.g. [{ category: ‘分类名称’, components: [组件列表] }]isCollapse
(Boolean): 是否折叠侧边栏colNum
(Number): 栅格列数rowHeight
(Number): 栅格行高gaps
(Array): 栅格间隙 [水平间隙,垂直间隙] e.g. [8, 8]dashboardGrid
(Element): 可接收拖放的栅格容器dashboardList
(Array): 仪表盘列表dashboard
(Object): 仪表盘数据id
(Number): 仪表盘 IDroute
(String): 路由名称name
(String): 仪表盘名称layout
(Array): 组件布局数据aside
(String): 侧边栏位置(left 或 right)compact
(Boolean): 是否垂直压缩布局isDefault
(Boolean): 是否默认布局
responsive
(Boolean): 是否响应式布局loading
(Boolean): 是否正在加载/保存布局数据defaultLayout
(Array): 默认布局组件数据hasEditPermission
(Boolean): 是否有编辑权限selectedCategory
(String): 已选中的组件分类menuCollapse
(Boolean): 是否折叠组件分类菜单
5 Computed Properties
selectedDashboardId
(Number): 已选中的仪表盘 IDcomponents
(Array): 所有已注册组件,用于 dashboard 布局中的组件渲染,包含hidden
为true
的组件componentsListAvailable
(Array): 过滤后的组件列表,用于组件列表显示,过滤hidden
为true
的组件,过滤组件列表为空的分类componentsByCategory
(Array): 根据 selectedCategory 获取对应的组件列表
6 Methods
6.1 notify(message, type = ‘success’)
dashboard 显示通知
参数 | 类型 | 说明 |
---|---|---|
message | String | 通知内容 |
type | String | 通知类型,可选值:success 、warning 、info 、error |
6.2 addComponents(category, components, isPrepend = false)
添加组件列表及分类
参数 | 类型 | 说明 |
---|---|---|
category | String | 组件分类 |
components | Array | 组件列表 |
isPrepend | Boolean | 是否追加到组件列表开头 |
6.3 selectCategory(category)
选中组件分类时显示对应的组件列表
参数 | 类型 | 说明 |
---|---|---|
category | String | 组件分类 |
6.4 switchDashboard(id)
切换仪表盘
参数 | 类型 | 说明 |
---|---|---|
id | Number/String | 仪表盘 ID 或者 ’new’ |
6.5 handleCommand(type)
处理仪表盘操作
参数 | 类型 | 说明 |
---|---|---|
type | String | 操作类型,可选值:copy 、edit 、delete |
6.6 guide()
打开新手引导
6.7 refreshAllItems()
刷新容器内所有组件的数据
6.8 clearLayout()
清空布局
6.9 idIncrement()
生成一个自增的 id,用于组件的唯一标识 i
6.10 sortItems()
对 layout 数据进行排序,按照 y 坐标从小到大,x 坐标从小到大的顺序
6.11 addItem(component, widget)
添加组件到 layout 中
参数 | 类型 | 说明 |
---|---|---|
component | String | 组件名称,对应组件的 name 属性 |
widget | Object | 组件配置对象,对应组件的 widget 属性 |
6.12 removeItem(i, save = true)
从 layout 中移除组件
参数 | 类型 | 说明 |
---|---|---|
i | String | 组件的唯一标识 |
save | Boolean | 是否立即保存布局数据 |
6.13 confirmRemoveItem(i)
用户删除组件双重确认
参数 | 类型 | 说明 |
---|---|---|
i | String | 组件的唯一标识 |
6.14 hasHook(component, hook)
判断组件是否有配置对应的 hook
参数 | 类型 | 说明 |
---|---|---|
component | String | 组件名称,对应组件的 name 属性 |
hook | String | 需要判断的 hook 名称 |
6.15 triggerHook(item, hook, args = [], save = false)
容器内的组件触发对应的 hook
参数 | 类型 | 说明 |
---|---|---|
item | Object | 组件实例数据,参考文档 |
hook | String | 需要触发的 hook 名称 |
args | Array | 传递给 hook 的其他参数 |
save | Boolean | 触发 hook 后是否立即保存布局数据 |
6.16 mouseInGrid(x, y)
判断鼠标是否在容器内
参数 | 类型 | 说明 |
---|---|---|
x | Number | 鼠标 x 坐标 |
y | Number | 鼠标 y 坐标 |
6.17 removeUnExistItems(fromLayout)
移除 layout 中不存在于所有已注册组件的组件
参数 | 类型 | 说明 |
---|---|---|
fromLayout | Object | layout 数据 |
6.18 dragStart(e)
开始拖动 组件/侧栏 时,设置拖动来源
参数 | 类型 | 说明 |
---|---|---|
e | Event | event |
6.19 dragEnd(e)
结束拖动 组件/侧栏 时,清空拖动来源
参数 | 类型 | 说明 |
---|---|---|
e | Event | event |
6.20 drag(component, widget, e)
拖动组件时,记录拖动的组件信息和显示拖动轨迹
参数 | 类型 | 说明 |
---|---|---|
component | String | 组件名称,对应组件的 name 属性 |
widget | Object | 组件配置对象,对应组件的 widget 属性 |
e | Event | event |
6.21 onDragoverDashboard(e)
拖动组件经过容器时,阻止默认事件
参数 | 类型 | 说明 |
---|---|---|
e | Event | event |
6.22 onDropDashboard(e)
拖动 组件/侧栏 放置到容器内时的拖放事件
参数 | 类型 | 说明 |
---|---|---|
e | Event | event |
6.23 getDashboard()
通过 route 获取 dashboard 数组(后端自动获取组织 ID)
6.24 saveDashboard()
保存 dashboard
6.25 addDashboard()
新增 dashboard
6.26 updateDashboard()
更新 dashboard
6.27 deleteDashboard()
删除 dashboard
7 Appendix A: Data Dictionary
仅供参考
字段名 | 字段类型 | 字段说明 |
---|---|---|
id | int | 仪表盘 ID |
route | varchar(150) | 仪表盘路由 |
layout | longtext | 仪表盘布局 |
organization_id | bigint | 组织 ID |
create_time | datetime | 创建时间 |
update_time | datetime | 更新时间 |
aside | varchar(15) | 侧栏位置 |
compact | varchar(5) | 压缩布局 |
name | varchar(250) | 仪表盘名称 |
|
|
8 Appendix B: API Reference
详见 dashboard.js
基于 Vue2 和 vue-grid-layout 开发的拖拽式 Dashboard 模板,查看源码。 ↩︎
相关内容
- 拖拽式仪表盘 - 功能需求分析
- 封装 Vue FullScreenToggler 组件
- 在 Vue 项目中更优雅地使用 icon
- 用魔法打败魔法 - ElBacktop Fix
- 使用 Node.js 自动创建 Vue 的路由
Buy me a coffee~
支付宝
微信