zhangjie 1 年之前
父节点
当前提交
eb05d633c4

+ 21 - 3
src/features/invigilation/RealtimeMonitoring/RealtimeMonitoring.vue

@@ -628,10 +628,28 @@ export default {
       let dataList = [];
       const maxCount = 16;
       const maxCacheTime = 5 * 60 * 1000;
+      // 每个人只取最新一条消息
+      let warningListMap = {};
+      data.forEach((item, index) => {
+        item.index = index;
+        warningListMap[item.examRecordId] = item;
+      });
+      const warningList = Object.values(warningListMap).sort(
+        (a, b) => a.index - b.index
+      );
+
       const warningMessageTimeCaches = { ...this.warningMessageTimeCaches };
-      for (let i = 0; i < data.length; i++) {
-        const item = data[i];
-        const stdKey = item.examRecordId;
+      for (let i = 0; i < warningList.length; i++) {
+        const item = warningList[i];
+
+        const content = (item.info || "").split(/【|】/);
+        if (content.length === 3) {
+          item.title = content[1];
+        } else {
+          item.title = "";
+        }
+
+        const stdKey = `${item.examRecordId}_${item.title}`;
         const nowTime = Date.now();
 
         if (warningMessageTimeCaches[stdKey]) {

+ 20 - 3
src/features/invigilation/RealtimeMonitoring/RealtimeMonitoringFull.vue

@@ -161,7 +161,10 @@ export default {
     this.observerResize();
   },
   computed: {
-    ...mapState("invigilation", ["liveDomains"]),
+    ...mapState("invigilation", [
+      "liveDomains",
+      "warningMessageListTimeCaches",
+    ]),
     isFullScreen() {
       return this.$store.state.isFullScreen;
     },
@@ -269,6 +272,9 @@ export default {
 
     /** 跳转详情 */
     toDetail(item) {
+      const stdKey = `${item.examRecordId}_${item.title}`;
+      this.warningMessageListTimeCaches[stdKey] = Date.now();
+
       this.$router
         .push({
           name: "WarningDetail",
@@ -366,12 +372,23 @@ export default {
       let warningListMap = {};
       res.data.data.forEach((item, index) => {
         item.index = index;
-        if (!warningListMap[item.examRecordId])
-          warningListMap[item.examRecordId] = item;
+        warningListMap[item.examRecordId] = item;
       });
       this.warningList = Object.values(warningListMap).sort(
         (a, b) => a.index - b.index
       );
+      const nowTime = Date.now();
+      const maxCacheTime = 5 * 60 * 1000;
+      this.warningList = this.warningList
+        .map((item) => {
+          const content = (item.info || "").split(/【|】/);
+          item.title = content.length === 3 ? content[1] : "";
+        })
+        .filter((item) => {
+          const stdKey = `${item.examRecordId}_${item.title}`;
+          const cacheTime = this.warningMessageListTimeCaches[stdKey] || 0;
+          return nowTime - cacheTime > maxCacheTime;
+        });
     },
     /** 定时刷新预警/通话待办 */
     refreshList() {

+ 4 - 0
src/store/modules/invigilation.js

@@ -24,6 +24,7 @@ const state = {
   liveDomains: [],
   selectedExamId: null,
   warningMessageTimeCaches: {},
+  warningMessageListTimeCaches: {},
 };
 
 const mutations = {
@@ -48,6 +49,9 @@ const mutations = {
   setWarningMessageTimeCaches(state, warningMessageTimeCaches) {
     state.warningMessageTimeCaches = warningMessageTimeCaches;
   },
+  setWarningMessageListTimeCaches(state, warningMessageListTimeCaches) {
+    state.warningMessageListTimeCaches = warningMessageListTimeCaches;
+  },
 };
 
 const actions = {