feat(alarm-page): confirm alarm

This commit is contained in:
yangsy
2025-11-06 15:11:20 +08:00
parent 990626b3ff
commit 2f5514d26f
2 changed files with 58 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
import { userClient, ndmClient } from '@/apis/client'; import { userClient, ndmClient } from '@/apis/client';
import type { PageParams, NdmDeviceAlarmLogPageQuery, PageResult, NdmDeviceAlarmLogResultVO } from '@/apis/models'; import type { PageParams, NdmDeviceAlarmLogPageQuery, PageResult, NdmDeviceAlarmLogResultVO, NdmDeviceAlarmLogUpdateVO } from '@/apis/models';
export const postNdmDeviceAlarmLogPage = async (stationCode: string, pageQuery: PageParams<NdmDeviceAlarmLogPageQuery>, signal?: AbortSignal) => { export const postNdmDeviceAlarmLogPage = async (stationCode: string, pageQuery: PageParams<NdmDeviceAlarmLogPageQuery>, signal?: AbortSignal) => {
const endpoint = '/api/ndm/ndmDeviceAlarmLog/page'; const endpoint = '/api/ndm/ndmDeviceAlarmLog/page';
@@ -21,6 +21,24 @@ export const postNdmDeviceAlarmLogPage = async (stationCode: string, pageQuery:
return alarmData; return alarmData;
}; };
export const putNdmDeviceAlarmLog = async (stationCode: string, updateVO: NdmDeviceAlarmLogUpdateVO) => {
const endpoint = '/api/ndm/ndmDeviceAlarmLog';
if (!stationCode) {
const resp = await userClient.put<NdmDeviceAlarmLogResultVO>(endpoint, updateVO);
const [err, alarmData] = resp;
if (err || !alarmData) {
throw err;
}
return alarmData;
}
const resp = await ndmClient.put<NdmDeviceAlarmLogResultVO>(`/${stationCode}${endpoint}`, updateVO);
const [err, alarmData] = resp;
if (err || !alarmData) {
throw err;
}
return alarmData;
};
export const ndmDeviceAlarmLogDefaultExportByTemplate = async (stationCode: string, pageQuery: PageParams<NdmDeviceAlarmLogPageQuery>) => { export const ndmDeviceAlarmLogDefaultExportByTemplate = async (stationCode: string, pageQuery: PageParams<NdmDeviceAlarmLogPageQuery>) => {
const endpoint = '/api/ndm/ndmDeviceAlarmLog/defaultExportByTemplate'; const endpoint = '/api/ndm/ndmDeviceAlarmLog/defaultExportByTemplate';
if (!stationCode) { if (!stationCode) {

View File

@@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import type { NdmDeviceAlarmLogResultVO } from '@/apis/models'; import type { NdmDeviceAlarmLogResultVO } from '@/apis/models';
import { ndmDeviceAlarmLogDefaultExportByTemplate, postNdmDeviceAlarmLogPage } from '@/apis/requests'; import { ndmDeviceAlarmLogDefaultExportByTemplate, postNdmDeviceAlarmLogPage, putNdmDeviceAlarmLog } from '@/apis/requests';
import { FaultLevel } from '@/enums/fault-level'; import { FaultLevel } from '@/enums/fault-level';
import { AlarmType } from '@/enums/alarm-type'; import { AlarmType } from '@/enums/alarm-type';
import { DeviceType, DeviceTypeCode, DeviceTypeName, tryGetDeviceTypeVal, type DeviceTypeVal } from '@/enums/device-type'; import { DeviceType, DeviceTypeCode, DeviceTypeName, tryGetDeviceTypeVal, type DeviceTypeVal } from '@/enums/device-type';
@@ -10,7 +10,7 @@ import { downloadByData } from '@/utils/download';
import { useMutation } from '@tanstack/vue-query'; import { useMutation } from '@tanstack/vue-query';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type { DataTableColumns, DataTableRowData, PaginationProps, SelectOption, TagProps } from 'naive-ui'; import type { DataTableColumns, DataTableRowData, PaginationProps, SelectOption, TagProps } from 'naive-ui';
import { NForm, NInput, NButton, NSpace, NDataTable, NFormItemGi, NGrid, NSelect, NGridItem, NDatePicker, NTag } from 'naive-ui'; import { NForm, NInput, NButton, NSpace, NDataTable, NFormItemGi, NGrid, NSelect, NGridItem, NDatePicker, NTag, NPopconfirm } from 'naive-ui';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import { ref, reactive, onBeforeMount, h, computed, watch } from 'vue'; import { ref, reactive, onBeforeMount, h, computed, watch } from 'vue';
@@ -173,7 +173,23 @@ const tableColumns: DataTableColumns<NdmDeviceAlarmLogResultVO> = [
key: 'alarmConfirm', key: 'alarmConfirm',
align: 'center', align: 'center',
render: (rowData) => { render: (rowData) => {
return rowData.alarmConfirm === '1' ? '已确认' : '未确认'; if (rowData.alarmConfirm === '1') {
return h(NTag, { type: 'default' }, { default: () => '已确认' });
}
const { id } = rowData;
return h(
NPopconfirm,
{
onPositiveClick: () => {
rowData.alarmConfirm = '1';
confirmAlarm({ id });
},
},
{
trigger: () => h(NButton, { type: 'info', size: 'small' }, { default: () => '确认' }),
default: () => '确认告警?',
},
);
}, },
}, },
// { title: '设备ID', key: 'deviceId' }, // { title: '设备ID', key: 'deviceId' },
@@ -241,6 +257,26 @@ const onClickQuery = () => {
getAlarmList(); getAlarmList();
}; };
const { mutate: confirmAlarm } = useMutation({
mutationFn: async (params: { id?: string }) => {
await putNdmDeviceAlarmLog('', {
id: params.id,
alarmConfirm: '1',
});
},
onError: (error, variables) => {
console.error(error);
window.$message.error(error.message);
const { id } = variables;
if (id) {
const alarmLog = tableData.value.find((item) => item.id === id);
if (alarmLog) {
alarmLog['alarmConfirm'] = '2';
}
}
},
});
const { mutate: downloadTableData, isPending: isDownloading } = useMutation({ const { mutate: downloadTableData, isPending: isDownloading } = useMutation({
mutationFn: async () => { mutationFn: async () => {
const data = await ndmDeviceAlarmLogDefaultExportByTemplate('', { const data = await ndmDeviceAlarmLogDefaultExportByTemplate('', {