ソースを参照

增加系统对sse消息通知的监听,及告警部分卡片显示及跳转

yanglzh 2 年 前
コミット
f8831ab382

+ 54 - 36
src/layout/navBars/breadcrumb/userNews.vue

@@ -1,51 +1,69 @@
 <template>
-  <div class="layout-navbars-breadcrumb-user-news">
-    <div class="head-box">
-      <div class="head-box-title">{{ $t('message.user.newTitle') }}</div>
-      <div class="head-box-btn" v-if="newsList.length > 0" @click="onAllReadClick">{{ $t('message.user.newBtn') }}</div>
-    </div>
-    <div class="content-box">
-      <template v-if="newsList.length > 0">
-        <div class="content-box-item" v-for="(v, k) in newsList" :key="k">
-          <div>{{ v.label }}</div>
-          <div class="content-box-msg">
-            {{ v.value }}
-          </div>
-          <div class="content-box-time">{{ v.time }}</div>
-        </div>
-      </template>
-      <el-empty :description="$t('message.user.newDesc')" v-else></el-empty>
-    </div>
-    <div class="foot-box" @click="onGoToGiteeClick" v-if="newsList.length > 0">{{ $t('message.user.newGo') }}</div>
-  </div>
+	<div class="layout-navbars-breadcrumb-user-news">
+		<div class="head-box">
+			<div class="head-box-title">{{ $t('message.user.newTitle') }}</div>
+			<!-- <div class="head-box-btn" v-if="newsList.length > 0" @click="onAllReadClick">{{ $t('message.user.newBtn') }}</div> -->
+		</div>
+		<div class="content-box">
+			<template v-if="newsList.length > 0">
+				<div class="content-box-item" v-for="(v, k) in newsList" :key="k">
+					<div>{{ v.title }}</div>
+					<div class="content-box-msg">
+						{{ v.content }}
+					</div>
+					<div class="content-box-time">{{ v.createdAt }}</div>
+				</div>
+			</template>
+			<el-empty :description="$t('message.user.newDesc')" v-else></el-empty>
+		</div>
+		<div class="foot-box" @click="onGoToGiteeClick" v-if="newsList.length > 0">{{ $t('message.user.newGo') }}</div>
+	</div>
 </template>
 
 <script lang="ts" setup>
 import { ref } from 'vue';
 import { useRouter } from 'vue-router';
-const router = useRouter()
-const emit = defineEmits(['closePopover'])
+import getOrigin from '/@/utils/origin';
+import api from '/@/api/message';
+import { ElNotification } from 'element-plus'
+
+const router = useRouter();
+const emit = defineEmits(['closePopover']);
+
+
+const newsList = ref<any[]>([
+	// {
+	// 	title: '关于发布的通知',
+	// 	content: '内容。。。',
+	// 	createdAt: '2022-08-07',
+	// },
+]);
+
+api.allUnRead().then((res: any) => {
+	// console.log(res.Info)
+	newsList.value = res.Info.map((item: any) => item.MessageInfo).slice(0, 5)
+  // ElNotification({
+  //   title: '测试消息',
+  //   message: '测试消息',
+  //   type: 'error',
+  // })
+})
+
+// 监听系统消息的SSE
+const es = new EventSource(getOrigin(import.meta.env.VITE_SERVER_URL + '/subscribe/sysMessage'));
+es.addEventListener('lastUnRead', ({ data }) => {
+	if (!data || data === 'null') return;
+	console.log(data);
+});
 
-const newsList = ref([
-  {
-    label: '关于发布的通知',
-    value: '内容。。。',
-    time: '2022-08-07',
-  },
-  {
-    label: '关于系统升级的通知',
-    value: '欢迎升级使用!',
-    time: '2022-08-07',
-  },
-])
 // 全部已读点击
 const onAllReadClick = () => {
-  newsList.value = [];
+	newsList.value = [];
 };
 // 前往通知中心点击
 const onGoToGiteeClick = () => {
-  router.push('/alarm/log')
-  emit('closePopover')
+	router.push('/monitor/notice');
+	emit('closePopover');
 };
 </script>
 

+ 10 - 13
src/views/system/monitor/notice/index.vue

@@ -14,38 +14,35 @@
             </el-select>
           </el-form-item> -->
 					<el-form-item>
-						<el-button size="default" type="primary" class="ml10" @click="getList(1)">
+						<!-- <el-button size="default" type="primary" class="ml10" @click="getList(1)">
 							<el-icon>
 								<ele-Search />
 							</el-icon>
 							查询
-						</el-button>
-						<el-button size="default" type="primary" class="ml10" @click="getList(1)">
+						</el-button> -->
+						<!-- <el-button size="default" type="primary" class="ml10" @click="getList(1)">
 							<el-icon>
 								<ele-Search />
 							</el-icon>
 							清空
-						</el-button>
-						<!-- <el-button size="default" @click="resetQuery()">
-							<el-icon>
-								<ele-Refresh />
-							</el-icon>
-							重置
 						</el-button> -->
 					</el-form-item>
 				</el-form>
 			</div>
 			<el-table :data="tableData" style="width: 100%" v-loading="loading">
 				<el-table-column type="index" label="序号" width="60" align="center" />
-				<el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="status" label="状态" min-width="100" align="center">
+				<el-table-column prop="MessageInfo.title" label="标题" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="MessageInfo.content" label="内容" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="MessageInfo.createdAt" label="发生事件" width="160"></el-table-column>
+				<el-table-column prop="" label="状态" min-width="100" align="center">
 					<template #default="scope">
-						<el-tag type="success" size="small" v-if="scope.row.status">已读</el-tag>
+						<el-tag type="success" size="small" v-if="scope.row.isRead">已读</el-tag>
 						<el-tag type="info" size="small" v-else>未读</el-tag>
 					</template>
 				</el-table-column>
-				<el-table-column label="操作" width="100" align="center">
+				<el-table-column label="操作" width="150" align="center">
 					<template #default="scope">
+						<el-button size="small" text type="primary" v-if="!scope.row.isRead">设为已读</el-button>
 						<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
 					</template>
 				</el-table-column>