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 @@ -