Commit e3d70c94e325f13b7ece66d9eace08e73260b976

Authored by xp.Huang
2 parents a0d12c47 354ef457

Merge branch 'fix/DEFECT-1452' into 'main_dev'

fix: 修改看板告警数据不正确问题

See merge request yunteng/thingskit-front!759
@@ -90,6 +90,7 @@ @@ -90,6 +90,7 @@
90 watch( 90 watch(
91 () => alarmForm?.value, 91 () => alarmForm?.value,
92 () => { 92 () => {
  93 + if (props.config.option.mode == 'SELECT_PREVIEW') return;
93 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm)))); 94 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm))));
94 }, 95 },
95 { immediate: false } 96 { immediate: false }
@@ -131,7 +131,6 @@ export const formSchemas = (): FormSchema[] => { @@ -131,7 +131,6 @@ export const formSchemas = (): FormSchema[] => {
131 deviceProfileId, 131 deviceProfileId,
132 deviceType, 132 deviceType,
133 }); 133 });
134 - console.log(data, 'data');  
135 if (data) 134 if (data)
136 return data.map((item) => ({ 135 return data.map((item) => ({
137 ...item, 136 ...item,
@@ -133,6 +133,7 @@ @@ -133,6 +133,7 @@
133 watch( 133 watch(
134 () => alarmForm?.value, 134 () => alarmForm?.value,
135 () => { 135 () => {
  136 + if (props.config.option.mode == 'SELECT_PREVIEW') return;
136 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm)))); 137 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm))));
137 }, 138 },
138 { immediate: false } 139 { immediate: false }
  1 +// isRealTime是否是实时
  2 +
1 export const getMessage = (cmdId, getDesign, alarmForm) => { 3 export const getMessage = (cmdId, getDesign, alarmForm) => {
2 const entityList = [...new Set(getDesign.dataSource?.map((item) => item.id))]; 4 const entityList = [...new Set(getDesign.dataSource?.map((item) => item.id))];
3 const message = { 5 const message = {
@@ -26,6 +28,8 @@ export const getMessage = (cmdId, getDesign, alarmForm) => { @@ -26,6 +28,8 @@ export const getMessage = (cmdId, getDesign, alarmForm) => {
26 direction: 'DESC', 28 direction: 'DESC',
27 }, 29 },
28 timeWindow: alarmForm?.time, 30 timeWindow: alarmForm?.time,
  31 + startTs: alarmForm?.startTs ? new Date(alarmForm?.startTs).getTime() : undefined,
  32 + endTs: alarmForm?.endTs ? new Date(alarmForm?.endTs).getTime() : undefined,
29 }, 33 },
30 alarmFields: [ 34 alarmFields: [
31 { 35 {
@@ -140,7 +140,7 @@ @@ -140,7 +140,7 @@
140 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => { 140 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => {
141 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => { 141 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => {
142 series.value.forEach((item) => { 142 series.value.forEach((item) => {
143 - if (item.id == deviceId && item.attribute === attribute) { 143 + if (item.id == deviceId && item.attribute === attribute && value) {
144 item.value = getNumberValue(value); 144 item.value = getNumberValue(value);
145 } 145 }
146 }); 146 });
@@ -142,7 +142,7 @@ @@ -142,7 +142,7 @@
142 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => { 142 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => {
143 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => { 143 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => {
144 series.value.forEach((item) => { 144 series.value.forEach((item) => {
145 - if (item.id == deviceId && item.attribute === attribute) { 145 + if (item.id == deviceId && item.attribute === attribute && value) {
146 item.value = getNumberValue(value); 146 item.value = getNumberValue(value);
147 } 147 }
148 time.value = timespan; 148 time.value = timespan;
1 <script lang="ts" setup> 1 <script lang="ts" setup>
2 - import { ref, unref } from 'vue';  
3 - import { AggregateDataEnum, formSchema, QueryWay, SchemaFiled } from './config'; 2 + import { formSchema, SchemaFiled } from './config';
4 import { useForm } from '/@/components/Form'; 3 import { useForm } from '/@/components/Form';
5 import { useModalInner } from '/@/components/Modal'; 4 import { useModalInner } from '/@/components/Modal';
6 import { useGridLayout } from '/@/hooks/component/useGridLayout'; 5 import { useGridLayout } from '/@/hooks/component/useGridLayout';
@@ -8,81 +7,13 @@ @@ -8,81 +7,13 @@
8 import { BasicForm } from '/@/components/Form'; 7 import { BasicForm } from '/@/components/Form';
9 import { BasicModal } from '/@/components/Modal'; 8 import { BasicModal } from '/@/components/Modal';
10 import { nextTick } from 'vue'; 9 import { nextTick } from 'vue';
11 - import {  
12 - getPacketIntervalByRange,  
13 - getPacketIntervalByValue,  
14 - } from '/@/views/device/localtion/cpns/TimePeriodForm/helper';  
15 -  
16 const emit = defineEmits(['register', 'getAlarmForm', 'getHistoryForm']); 10 const emit = defineEmits(['register', 'getAlarmForm', 'getHistoryForm']);
17 // const emit = defineEmits<{ 11 // const emit = defineEmits<{
18 // (event: 'getAlarmForm', data: WidgetDataType): void; 12 // (event: 'getAlarmForm', data: WidgetDataType): void;
19 // }>(); 13 // }>();
20 14
21 - const fontId = ref('');  
22 - const [registerModal, { closeModal }] = useModalInner(async (data) => {  
23 - fontId.value = unref(data).record.frontId;  
24 - method.updateSchema([  
25 - {  
26 - field: SchemaFiled.PAGE_SIZE,  
27 - ifShow: unref(fontId) !== 'StatisticsComponent7',  
28 - },  
29 - ]);  
30 - if (unref(fontId) !== 'StatisticsComponent7') return;  
31 - await nextTick();  
32 - method.appendSchemaByField(  
33 - {  
34 - field: SchemaFiled.AGG,  
35 - label: '数据聚合功能',  
36 - component: 'Select',  
37 - defaultValue: AggregateDataEnum.NONE,  
38 - componentProps: {  
39 - getPopupContainer: () => document.body,  
40 - options: [  
41 - { label: '最小值', value: AggregateDataEnum.MIN },  
42 - { label: '最大值', value: AggregateDataEnum.MAX },  
43 - { label: '平均值', value: AggregateDataEnum.AVG },  
44 - { label: '求和', value: AggregateDataEnum.SUM },  
45 - { label: '计数', value: AggregateDataEnum.COUNT },  
46 - { label: '空', value: AggregateDataEnum.NONE },  
47 - ],  
48 - },  
49 - },  
50 - SchemaFiled.DATE_RANGE  
51 - );  
52 - method.appendSchemaByField(  
53 - {  
54 - field: SchemaFiled.INTERVAL,  
55 - label: '分组间隔',  
56 - component: 'Select',  
57 - dynamicRules: ({ model }) => {  
58 - return [  
59 - {  
60 - required: model[SchemaFiled.AGG] !== AggregateDataEnum.NONE,  
61 - message: '分组间隔为必填项',  
62 - type: 'number',  
63 - },  
64 - ];  
65 - },  
66 - ifShow({ values }) {  
67 - return values[SchemaFiled.AGG] !== AggregateDataEnum.NONE;  
68 - },  
69 - componentProps({ formModel, formActionType }) {  
70 - const options =  
71 - formModel[SchemaFiled.WAY] === QueryWay.LATEST  
72 - ? getPacketIntervalByValue(formModel[SchemaFiled.START_TS])  
73 - : getPacketIntervalByRange(formModel[SchemaFiled.DATE_RANGE]);  
74 - if (formModel[SchemaFiled.AGG] !== AggregateDataEnum.NONE) {  
75 - formActionType.setFieldsValue({ [SchemaFiled.LIMIT]: null });  
76 - }  
77 - return {  
78 - options,  
79 - getPopupContainer: () => document.body,  
80 - };  
81 - },  
82 - },  
83 - SchemaFiled.AGG  
84 - );  
85 - }); 15 + // const fontId = ref('');
  16 + const [registerModal, { closeModal }] = useModalInner(async () => {});
86 17
87 const [register, method] = useForm({ 18 const [register, method] = useForm({
88 schemas: formSchema(), 19 schemas: formSchema(),
@@ -103,12 +34,12 @@ @@ -103,12 +34,12 @@
103 }; 34 };
104 const handleSubmit = async () => { 35 const handleSubmit = async () => {
105 const values = method.getFieldsValue(); 36 const values = method.getFieldsValue();
106 - if (unref(fontId) == 'StatisticsComponent7') {  
107 - emit('getHistoryForm', values);  
108 - } else {  
109 - emit('getAlarmForm', values);  
110 - } 37 + // if (unref(fontId) == 'StatisticsComponent7') {
  38 + // emit('getHistoryForm', values);
  39 + // } else {
111 40
  41 + // }
  42 + emit('getAlarmForm', values);
112 await nextTick(); 43 await nextTick();
113 closeModal(); 44 closeModal();
114 }; 45 };
@@ -3,12 +3,14 @@ import { Ref, inject, provide } from 'vue'; @@ -3,12 +3,14 @@ import { Ref, inject, provide } from 'vue';
3 const SymbolKey = Symbol('alarm-info'); 3 const SymbolKey = Symbol('alarm-info');
4 interface IAlarm { 4 interface IAlarm {
5 pageSize: number; 5 pageSize: number;
6 - time: string | number; 6 + time?: string | number;
  7 + startTs?: string | number;
  8 + endTs?: string | number;
7 } 9 }
8 10
9 export interface AlarmContextType { 11 export interface AlarmContextType {
10 alarmForm: Ref<IAlarm>; 12 alarmForm: Ref<IAlarm>;
11 - getAlarmForm: (value: any) => void; 13 + getAlarmForm?: (value: any) => void;
12 } 14 }
13 15
14 export const createAlarmContext = (options: AlarmContextType) => { 16 export const createAlarmContext = (options: AlarmContextType) => {
@@ -82,36 +82,48 @@ @@ -82,36 +82,48 @@
82 openAlarmModal(true, { mode: DataActionModeEnum.READ, record: data } as ModalParamsType); 82 openAlarmModal(true, { mode: DataActionModeEnum.READ, record: data } as ModalParamsType);
83 }; 83 };
84 84
85 - const alarmForm = ref({ 85 + const alarmForm = ref<{
  86 + time?: number | string;
  87 + pageSize: number;
  88 + startTs?: number | string;
  89 + endTs?: string | number;
  90 + }>({
86 time: 2592000000, 91 time: 2592000000,
87 - pageSize: 10, 92 + pageSize: 20,
  93 + startTs: undefined,
  94 + endTs: undefined,
88 }); 95 });
89 96
90 //告警发送数据 97 //告警发送数据
91 const getAlarmForm = (values) => { 98 const getAlarmForm = (values) => {
92 const { way, pageSize, startTs, endTs } = values; 99 const { way, pageSize, startTs, endTs } = values;
93 - if (way == 'timePeriod') 100 + if (way == 'timePeriod') {
94 alarmForm.value = { 101 alarmForm.value = {
95 - time: new Date(endTs).getTime() - new Date(startTs).getTime(), 102 + time: undefined,
  103 + startTs,
  104 + endTs,
96 pageSize, 105 pageSize,
97 }; 106 };
98 - else 107 + } else
99 alarmForm.value = { 108 alarmForm.value = {
100 time: startTs, 109 time: startTs,
101 pageSize, 110 pageSize,
  111 + startTs: undefined,
  112 + endTs: undefined,
102 }; 113 };
103 }; 114 };
104 - createAlarmContext({ alarmForm: alarmForm, getAlarmForm }); 115 + createAlarmContext({ alarmForm: alarmForm });
105 116
106 // 历史数据发送 117 // 历史数据发送
107 const historyForm = ref({ 118 const historyForm = ref({
108 - startTs: 2592000000,  
109 - endTs: undefined, 119 + startTs: Date.now() - 30 * 24 * 60 * 60 * 1000,
  120 + endTs: Date.now(),
110 agg: 'NONE', 121 agg: 'NONE',
111 - limit: null, 122 + limit: 30,
112 interval: undefined, 123 interval: undefined,
113 way: 'latest', 124 way: 'latest',
114 }); 125 });
  126 +
115 const getHistoryForm = (values) => { 127 const getHistoryForm = (values) => {
116 const { startTs, endTs, agg, limit, interval, way } = values; 128 const { startTs, endTs, agg, limit, interval, way } = values;
117 historyForm.value = { 129 historyForm.value = {
@@ -122,7 +134,10 @@ @@ -122,7 +134,10 @@
122 interval, 134 interval,
123 way, 135 way,
124 }; 136 };
125 - console.log(values); 137 + if (way === 'latest') {
  138 + historyForm.value.startTs = Date.now() - startTs;
  139 + historyForm.value.endTs = Date.now();
  140 + }
126 }; 141 };
127 createHistoryContext({ historyForm: historyForm, getHistoryForm }); 142 createHistoryContext({ historyForm: historyForm, getHistoryForm });
128 143
@@ -219,12 +234,8 @@ @@ -219,12 +234,8 @@
219 <!-- 趋势 --> 234 <!-- 趋势 -->
220 <HistoryTrendModal @register="registerTrendModal" /> 235 <HistoryTrendModal @register="registerTrendModal" />
221 236
222 - <!-- 告警选择时间 -->  
223 - <AlarmTimeModal  
224 - @register="registerAlarmModal"  
225 - @getAlarmForm="getAlarmForm"  
226 - @getHistoryForm="getHistoryForm"  
227 - /> 237 + <!-- 选择时间 -->
  238 + <AlarmTimeModal @register="registerAlarmModal" @getAlarmForm="getAlarmForm" />
228 </section> 239 </section>
229 </template> 240 </template>
230 241