|
@@ -43,6 +43,8 @@ export function getLabBasicStats() {
|
|
|
export function getSafetyLevelStats() {
|
|
export function getSafetyLevelStats() {
|
|
|
return mockDelay({
|
|
return mockDelay({
|
|
|
departments: [
|
|
departments: [
|
|
|
|
|
+ { name: '安全技术\n研究所', total: 11, level1: 3, level2: 3, level3: 3, level4: 2 },
|
|
|
|
|
+ { name: '职业安全\n研究所', total: 9, level1: 2, level2: 3, level3: 2, level4: 2 },
|
|
|
{ name: '化学品安全\n研究所', total: 12, level1: 3, level2: 4, level3: 3, level4: 2 },
|
|
{ name: '化学品安全\n研究所', total: 12, level1: 3, level2: 4, level3: 3, level4: 2 },
|
|
|
{ name: '矿山安全\n研究所', total: 10, level1: 2, level2: 3, level3: 3, level4: 2 },
|
|
{ name: '矿山安全\n研究所', total: 10, level1: 2, level2: 3, level3: 3, level4: 2 },
|
|
|
{ name: '应急科学\n研究中心', total: 14, level1: 4, level2: 4, level3: 3, level4: 3 },
|
|
{ name: '应急科学\n研究中心', total: 14, level1: 4, level2: 4, level3: 3, level4: 3 },
|
|
@@ -96,12 +98,12 @@ export function getRiskWarningList() {
|
|
|
return mockDelay({
|
|
return mockDelay({
|
|
|
totalMonth: 12,
|
|
totalMonth: 12,
|
|
|
list: [
|
|
list: [
|
|
|
- { id: 1, lab: '高温高压实验室C102(C102)', dept: '矿山安全研究所', type: '温度', value: '35.6°C', time: '2026-03-04 14:28:05' },
|
|
|
|
|
- { id: 2, lab: '气体分析实验室A305(A305)', dept: '职业安全研究所', type: 'CO₂', value: '1050ppm', time: '2026-03-04 13:55:42' },
|
|
|
|
|
- { id: 3, lab: '气体分析实验室A304(A304)', dept: '职业安全研究所', type: 'CO₂', value: '1051ppm', time: '2026-03-04 13:55:41' },
|
|
|
|
|
- { id: 4, lab: '粉尘检测实验室B101(B101)', dept: '矿山安全研究所', type: 'O₂', value: '18.2%', time: '2026-03-04 13:20:10' },
|
|
|
|
|
- { id: 5, lab: '有机化学实验室A103(A103)', dept: '化学品安全研究所', type: 'TVOC', value: '2.1mg/m³', time: '2026-03-04 12:45:30' },
|
|
|
|
|
- { id: 6, lab: '电气安全实验室C201(C201)', dept: '安全技术研究所', type: '湿度', value: '85%', time: '2026-03-04 11:30:15' }
|
|
|
|
|
|
|
+ { id: 1, lab: '高温高压实验室C102(C102)', dept: '矿山安全研究所', type: '温度', value: '35.6°C', time: '2026-03-04 14:28:05', state: 'pending' },
|
|
|
|
|
+ { id: 2, lab: '气体分析实验室A305(A305)', dept: '职业安全研究所', type: 'CO₂', value: '1050ppm', time: '2026-03-04 13:55:42', state: 'processing' },
|
|
|
|
|
+ { id: 3, lab: '气体分析实验室A304(A304)', dept: '职业安全研究所', type: 'CO₂', value: '1051ppm', time: '2026-03-04 13:55:41', state: 'pending' },
|
|
|
|
|
+ { id: 4, lab: '粉尘检测实验室B101(B101)', dept: '矿山安全研究所', type: 'O₂', value: '18.2%', time: '2026-03-04 13:20:10', state: 'processing' },
|
|
|
|
|
+ { id: 5, lab: '有机化学实验室A103(A103)', dept: '化学品安全研究所', type: 'TVOC', value: '2.1mg/m³', time: '2026-03-04 12:45:30', state: 'resolved' },
|
|
|
|
|
+ { id: 6, lab: '电气安全实验室C201(C201)', dept: '安全技术研究所', type: '湿度', value: '85%', time: '2026-03-04 11:30:15', state: 'resolved' }
|
|
|
]
|
|
]
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -125,13 +127,13 @@ export function getDeviceStats() {
|
|
|
export function getEquipmentStats() {
|
|
export function getEquipmentStats() {
|
|
|
return mockDelay({
|
|
return mockDelay({
|
|
|
categories: [
|
|
categories: [
|
|
|
- { name: '分析仪器', value: 120, color: '#2196f3' },
|
|
|
|
|
- { name: '安全防护', value: 95, color: '#00e5ff' },
|
|
|
|
|
- { name: '化学试剂设备', value: 80, color: '#4caf50' },
|
|
|
|
|
- { name: '电气设备', value: 75, color: '#ff9800' },
|
|
|
|
|
- { name: '力学测试', value: 86, color: '#f44336' },
|
|
|
|
|
- { name: '环境监测', value: 72, color: '#9c27b0' },
|
|
|
|
|
- { name: '通用设备', value: 58, color: '#e91e63' }
|
|
|
|
|
|
|
+ { name: '分析仪器', value: 120, color: '#48d7ff' },
|
|
|
|
|
+ { name: '安全防护', value: 95, color: '#3a7bff' },
|
|
|
|
|
+ { name: '化学试剂设备', value: 80, color: '#36d399' },
|
|
|
|
|
+ { name: '电气设备', value: 75, color: '#ffb020' },
|
|
|
|
|
+ { name: '力学测试', value: 86, color: '#ff8c00' },
|
|
|
|
|
+ { name: '环境监测', value: 72, color: '#ff4d4f' },
|
|
|
|
|
+ { name: '通用设备', value: 58, color: '#a78bfa' }
|
|
|
],
|
|
],
|
|
|
summary: {
|
|
summary: {
|
|
|
totalDevices: 586,
|
|
totalDevices: 586,
|
|
@@ -162,35 +164,55 @@ export function getBuildingTree() {
|
|
|
tree: [
|
|
tree: [
|
|
|
{
|
|
{
|
|
|
id: 1,
|
|
id: 1,
|
|
|
- label: '安科院三期',
|
|
|
|
|
|
|
+ label: '安科院院区',
|
|
|
children: [
|
|
children: [
|
|
|
{
|
|
{
|
|
|
id: 11,
|
|
id: 11,
|
|
|
- label: '主楼',
|
|
|
|
|
|
|
+ label: '科研楼A',
|
|
|
children: [
|
|
children: [
|
|
|
- { id: 111, label: '一层', children: [
|
|
|
|
|
- { id: 1111, label: '大厅' },
|
|
|
|
|
- { id: 1112, label: '会议室' }
|
|
|
|
|
|
|
+ { id: 111, label: '1层', children: [
|
|
|
|
|
+ { id: 1111, label: 'A101 化学实验室' },
|
|
|
|
|
+ { id: 1112, label: 'A102 有机合成实验室' },
|
|
|
|
|
+ { id: 1113, label: 'A103 有机化学实验室' }
|
|
|
]},
|
|
]},
|
|
|
- { id: 112, label: '二层', children: [
|
|
|
|
|
- { id: 1121, label: '化学分析实验室' },
|
|
|
|
|
- { id: 1122, label: '有机合成实验室' }
|
|
|
|
|
|
|
+ { id: 112, label: '2层', children: [
|
|
|
|
|
+ { id: 1121, label: 'A201 材料分析实验室' },
|
|
|
|
|
+ { id: 1122, label: 'A202 生物安全实验室' }
|
|
|
]},
|
|
]},
|
|
|
- { id: 113, label: '三层', children: [
|
|
|
|
|
- { id: 1131, label: '微生物实验室' },
|
|
|
|
|
- { id: 1132, label: '材料测试实验室' }
|
|
|
|
|
|
|
+ { id: 113, label: '3层', children: [
|
|
|
|
|
+ { id: 1131, label: 'A301 气体分析实验室' },
|
|
|
|
|
+ { id: 1132, label: 'A305 气体检测实验室' }
|
|
|
|
|
+ ]},
|
|
|
|
|
+ { id: 114, label: '4层', children: [
|
|
|
|
|
+ { id: 1141, label: 'A401 热分析实验室' }
|
|
|
]}
|
|
]}
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
id: 12,
|
|
id: 12,
|
|
|
- label: '副楼',
|
|
|
|
|
|
|
+ label: '科研楼B',
|
|
|
|
|
+ children: [
|
|
|
|
|
+ { id: 121, label: '1层', children: [
|
|
|
|
|
+ { id: 1211, label: 'B101 粉尘检测实验室' }
|
|
|
|
|
+ ]},
|
|
|
|
|
+ { id: 122, label: '2层', children: [
|
|
|
|
|
+ { id: 1221, label: 'B203 材料力学实验室' },
|
|
|
|
|
+ { id: 1222, label: 'B205 无损检测实验室' }
|
|
|
|
|
+ ]}
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 13,
|
|
|
|
|
+ label: '科研楼C',
|
|
|
children: [
|
|
children: [
|
|
|
- { id: 121, label: '一层', children: [
|
|
|
|
|
- { id: 1211, label: '环境监测实验室' }
|
|
|
|
|
|
|
+ { id: 131, label: '1层', children: [
|
|
|
|
|
+ { id: 1311, label: 'C102 高温高压实验室' }
|
|
|
|
|
+ ]},
|
|
|
|
|
+ { id: 132, label: '2层', children: [
|
|
|
|
|
+ { id: 1321, label: 'C201 电气安全实验室' }
|
|
|
]},
|
|
]},
|
|
|
- { id: 122, label: '二层', children: [
|
|
|
|
|
- { id: 1221, label: '辐射防护实验室' }
|
|
|
|
|
|
|
+ { id: 133, label: '3层', children: [
|
|
|
|
|
+ { id: 1331, label: 'C301 防爆测试实验室' }
|
|
|
]}
|
|
]}
|
|
|
]
|
|
]
|
|
|
}
|
|
}
|
|
@@ -202,18 +224,32 @@ export function getBuildingTree() {
|
|
|
|
|
|
|
|
// 视频列表
|
|
// 视频列表
|
|
|
export function getVideoList(params = {}) {
|
|
export function getVideoList(params = {}) {
|
|
|
- const videos = []
|
|
|
|
|
- for (let i = 1; i <= 9; i++) {
|
|
|
|
|
- videos.push({
|
|
|
|
|
- id: i,
|
|
|
|
|
- name: `监控点位 ${i}`,
|
|
|
|
|
- url: '',
|
|
|
|
|
- status: 'online'
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const allVideos = [
|
|
|
|
|
+ { id: 1, name: 'A101 化学实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 2, name: 'A103 有机化学实验室', ai: true, status: 'online' },
|
|
|
|
|
+ { id: 3, name: 'A202 生物安全实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 4, name: 'A305 气体检测实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 5, name: 'A401 热分析实验室', ai: true, status: 'online' },
|
|
|
|
|
+ { id: 6, name: 'B101 粉尘检测实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 7, name: 'B203 材料力学实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 8, name: 'B205 无损检测实验室', ai: false, status: 'offline' },
|
|
|
|
|
+ { id: 9, name: 'C102 高温高压实验室', ai: true, status: 'online' },
|
|
|
|
|
+ { id: 10, name: 'C201 电气安全实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 11, name: 'C301 防爆测试实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 12, name: 'A102 有机合成实验室', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 13, name: 'A201 材料分析实验室', ai: false, status: 'offline' },
|
|
|
|
|
+ { id: 14, name: 'A301 气体分析实验室', ai: true, status: 'online' },
|
|
|
|
|
+ { id: 15, name: '园区东门', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 16, name: '园区西门', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 17, name: '停车场', ai: false, status: 'online' },
|
|
|
|
|
+ { id: 18, name: '走廊通道A3F', ai: false, status: 'online' }
|
|
|
|
|
+ ]
|
|
|
|
|
+ const page = params.page || 1
|
|
|
|
|
+ const start = (page - 1) * 9
|
|
|
|
|
+ const list = allVideos.slice(start, start + 9)
|
|
|
return mockDelay({
|
|
return mockDelay({
|
|
|
- total: 20,
|
|
|
|
|
- page: params.page || 1,
|
|
|
|
|
- list: videos
|
|
|
|
|
|
|
+ total: allVideos.length,
|
|
|
|
|
+ page,
|
|
|
|
|
+ list
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|