Commit ba226a677dfab369bd6243bd4148823bc313228c
Merge branch 'fix/DEFECT-1377' into 'main_dev'
fix: 修复看板名称生效,但是数据动效没生效 See merge request yunteng/thingskit-front!672
Showing
4 changed files
with
84 additions
and
61 deletions
... | ... | @@ -243,7 +243,6 @@ |
243 | 243 | height: 16, |
244 | 244 | fontSize: unref(getRatio) ? 10 * unref(getRatio) : 10, |
245 | 245 | color: fontColor || 'inherit', |
246 | - // formatter: `{value} ${unit ?? ''}`, | |
247 | 246 | }, |
248 | 247 | }, |
249 | 248 | ], |
... | ... | @@ -275,42 +274,16 @@ |
275 | 274 | const { forEachGroupMessage } = useReceiveMessage(); |
276 | 275 | const { getNumberValue } = useReceiveValue(); |
277 | 276 | const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => { |
278 | - // const { data = {} } = message; | |
279 | - // const { dataSource } = props.config.option; | |
280 | - // const { dataSource } = unref(getDesign); | |
281 | - // const series = dataSource.map((item, index) => { | |
282 | - // const { unit, fontColor, showDeviceName, attribute, deviceName, deviceRename } = item; | |
283 | - // const [latest] = data[attribute] || []; | |
284 | - // const [_timespan, value] = latest || []; | |
285 | - // return { | |
286 | - // value, | |
287 | - // name: showDeviceName ? (deviceRename ? deviceRename : deviceName) : '', | |
288 | - // title: { | |
289 | - // color: fontColor, | |
290 | - // offsetCenter: index == 0 ? ['0%', '-35%'] : index == 1 ? ['0%', '0%'] : ['0%', '35%'], | |
291 | - // }, | |
292 | - // detail: { | |
293 | - // color: fontColor, | |
294 | - // valueAnimation: true, | |
295 | - // offsetCenter: index == 0 ? ['0%', '-20%'] : index == 1 ? ['0%', '18%'] : ['0%', '50%'], | |
296 | - // formatter: `{value} ${unit ?? ''}`, | |
297 | - // }, | |
298 | - // } as SeriesOption['data']; | |
299 | - // }); | |
300 | - // // console.log(series, 'series'); | |
301 | - // const xAxisData = unref(getDesign).dataSource.map((item: any) => item.fontColor as any); | |
302 | - // unref(chartInstance)?.setOption({ | |
303 | - // series: [{ data: series, pointer: { show: false } }], | |
304 | - // color: xAxisData as any, | |
305 | - // }); | |
306 | - | |
307 | 277 | forEachGroupMessage(message, deviceId, attribute, (attribute, value) => { |
278 | + console.log(value, 'value'); | |
308 | 279 | series.value.forEach((item) => { |
309 | 280 | if (item.id === deviceId && item.attribute === attribute) { |
310 | 281 | item.value = getNumberValue(value); |
311 | 282 | } |
312 | 283 | }); |
284 | + console.log(value); | |
313 | 285 | }); |
286 | + console.log(series, 'series'); | |
314 | 287 | unref(chartInstance)?.setOption({ |
315 | 288 | series: [{ data: unref(series), pointer: { show: false } }], |
316 | 289 | color: unref(series).map((item) => item.title.color), | ... | ... |
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | }>(); |
19 | 19 | |
20 | 20 | interface PercentType { |
21 | - value: number; | |
21 | + value?: number; | |
22 | 22 | fontColor: string; |
23 | 23 | backgroundColor: string; |
24 | 24 | unit: string; |
... | ... | @@ -26,6 +26,8 @@ |
26 | 26 | attribute?: string; |
27 | 27 | attributeRename?: string; |
28 | 28 | deviceId?: string; |
29 | + deviceName?: string; | |
30 | + deviceRename?: string; | |
29 | 31 | } |
30 | 32 | |
31 | 33 | const defaultValue: PercentType[] = [ |
... | ... | @@ -34,6 +36,8 @@ |
34 | 36 | fontColor: '#19eff', |
35 | 37 | backgroundColor: '#19eff', |
36 | 38 | unit: '℃', |
39 | + deviceName: '温度', | |
40 | + attribute: '1', | |
37 | 41 | id: buildUUID(), |
38 | 42 | }, |
39 | 43 | { |
... | ... | @@ -41,6 +45,8 @@ |
41 | 45 | fontColor: '#1E8667', |
42 | 46 | backgroundColor: '#1E8667', |
43 | 47 | unit: '℃', |
48 | + deviceName: '温度', | |
49 | + attribute: '3', | |
44 | 50 | id: buildUUID(), |
45 | 51 | }, |
46 | 52 | { |
... | ... | @@ -48,6 +54,8 @@ |
48 | 54 | fontColor: '#2196F3', |
49 | 55 | backgroundColor: '#2196F3', |
50 | 56 | unit: '℃', |
57 | + deviceName: '温度', | |
58 | + attribute: '2', | |
51 | 59 | id: buildUUID(), |
52 | 60 | }, |
53 | 61 | ]; |
... | ... | @@ -60,15 +68,16 @@ |
60 | 68 | fontColor: presetFontColor, |
61 | 69 | backgroundColor: persetBackgroundColor, |
62 | 70 | } = persetOption || {}; |
63 | - | |
64 | 71 | return { |
65 | 72 | dataSource: dataSource.map((item) => { |
66 | 73 | const { unit, fontColor, backgroundColor } = item.componentInfo || {}; |
67 | - const { attribute, attributeRename, deviceId } = item; | |
74 | + const { attribute, attributeRename, deviceName, deviceRename, deviceId } = item; | |
68 | 75 | return { |
69 | 76 | unit: unit ?? presetUnit, |
70 | 77 | fontColor: fontColor ?? presetFontColor, |
71 | 78 | backgroundColor: backgroundColor ?? persetBackgroundColor, |
79 | + deviceName, | |
80 | + deviceRename, | |
72 | 81 | attribute, |
73 | 82 | attributeRename, |
74 | 83 | id: deviceId, |
... | ... | @@ -79,6 +88,7 @@ |
79 | 88 | const percentList = ref( |
80 | 89 | props.config.option.dataSource ? unref(getDesign).dataSource : defaultValue |
81 | 90 | ); |
91 | + console.log(percentList, 'percentList'); | |
82 | 92 | |
83 | 93 | const { forEachGroupMessage } = useReceiveMessage(); |
84 | 94 | |
... | ... | @@ -104,8 +114,8 @@ |
104 | 114 | |
105 | 115 | <div v-for="item in percentList" :key="item.id" class="flex flex-col ml-3 mr-3 items-stretch"> |
106 | 116 | <div class="flex justify-between"> |
107 | - <div class="text-gray-500 text-lg truncate"> | |
108 | - {{ item.attributeRename || item.attribute || '温度' }} | |
117 | + <div class="text-gray-500 text-lg truncate" :style="{ color: item.fontColor }"> | |
118 | + {{ item.deviceRename || item.deviceName + '-' + item.attribute || '温度' }} | |
109 | 119 | </div> |
110 | 120 | <span class="text-lg" :style="{ color: item.fontColor }" |
111 | 121 | >{{ item.value }} {{ item.unit }}</span | ... | ... |
... | ... | @@ -7,6 +7,8 @@ |
7 | 7 | import { SvgIcon } from '/@/components/Icon'; |
8 | 8 | import { computed } from 'vue'; |
9 | 9 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
10 | + import { useReceiveMessage } from '../../../hook/useReceiveMessage'; | |
11 | + import { useReceiveValue } from '../../../hook/useReceiveValue'; | |
10 | 12 | |
11 | 13 | const props = defineProps<{ |
12 | 14 | config: ComponentPropsConfigType<typeof option>; |
... | ... | @@ -24,7 +26,8 @@ |
24 | 26 | return { |
25 | 27 | dataSource: dataSource.map((item) => { |
26 | 28 | const { fontColor, icon, iconColor, unit } = item.componentInfo; |
27 | - const { attribute, attributeRename } = item; | |
29 | + const { attribute, attributeRename, deviceName, deviceRename, deviceId } = item; | |
30 | + | |
28 | 31 | return { |
29 | 32 | unit: unit ?? persetUnit, |
30 | 33 | fontColor: fontColor ?? persetFontColor, |
... | ... | @@ -32,11 +35,22 @@ |
32 | 35 | iconColor: iconColor ?? persetIconColor, |
33 | 36 | attribute: attribute || attributeRename, |
34 | 37 | attributeRename, |
38 | + deviceName, | |
39 | + deviceRename, | |
40 | + id: deviceId, | |
35 | 41 | }; |
42 | + // return { | |
43 | + // unit: unit ?? persetUnit, | |
44 | + // fontColor: fontColor ?? persetFontColor, | |
45 | + // icon: icon ?? persetIcon, | |
46 | + // iconColor: iconColor ?? persetIconColor, | |
47 | + // attribute: attribute || attributeRename, | |
48 | + // attributeRename, | |
49 | + // }; | |
36 | 50 | }), |
37 | 51 | }; |
38 | 52 | }); |
39 | - const svgList = ref<any>([ | |
53 | + const defaultSvgList = ref<any>([ | |
40 | 54 | { |
41 | 55 | value: 26.2, |
42 | 56 | name: 'wendu', |
... | ... | @@ -55,23 +69,53 @@ |
55 | 69 | }, |
56 | 70 | ]); |
57 | 71 | |
58 | - const updateFn: MultipleDataFetchUpdateFn = (message) => { | |
59 | - const { data = {} } = message; | |
60 | - const { dataSource } = unref(getDesign); | |
61 | - svgList.value.length = 0; | |
62 | - svgList.value = dataSource.map((item) => { | |
63 | - const { icon, iconColor, unit, fontColor, attribute } = item || {}; | |
64 | - const [latest] = data[attribute] || []; | |
65 | - const [_timespan, value] = latest || []; | |
66 | - return { | |
67 | - value: Number(value), | |
68 | - name: attribute, | |
69 | - icon, | |
70 | - unit, | |
71 | - iconColor, | |
72 | - fontColor, | |
73 | - }; | |
72 | + const { forEachGroupMessage } = useReceiveMessage(); | |
73 | + const { getNumberValue } = useReceiveValue(); | |
74 | + | |
75 | + const updateSvgList = ref( | |
76 | + props.config.option.dataSource ? unref(getDesign).dataSource : defaultSvgList | |
77 | + ); | |
78 | + | |
79 | + const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => { | |
80 | + // console.log(unref(getDesign).dataSource, 'dataSource'); | |
81 | + forEachGroupMessage(message, deviceId, attribute, (attribute, value) => { | |
82 | + // unref(getDesign).dataSource.forEach((item) => { | |
83 | + // if (item.id === deviceId && item.attribute === attribute) { | |
84 | + // svgList.value = unref(getDesign).dataSource.map((item) => { | |
85 | + // return { | |
86 | + // value: getNumberValue(value), | |
87 | + // name: item.deviceRename || item.deviceName, | |
88 | + // icon: item.icon, | |
89 | + // unit: item.unit, | |
90 | + // fontColor: item.fontColor, | |
91 | + // iconColor: item.iconColor, | |
92 | + // }; | |
93 | + // }); | |
94 | + // } | |
95 | + updateSvgList.value.forEach((item) => { | |
96 | + if (item.id === deviceId && item.attribute === attribute) { | |
97 | + item.value = getNumberValue(value); | |
98 | + } | |
99 | + }); | |
100 | + // }); | |
74 | 101 | }); |
102 | + // console.log(unref(svgList), 'svglist'); | |
103 | + // const { data = {} } = message; | |
104 | + // const { dataSource } = unref(getDesign); | |
105 | + // svgList.value.length = 0; | |
106 | + // svgList.value = dataSource.map((item) => { | |
107 | + // const { icon, iconColor, unit, fontColor, attribute } = item || {}; | |
108 | + // const [latest] = data[attribute] || []; | |
109 | + // const [_timespan, value] = latest || []; | |
110 | + // return { | |
111 | + // value: Number(value), | |
112 | + // name: attribute, | |
113 | + // icon, | |
114 | + // unit, | |
115 | + // iconColor, | |
116 | + // fontColor, | |
117 | + // }; | |
118 | + // }); | |
75 | 119 | }; |
76 | 120 | |
77 | 121 | useMultipleDataFetch(props, updateFn); |
... | ... | @@ -82,7 +126,7 @@ |
82 | 126 | <DeviceName :config="config" /> |
83 | 127 | <div |
84 | 128 | style="width: 86%" |
85 | - v-for="item in svgList" | |
129 | + v-for="item in updateSvgList" | |
86 | 130 | :key="item.id" |
87 | 131 | class="flex justify-between items-center" |
88 | 132 | > |
... | ... | @@ -94,7 +138,9 @@ |
94 | 138 | :style="{ color: item.iconColor }" |
95 | 139 | /> |
96 | 140 | |
97 | - <div class="text-gray-500 text-lg truncate ml-6">{{ item.attribute || '温度' }}</div> | |
141 | + <div class="text-gray-500 text-lg truncate ml-6">{{ | |
142 | + item.deviceRename || item.deviceName || '温度' | |
143 | + }}</div> | |
98 | 144 | </div> |
99 | 145 | |
100 | 146 | <h1 class="font-bold text-xl m-2 truncate" :style="{ color: item.fontColor }"> | ... | ... |