Commit 49580d56eab7abaca894f76fed15832131ab239f
Merge branch 'fix/components-lateralNumericalControl' into 'main_dev'
fix: 修改控制组件滑块 See merge request yunteng/thingskit-front!697
Showing
2 changed files
with
56 additions
and
27 deletions
@@ -2,19 +2,24 @@ | @@ -2,19 +2,24 @@ | ||
2 | import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | 2 | import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; |
3 | import { option } from './config'; | 3 | import { option } from './config'; |
4 | import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | 4 | import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; |
5 | - import { Slider } from 'ant-design-vue'; | ||
6 | - import { computed, ref } from 'vue'; | 5 | + import { Slider, Spin } from 'ant-design-vue'; |
6 | + import { computed, ref, unref } from 'vue'; | ||
7 | import { useComponentScale } from '../../../hook/useComponentScale'; | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
9 | + import { useSendCommand } from '../../../hook/useSendCommand'; | ||
10 | + import { useReceiveValue } from '../../../hook/useReceiveValue'; | ||
9 | 11 | ||
10 | const props = defineProps<{ | 12 | const props = defineProps<{ |
11 | config: ComponentPropsConfigType<typeof option>; | 13 | config: ComponentPropsConfigType<typeof option>; |
12 | }>(); | 14 | }>(); |
13 | 15 | ||
14 | const sliderValue = ref<number>(33); | 16 | const sliderValue = ref<number>(33); |
17 | + const oldSliderValue = ref<number>(33); | ||
15 | const sMin = ref<number>(0); | 18 | const sMin = ref<number>(0); |
16 | const sMax = ref<number>(100); | 19 | const sMax = ref<number>(100); |
17 | 20 | ||
21 | + const { loading, sendCommand } = useSendCommand(); | ||
22 | + | ||
18 | const getDesign = computed(() => { | 23 | const getDesign = computed(() => { |
19 | const { option, persetOption } = props.config; | 24 | const { option, persetOption } = props.config; |
20 | const { componentInfo, attribute, attributeRename } = option; | 25 | const { componentInfo, attribute, attributeRename } = option; |
@@ -28,10 +33,29 @@ | @@ -28,10 +33,29 @@ | ||
28 | }; | 33 | }; |
29 | }); | 34 | }); |
30 | 35 | ||
31 | - const handleChange = async () => {}; | 36 | + const index = ref<number>(0); |
37 | + | ||
38 | + const handleChange = async (e) => { | ||
39 | + index.value++; | ||
40 | + if (index.value == 1) { | ||
41 | + oldSliderValue.value = unref(sliderValue); | ||
42 | + } | ||
43 | + sliderValue.value = e; | ||
44 | + }; | ||
45 | + | ||
46 | + const handleAfterChange = async (e) => { | ||
47 | + const flag = await sendCommand(props.config.option, unref(sliderValue)); | ||
48 | + flag | ||
49 | + ? ((sliderValue.value = e), (oldSliderValue.value = sliderValue.value), (index.value = 0)) | ||
50 | + : (sliderValue.value = unref(oldSliderValue)); | ||
51 | + }; | ||
32 | 52 | ||
33 | - const updateFn: DataFetchUpdateFn = () => { | ||
34 | - // console.log(message, 'message', attribute, 'attribute'); | 53 | + const { getNumberValue } = useReceiveValue(); |
54 | + const updateFn: DataFetchUpdateFn = (message, attribute) => { | ||
55 | + const { data = {} } = message; | ||
56 | + const [latest] = data[attribute] || []; | ||
57 | + const [_, value] = latest; | ||
58 | + sliderValue.value = getNumberValue(value); | ||
35 | }; | 59 | }; |
36 | 60 | ||
37 | useDataFetch(props, updateFn); | 61 | useDataFetch(props, updateFn); |
@@ -42,28 +66,31 @@ | @@ -42,28 +66,31 @@ | ||
42 | <main class="w-full h-full flex flex-col justify-center"> | 66 | <main class="w-full h-full flex flex-col justify-center"> |
43 | <DeviceName :config="config" class="text-center" /> | 67 | <DeviceName :config="config" class="text-center" /> |
44 | <main :style="getScale"> | 68 | <main :style="getScale"> |
45 | - <div class="flex flex-col ml-11 mr-11"> | ||
46 | - <span | ||
47 | - :style="{ color: getDesign.fontColor }" | ||
48 | - class="font-bold text-xl mt-3 truncate text-center" | ||
49 | - >{{ sliderValue }}</span | ||
50 | - > | ||
51 | - <Slider | ||
52 | - :style="{ '--slider-color': getDesign.controlBarColor }" | ||
53 | - class="no-drag" | ||
54 | - v-model:value="sliderValue" | ||
55 | - :min="sMin" | ||
56 | - :max="sMax" | ||
57 | - @change="handleChange" | ||
58 | - /> | 69 | + <Spin :spinning="loading" class="w-full h-full"> |
70 | + <div class="flex flex-col ml-11 mr-11 w-full"> | ||
71 | + <span | ||
72 | + :style="{ color: getDesign.fontColor }" | ||
73 | + class="font-bold text-xl mt-3 truncate text-center" | ||
74 | + >{{ sliderValue }}</span | ||
75 | + > | ||
76 | + <Slider | ||
77 | + :style="{ '--slider-color': getDesign.controlBarColor }" | ||
78 | + class="no-drag" | ||
79 | + :value="sliderValue" | ||
80 | + :min="sMin" | ||
81 | + :max="sMax" | ||
82 | + @change="handleChange" | ||
83 | + @afterChange="handleAfterChange" | ||
84 | + /> | ||
59 | 85 | ||
60 | - <span | ||
61 | - :style="{ color: getDesign.fontColor }" | ||
62 | - class="mt-3 truncate font-bold text-xs text-center" | ||
63 | - > | ||
64 | - {{ getDesign.attribute || '设备1' }} | ||
65 | - </span> | ||
66 | - </div> | 86 | + <span |
87 | + :style="{ color: getDesign.fontColor }" | ||
88 | + class="mt-3 truncate font-bold text-xs text-center" | ||
89 | + > | ||
90 | + {{ getDesign.attribute || '设备1' }} | ||
91 | + </span> | ||
92 | + </div> | ||
93 | + </Spin> | ||
67 | </main> | 94 | </main> |
68 | </main> | 95 | </main> |
69 | </template> | 96 | </template> |
@@ -244,7 +244,9 @@ export const commonDataSourceSchemas = (): FormSchema[] => { | @@ -244,7 +244,9 @@ export const commonDataSourceSchemas = (): FormSchema[] => { | ||
244 | return await getDeviceAttribute({ | 244 | return await getDeviceAttribute({ |
245 | deviceProfileId, | 245 | deviceProfileId, |
246 | dataType: | 246 | dataType: |
247 | - isControlComponent(category!) || isBooleanComponent(unref(selectWidgetKeys)) | 247 | + (isControlComponent(category!) && |
248 | + unref(selectWidgetKeys).componentKey !== 'LateralNumericalControl') || | ||
249 | + isBooleanComponent(unref(selectWidgetKeys)) | ||
248 | ? DataTypeEnum.IS_BOOL | 250 | ? DataTypeEnum.IS_BOOL |
249 | : undefined, | 251 | : undefined, |
250 | }); | 252 | }); |