From bda737313302025653712cf391078ab49fffc592 Mon Sep 17 00:00:00 2001 From: guanj Date: Tue, 9 Jun 2026 19:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9A=82=E6=80=81=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/cockpit/F47Curve/index.vue | 47 +- .../cockpit/exceedanceLevel/index.vue | 4 +- .../cockpit/indicatorDetails/index.vue | 2 +- .../listOfMainMonitoringPoints/index.vue | 218 ++-- .../cockpit/monitoringPointList/index.vue | 21 +- .../cockpit/transientDetails/index.vue | 2 +- src/components/echarts/rmsWorker.js | 6 +- src/components/echarts/shuWorker.js | 7 +- src/components/form/datePicker/index.vue | 36 +- src/components/tree/govern/lineTreeUtils.ts | 10 +- src/components/tree/govern/pointTree.vue | 5 +- src/components/tree/point.vue | 10 +- src/styles/element.scss | 1 + src/styles/var.scss | 74 +- src/utils/downloadFile.ts | 4 +- src/views/auth/menu/popupApi.vue | 2 +- src/views/auth/menu/popupMenu.vue | 4 +- src/views/govern/alarm/Abnormal.vue | 14 +- src/views/govern/alarm/Device.vue | 24 +- src/views/govern/alarm/Front.vue | 2 +- src/views/govern/alarm/Steady.vue | 22 +- src/views/govern/alarm/Transient.vue | 134 +- src/views/govern/alarm/multiCondition.vue | 148 +-- src/views/govern/analyze/DVR/index.vue | 6 +- .../govern/analyze/steadyState/index.vue | 74 +- src/views/govern/cloudDeviceEntry/index.vue | 2 +- src/views/govern/device/control/index.vue | 51 +- .../device/control/nearRealTimeData.vue | 172 ++- .../currentDevice.vue | 2 + .../tabs/components/harmonicSpectrum.vue | 40 +- .../control/tabs/components/realtrend.vue | 94 +- .../govern/device/control/tabs/event.vue | 102 +- .../device/planData/components/transient.vue | 133 +- src/views/govern/manage/engineering.vue | 2 +- .../manage/engineering/components/itemAdd.vue | 2 +- .../manage/engineering/components/popup.vue | 2 +- src/views/govern/manage/engineering/index.vue | 10 +- src/views/govern/manage/process/index.vue | 1138 ++++++++--------- .../manage/programVersion/comp/upgrade.vue | 2 +- src/views/govern/mxgraph/graphList/index.vue | 96 +- .../reportCore/statisticsWx/index_zl.vue | 446 +++---- .../govern/setting/frontManagement/index.vue | 2 +- .../govern/setting/statisticalType/add.vue | 2 +- src/views/pqs/cockpit/homePage/index.vue | 3 +- .../setting/dictionary/component/add.vue | 7 +- .../setting/dictionary/tree/popupForm.vue | 2 +- src/views/system/scheduledTasks/form.vue | 2 +- ....timestamp-1780969772831-8479154eaf9a9.mjs | 119 ++ 48 files changed, 1834 insertions(+), 1474 deletions(-) create mode 100644 vite.config.ts.timestamp-1780969772831-8479154eaf9a9.mjs diff --git a/src/components/cockpit/F47Curve/index.vue b/src/components/cockpit/F47Curve/index.vue index fad2370..2302853 100644 --- a/src/components/cockpit/F47Curve/index.vue +++ b/src/components/cockpit/F47Curve/index.vue @@ -1,38 +1,21 @@ @@ -151,7 +134,7 @@ const tableStore: any = new TableStore({ relVal += "发生时间:" + a.value[2] + '
' relVal += "持续时间:" + a.value[0] + 's
' - relVal += "特征幅值:" + a.value[1].toFixed(2) + '%' + relVal += "特征幅值:" + Math.floor(a.value[1] * 100) / 100 + '%' return relVal } }, @@ -173,10 +156,10 @@ const tableStore: any = new TableStore({ // max: function (value: any) { // return value.max + 20 // }, - max: function (value) { - // 先取原始最大值+20,再向上取整到最近的10的倍数,确保刻度够用且规整 - return Math.ceil((value.max + 20) / 10) * 10 - }, + // max: function (value) { + // // 先取原始最大值+20,再向上取整到最近的10的倍数,确保刻度够用且规整 + // return Math.ceil((value.max + 20) / 10) * 10 + // }, // splitNumber: 10, // interval: 10, // minInterval: 10, @@ -461,7 +444,7 @@ const handleTolerableEventClick = async (row: any) => { if (res != undefined) { boxoList.value = { persistTime: row.value[0], //持续时间 - featureAmplitude: (row.value[1] / 100).toFixed(2), //残余电压 + featureAmplitude: (row.value[1] / 100), //残余电压 startTime: row.value[2], //时间 lineName: row.value[4] //监测点名称 } @@ -510,6 +493,6 @@ watch( } ) -const addMenu = () => {} +const addMenu = () => { } diff --git a/src/components/cockpit/exceedanceLevel/index.vue b/src/components/cockpit/exceedanceLevel/index.vue index 8910b2a..89a9db1 100644 --- a/src/components/cockpit/exceedanceLevel/index.vue +++ b/src/components/cockpit/exceedanceLevel/index.vue @@ -135,7 +135,7 @@ const tableStore: any = new TableStore({ echartList.value = { title: { - text: '指标越限严重度' + text: '指标越限程度' }, xAxis: { @@ -154,7 +154,7 @@ const tableStore: any = new TableStore({ series: [ { type: 'bar', - name: '指标越限严重度', + name: '指标越限程度', data: tableStore.table.data.map((item: any) => Math.floor(item.extent * 100) / 100), barMaxWidth: 30 } diff --git a/src/components/cockpit/indicatorDetails/index.vue b/src/components/cockpit/indicatorDetails/index.vue index 024afe8..68bce5f 100644 --- a/src/components/cockpit/indicatorDetails/index.vue +++ b/src/components/cockpit/indicatorDetails/index.vue @@ -101,7 +101,7 @@ const tableStore: any = new TableStore({ setTime() }, loadCallback: () => { - value.value = tableStore.table.params.searchBeginTime + value.value = dayjs(tableStore.table.params.searchBeginTime).toDate() if (tableStore.table.data && tableStore.table.data.length > 0) { list.value = tableStore.table.data.map((item: any) => { // 将 items 数组转换为带换行的文本 diff --git a/src/components/cockpit/listOfMainMonitoringPoints/index.vue b/src/components/cockpit/listOfMainMonitoringPoints/index.vue index 024d351..7ec9b88 100644 --- a/src/components/cockpit/listOfMainMonitoringPoints/index.vue +++ b/src/components/cockpit/listOfMainMonitoringPoints/index.vue @@ -1,95 +1,64 @@ + - +
+ + @@ -32,13 +37,15 @@ import { ref, onMounted, provide, nextTick } from 'vue' import TableStore from '@/utils/tableStore' import Table from '@/components/table/index.vue' import TableHeader from '@/components/table/header/index.vue' -import MultiCondition from './multiCondition.vue' +import MultiCondition from '@/views/govern/alarm/multiCondition.vue' import waveFormAnalysis from '@/views/govern/device/control/tabs/components/waveFormAnalysis.vue' import { analyseWave, getFileByEventId } from '@/api/common' import { mainHeight } from '@/utils/layout' import { ElMessage } from 'element-plus' import { getFileZip } from '@/api/cs-harmonic-boot/datatrend' import { useDictData } from '@/stores/dictData' +import { queryByCode, queryByid, queryCsDictTree } from '@/api/system-boot/dictTree' +import analysisList from '@/views/govern/device/control/analysisList/index.vue' const props = defineProps(['deviceTree']) const refheader = ref() @@ -50,15 +57,12 @@ const showBoxi = ref(true) const loading = ref(false) const bxactiveName = ref('ssbx') const boxoList: any = ref({}) - +const analysisListRef = ref() const wp = ref({}) const dictData = useDictData() const ReasonList: any = dictData.getBasicData('Event_Reason') -const EventTypeList = [ - { label: '电压暂降', value: '电压暂降' }, - { label: '电压暂升', value: '电压暂升' }, - { label: '电压中断', value: '电压中断' } -] +const DeviceType = ref([]) +const EventTypeList: any = dictData.getBasicData('Event_Type') const filterVisible = ref(false) const multiConditionRef = ref>() @@ -82,16 +86,21 @@ const tableStore = new TableStore({ { title: '暂降幅值(%)', minWidth: 120, field: 'evtParamVVaDepth', align: 'center', sortable: true, }, { title: '持续时间(s)', field: 'evtParamTm', minWidth: 110, align: 'center', sortable: true }, + { + title: '严重度', field: 'severity', minWidth: 80, align: 'center', sortable: true, formatter: (row: any) => { + return row.cellValue ? row.cellValue : '/' + } + }, { title: '相别', field: 'evtParamPhase', minWidth: 80, align: 'center' }, - { title: '触发类型', field: 'showName', minWidth: 120, align: 'center' }, + { title: '触发类型', field: 'showName', minWidth: 100, align: 'center' }, { title: '暂降原因', field: 'advanceReason', minWidth: 100, align: 'center', formatter: (row: any) => { - return ReasonList.find((item: any) => item.value == row.cellValue)?.label || '未知' + return ReasonList.find((item: any) => item.id == row.cellValue)?.name || '未知' } }, { title: '暂降类型', field: 'advanceType', minWidth: 100, align: 'center', formatter: (row: any) => { - return EventTypeList.find((item: any) => item.value == row.cellValue)?.label || '未知' + return EventTypeList.find((item: any) => item.id == row.cellValue)?.name || '未知' } }, @@ -104,11 +113,11 @@ const tableStore = new TableStore({ { title: '工程名称', field: 'engineeringName', minWidth: 130, align: 'center' }, { title: '发生位置', field: 'sagSource', minWidth: 120, align: 'center', formatter: (row: any) => { - return row.cellValue == 1 ? '上游' : row.cellValue == 2 ? '下游' : '未知' } }, + { title: '操作', fixed: 'right', @@ -209,30 +218,53 @@ const tableStore = new TableStore({ }, { name: 'edit', - text: '暂无波形', + text: '暂不支持补召', type: 'info', icon: 'el-icon-DataLine', render: 'basicButton', + disabled: row => { + let code = DeviceType.value.filter((item: any) => item.id == row.devType)[0]?.code + return !(code == 'Direct_Connected_Device' || code == 'Gateway') + }, + + }, + { + name: 'edit', + text: '波形补召', + type: 'primary', + icon: 'el-icon-DataLine', + render: 'basicButton', + loading: 'loading2', disabled: row => { return row.wavePath + }, + click: row => { + let code = DeviceType.value.filter((item: any) => item.id == row.devType)[0]?.code + + if (code == 'Portable') { + // 便携式设备 + analysisListRef.value && + analysisListRef.value.open({ + lineId: row.lineId, + deviceData: row, + deviceId: row.deviceId + }) + + } else if (code == 'DEV_CLD') { + row.loading2 = true + // 监测设备 + getFileByEventId(row.id).then(res => { + ElMessage.success(res.message) + tableStore.index() + row.loading2 = false + }).catch(() => { + row.loading2 = false + }) + } + } }, - // { - // name: 'edit', - // title: '波形补召', - // type: 'primary', - // icon: 'el-icon-Check', - // render: 'basicButton', - // disabled: row => { - // return row.wavePath || row.showName === '未知' - // }, - // click: row => { - // getFileByEventId(row.id).then(res => { - // ElMessage.success(res.message) - // tableStore.index() - // }) - // } - // } + ] } ], @@ -257,21 +289,24 @@ provide('tableStore', tableStore) // "type": "", // "userId": "" tableStore.table.params.searchValue = '' -tableStore.table.params.engineeringid = '' -tableStore.table.params.projectId = '' -tableStore.table.params.deviceTypeId = '' -tableStore.table.params.deviceId = '' +// tableStore.table.params.engineeringid = '' +// tableStore.table.params.projectId = '' +// tableStore.table.params.deviceTypeId = '' +// tableStore.table.params.deviceId = '' tableStore.table.params.type = 0 -tableStore.table.params.eventIds = [] -tableStore.table.params.status = '' -tableStore.table.params.target = [] -tableStore.table.params.userId = '' -tableStore.table.params.cascader = '' -tableStore.table.params.deviceTypeName = '' +// tableStore.table.params.eventIds = [] +// tableStore.table.params.status = '' +// tableStore.table.params.target = [] +// tableStore.table.params.userId = '' +// tableStore.table.params.cascader = '' +// tableStore.table.params.deviceTypeName = '' Object.assign(tableStore.table.params, { - featureAmplitude: '', - evtParamTm: '', - showName: '', + featureAmplitudeMin: undefined, + featureAmplitudeMax: undefined, + evtParamTmMin: undefined, + evtParamTmMax: undefined, + severityMin: undefined, + severityMax: undefined, fileFlag: '' }) // tableStore.table.params.level='' @@ -345,6 +380,11 @@ const onResetForm = () => { } onMounted(() => { + queryByCode('Device_Type').then(res => { + queryCsDictTree(res.data.id).then((list: any) => { + DeviceType.value = list.data + }) + }) tableStore.index() }) const bxecharts = mainHeight(175).height as any diff --git a/src/views/govern/alarm/multiCondition.vue b/src/views/govern/alarm/multiCondition.vue index 29a9e9a..1a361c6 100644 --- a/src/views/govern/alarm/multiCondition.vue +++ b/src/views/govern/alarm/multiCondition.vue @@ -1,37 +1,42 @@ + + + + + diff --git a/src/views/govern/cloudDeviceEntry/index.vue b/src/views/govern/cloudDeviceEntry/index.vue index c2d0c24..e74c8d4 100644 --- a/src/views/govern/cloudDeviceEntry/index.vue +++ b/src/views/govern/cloudDeviceEntry/index.vue @@ -144,7 +144,7 @@ - -

+ }" v-if="dataSet.includes('_realtimedata') && sonTab != 2 && !realTimeFlag"> +

数据时间:{{ trendDataTime || '-' }}

+ :icon="Back" @click="handleReturn" > 返回 @@ -225,7 +225,7 @@ ">
- 最新数据时标:{{ tableData[0]?.time || '-' }} + 最新数据时标:{{ latestTime || '-' }}
+ v-if="dataSet.indexOf('_realtimedata') != -1" v-loading="tableLoading">
- +
{ try { return JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message)))) @@ -536,7 +535,7 @@ const handleTrend = async () => { await getHarmRealData(lineId.value, activeTrendName.value) .then((res: any) => { if (res.code == 'A0000') { - trendDataTime.value = '' + // trendDataTime.value = '' // ElMessage.success('设备应答成功') //每隔30s调用一下接口,通知后台推送mqtt消息 trendTimer.value = window.setInterval(() => { @@ -625,14 +624,14 @@ const handleReturn = async () => { const handleSearch = () => { let queryListName = queryList.value.filter((item: any) => item.id == formInline.targetType) let list = tableData.value.filter((item: any) => { - if (item.otherName.includes(searchValue.value)) { + if (item.name.includes(searchValue.value)) { return item } }) if (oddAndEvenFlag.value) { list = list.filter((item: any) => { - let str = item.otherName.split('次')[0] - queryListName[0].name == '间谐波电压含有率' ? (str = str - 0.5) : '' + let str = item.name.split('次')[0] + if (oddAndEven.value == '1') { // 奇次 @@ -689,9 +688,16 @@ const dataLevel: any = ref('') const dataSource = ref([]) const engineeringName = ref('') const nodeClick = async (e: anyObj, node?: any) => { + console.log("🚀 ~ nodeClick ~ node:", e) if (e == undefined) { return (loading.value = false) } + if(e.pname?.includes('便携')){ + deviceType.value = '1' + }else{ + deviceType.value = '2' + } + searchValue.value = '' deviceId.value = e?.pid @@ -788,7 +794,7 @@ const nodeClick = async (e: anyObj, node?: any) => { //治理设备和便携式设备切换判断 const deviceType = ref('0') const pointTypeChange = (val: any, obj: any) => { - deviceType.value = val + nodeClick(obj) } const realTimeRef: any = ref() @@ -1234,21 +1240,23 @@ const handleClick = async (tab?: any) => { //查询当前指标 if (!dataSet.value.includes('_')) { formInline.id = dataSet.value + latestTime.value='' + tableData.value=[] // await deviceRtData(formInline) await realTimeData(formInline) .then((res: any) => { - tableData.value = res.data + tableData.value = res.data[0].children + latestTime.value=res.data[0].dataTime formInline.total = res.data.total let queryListName = queryList.value.filter((item: any) => item.id == formInline.targetType) let list = tableData.value.filter((item: any) => { - if (item.otherName.includes(searchValue.value)) { + if (item.name.includes(searchValue.value)) { return item } }) if (oddAndEvenFlag.value) { list = list.filter((item: any) => { - let str = item.otherName.split('次')[0] - queryListName[0].name == '间谐波电压含有率' ? (str = str - 0.5) : '' + let str = item.name.split('次')[0] if (oddAndEven.value == '1') { // 奇次 @@ -1276,6 +1284,7 @@ const handleClick = async (tab?: any) => { }, 1500) }) .catch(e => { + loading.value = false setTimeout(() => { tableLoading.value = false }, 1500) @@ -1340,10 +1349,12 @@ queryByCode('Device_Type').then(res => { }) }) const handleTargetTypeChange = () => { - if (queryList.value.filter((item: any) => item.id == formInline.targetType)[0].name != '基本数据') { - oddAndEvenFlag.value = true + const targetItem = queryList.value.filter((item: any) => item.id == formInline.targetType)[0]; + + if (targetItem?.name !== '基本数据' && !targetItem?.name?.includes('间谐波')) { + oddAndEvenFlag.value = true; } else { - oddAndEvenFlag.value = false + oddAndEvenFlag.value = false; } } const queryList: any = ref([]) diff --git a/src/views/govern/device/control/nearRealTimeData.vue b/src/views/govern/device/control/nearRealTimeData.vue index e514c08..3a1f7e5 100644 --- a/src/views/govern/device/control/nearRealTimeData.vue +++ b/src/views/govern/device/control/nearRealTimeData.vue @@ -1,17 +1,18 @@