refactor(event): 重构事件列表和稳态数据视图组件结构
- 将事件列表页面逻辑拆分为 EventListTable 组件 - 新增 MeasurementPointDialog 和 VoltageToleranceDialog 弹窗组件 - 重构稳态数据视图为主工作台组件 SteadyTrendWorkbench - 移除不再使用的相别参数和相关逻辑 - 更新事件详情工具函数和接口参数映射 - 优化波形查看功能的数据传递方式 - 修正事件描述字段命名和严重程度解析逻辑
This commit is contained in:
@@ -56,7 +56,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, nextTick, ref, watch } from 'vue'
|
||||
import { computed, nextTick, onMounted, ref, watch } from 'vue'
|
||||
import html2canvas from 'html2canvas'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { parseComtradeApi, parseComtradeVectorApi } from '@/api/tools/waveform'
|
||||
@@ -125,6 +125,7 @@ const vectorParseResult = ref<Waveform.WaveComtradeVectorResultVO | null>(null)
|
||||
const lastParseErrorMessage = ref('')
|
||||
const lastVectorParseErrorMessage = ref('')
|
||||
const waveformFileAccept = '.cfg,.dat'
|
||||
const EVENT_LIST_WAVEFORM_SESSION_KEY = 'eventList:waveformParseResult'
|
||||
const trendXZoomRange = ref<TrendZoomRange>({ start: 0, end: 100 })
|
||||
const trendYZoomScale = ref(1)
|
||||
const activeTrendInteractionMode = ref<'none' | 'box-zoom' | 'pan' | 'mark'>('none')
|
||||
@@ -447,6 +448,35 @@ const resetTrendToolState = () => {
|
||||
trendMarkers.value = []
|
||||
}
|
||||
|
||||
const applyWaveformParseResult = (parseResult: Waveform.WaveComtradeResultVO) => {
|
||||
waveformParseResult.value = parseResult
|
||||
vectorParseResult.value = null
|
||||
sourceValueMode.value = resolveSourceValueMode(parseResult.waveData?.szValueType)
|
||||
temporaryPtRatio.value = parseResult.waveData?.pt
|
||||
temporaryCtRatio.value = parseResult.waveData?.ct
|
||||
activeValueMode.value = 'primary'
|
||||
activeChannelIndex.value = 'all'
|
||||
lastParseErrorMessage.value = ''
|
||||
lastVectorParseErrorMessage.value = ''
|
||||
resetTrendToolState()
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
const storedWaveform = sessionStorage.getItem(EVENT_LIST_WAVEFORM_SESSION_KEY)
|
||||
|
||||
if (!storedWaveform) return
|
||||
|
||||
sessionStorage.removeItem(EVENT_LIST_WAVEFORM_SESSION_KEY)
|
||||
|
||||
try {
|
||||
// eventList 已由后端按事件定位并解析波形,这里只恢复解析结果以复用当前展示能力。
|
||||
applyWaveformParseResult(JSON.parse(storedWaveform) as Waveform.WaveComtradeResultVO)
|
||||
} catch (error) {
|
||||
console.error('[waveform] restore event list waveform failed', error)
|
||||
ElMessage.error('事件波形数据解析失败,请重新查看波形')
|
||||
}
|
||||
})
|
||||
|
||||
const zoomTrendXAxis = (ratio: number) => {
|
||||
const { start, end } = trendXZoomRange.value
|
||||
const center = (start + end) / 2
|
||||
@@ -1216,11 +1246,7 @@ const loadWaveformData = async (cfgFile: File, datFile: File) => {
|
||||
if (waveformResult.status === 'fulfilled') {
|
||||
const parseResult = waveformResult.value.data
|
||||
|
||||
waveformParseResult.value = parseResult
|
||||
sourceValueMode.value = resolveSourceValueMode(parseResult.waveData?.szValueType)
|
||||
temporaryPtRatio.value = parseResult.waveData?.pt
|
||||
temporaryCtRatio.value = parseResult.waveData?.ct
|
||||
activeValueMode.value = 'primary'
|
||||
applyWaveformParseResult(parseResult)
|
||||
} else {
|
||||
waveformParseResult.value = null
|
||||
sourceValueMode.value = 'secondary'
|
||||
|
||||
Reference in New Issue
Block a user