Showing
5 changed files
with
48 additions
and
5 deletions
| 1 | <script lang="ts" setup> | 1 | <script lang="ts" setup> |
| 2 | import type { ECharts, EChartsOption } from 'echarts'; | 2 | import type { ECharts, EChartsOption } from 'echarts'; |
| 3 | - import { PropType } from 'vue'; | 3 | + import { PropType, watch } from 'vue'; |
| 4 | import { nextTick, onMounted, onUnmounted, ref, unref, computed } from 'vue'; | 4 | import { nextTick, onMounted, onUnmounted, ref, unref, computed } from 'vue'; |
| 5 | import { init } from 'echarts'; | 5 | import { init } from 'echarts'; |
| 6 | import { | 6 | import { |
| @@ -10,6 +10,8 @@ | @@ -10,6 +10,8 @@ | ||
| 10 | InstrumentComponentType, | 10 | InstrumentComponentType, |
| 11 | update_instrument_1_font, | 11 | update_instrument_1_font, |
| 12 | update_instrument_2_font, | 12 | update_instrument_2_font, |
| 13 | + update_instrument_1_value, | ||
| 14 | + update_instrument_2_value, | ||
| 13 | } from './dashBoardComponent.config'; | 15 | } from './dashBoardComponent.config'; |
| 14 | import { dateUtil } from '/@/utils/dateUtil'; | 16 | import { dateUtil } from '/@/utils/dateUtil'; |
| 15 | import { | 17 | import { |
| @@ -69,6 +71,20 @@ | @@ -69,6 +71,20 @@ | ||
| 69 | unref(chartRef)?.resize(); | 71 | unref(chartRef)?.resize(); |
| 70 | } | 72 | } |
| 71 | 73 | ||
| 74 | + const getUpdateValueFn = (componentType: InstrumentComponentType) => { | ||
| 75 | + if (componentType === 'instrument-component-1') return update_instrument_1_value; | ||
| 76 | + if (componentType === 'instrument-component-2') return update_instrument_2_value; | ||
| 77 | + return (_radio: number) => {}; | ||
| 78 | + }; | ||
| 79 | + | ||
| 80 | + watch( | ||
| 81 | + () => props.value.value, | ||
| 82 | + (newValue) => { | ||
| 83 | + const updateFn = getUpdateValueFn(props.layout.componentType); | ||
| 84 | + unref(chartRef)?.setOption((updateFn(newValue || 0) as unknown as EChartsOption) || {}); | ||
| 85 | + } | ||
| 86 | + ); | ||
| 87 | + | ||
| 72 | onMounted(() => { | 88 | onMounted(() => { |
| 73 | initChart(); | 89 | initChart(); |
| 74 | props.add && props.add(props.value.id, update); | 90 | props.add && props.add(props.value.id, update); |
| @@ -262,6 +262,29 @@ export const update_instrument_2_font = (radio: number) => { | @@ -262,6 +262,29 @@ export const update_instrument_2_font = (radio: number) => { | ||
| 262 | } as EChartsOption; | 262 | } as EChartsOption; |
| 263 | }; | 263 | }; |
| 264 | 264 | ||
| 265 | +export const update_instrument_1_value = (value) => { | ||
| 266 | + return { | ||
| 267 | + series: [ | ||
| 268 | + { | ||
| 269 | + data: [{ value }], | ||
| 270 | + }, | ||
| 271 | + { | ||
| 272 | + data: [{ value }], | ||
| 273 | + }, | ||
| 274 | + ], | ||
| 275 | + } as EChartsOption; | ||
| 276 | +}; | ||
| 277 | + | ||
| 278 | +export const update_instrument_2_value = (value) => { | ||
| 279 | + return { | ||
| 280 | + series: [ | ||
| 281 | + { | ||
| 282 | + data: [{ value }], | ||
| 283 | + }, | ||
| 284 | + ], | ||
| 285 | + } as EChartsOption; | ||
| 286 | +}; | ||
| 287 | + | ||
| 265 | function setGradientInfo(dataSource: DataSource) { | 288 | function setGradientInfo(dataSource: DataSource) { |
| 266 | const componentInfo = dataSource.componentInfo; | 289 | const componentInfo = dataSource.componentInfo; |
| 267 | return instrumentComponent2({ | 290 | return instrumentComponent2({ |
| @@ -77,7 +77,7 @@ | @@ -77,7 +77,7 @@ | ||
| 77 | </div> | 77 | </div> |
| 78 | <div class="w-1/2 flex justify-center"> | 78 | <div class="w-1/2 flex justify-center"> |
| 79 | <Statistic | 79 | <Statistic |
| 80 | - :value="props.value.value || '123'" | 80 | + :value="props.value.value || 0" |
| 81 | :suffix="getShowUnit ? props.value.unit : ''" | 81 | :suffix="getShowUnit ? props.value.unit : ''" |
| 82 | class="truncate" | 82 | class="truncate" |
| 83 | :value-style="{ | 83 | :value-style="{ |
| @@ -16,6 +16,7 @@ export interface TextComponentValue { | @@ -16,6 +16,7 @@ export interface TextComponentValue { | ||
| 16 | updateTime?: string; | 16 | updateTime?: string; |
| 17 | fontColor?: string; | 17 | fontColor?: string; |
| 18 | iconColor?: string; | 18 | iconColor?: string; |
| 19 | + deviceName?: string; | ||
| 19 | } | 20 | } |
| 20 | 21 | ||
| 21 | export type TextComponentType = | 22 | export type TextComponentType = |
| @@ -88,6 +89,7 @@ export const transformTextComponentConfig = ( | @@ -88,6 +89,7 @@ export const transformTextComponentConfig = ( | ||
| 88 | } as TextComponentLayout, | 89 | } as TextComponentLayout, |
| 89 | value: { | 90 | value: { |
| 90 | name: dataSourceRecord.attributeRename || dataSourceRecord.attribute, | 91 | name: dataSourceRecord.attributeRename || dataSourceRecord.attribute, |
| 92 | + deviceName: dataSourceRecord.deviceRename || dataSourceRecord.deviceId, | ||
| 91 | value: dataSourceRecord.componentInfo.value, | 93 | value: dataSourceRecord.componentInfo.value, |
| 92 | icon: dataSourceRecord.componentInfo.icon, | 94 | icon: dataSourceRecord.componentInfo.icon, |
| 93 | unit: dataSourceRecord.componentInfo.unit, | 95 | unit: dataSourceRecord.componentInfo.unit, |
| @@ -72,8 +72,9 @@ export function useSocketConnect(dataSourceRef: Ref<DataBoardLayoutInfo[]>) { | @@ -72,8 +72,9 @@ export function useSocketConnect(dataSourceRef: Ref<DataBoardLayoutInfo[]>) { | ||
| 72 | waitSendQueue.length = 0; | 72 | waitSendQueue.length = 0; |
| 73 | } | 73 | } |
| 74 | }, | 74 | }, |
| 75 | - onMessage(ws, message) { | 75 | + onMessage(_ws, message) { |
| 76 | try { | 76 | try { |
| 77 | + // console.log({ dataSource: unref(dataSourceRef), cmdIdMapping }); | ||
| 77 | const res: ResponseMessage = JSON.parse(message.data); | 78 | const res: ResponseMessage = JSON.parse(message.data); |
| 78 | const { subscriptionId, data = {} } = res; | 79 | const { subscriptionId, data = {} } = res; |
| 79 | const mappingRecord = cmdIdMapping.get(subscriptionId); | 80 | const mappingRecord = cmdIdMapping.get(subscriptionId); |
| @@ -98,12 +99,13 @@ export function useSocketConnect(dataSourceRef: Ref<DataBoardLayoutInfo[]>) { | @@ -98,12 +99,13 @@ export function useSocketConnect(dataSourceRef: Ref<DataBoardLayoutInfo[]>) { | ||
| 98 | 99 | ||
| 99 | const transformSocketMessageItem = () => { | 100 | const transformSocketMessageItem = () => { |
| 100 | const messageList: SocketMessageItem[] = []; | 101 | const messageList: SocketMessageItem[] = []; |
| 101 | - console.log(dataSourceRef); | 102 | + let index = 0; |
| 102 | unref(dataSourceRef).forEach((record, recordIndex) => { | 103 | unref(dataSourceRef).forEach((record, recordIndex) => { |
| 103 | const componentId = record.record.id; | 104 | const componentId = record.record.id; |
| 104 | record.record.dataSource.forEach((dataSource, dataSourceIndex) => { | 105 | record.record.dataSource.forEach((dataSource, dataSourceIndex) => { |
| 105 | const { deviceId, attribute } = dataSource; | 106 | const { deviceId, attribute } = dataSource; |
| 106 | - const cmdId = recordIndex * dataSourceIndex + recordIndex; | 107 | + const cmdId = index; |
| 108 | + index++; | ||
| 107 | setCmdId(cmdId, { | 109 | setCmdId(cmdId, { |
| 108 | componentId, | 110 | componentId, |
| 109 | deviceId, | 111 | deviceId, |