@ -8,8 +8,12 @@
@@ -8,8 +8,12 @@
: groupChangeLoading = "groupChangeLoading" @ onchangePoints = "onchangePoints" : device - points = "pointList"
: isTransfer = "props.isTransfer" : siteInfo = "props.siteInfo" ref = "pointGroupTreeRef" / >
< / EdfsWrap >
< NewDataChart v -if = " isShowChart " :chart-datas ="chartDatas" :legends ="checkPointList"
< div class = "flex-1 p-4 h-full overflow-hidden" >
< el -button class = "mb-4" type = "primary"
@ click = "loadChardData" > 查询数据 < / e l - b u t t o n >
< NewDataChart v -if = " isShowChart " :chart-datas ="chartDatas" :legends ="legends"
: axis - data = "Array.from(axisData)" ref = "chartRef" / >
< / div >
< / main >
< / e l - d r a w e r >
< / div >
@ -30,6 +34,7 @@ import {
@@ -30,6 +34,7 @@ import {
getDeviceDetails ,
getPointGroup ,
getPoints ,
type IGetDeviceDataParams ,
type IPointGroupOV ,
type IPointGroupParams ,
type IPointsParams ,
@ -38,6 +43,8 @@ import {
@@ -38,6 +43,8 @@ import {
import { useMessage } from '@/composables/useMessage'
import { getTransferTopic , postTransferTopic } from '../utils'
import dayjs from 'dayjs'
const env = import . meta . env
const worker = ZMQWorker . getInstance ( )
const isShowDrawer = defineModel < boolean > ( )
@ -71,7 +78,7 @@ async function open(device: IOfflineDevice | IOnlineDevice) {
@@ -71,7 +78,7 @@ async function open(device: IOfflineDevice | IOnlineDevice) {
} )
}
const columsParams = computed ( ( ) => [ 'ts' , ... p ointList. value . map ( i => i . addr ) ] )
const columsParams = computed ( ( ) => [ 'ts' , ... checkP ointList. value . map ( i => i . addr ) ] )
async function loadPoints ( ) {
if ( ! curGroup . value ) {
message . error ( '请先选择点位组' )
@ -93,7 +100,8 @@ async function loadPoints() {
@@ -93,7 +100,8 @@ async function loadPoints() {
const res = await getPoints ( params )
if ( res . code === 0 ) {
pointList . value = res . data . map ( ( i : any ) => ( {
const data = Array . isArray ( res ? . data ) ? res . data : [ ]
pointList . value = data . map ( ( i : any ) => ( {
label : i . cnName ,
addr : i . addr ,
} ) )
@ -121,23 +129,61 @@ async function loadDeviceDetails() {
@@ -121,23 +129,61 @@ async function loadDeviceDetails() {
fullscreenLoading . value ? . close ( )
return
}
const res = await getDeviceDetails ( {
isShowDrawer . value = true
groupChangeLoading . value = false
fullscreenLoading . value ? . close ( )
}
const chartDatas = reactive ( new Map < string , any [ ] > ( ) )
const axisData = new Set < string > ( )
const legends = ref < { addr : string ; label : string } [ ] > ( [ ] )
async function loadChardData ( ) {
if ( ! columsParams . value . filter ( i => i !== 'ts' ) . length ) {
message . error ( '请选择点位' )
return
}
const params : IGetDeviceDataParams = {
columns : columsParams . value ,
isLocal : props . isTransfer ? false : true ,
host : props . isTransfer ? ( curDevice . value as IOnlineDevice ) . clientIp : '' ,
name : curGroupName . value as string
} )
}
if ( env . VITE _APP _ENV !== 'local' ) {
params . site _id = props . siteInfo ! . name || ''
params . device _id = curDevice . value ? . sn || ''
}
const res = await getDeviceDetails ( params )
if ( res . code === 0 ) {
pointData . value = Array . isArray ( res . data . results ) ? res . data . results : [ ]
chartDatas . clear ( )
axisData . clear ( )
pointData . value . forEach ( ( data : any [ ] ) => {
const [ ts , val , addr ] = data
legends . value . push ( {
addr : addr ,
label : checkPointList . value . find ( i => i . addr === addr ) ! . label ,
} )
if ( checkPointList . value . some ( i => i . addr === addr ) ) {
const time = dayjs ( Number ( ts ) ) . format ( 'YYYY-MM-DD HH:mm:ss' )
if ( addr ) {
const colData = chartDatas . get ( addr )
if ( colData ) {
colData . push ( [ time , val ] )
} else {
chartDatas . set ( addr , [ [ time , val ] ] )
}
}
isShowDrawer . value = true
if ( ts ) {
axisData . add ( time )
}
}
} )
} else {
message . error ( '获取设备数据失败' )
}
groupChangeLoading . value = false
fullscreenLoading . value ? . close ( )
}
function zmqImport ( device : IOfflineDevice ) {
@ -243,34 +289,13 @@ function onGroupChange(item: IPointGroupOV) {
@@ -243,34 +289,13 @@ function onGroupChange(item: IPointGroupOV) {
loadDeviceDetails ( )
}
const chartDatas = reactive ( new Map < string , any [ ] > ( ) )
const axisData = new Set < string > ( )
const checkPointList = ref < IMyPoint [ ] > ( [ ] )
function onchangePoints ( checkPoints : IMyPoint [ ] ) {
checkPointList . value = [ ]
checkPointList . value = checkPoints
chartDatas . clear ( )
axisData . clear ( )
pointData . value . forEach ( ( data : any [ ] ) => {
const [ ts , val , addr ] = data
if ( checkPoints . some ( i => i . addr === addr ) ) {
const time = dayjs ( Number ( ts ) ) . format ( 'YYYY-MM-DD HH:mm:ss' )
if ( addr ) {
const colData = chartDatas . get ( addr )
if ( colData ) {
colData . push ( [ time , val ] )
} else {
chartDatas . set ( addr , [ [ time , val ] ] )
}
}
if ( ts ) {
axisData . add ( time )
}
}
} )
}
defineExpose ( {