feat 弹窗功能修改, 去掉sse消息弹窗, 当增加消息的时候, 弹出警告弹窗
This commit is contained in:
@@ -5,6 +5,10 @@
|
|||||||
"ComputedRef": true,
|
"ComputedRef": true,
|
||||||
"DirectiveBinding": true,
|
"DirectiveBinding": true,
|
||||||
"EffectScope": true,
|
"EffectScope": true,
|
||||||
|
"ElLoading": true,
|
||||||
|
"ElMessage": true,
|
||||||
|
"ElMessageBox": true,
|
||||||
|
"ElNotification": true,
|
||||||
"ExtractDefaultPropTypes": true,
|
"ExtractDefaultPropTypes": true,
|
||||||
"ExtractPropTypes": true,
|
"ExtractPropTypes": true,
|
||||||
"ExtractPublicPropTypes": true,
|
"ExtractPublicPropTypes": true,
|
||||||
|
|||||||
@@ -37,7 +37,14 @@
|
|||||||
<!-- 消息 -->
|
<!-- 消息 -->
|
||||||
<el-tooltip content="警报" effect="dark" placement="bottom">
|
<el-tooltip content="警报" effect="dark" placement="bottom">
|
||||||
<div style="display: flex; align-items: center" class="mr-[30px]">
|
<div style="display: flex; align-items: center" class="mr-[30px]">
|
||||||
<el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="400" :persistent="false">
|
<el-popover
|
||||||
|
placement="bottom"
|
||||||
|
transition="el-zoom-in-top"
|
||||||
|
:width="400"
|
||||||
|
:persistent="false"
|
||||||
|
trigger="click"
|
||||||
|
v-model:visible="popoverVisible"
|
||||||
|
>
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-badge :value="infoData" :max="999">
|
<el-badge :value="infoData" :max="999">
|
||||||
<div class="right-menu-item hover-effect" @click="goToWarningList">
|
<div class="right-menu-item hover-effect" @click="goToWarningList">
|
||||||
@@ -124,6 +131,7 @@ const newNotice = ref(<number>0);
|
|||||||
const { warningList, warningListTotal } = storeToRefs(warningListStore);
|
const { warningList, warningListTotal } = storeToRefs(warningListStore);
|
||||||
|
|
||||||
const infoData = ref(warningListStore.warningListTotal ?? 0);
|
const infoData = ref(warningListStore.warningListTotal ?? 0);
|
||||||
|
const popoverVisible = ref(false);
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
|
||||||
@@ -258,11 +266,23 @@ onMounted(() => {
|
|||||||
watch(
|
watch(
|
||||||
() => warningListStore.warningListTotal,
|
() => warningListStore.warningListTotal,
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
console.log('监听告警列表变化', newVal);
|
|
||||||
infoData.value = newVal;
|
infoData.value = newVal;
|
||||||
},
|
},
|
||||||
{ deep: true }
|
{ deep: true }
|
||||||
);
|
);
|
||||||
|
// 告警数据变化时自动弹出弹窗
|
||||||
|
let noticeFirstLoad = true;
|
||||||
|
watch(
|
||||||
|
() => warningListStore.warningListTotal,
|
||||||
|
() => {
|
||||||
|
if (noticeFirstLoad) {
|
||||||
|
noticeFirstLoad = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
popoverVisible.value = true;
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ interface NoticeItem {
|
|||||||
|
|
||||||
export const useNoticeStore = defineStore('notice', () => {
|
export const useNoticeStore = defineStore('notice', () => {
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
notices: [] as NoticeItem[]
|
notices: [] as NoticeItem[],
|
||||||
|
isNotice: false as boolean
|
||||||
});
|
});
|
||||||
|
|
||||||
const addNotice = (notice: NoticeItem) => {
|
const addNotice = (notice: NoticeItem) => {
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import { getToken } from '@/utils/auth';
|
import { getToken } from '@/utils/auth';
|
||||||
import { ElNotification } from 'element-plus';
|
import { ElNotification } from 'element-plus';
|
||||||
import { useNoticeStore } from '@/store/modules/notice';
|
import { useNoticeStore } from '@/store/modules/notice';
|
||||||
|
import { toRefs } from 'vue';
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
export const initSSE = (url: any) => {
|
export const initSSE = (url: any) => {
|
||||||
|
const noticeStore = useNoticeStore();
|
||||||
|
const { isNotice, notices } = toRefs(noticeStore.state);
|
||||||
if (import.meta.env.VITE_APP_SSE === 'false') {
|
if (import.meta.env.VITE_APP_SSE === 'false') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -40,12 +43,13 @@ export const initSSE = (url: any) => {
|
|||||||
time: new Date().toLocaleString()
|
time: new Date().toLocaleString()
|
||||||
});
|
});
|
||||||
const displayMessage = data.value.split('|')[0].trim();
|
const displayMessage = data.value.split('|')[0].trim();
|
||||||
ElNotification({
|
// ElNotification({
|
||||||
title: '消息',
|
// title: '消息',
|
||||||
message: displayMessage,
|
// message: displayMessage,
|
||||||
type: 'success',
|
// type: 'success',
|
||||||
duration: 3000
|
// duration: 3000
|
||||||
});
|
// });
|
||||||
|
noticeStore.state.isNotice = true;
|
||||||
data.value = null;
|
data.value = null;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ onMounted(() => {
|
|||||||
|
|
||||||
//监听数据源变化,自动刷新列表
|
//监听数据源变化,自动刷新列表
|
||||||
watch(warningListTotal, async (newVal) => {
|
watch(warningListTotal, async (newVal) => {
|
||||||
console.log('监听到报警列表变化,自动刷新列表', newVal);
|
//console.log('监听到报警列表变化,自动刷新列表', newVal);
|
||||||
//数据源不同, 接口复用,请求多了一遍(不属于bug)
|
//数据源不同, 接口复用,请求多了一遍(不属于bug)
|
||||||
await getList();
|
await getList();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user