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 90 watch(
91 91 () => alarmForm?.value,
92 92 () => {
  93 + if (props.config.option.mode == 'SELECT_PREVIEW') return;
93 94 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm))));
94 95 },
95 96 { immediate: false }
... ...
... ... @@ -131,7 +131,6 @@ export const formSchemas = (): FormSchema[] => {
131 131 deviceProfileId,
132 132 deviceType,
133 133 });
134   - console.log(data, 'data');
135 134 if (data)
136 135 return data.map((item) => ({
137 136 ...item,
... ...
... ... @@ -133,6 +133,7 @@
133 133 watch(
134 134 () => alarmForm?.value,
135 135 () => {
  136 + if (props.config.option.mode == 'SELECT_PREVIEW') return;
136 137 send?.(JSON.stringify(getMessage(unref(currentCmdId), unref(getDesign), unref(alarmForm))));
137 138 },
138 139 { immediate: false }
... ...
  1 +// isRealTime是否是实时
  2 +
1 3 export const getMessage = (cmdId, getDesign, alarmForm) => {
2 4 const entityList = [...new Set(getDesign.dataSource?.map((item) => item.id))];
3 5 const message = {
... ... @@ -26,6 +28,8 @@ export const getMessage = (cmdId, getDesign, alarmForm) => {
26 28 direction: 'DESC',
27 29 },
28 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 34 alarmFields: [
31 35 {
... ...
... ... @@ -140,7 +140,7 @@
140 140 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => {
141 141 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => {
142 142 series.value.forEach((item) => {
143   - if (item.id == deviceId && item.attribute === attribute) {
  143 + if (item.id == deviceId && item.attribute === attribute && value) {
144 144 item.value = getNumberValue(value);
145 145 }
146 146 });
... ...
... ... @@ -142,7 +142,7 @@
142 142 const updateFn: MultipleDataFetchUpdateFn = (message, deviceId, attribute) => {
143 143 forEachGroupMessage(message, deviceId, attribute, (attribute, value, timespan) => {
144 144 series.value.forEach((item) => {
145   - if (item.id == deviceId && item.attribute === attribute) {
  145 + if (item.id == deviceId && item.attribute === attribute && value) {
146 146 item.value = getNumberValue(value);
147 147 }
148 148 time.value = timespan;
... ...
1 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 3 import { useForm } from '/@/components/Form';
5 4 import { useModalInner } from '/@/components/Modal';
6 5 import { useGridLayout } from '/@/hooks/component/useGridLayout';
... ... @@ -8,81 +7,13 @@
8 7 import { BasicForm } from '/@/components/Form';
9 8 import { BasicModal } from '/@/components/Modal';
10 9 import { nextTick } from 'vue';
11   - import {
12   - getPacketIntervalByRange,
13   - getPacketIntervalByValue,
14   - } from '/@/views/device/localtion/cpns/TimePeriodForm/helper';
15   -
16 10 const emit = defineEmits(['register', 'getAlarmForm', 'getHistoryForm']);
17 11 // const emit = defineEmits<{
18 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 18 const [register, method] = useForm({
88 19 schemas: formSchema(),
... ... @@ -103,12 +34,12 @@
103 34 };
104 35 const handleSubmit = async () => {
105 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 43 await nextTick();
113 44 closeModal();
114 45 };
... ...
... ... @@ -3,12 +3,14 @@ import { Ref, inject, provide } from 'vue';
3 3 const SymbolKey = Symbol('alarm-info');
4 4 interface IAlarm {
5 5 pageSize: number;
6   - time: string | number;
  6 + time?: string | number;
  7 + startTs?: string | number;
  8 + endTs?: string | number;
7 9 }
8 10
9 11 export interface AlarmContextType {
10 12 alarmForm: Ref<IAlarm>;
11   - getAlarmForm: (value: any) => void;
  13 + getAlarmForm?: (value: any) => void;
12 14 }
13 15
14 16 export const createAlarmContext = (options: AlarmContextType) => {
... ...
... ... @@ -82,36 +82,48 @@
82 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 91 time: 2592000000,
87   - pageSize: 10,
  92 + pageSize: 20,
  93 + startTs: undefined,
  94 + endTs: undefined,
88 95 });
89 96
90 97 //告警发送数据
91 98 const getAlarmForm = (values) => {
92 99 const { way, pageSize, startTs, endTs } = values;
93   - if (way == 'timePeriod')
  100 + if (way == 'timePeriod') {
94 101 alarmForm.value = {
95   - time: new Date(endTs).getTime() - new Date(startTs).getTime(),
  102 + time: undefined,
  103 + startTs,
  104 + endTs,
96 105 pageSize,
97 106 };
98   - else
  107 + } else
99 108 alarmForm.value = {
100 109 time: startTs,
101 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 118 const historyForm = ref({
108   - startTs: 2592000000,
109   - endTs: undefined,
  119 + startTs: Date.now() - 30 * 24 * 60 * 60 * 1000,
  120 + endTs: Date.now(),
110 121 agg: 'NONE',
111   - limit: null,
  122 + limit: 30,
112 123 interval: undefined,
113 124 way: 'latest',
114 125 });
  126 +
115 127 const getHistoryForm = (values) => {
116 128 const { startTs, endTs, agg, limit, interval, way } = values;
117 129 historyForm.value = {
... ... @@ -122,7 +134,10 @@
122 134 interval,
123 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 142 createHistoryContext({ historyForm: historyForm, getHistoryForm });
128 143
... ... @@ -219,12 +234,8 @@
219 234 <!-- 趋势 -->
220 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 239 </section>
229 240 </template>
230 241
... ...