sss
This commit is contained in:
77
server/api/power-station/chart-data.get.ts
Normal file
77
server/api/power-station/chart-data.get.ts
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/**
|
||||||
|
* 获取电站节点图表数据API
|
||||||
|
* 根据节点ID和图表类型获取应力或温度历史数据
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
try {
|
||||||
|
const query = getQuery(event)
|
||||||
|
|
||||||
|
// 获取必需参数
|
||||||
|
const nodeId = query.nodeId as string
|
||||||
|
const chartType = query.type as 'stress' | 'temp'
|
||||||
|
|
||||||
|
if (!nodeId) {
|
||||||
|
throw createError({
|
||||||
|
statusCode: 400,
|
||||||
|
statusMessage: '缺少必要参数: nodeId',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!chartType || !['stress', 'temp'].includes(chartType)) {
|
||||||
|
throw createError({
|
||||||
|
statusCode: 400,
|
||||||
|
statusMessage: '缺少必要参数: type (必须为 stress 或 temp)',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 模拟数据生成(基于数据库结构)
|
||||||
|
// 实际项目中这里应该连接真实数据库查询
|
||||||
|
const dates = []
|
||||||
|
const values = []
|
||||||
|
const now = new Date()
|
||||||
|
|
||||||
|
// 生成最近30天的数据
|
||||||
|
for (let i = 0; i < 30; i++) {
|
||||||
|
const date = new Date(now.getTime() - (29 - i) * 24 * 60 * 60 * 1000)
|
||||||
|
dates.push(date.toISOString().split('T')[0])
|
||||||
|
|
||||||
|
if (chartType === 'stress') {
|
||||||
|
// 应力数据:100-150 MPa,模拟真实应力变化
|
||||||
|
const baseStress = 120 + Math.sin(i * 0.2) * 10
|
||||||
|
const randomVariation = (Math.random() - 0.5) * 20
|
||||||
|
values.push(Math.round((baseStress + randomVariation) * 10) / 10)
|
||||||
|
} else {
|
||||||
|
// 温度数据:560-580°C,模拟真实温度变化
|
||||||
|
const baseTemp = 570 + Math.sin(i * 0.15) * 5
|
||||||
|
const randomVariation = (Math.random() - 0.5) * 10
|
||||||
|
values.push(Math.round((baseTemp + randomVariation) * 10) / 10)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回图表数据
|
||||||
|
const result = {
|
||||||
|
dates,
|
||||||
|
values,
|
||||||
|
unit: chartType === 'stress' ? 'MPa' : '°C',
|
||||||
|
name: chartType === 'stress' ? '历史应力 (Stress)' : '历史温度 (Temp)',
|
||||||
|
nodeId,
|
||||||
|
chartType,
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: result,
|
||||||
|
message: '成功获取图表数据',
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取图表数据失败:', error)
|
||||||
|
|
||||||
|
throw createError({
|
||||||
|
statusCode: error.statusCode || 500,
|
||||||
|
statusMessage: error.message || '获取图表数据失败',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
42
server/api/power-station/properties.get.ts
Normal file
42
server/api/power-station/properties.get.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
export default defineEventHandler(async event => {
|
||||||
|
const query = getQuery(event)
|
||||||
|
const nodeId = query.nodeId as string
|
||||||
|
|
||||||
|
if (!nodeId) {
|
||||||
|
throw createError({
|
||||||
|
statusCode: 400,
|
||||||
|
statusMessage: 'Node ID is required',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 模拟属性数据
|
||||||
|
const mockProperties = {
|
||||||
|
basic: [
|
||||||
|
{ label: '节点ID', value: nodeId },
|
||||||
|
{ label: '节点名称', value: nodeId.split('~').pop() },
|
||||||
|
{ label: '节点类型', value: '设备' },
|
||||||
|
{ label: '所属系统', value: '主系统' },
|
||||||
|
],
|
||||||
|
technical: [
|
||||||
|
{ label: '设计压力', value: '16.5 MPa', unit: 'MPa' },
|
||||||
|
{ label: '设计温度', value: '545', unit: '°C' },
|
||||||
|
{ label: '材料', value: 'SA-516 Gr.70' },
|
||||||
|
{ label: '厚度', value: '25', unit: 'mm' },
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{ label: '运行状态', value: '正常运行', status: 'success' },
|
||||||
|
{ label: '健康度', value: '95%', status: 'success' },
|
||||||
|
{ label: '维护状态', value: '正常', status: 'success' },
|
||||||
|
{ label: '报警状态', value: '无报警', status: 'success' },
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
return mockProperties
|
||||||
|
} catch (error) {
|
||||||
|
throw createError({
|
||||||
|
statusCode: 500,
|
||||||
|
statusMessage: 'Failed to fetch properties data',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user