|
|
|
|
@ -5,17 +5,17 @@
|
|
|
|
|
<el-page-header :content="pageTitle" @back="goBack" />
|
|
|
|
|
|
|
|
|
|
<el-descriptions class="device-info" :column="5" border>
|
|
|
|
|
<el-descriptions-item label="设备名称">{{ deviceData.name }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item label="设备编码">{{ deviceData.code }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item :label="t('DataCollection.HistoryData.analysisDeviceName')">{{ deviceData.name }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item :label="t('DataCollection.HistoryData.analysisDeviceCode')">{{ deviceData.code }}</el-descriptions-item>
|
|
|
|
|
<!-- <el-descriptions-item label="设备类型">{{ deviceData.type }}</el-descriptions-item>-->
|
|
|
|
|
<el-descriptions-item label="所属产线">{{ deviceData.productionLine }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item label="最新采集时间">{{ deviceData.lastCollectTime }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item :label="t('DataCollection.HistoryData.analysisProductionLine')">{{ deviceData.productionLine }}</el-descriptions-item>
|
|
|
|
|
<el-descriptions-item :label="t('DataCollection.HistoryData.analysisLatestCollectionTime')">{{ deviceData.lastCollectTime }}</el-descriptions-item>
|
|
|
|
|
</el-descriptions>
|
|
|
|
|
|
|
|
|
|
<div class="action-buttons">
|
|
|
|
|
<el-button type="primary" @click="handleSaveAnalysis">
|
|
|
|
|
<Icon icon="ep:document-checked" />
|
|
|
|
|
保存分析方案
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisSaveButton') }}
|
|
|
|
|
</el-button>
|
|
|
|
|
<!-- <el-button @click="handleExport">
|
|
|
|
|
<Icon icon="ep:download" />
|
|
|
|
|
@ -23,7 +23,7 @@
|
|
|
|
|
</el-button>-->
|
|
|
|
|
<el-button @click="handleRefresh">
|
|
|
|
|
<Icon icon="ep:refresh" />
|
|
|
|
|
刷新
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisRefreshButton') }}
|
|
|
|
|
</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
@ -32,7 +32,7 @@
|
|
|
|
|
<el-card class="filter-card" shadow="never">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<span class="card-title">分析条件</span>
|
|
|
|
|
<span class="card-title">{{ t('DataCollection.HistoryData.analysisConditionTitle') }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
@ -56,11 +56,11 @@
|
|
|
|
|
<el-form ref="queryFormRef" :model="queryParams" label-width="100px">
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="开始时间">
|
|
|
|
|
<el-form-item :label="t('DataCollection.HistoryData.analysisStartTimeLabel')">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="queryParams.startTime"
|
|
|
|
|
type="datetime"
|
|
|
|
|
placeholder="选择开始时间"
|
|
|
|
|
:placeholder="t('DataCollection.HistoryData.analysisStartTimePlaceholder')"
|
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
@ -70,11 +70,11 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="结束时间">
|
|
|
|
|
<el-form-item :label="t('DataCollection.HistoryData.analysisEndTimeLabel')">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="queryParams.endTime"
|
|
|
|
|
type="datetime"
|
|
|
|
|
placeholder="选择结束时间"
|
|
|
|
|
:placeholder="t('DataCollection.HistoryData.analysisEndTimePlaceholder')"
|
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
@ -96,18 +96,18 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
<el-form-item label="点位选择">
|
|
|
|
|
<el-form-item :label="t('DataCollection.HistoryData.analysisPointSelectionLabel')">
|
|
|
|
|
<div class="point-selector-card">
|
|
|
|
|
<div class="selector-header">
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="pointKeyword"
|
|
|
|
|
placeholder="搜索点位名称或编码"
|
|
|
|
|
:placeholder="t('DataCollection.HistoryData.analysisPointSearchPlaceholder')"
|
|
|
|
|
clearable
|
|
|
|
|
style="width: 200px; margin-right: 10px"
|
|
|
|
|
@input="handlePointSearch"
|
|
|
|
|
/>
|
|
|
|
|
<el-button @click="selectAllTemperature">选择工艺参数</el-button>
|
|
|
|
|
<el-button @click="clearAllPoints">清空</el-button>
|
|
|
|
|
<el-button @click="selectAllTemperature">{{ t('DataCollection.HistoryData.analysisSelectProcessPoints') }}</el-button>
|
|
|
|
|
<el-button @click="clearAllPoints">{{ t('DataCollection.HistoryData.analysisClearPoints') }}</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="selected-tags">
|
|
|
|
|
@ -120,7 +120,7 @@
|
|
|
|
|
{{ point.name }}
|
|
|
|
|
</el-tag>
|
|
|
|
|
<span v-if="selectedPoints.length === 0" style="color: #98a2b3">
|
|
|
|
|
未选择点位
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisNoPointSelected') }}
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
@ -162,11 +162,11 @@
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" @click="handleAnalyze">
|
|
|
|
|
<Icon icon="ep:search" />
|
|
|
|
|
开始分析
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisStartButton') }}
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button @click="resetQuery">
|
|
|
|
|
<Icon icon="ep:refresh" />
|
|
|
|
|
重置条件
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisResetButton') }}
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
@ -189,7 +189,7 @@
|
|
|
|
|
<el-card class="chart-card" shadow="never">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<span class="card-title">多点位历史趋势分析</span>
|
|
|
|
|
<span class="card-title">{{ t('DataCollection.HistoryData.analysisTrendTitle') }}</span>
|
|
|
|
|
<div class="chart-toolbar">
|
|
|
|
|
<el-radio-group v-model="chartMode" size="small">
|
|
|
|
|
<!-- <el-radio-button label="all">全部显示</el-radio-button>-->
|
|
|
|
|
@ -221,33 +221,33 @@
|
|
|
|
|
<el-card class="result-card" shadow="never" style="width: 44%; margin-right: 0.6%; display: inline-block; vertical-align: top;">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<span class="card-title">分析结果</span>
|
|
|
|
|
<span class="card-title">{{ t('DataCollection.HistoryData.analysisResultTitle') }}</span>
|
|
|
|
|
<span style="color: #667085; font-size: 13px">
|
|
|
|
|
按点位聚合统计,异常结果已高亮
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisResultTip') }}
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<el-table :data="resultData" style="width: 100%">
|
|
|
|
|
<el-table-column prop="name" label="点位名称" width="120" />
|
|
|
|
|
<el-table-column prop="code" label="点位编码" width="140" />
|
|
|
|
|
<el-table-column prop="unit" label="单位" width="70" />
|
|
|
|
|
<el-table-column prop="max" label="最大值" width="110">
|
|
|
|
|
<el-table-column prop="name" :label="t('DataCollection.HistoryData.analysisPointNameColumn')" width="120" />
|
|
|
|
|
<el-table-column prop="code" :label="t('DataCollection.HistoryData.analysisPointCodeColumn')" width="140" />
|
|
|
|
|
<el-table-column prop="unit" :label="t('DataCollection.HistoryData.analysisUnitColumn')" width="70" />
|
|
|
|
|
<el-table-column prop="max" :label="t('DataCollection.HistoryData.analysisMaxColumn')" width="110">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
<span :class="row.maxClass">{{ formatValue(row.max, row.unit) }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="min" label="最小值" width="110">
|
|
|
|
|
<el-table-column prop="min" :label="t('DataCollection.HistoryData.analysisMinColumn')" width="110">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
<span :class="row.minClass">{{ formatValue(row.min, row.unit) }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="avg" label="平均值" width="110">
|
|
|
|
|
<el-table-column prop="avg" :label="t('DataCollection.HistoryData.analysisAvgColumn')" width="110">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
{{ formatValue(row.avg, row.unit) }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="range" label="波动值" width="110">
|
|
|
|
|
<el-table-column prop="range" :label="t('DataCollection.HistoryData.analysisRangeColumn')" width="110">
|
|
|
|
|
<template #default="{ row }">
|
|
|
|
|
<span :class="row.rangeClass">{{ formatValue(row.range, row.unit) }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
@ -285,15 +285,15 @@
|
|
|
|
|
<el-card class="detail-card" shadow="never" style="width: 55.4%; display: inline-block; vertical-align: top;">
|
|
|
|
|
<template #header>
|
|
|
|
|
<div class="card-header">
|
|
|
|
|
<span class="card-title">历史明细</span>
|
|
|
|
|
<span class="card-title">{{ t('DataCollection.HistoryData.analysisHistoryDetailTitle') }}</span>
|
|
|
|
|
<span style="color: #667085; font-size: 13px">
|
|
|
|
|
展示部分原始采集数据
|
|
|
|
|
{{ t('DataCollection.HistoryData.analysisHistoryDetailTip') }}
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<el-table :data="historyData" style="width: 100%" height="360">
|
|
|
|
|
<el-table-column prop="time" label="采集时间" width="150" />
|
|
|
|
|
<el-table-column prop="time" :label="t('DataCollection.HistoryData.tableCollectionTimeColumn')" width="150" />
|
|
|
|
|
<el-table-column
|
|
|
|
|
v-for="point in displayPoints"
|
|
|
|
|
:key="point.code.toLowerCase()"
|
|
|
|
|
@ -365,9 +365,10 @@ import {DeviceApi, DeviceVO} from "@/api/iot/device";
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
const route = useRoute();
|
|
|
|
|
let query = route.query;
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
|
|
|
|
|
// 页面数据
|
|
|
|
|
const pageTitle = '单设备多点位历史数据分析'
|
|
|
|
|
const pageTitle = computed(() => t('DataCollection.HistoryData.analysisPageTitle'))
|
|
|
|
|
|
|
|
|
|
// 设备信息
|
|
|
|
|
const deviceData = reactive({
|
|
|
|
|
@ -405,26 +406,26 @@ const queryParams = reactive({
|
|
|
|
|
// 点位数据
|
|
|
|
|
const pointGroups = ref([
|
|
|
|
|
{
|
|
|
|
|
group: '温度类',
|
|
|
|
|
group: t('DataCollection.HistoryData.analysisGroupTemperature'),
|
|
|
|
|
points: [
|
|
|
|
|
{ name: '上层温度', code: 'UpperTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
{ name: '中层温度', code: 'MiddleTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
{ name: '下层温度', code: 'LowerTemp', unit: '℃', upper: 84, lower: 70 },
|
|
|
|
|
{ name: '回风温度', code: 'ReturnAirTemp', unit: '℃', upper: 78, lower: 62 },
|
|
|
|
|
{ name: '实际温度', code: 'ActualTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointUpperTemp'), code: 'UpperTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointMiddleTemp'), code: 'MiddleTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointLowerTemp'), code: 'LowerTemp', unit: '℃', upper: 84, lower: 70 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointReturnAirTemp'), code: 'ReturnAirTemp', unit: '℃', upper: 78, lower: 62 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointActualTemp'), code: 'ActualTemp', unit: '℃', upper: 86, lower: 72 },
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
group: '工艺类',
|
|
|
|
|
group: t('DataCollection.HistoryData.analysisGroupProcess'),
|
|
|
|
|
points: [
|
|
|
|
|
{ name: '输送速度', code: 'ConveyorSpeed', unit: 'm/min', upper: 18, lower: 10 },
|
|
|
|
|
{ name: '主缸水位', code: 'MainTankLevel', unit: 'mm', upper: 680, lower: 520 }
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointConveyorSpeed'), code: 'ConveyorSpeed', unit: 'm/min', upper: 18, lower: 10 },
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointMainTankLevel'), code: 'MainTankLevel', unit: 'mm', upper: 680, lower: 520 }
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
group: '能耗类',
|
|
|
|
|
group: t('DataCollection.HistoryData.analysisGroupEnergy'),
|
|
|
|
|
points: [
|
|
|
|
|
{ name: '干燥柜用电量', code: 'DryerPower', unit: 'kWh', upper: 48, lower: 20 }
|
|
|
|
|
{ name: t('DataCollection.HistoryData.analysisPointDryerPower'), code: 'DryerPower', unit: 'kWh', upper: 48, lower: 20 }
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
@ -556,12 +557,12 @@ function getValueClass(value, point) {
|
|
|
|
|
const analyzing = ref(false)
|
|
|
|
|
async function handleAnalyze() {
|
|
|
|
|
if (selectedPointCodes.value.length === 0) {
|
|
|
|
|
ElMessage.warning('请至少选择一个点位')
|
|
|
|
|
ElMessage.warning(t('DataCollection.HistoryData.analysisSelectPointWarning'))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 验证时间范围
|
|
|
|
|
if (!validateTimeRange(queryParams.startTime, queryParams.endTime)) {
|
|
|
|
|
ElMessage.warning('时间范围不能超过24小时,且结束时间必须晚于开始时间')
|
|
|
|
|
ElMessage.warning(t('DataCollection.HistoryData.analysisTimeRangeWarning'))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
analyzing.value = true
|
|
|
|
|
@ -591,15 +592,15 @@ async function handleAnalyze() {
|
|
|
|
|
updateChart()
|
|
|
|
|
calculateAnalysis()
|
|
|
|
|
|
|
|
|
|
ElMessage.success('已重新分析,图表与统计结果已更新')
|
|
|
|
|
ElMessage.success(t('DataCollection.HistoryData.analysisSuccessMessage'))
|
|
|
|
|
} else {
|
|
|
|
|
// 如果接口返回空数据
|
|
|
|
|
ElMessage.warning('未查询到相关数据')
|
|
|
|
|
ElMessage.warning(t('DataCollection.HistoryData.analysisNoDataMessage'))
|
|
|
|
|
initializeEmptyCharts()
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('分析失败:', error)
|
|
|
|
|
ElMessage.error('分析失败,请检查网络连接或参数设置')
|
|
|
|
|
console.error(t('DataCollection.HistoryData.analysisFailedLog'), error)
|
|
|
|
|
ElMessage.error(t('DataCollection.HistoryData.analysisFailedMessage'))
|
|
|
|
|
// 出错时显示空状态
|
|
|
|
|
initializeEmptyCharts()
|
|
|
|
|
} finally {
|
|
|
|
|
@ -683,7 +684,9 @@ async function calculateAnalysis() {
|
|
|
|
|
historyData.value = res.data;*/
|
|
|
|
|
// 计算时间间隔
|
|
|
|
|
const timeInterval = calculateTimeInterval(queryParams.startTime, queryParams.endTime)
|
|
|
|
|
const intervalText = timeInterval > 0 ? `${timeInterval}小时` : '未设置'
|
|
|
|
|
const intervalText = timeInterval > 0
|
|
|
|
|
? t('DataCollection.HistoryData.analysisHours', { hours: timeInterval })
|
|
|
|
|
: t('DataCollection.HistoryData.analysisNotSet')
|
|
|
|
|
|
|
|
|
|
// 查找最大和最小波动点位
|
|
|
|
|
let maxRangePoint = null
|
|
|
|
|
@ -713,30 +716,30 @@ async function calculateAnalysis() {
|
|
|
|
|
// 这里实现分析计算逻辑
|
|
|
|
|
// 模拟计算...
|
|
|
|
|
summaryData.value = [
|
|
|
|
|
{title: '已选点位数', value: selectedPoints.value.length, desc: '当前参与趋势与统计分析'},
|
|
|
|
|
{title: '分析时间跨度', value: intervalText, desc: queryParams.startTime && queryParams.endTime
|
|
|
|
|
? `${queryParams.startTime.substring(0, 16)} 至 ${queryParams.endTime.substring(0, 16)}`
|
|
|
|
|
: '未设置时间范围' },
|
|
|
|
|
{title: t('DataCollection.HistoryData.analysisSelectedPointCount'), value: selectedPoints.value.length, desc: t('DataCollection.HistoryData.analysisSelectedPointDesc')},
|
|
|
|
|
{title: t('DataCollection.HistoryData.analysisTimeSpan'), value: intervalText, desc: queryParams.startTime && queryParams.endTime
|
|
|
|
|
? t('DataCollection.HistoryData.analysisTimeRangeText', { start: queryParams.startTime.substring(0, 16), end: queryParams.endTime.substring(0, 16) })
|
|
|
|
|
: t('DataCollection.HistoryData.analysisTimeRangeNotSet') },
|
|
|
|
|
/* { title: '异常点位数', value: 1, desc: '存在超限或波动异常', warn: true },*/
|
|
|
|
|
/*{title: '最大波动点位', value: '中层温度', desc: '波动 8.3℃'},*/
|
|
|
|
|
{
|
|
|
|
|
title: '最大波动点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisMaxRangePoint'),
|
|
|
|
|
value: maxRangePoint ? maxRangePoint.name : '-',
|
|
|
|
|
desc: maxRangePoint ? `波动 ${formatValue(maxRangePoint.range, maxRangePoint.unit)}` : '-',
|
|
|
|
|
desc: maxRangePoint ? t('DataCollection.HistoryData.analysisRangeValue', { value: formatValue(maxRangePoint.range, maxRangePoint.unit) }) : '-',
|
|
|
|
|
warn: maxRangePoint && maxRangePoint.range > 0
|
|
|
|
|
},
|
|
|
|
|
/*{title: '最小波动点位', value: '中层温度', desc: '波动 8.3℃'},*/
|
|
|
|
|
{
|
|
|
|
|
title: '最小波动点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisMinRangePoint'),
|
|
|
|
|
value: minRangePoint ? minRangePoint.name : '-',
|
|
|
|
|
desc: minRangePoint ? `波动 ${formatValue(minRangePoint.range, minRangePoint.unit)}` : '-'
|
|
|
|
|
desc: minRangePoint ? t('DataCollection.HistoryData.analysisRangeValue', { value: formatValue(minRangePoint.range, minRangePoint.unit) }) : '-'
|
|
|
|
|
},
|
|
|
|
|
/*{title: '最高值点位', value: '中层温度', desc: '最高 87.4℃'},
|
|
|
|
|
/!* { title: '平均稳定性评分', value: 86, desc: '基于超限次数和波动幅度' }*!/*/
|
|
|
|
|
{
|
|
|
|
|
title: '最高值点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisHighestPoint'),
|
|
|
|
|
value: maxValuePoint ? maxValuePoint.name : '-',
|
|
|
|
|
desc: maxValuePoint ? `最高 ${formatValue(maxValuePoint.max, maxValuePoint.unit)}` : '-',
|
|
|
|
|
desc: maxValuePoint ? t('DataCollection.HistoryData.analysisHighestValue', { value: formatValue(maxValuePoint.max, maxValuePoint.unit) }) : '-',
|
|
|
|
|
warn: maxValuePoint && maxValuePoint.max > 85 // 示例:超过85显示警告
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
@ -854,7 +857,6 @@ function resetQuery() {
|
|
|
|
|
const formLoading = ref(false)
|
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
async function handleSaveAnalysis() {
|
|
|
|
|
// 提交请求
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
@ -883,7 +885,7 @@ async function handleSaveAnalysis() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleExport() {
|
|
|
|
|
ElMessage.success('分析结果已生成导出任务')
|
|
|
|
|
ElMessage.success(t('DataCollection.HistoryData.analysisExportTaskMessage'))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleRefresh() {
|
|
|
|
|
@ -971,7 +973,7 @@ function handleStartTimeChange(value) {
|
|
|
|
|
const start = new Date(value)
|
|
|
|
|
const end = new Date(start.getTime() + 24 * 60 * 60 * 1000)
|
|
|
|
|
queryParams.endTime = formatDateTime(end)
|
|
|
|
|
ElMessage.warning('时间范围超过24小时,已自动调整结束时间')
|
|
|
|
|
ElMessage.warning(t('DataCollection.HistoryData.analysisEndTimeAdjusted'))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -983,7 +985,7 @@ function handleEndTimeChange(value) {
|
|
|
|
|
const end = new Date(value)
|
|
|
|
|
const start = new Date(end.getTime() - 24 * 60 * 60 * 1000)
|
|
|
|
|
queryParams.startTime = formatDateTime(start)
|
|
|
|
|
ElMessage.warning('时间范围超过24小时,已自动调整开始时间')
|
|
|
|
|
ElMessage.warning(t('DataCollection.HistoryData.analysisStartTimeAdjusted'))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -1015,7 +1017,7 @@ function initializeEmptyCharts() {
|
|
|
|
|
if (oneChartInstance) {
|
|
|
|
|
oneChartInstance.setOption({
|
|
|
|
|
title: {
|
|
|
|
|
text: '请选择分析条件后点击"开始分析"',
|
|
|
|
|
text: t('DataCollection.HistoryData.analysisEmptyChartText'),
|
|
|
|
|
left: 'center',
|
|
|
|
|
top: 'center',
|
|
|
|
|
textStyle: {
|
|
|
|
|
@ -1035,29 +1037,29 @@ function initializeEmptyCharts() {
|
|
|
|
|
historyData.value = []
|
|
|
|
|
summaryData.value = [
|
|
|
|
|
{
|
|
|
|
|
title: '已选点位数',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisSelectedPointCount'),
|
|
|
|
|
value: 0,
|
|
|
|
|
desc: '请先选择点位'
|
|
|
|
|
desc: t('DataCollection.HistoryData.analysisSelectPointFirst')
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '分析时间跨度',
|
|
|
|
|
value: '未设置',
|
|
|
|
|
desc: '请设置开始和结束时间'
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisTimeSpan'),
|
|
|
|
|
value: t('DataCollection.HistoryData.analysisNotSet'),
|
|
|
|
|
desc: t('DataCollection.HistoryData.analysisSetTimeRange')
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '最大波动点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisMaxRangePoint'),
|
|
|
|
|
value: '-',
|
|
|
|
|
desc: '无数据'
|
|
|
|
|
desc: t('DataCollection.HistoryData.emptyDescription')
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '最小波动点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisMinRangePoint'),
|
|
|
|
|
value: '-',
|
|
|
|
|
desc: '无数据'
|
|
|
|
|
desc: t('DataCollection.HistoryData.emptyDescription')
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '最高值点位',
|
|
|
|
|
title: t('DataCollection.HistoryData.analysisHighestPoint'),
|
|
|
|
|
value: '-',
|
|
|
|
|
desc: '无数据'
|
|
|
|
|
desc: t('DataCollection.HistoryData.emptyDescription')
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|