From e4051cf151758d97b30f028e57db79c36d344952 Mon Sep 17 00:00:00 2001 From: yexb <553699424@qq.com> Date: Fri, 17 Apr 2026 08:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A2=E5=BD=A2=E8=A7=A3=E6=9E=90=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/tools/waveform/index.ts | 21 + .../src/api/tools/waveform/interface/index.ts | 66 +++ .../waveform/components/WaveformInfoPanel.vue | 393 +++++++++++++++++- .../waveform/components/WaveformToolbar.vue | 17 +- .../components/WaveformTrendPanel.vue | 14 +- frontend/src/views/tools/waveform/index.vue | 193 +++++++-- 6 files changed, 621 insertions(+), 83 deletions(-) diff --git a/frontend/src/api/tools/waveform/index.ts b/frontend/src/api/tools/waveform/index.ts index 38e3023..c4b831a 100644 --- a/frontend/src/api/tools/waveform/index.ts +++ b/frontend/src/api/tools/waveform/index.ts @@ -1,6 +1,11 @@ import http from '@/api' import type { Waveform } from './interface' +const appendFormDataValue = (formData: FormData, key: string, value: File | string | number | boolean | undefined) => { + if (value === undefined || value === null || value === '') return + formData.append(key, value instanceof File ? value : `${value}`) +} + export const parseComtradeApi = (params: Waveform.ParseComtradeParams) => { const formData = new FormData() @@ -11,3 +16,19 @@ export const parseComtradeApi = (params: Waveform.ParseComtradeParams) => { headers: { 'Content-Type': 'multipart/form-data' } }) } + +export const parseComtradeVectorApi = (params: Waveform.ParseComtradeVectorParams) => { + const formData = new FormData() + + appendFormDataValue(formData, 'cfgFile', params.cfgFile) + appendFormDataValue(formData, 'datFile', params.datFile) + appendFormDataValue(formData, 'parseType', params.parseType) + appendFormDataValue(formData, 'ptType', params.ptType) + appendFormDataValue(formData, 'pt', params.pt) + appendFormDataValue(formData, 'ct', params.ct) + appendFormDataValue(formData, 'monitorName', params.monitorName) + + return http.post(`/wave/parseComtradeVector`, formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} diff --git a/frontend/src/api/tools/waveform/interface/index.ts b/frontend/src/api/tools/waveform/interface/index.ts index 4a5386b..fb0fa34 100644 --- a/frontend/src/api/tools/waveform/interface/index.ts +++ b/frontend/src/api/tools/waveform/interface/index.ts @@ -13,6 +13,16 @@ export namespace Waveform { dynamicThreshold?: boolean } + export interface ParseComtradeVectorParams { + cfgFile: File + datFile: File + parseType?: number + ptType?: number + pt?: number + ct?: number + monitorName?: string + } + export interface WaveTrendData { max?: number min?: number @@ -71,6 +81,62 @@ export namespace Waveform { durationTime?: number } + export interface WaveHarmonicDTO { + harmonicOrder?: number + amplitude?: number + rms?: number + rate?: number + } + + export interface WavePhaseVectorDTO { + phaseName?: string + totalRms?: number + fundamentalAmplitude?: number + fundamentalRms?: number + fundamentalPhaseAngle?: number + harmonicVoltageContentRates?: WaveHarmonicDTO[] + harmonicCurrentAmplitudes?: WaveHarmonicDTO[] + harmonicDistortionRate?: number + } + + export interface WaveSequenceVectorDTO { + sequenceName?: string + amplitude?: number + rms?: number + phaseAngle?: number + } + + export interface WaveSequenceUnbalanceDTO { + negativeUnbalanceRate?: number + zeroUnbalanceRate?: number + } + + export interface WaveCycleVectorDTO { + cycleIndex?: number + time?: number + phaseVectors?: WavePhaseVectorDTO[] + positiveSequence?: WaveSequenceVectorDTO + negativeSequence?: WaveSequenceVectorDTO + zeroSequence?: WaveSequenceVectorDTO + unbalance?: WaveSequenceUnbalanceDTO + } + + export interface WaveVectorGroupDTO { + channelName?: string + unit?: string + phaseCount?: number + phaseNames?: string[] + vectorSeries?: WaveCycleVectorDTO[] + } + + export interface WaveComtradeVectorResultVO { + monitorName?: string + time?: string + samplePerCycle?: number + cycleCount?: number + vectorGroups?: WaveVectorGroupDTO[] + } + export interface WaveComtradeResultVO { waveData?: WaveDataDTO waveDataDetails?: WaveDataDetail[] diff --git a/frontend/src/views/tools/waveform/components/WaveformInfoPanel.vue b/frontend/src/views/tools/waveform/components/WaveformInfoPanel.vue index 1b0fe0d..a2db780 100644 --- a/frontend/src/views/tools/waveform/components/WaveformInfoPanel.vue +++ b/frontend/src/views/tools/waveform/components/WaveformInfoPanel.vue @@ -1,12 +1,10 @@ -