💻 业务&数据结构
## 目录
- 功能:`重命名`,`切换`,`新增`,`删除`
- <span style="color:#ff0000">默认目录,不可删除</span>
- 数据结构设计:
```javascript
tableInfo: {
//表格表头
tableCols: [
{ field: "name", title: '目录', show: true, disable: true, type: 'slot' },
],
tableDataList: [
{
id: 1,
name: "默认面板目录",
is_default: 1,
is_del: false
},
{
id: 2,
name: "xxx目录",
is_default: -1,
is_del: false
}
],
handle: {
fixed: false,
show: true,
label: this.$t('action.operate'),
width: "240",
btList: [
{
label: '切换',
className: "btn-span",
event: "tab",
show: true,
slot: true, //设置按钮的插槽 true标识按钮使用插槽
},
{
label: '重命名',
className: "btn-span",
event: "rename",
show: true,
slot: true,
},
{
label: '删除',
event: "del",
show: true,
slot: true,
}
],
},
//分页
showPage: false
},
```
## 面板
>w ◆ 一个目录下,删除,新增且不超过10个。
◆ 一个面板由多个小部件(card),以卡片的形式呈现。
◆ 数据结构:
```javascript
activeName: '1', // 当前面板id
catalogueId: '1', // 当前目录id
catalogueEdit: '', // 聚焦面板id,隐藏其他面板,放vuex
catalogueMap: { // 目录数据集合缓存
1: [{ // 面板
title: "主面板",
id: '1',
data:[] //小部件数据 },
{
title: "个人面板",
id: '2'
}]
}
```
## 小部件
- 数据结构:
```javascript
cardData: [ // 卡片数据
{
id: '1',
widget_type: "alarm_stats", // 组件类型
is_hide: true, // 隐藏与否
title: '告警统计',
x: 1, 比例
y: 2,
put_away: false, // 是否收起
sort: 1,
data: { // 主要数据
range_url: '/monitor/api/v1/alarm/realtime/alarm/trend/7',
alarm_stat: '/monitor/api/v1/call/alarm/realtime/stats'
}
},
{
id: '11',
widget_type: "fixed_group",
is_hide: false,
title: '分组1',
x: 1,
y: 6,
put_away: false // 是否收起
},
{
id: '2',
widget_type: "resource_monitor",
is_hide: false,
title: '资源监控',
x: 1,
y: 3,
put_away: false,
data: {
params: [
{
key: "device_type",
itmes: [
{
value: "",
text: "全部设备类型",
},
{
value: "compute",
text: "计算节点",
}]
},
{
key: "cpu_instruction_set",
itmes: [
{
value: "",
text: "全部CPU架构",
},
{
value: "X86",
text: "X86",
},
{
value: "ARM",
text: "ARM",
}]
},
],
url: "/monitor/api/v1/mon/overview/resource",
pie_charts: [
{
title: "总物理CPU",
total: 1000,
used: 10,
unit: "核"
},
{
title: "总超分物理CPU",
total: 1000,
used: 10,
unit: "核"
},
{
title: "总内存",
total: 1000,
used: 10,
unit: "B"
},
{
title: "总超分内存",
total: 1000,
used: 10,
unit: "B"
},
{
title: "总裸磁盘空间",
total: 1000,
used: 10,
unit: "B"
}
]
}
}]
```
## 编辑小部件
三部分组成
>w ◆ 左:小部件列表(编辑小部件时,隐藏)
◆ 中:小部件视图
◆ 右:小部件配置(编辑小部件时,回显数据)
<span style="color:#ff0000">根据不同的小部件类型,展示不同的小部件视图,渲染不同的配置</span>
#### 其左:
```javascript
input: '', // 搜索小部件
type: '', // 选中的小部件类型
localList: [{
name: '自定义小部件',
id: '1',
children: [
{
id: '11',
type: 'diy_chart',
name: "自定义图表"
},
{
id: '12',
type: 'top_sort',
name: "自定义TOP排序"
}
]
},
{
name: '分组框',
id: '2',
children: [
{
id: '21',
type: 'default_group',
name: "默认组"
},
{
id: '22',
type: 'key_group',
name: "重点组"
}
]
}],
```
#### 其中:
暂无,未确定视图数据来源;
#### 其右:
`小部件配置`:
```javascript
form: { // 数据集合,包含动态表单的数据选中值,用作表单提交
name: '',
...
},
monitorObj: { // 监控对象 (通用配置,若无,数据内容,数据范围均不展示)
val: '',
data: []
},
monitorIndex: { // 监控指标(依赖监控对象)
val: '',
data: []
},
monitorForm: [ // 数据内容(依赖监控对象,监控指标)
{
id: '1',
type: 'select',
data: [{
label: '最大值',
value: '12'
},
{
label: '最小值',
value: '13'
}],
val: '13',
name: '统计方式'
},
{
id: '2',
type: 'input',
val: '',
name: '统计方式2'
}
],
monitorRange: [], // 数据范围(依赖监控对象,监控指标)
```