Commit 2c2ef55a2929c43c769a0b32bb7cee5cb948efef
Committed by
xp.Huang
1 parent
e6d19444
fix: 修复告警日志清除与处理逻辑
Showing
5 changed files
with
35 additions
and
47 deletions
| @@ -89,6 +89,8 @@ export interface AlarmLogItem { | @@ -89,6 +89,8 @@ export interface AlarmLogItem { | ||
| 89 | propagateRelationTypes?: any; | 89 | propagateRelationTypes?: any; |
| 90 | organizationId: string; | 90 | organizationId: string; |
| 91 | organizationName: string; | 91 | organizationName: string; |
| 92 | + cleared?: boolean; | ||
| 93 | + acknowledged?: boolean; | ||
| 92 | } | 94 | } |
| 93 | 95 | ||
| 94 | export interface Configuration { | 96 | export interface Configuration { |
| @@ -133,7 +133,7 @@ export const alarmColumns: BasicColumn[] = [ | @@ -133,7 +133,7 @@ export const alarmColumns: BasicColumn[] = [ | ||
| 133 | dataIndex: 'status', | 133 | dataIndex: 'status', |
| 134 | customRender({ record }: { record }) { | 134 | customRender({ record }: { record }) { |
| 135 | const flag = !!record.cleared; | 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 | width: 90, | 138 | width: 90, |
| 139 | }, | 139 | }, |
| @@ -253,3 +253,14 @@ export const alarmSchemasForm: FormSchema[] = [ | @@ -253,3 +253,14 @@ export const alarmSchemasForm: FormSchema[] = [ | ||
| 253 | component: 'InputTextArea', | 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,24 +9,12 @@ | ||
| 9 | '清除已确认: 不需要做处理和清除', | 9 | '清除已确认: 不需要做处理和清除', |
| 10 | ] --> | 10 | ] --> |
| 11 | <Authority value="api:yt:alarm:single:handle"> | 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 | </a-button> | 14 | </a-button> |
| 20 | </Authority> | 15 | </Authority> |
| 21 | <Authority value="api:yt:alarm:single:clear"> | 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 | </Authority> | 18 | </Authority> |
| 31 | </div> | 19 | </div> |
| 32 | </BasicDrawer> | 20 | </BasicDrawer> |
| @@ -35,12 +23,12 @@ | @@ -35,12 +23,12 @@ | ||
| 35 | <script lang="ts"> | 23 | <script lang="ts"> |
| 36 | import { defineComponent, ref, unref } from 'vue'; | 24 | import { defineComponent, ref, unref } from 'vue'; |
| 37 | import { BasicForm, useForm } from '/@/components/Form'; | 25 | import { BasicForm, useForm } from '/@/components/Form'; |
| 38 | - import { alarmSchemasForm } from '../config/detail.config'; | 26 | + import { alarmSchemasForm, getAlarmStatus } from '../config/detail.config'; |
| 39 | import { clearOrAckAlarm } from '/@/api/device/deviceManager'; | 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 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 29 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
| 42 | - import { AlarmStatus } from '/@/enums/alarmEnum'; | ||
| 43 | import { Authority } from '/@/components/Authority'; | 30 | import { Authority } from '/@/components/Authority'; |
| 31 | + import { reactive } from 'vue'; | ||
| 44 | export default defineComponent({ | 32 | export default defineComponent({ |
| 45 | name: 'AlarmDetailDrawer', | 33 | name: 'AlarmDetailDrawer', |
| 46 | components: { | 34 | components: { |
| @@ -58,18 +46,25 @@ | @@ -58,18 +46,25 @@ | ||
| 58 | }, | 46 | }, |
| 59 | }); | 47 | }); |
| 60 | const alarmId = ref(''); | 48 | const alarmId = ref(''); |
| 61 | - const alarmStatus = ref(''); | 49 | + |
| 50 | + const status = reactive({ | ||
| 51 | + cleared: false, | ||
| 52 | + acknowledged: false, | ||
| 53 | + }); | ||
| 54 | + | ||
| 62 | const [registerDrawer, { closeDrawer }] = useDrawerInner(async (data) => { | 55 | const [registerDrawer, { closeDrawer }] = useDrawerInner(async (data) => { |
| 63 | await resetFields(); | 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 | await setFieldsValue({ | 60 | await setFieldsValue({ |
| 66 | ...data, | 61 | ...data, |
| 67 | deviceName: deviceAlias || deviceName, | 62 | deviceName: deviceAlias || deviceName, |
| 68 | severity: alarmLevel(severity), | 63 | severity: alarmLevel(severity), |
| 69 | - status: statusType(status), | 64 | + status: getAlarmStatus({ cleared, acknowledged }), |
| 70 | details: JSON.stringify(details), | 65 | details: JSON.stringify(details), |
| 71 | }); | 66 | }); |
| 72 | - alarmStatus.value = status; | 67 | + |
| 73 | alarmId.value = id; | 68 | alarmId.value = id; |
| 74 | }); | 69 | }); |
| 75 | // 处理报警 | 70 | // 处理报警 |
| @@ -85,12 +80,11 @@ | @@ -85,12 +80,11 @@ | ||
| 85 | closeDrawer(); | 80 | closeDrawer(); |
| 86 | }; | 81 | }; |
| 87 | return { | 82 | return { |
| 83 | + status, | ||
| 88 | registerDrawer, | 84 | registerDrawer, |
| 89 | registerForm, | 85 | registerForm, |
| 90 | clearAlarm, | 86 | clearAlarm, |
| 91 | handleAlarm, | 87 | handleAlarm, |
| 92 | - alarmStatus, | ||
| 93 | - AlarmStatus, | ||
| 94 | }; | 88 | }; |
| 95 | }, | 89 | }, |
| 96 | }); | 90 | }); |
| @@ -109,6 +109,7 @@ | @@ -109,6 +109,7 @@ | ||
| 109 | openDrawer(true, record); | 109 | openDrawer(true, record); |
| 110 | }; | 110 | }; |
| 111 | const handleSuccess = () => { | 111 | const handleSuccess = () => { |
| 112 | + clearSelectedRowKeys(); | ||
| 112 | reload(); | 113 | reload(); |
| 113 | }; | 114 | }; |
| 114 | 115 | ||
| @@ -213,23 +214,14 @@ | @@ -213,23 +214,14 @@ | ||
| 213 | const rowSelection = getRowSelection(); | 214 | const rowSelection = getRowSelection(); |
| 214 | const getRows: AlarmLogItem[] = getSelectRows(); | 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 | const getCanBatchAck = computed(() => { | 220 | const getCanBatchAck = computed(() => { |
| 223 | const rowSelection = getRowSelection(); | 221 | const rowSelection = getRowSelection(); |
| 224 | const getRows: AlarmLogItem[] = getSelectRows(); | 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 | const { createMessage } = useMessage(); | 227 | const { createMessage } = useMessage(); |
| @@ -235,7 +235,7 @@ export const alarmColumns: BasicColumn[] = [ | @@ -235,7 +235,7 @@ export const alarmColumns: BasicColumn[] = [ | ||
| 235 | { | 235 | { |
| 236 | title: '状态', | 236 | title: '状态', |
| 237 | dataIndex: 'status', | 237 | dataIndex: 'status', |
| 238 | - format: (text) => statusType(text), | 238 | + // format: (text) => statusType(text), |
| 239 | width: 100, | 239 | width: 100, |
| 240 | }, | 240 | }, |
| 241 | ]; | 241 | ]; |
| @@ -383,17 +383,6 @@ export const alarmLevel = (type: string): string => { | @@ -383,17 +383,6 @@ export const alarmLevel = (type: string): string => { | ||
| 383 | return '不确定'; | 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 | export const customerForm: FormSchema[] = [ | 387 | export const customerForm: FormSchema[] = [ |
| 399 | { | 388 | { |