import { alarmTableData, alarmInfoRes, alarmLevelMapping, pushChannelMapping } from '../type'; import { getAlarmMessageList, deleteAlarmMessage, updateAlarmStatus } from '../api/index'; import { reactive, ref, onMounted } from 'vue'; import { defineStore } from 'pinia'; export const useAlarmDataList = defineStore('useAlarmDataList', () => { const alarmDataList = reactive([]); const searchContent = ref(''); const pageSize = ref(10); const currentPage = ref(1); const totalPage = ref(0); const totalRow = ref(0); function getAlarmData() { getAlarmMessageList({ content: searchContent.value, pageNumber: currentPage.value, pageSize: pageSize.value, }).then((res: alarmInfoRes) => { if (res === null) { currentPage.value = 1; totalPage.value = 0; totalRow.value = 0; alarmDataList.length = 0; return; } alarmDataList.length = 0; totalPage.value = res.totalPage; totalRow.value = res.totalRow; for (let alarmMessage of res.records) { alarmDataList.push({ id: alarmMessage.id, alarmType: alarmMessage.violationName, alarmLevel: alarmLevelMapping[alarmMessage.violationLevel], pushChannel: alarmMessage.pushChannel .slice(1, -1) .split(',') .map((channel) => pushChannelMapping[Number(channel)]), status: Boolean(alarmMessage.status), operationTime: alarmMessage.updatedAt, }); } }); } function deleteAlarm(id: number) { deleteAlarmMessage(id).then((res) => { getAlarmData(); }); } function updateStatus(id: number, rowStatus: boolean) { let status = Number(rowStatus); updateAlarmStatus({ id, status }).then((res) => { getAlarmData(); }); } onMounted(() => { getAlarmData(); console.log('alarmDataList', alarmDataList); }); return { alarmDataList, searchContent, currentPage, pageSize, totalPage, totalRow, getAlarmData, deleteAlarm, updateStatus, }; });