Commit 2c2ef55a2929c43c769a0b32bb7cee5cb948efef

Authored by 温伟
Committed by xp.Huang
1 parent e6d19444

fix: 修复告警日志清除与处理逻辑

... ... @@ -89,6 +89,8 @@ export interface AlarmLogItem {
89 89 propagateRelationTypes?: any;
90 90 organizationId: string;
91 91 organizationName: string;
  92 + cleared?: boolean;
  93 + acknowledged?: boolean;
92 94 }
93 95
94 96 export interface Configuration {
... ...
... ... @@ -133,7 +133,7 @@ export const alarmColumns: BasicColumn[] = [
133 133 dataIndex: 'status',
134 134 customRender({ record }: { record }) {
135 135 const flag = !!record.cleared;
136   - return h(Tag, { color: flag ? 'red' : 'green' }, () => (flag ? '激活' : '清除'));
  136 + return h(Tag, { color: flag ? 'green' : 'red' }, () => (flag ? '清除' : '激活'));
137 137 },
138 138 width: 90,
139 139 },
... ... @@ -253,3 +253,14 @@ export const alarmSchemasForm: FormSchema[] = [
253 253 component: 'InputTextArea',
254 254 },
255 255 ];
  256 +
  257 +export function getAlarmStatus({
  258 + cleared,
  259 + acknowledged,
  260 +}: Record<'cleared' | 'acknowledged', boolean>) {
  261 + const status = cleared ? '清除' : '激活';
  262 +
  263 + const ackStatus = acknowledged ? '已确认' : '未确认';
  264 +
  265 + return `${status}${ackStatus}`;
  266 +}
... ...
... ... @@ -9,24 +9,12 @@
9 9 '清除已确认: 不需要做处理和清除',
10 10 ] -->
11 11 <Authority value="api:yt:alarm:single:handle">
12   - <a-button
13   - type="primary"
14   - class="mr-4"
15   - @click="handleAlarm"
16   - v-if="alarmStatus !== AlarmStatus.ACTIVE_ACK && alarmStatus !== AlarmStatus.CLEARED_ACK"
17   - >
  12 + <a-button type="primary" class="mr-4" @click="handleAlarm" v-if="!status.acknowledged">
18 13 处理
19 14 </a-button>
20 15 </Authority>
21 16 <Authority value="api:yt:alarm:single:clear">
22   - <a-button
23   - danger
24   - type="primary"
25   - @click="clearAlarm"
26   - v-if="alarmStatus === AlarmStatus.ACTIVE_ACK"
27   - >
28   - 清除
29   - </a-button>
  17 + <a-button danger type="primary" @click="clearAlarm" v-if="!status.cleared"> 清除 </a-button>
30 18 </Authority>
31 19 </div>
32 20 </BasicDrawer>
... ... @@ -35,12 +23,12 @@
35 23 <script lang="ts">
36 24 import { defineComponent, ref, unref } from 'vue';
37 25 import { BasicForm, useForm } from '/@/components/Form';
38   - import { alarmSchemasForm } from '../config/detail.config';
  26 + import { alarmSchemasForm, getAlarmStatus } from '../config/detail.config';
39 27 import { clearOrAckAlarm } from '/@/api/device/deviceManager';
40   - import { alarmLevel, statusType } from '/@/views/device/list/config/detail.config';
  28 + import { alarmLevel } from '/@/views/device/list/config/detail.config';
41 29 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
42   - import { AlarmStatus } from '/@/enums/alarmEnum';
43 30 import { Authority } from '/@/components/Authority';
  31 + import { reactive } from 'vue';
44 32 export default defineComponent({
45 33 name: 'AlarmDetailDrawer',
46 34 components: {
... ... @@ -58,18 +46,25 @@
58 46 },
59 47 });
60 48 const alarmId = ref('');
61   - const alarmStatus = ref('');
  49 +
  50 + const status = reactive({
  51 + cleared: false,
  52 + acknowledged: false,
  53 + });
  54 +
62 55 const [registerDrawer, { closeDrawer }] = useDrawerInner(async (data) => {
63 56 await resetFields();
64   - const { deviceAlias, deviceName, severity, status, details, id } = data || {};
  57 + const { deviceAlias, deviceName, severity, details, id, cleared, acknowledged } =
  58 + data || {};
  59 + Object.assign(status, { cleared, acknowledged });
65 60 await setFieldsValue({
66 61 ...data,
67 62 deviceName: deviceAlias || deviceName,
68 63 severity: alarmLevel(severity),
69   - status: statusType(status),
  64 + status: getAlarmStatus({ cleared, acknowledged }),
70 65 details: JSON.stringify(details),
71 66 });
72   - alarmStatus.value = status;
  67 +
73 68 alarmId.value = id;
74 69 });
75 70 // 处理报警
... ... @@ -85,12 +80,11 @@
85 80 closeDrawer();
86 81 };
87 82 return {
  83 + status,
88 84 registerDrawer,
89 85 registerForm,
90 86 clearAlarm,
91 87 handleAlarm,
92   - alarmStatus,
93   - AlarmStatus,
94 88 };
95 89 },
96 90 });
... ...
... ... @@ -109,6 +109,7 @@
109 109 openDrawer(true, record);
110 110 };
111 111 const handleSuccess = () => {
  112 + clearSelectedRowKeys();
112 113 reload();
113 114 };
114 115
... ... @@ -213,23 +214,14 @@
213 214 const rowSelection = getRowSelection();
214 215 const getRows: AlarmLogItem[] = getSelectRows();
215 216
216   - return (
217   - !rowSelection.selectedRowKeys?.length ||
218   - !getRows.every((item) => item.status === AlarmStatus.ACTIVE_ACK)
219   - );
  217 + return !rowSelection.selectedRowKeys?.length || !getRows.every((item) => !item.cleared);
220 218 });
221 219
222 220 const getCanBatchAck = computed(() => {
223 221 const rowSelection = getRowSelection();
224 222 const getRows: AlarmLogItem[] = getSelectRows();
225 223
226   - return (
227   - !rowSelection.selectedRowKeys?.length ||
228   - !getRows.every(
229   - (item) =>
230   - item.status === AlarmStatus.ACTIVE_UN_ACK || item.status === AlarmStatus.CLEARED_UN_ACK
231   - )
232   - );
  224 + return !rowSelection.selectedRowKeys?.length || !getRows.every((item) => !item.acknowledged);
233 225 });
234 226
235 227 const { createMessage } = useMessage();
... ...
... ... @@ -235,7 +235,7 @@ export const alarmColumns: BasicColumn[] = [
235 235 {
236 236 title: '状态',
237 237 dataIndex: 'status',
238   - format: (text) => statusType(text),
  238 + // format: (text) => statusType(text),
239 239 width: 100,
240 240 },
241 241 ];
... ... @@ -383,17 +383,6 @@ export const alarmLevel = (type: string): string => {
383 383 return '不确定';
384 384 }
385 385 };
386   -export const statusType = (type: string): string => {
387   - if (type === 'CLEARED_UNACK') {
388   - return '清除未确认';
389   - } else if (type === 'CLEARED_ACK') {
390   - return '清除已确认';
391   - } else if (type === 'ACTIVE_ACK') {
392   - return '激活已确认';
393   - } else {
394   - return '激活未确认';
395   - }
396   -};
397 386
398 387 export const customerForm: FormSchema[] = [
399 388 {
... ...