Forráskód Böngészése

消息提醒页面开发以及消息提醒按钮状态控制(仅有消息时显示)

Bella 2 éve
szülő
commit
70d04526e7

+ 193 - 36
src/components/layout/Header.vue

@@ -1,14 +1,30 @@
 <template>
   <div id="layoutHeader">
     <el-row>
-      <el-col :span="8" v-if="$store.state.windowsSize.width >= 1300" class="logoBox">
+      <el-col
+        :span="8"
+        v-if="$store.state.windowsSize.width >= 1300"
+        class="logoBox"
+      >
         <div class="logo"></div>
         <div class="title">
-          {{ systemInfo.system_name ? systemInfo.system_name : "浦东新区资源环境智慧审计平台" }}
-          <span class="title_version">Version:{{ systemInfo.version ? systemInfo.version : "版本信息获取失败!" }}</span>
+          {{
+            systemInfo.system_name
+              ? systemInfo.system_name
+              : "浦东新区资源环境智慧审计平台"
+          }}
+          <span class="title_version"
+            >Version:{{
+              systemInfo.version ? systemInfo.version : "版本信息获取失败!"
+            }}</span
+          >
         </div>
       </el-col>
-      <el-col :span="2" v-if="$store.state.windowsSize.width < 1300" class="logoBox">
+      <el-col
+        :span="2"
+        v-if="$store.state.windowsSize.width < 1300"
+        class="logoBox"
+      >
         <div class="logo"></div>
       </el-col>
       <el-col :span="$store.state.windowsSize.width < 1300 ? 18 : 13">
@@ -21,13 +37,23 @@
           @select="select"
         >
           <el-menu-item index="1"
-            ><i class="el-icon-s-home" v-show="$store.state.windowsSize.width <= 1700"></i
-            ><span v-show="$store.state.windowsSize.width > 1700">首页</span></el-menu-item
+            ><i
+              class="el-icon-s-home"
+              v-show="$store.state.windowsSize.width <= 1700"
+            ></i
+            ><span v-show="$store.state.windowsSize.width > 1700"
+              >首页</span
+            ></el-menu-item
           >
           <el-submenu index="2">
             <template slot="title"
-              ><i class="el-icon-s-order" v-show="$store.state.windowsSize.width <= 1700"></i
-              ><span v-show="$store.state.windowsSize.width > 1700">疑点筛查</span></template
+              ><i
+                class="el-icon-s-order"
+                v-show="$store.state.windowsSize.width <= 1700"
+              ></i
+              ><span v-show="$store.state.windowsSize.width > 1700"
+                >疑点筛查</span
+              ></template
             >
             <el-menu-item index="2-1">土地资源</el-menu-item>
             <el-menu-item index="2-2">水资源</el-menu-item>
@@ -36,17 +62,32 @@
             <el-menu-item index="2-5">镇域专题</el-menu-item>
           </el-submenu>
           <el-menu-item index="3"
-            ><i class="el-icon-s-order" v-show="$store.state.windowsSize.width <= 1700"></i
-            ><span v-show="$store.state.windowsSize.width > 1700">综合分析</span></el-menu-item
+            ><i
+              class="el-icon-s-order"
+              v-show="$store.state.windowsSize.width <= 1700"
+            ></i
+            ><span v-show="$store.state.windowsSize.width > 1700"
+              >综合分析</span
+            ></el-menu-item
           >
           <el-menu-item index="4"
-            ><i class="el-icon-s-management" v-show="$store.state.windowsSize.width <= 1700"></i
-            ><span v-show="$store.state.windowsSize.width > 1700">全流程管理</span></el-menu-item
+            ><i
+              class="el-icon-s-management"
+              v-show="$store.state.windowsSize.width <= 1700"
+            ></i
+            ><span v-show="$store.state.windowsSize.width > 1700"
+              >全流程管理</span
+            ></el-menu-item
           >
           <el-submenu index="5">
             <template slot="title"
-              ><i class="el-icon-s-finance" v-show="$store.state.windowsSize.width <= 1700"></i
-              ><span v-show="$store.state.windowsSize.width > 1700">智能辅助</span></template
+              ><i
+                class="el-icon-s-finance"
+                v-show="$store.state.windowsSize.width <= 1700"
+              ></i
+              ><span v-show="$store.state.windowsSize.width > 1700"
+                >智能辅助</span
+              ></template
             >
             <el-menu-item index="5-1">法律法规</el-menu-item>
             <el-menu-item index="5-2">历史问题</el-menu-item>
@@ -59,9 +100,11 @@
         <div class="user">
           <!-- 我的任务快捷菜单 -->
           <div class="manage-icon" @click="goToMyMission()"></div>
-          <!-- <div class="alert-icon">
+          <div class="alert-icon" v-if="messageLength===0"></div>
+          <div class="alert-icon" v-else-if="messageLength>0" @click="goToMessageList">
             <div class="alert-info">12</div>
-          </div> -->
+          </div>
+          <div class="split-line"></div>
           <div class="inner-user">
             <el-dropdown @command="handleCommand">
               <span class="el-dropdown-link">
@@ -75,7 +118,11 @@
                 ></el-avatar>
                 <!-- <div class="inner-user-icon"></div> -->
                 <div class="inner-user-text">
-                  {{ $store.state.userInfo && $store.state.userInfo.username ? $store.state.userInfo.username : userName }}
+                  {{
+                    $store.state.userInfo && $store.state.userInfo.username
+                      ? $store.state.userInfo.username
+                      : userName
+                  }}
                 </div>
               </span>
               <el-dropdown-menu slot="dropdown">
@@ -89,12 +136,15 @@
   </div>
 </template>
 <script>
+import publicFun from "@/utils/publicFunction.js";
 export default {
   name: "Header",
   data() {
     return {
       systemInfo: {},
-      userName: localStorage.getItem("USER_NAME") ? localStorage.getItem("USER_NAME") : "未登录",
+      userName: localStorage.getItem("USER_NAME")
+        ? localStorage.getItem("USER_NAME")
+        : "未登录",
       ActiveIndex: "0",
       navData: {
         1: "首页",
@@ -109,8 +159,82 @@ export default {
         "5-1": "法律法规",
         "5-2": "历史问题",
         "5-3": "指标体系",
-        "5-4": "资金投入"
-      }
+        "5-4": "资金投入",
+        6: "消息提醒",
+      },
+      
+      messageData: [
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "13:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "14:20",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+      ],
     };
   },
   mounted() {
@@ -129,7 +253,7 @@ export default {
       let sortparam = [{ field: "c_publish_time", orderByType: 2 }];
       params.append("orderBy", JSON.stringify(sortparam));
       this.$Post(this.urlsCollection.selectContentList, params).then(
-        res => {
+        (res) => {
           if (res.code === 200 && res.content.data.length > 0) {
             let tableData = res.content.data;
             if (tableData.length > 0) {
@@ -143,7 +267,10 @@ export default {
               if (systemVersion) {
                 if (systemVersion != this.systemInfo.version) {
                   this.$message.success("新版本已发布!自动更新中!");
-                  localStorage.setItem("SYSTEM_VERSION", this.systemInfo.version);
+                  localStorage.setItem(
+                    "SYSTEM_VERSION",
+                    this.systemInfo.version
+                  );
                   window.location.reload();
                 }
               } else {
@@ -155,7 +282,7 @@ export default {
             this.$message.error(res.message);
           }
         },
-        error => {
+        (error) => {
           this.systemInfo = {};
           this.$message.error(error);
         }
@@ -166,7 +293,10 @@ export default {
       let _ActiveIndex = "";
       if (this.$store.state.navSelect) {
         if (this.$store.state.navSelect.subIndex) {
-          _ActiveIndex = this.$store.state.navSelect.index + "-" + this.$store.state.navSelect.subIndex;
+          _ActiveIndex =
+            this.$store.state.navSelect.index +
+            "-" +
+            this.$store.state.navSelect.subIndex;
         } else {
           _ActiveIndex = this.$store.state.navSelect.index;
         }
@@ -188,6 +318,11 @@ export default {
         this.$bus.$emit("wdrw");
       });
     },
+    // 显示消息列表
+    goToMessageList() {
+      this.ActiveIndex = "6";
+      this.select(this.ActiveIndex);
+    },
     // 切换菜单事件
     select: function (index) {
       var that = this;
@@ -196,7 +331,7 @@ export default {
       that.$emit("navSelect", {
         index: index[0],
         subIndex: index[1],
-        name: name
+        name: name,
       });
       // let notFound = ["2-2", "2-3", "2-4", "5-3"];
       // let notFoundState = true;
@@ -239,7 +374,7 @@ export default {
         // 我的标记
         myLabels: {},
         overlay: {},
-        analysisGroups: {}
+        analysisGroups: {},
       };
       localStorage.removeItem("TOKEN");
       localStorage.removeItem("USER_ID");
@@ -248,18 +383,24 @@ export default {
       const h = this.$createElement;
       this.$notify({
         title: "登出成功",
-        message: h("i", { style: "color: teal" }, "用户退出!感谢使用!")
+        message: h("i", { style: "color: teal" }, "用户退出!感谢使用!"),
       });
-    }
+    },
   },
   watch: {
     "$store.state.navSelect": {
       handler() {
         this.getActiveIndex(false);
       },
-      deep: true
-    }
-  }
+      deep: true,
+    },
+    messageData: {
+      handler(val) {
+        this.messageLength = val.length;
+      },
+      immediate: true,
+    },
+  },
 };
 </script>
 <style lang="less" scoped>
@@ -270,7 +411,6 @@ export default {
   height: 60px;
   left: 0px;
   top: 0px;
-  // background: url("../../assets/home/header_background.png") no-repeat center;
   background: linear-gradient(180deg, #4279d2 0%, #0942c0 100%);
   background-size: 100% 100%;
   color: #ffffff;
@@ -361,7 +501,11 @@ export default {
   color: #ffffff !important;
   font-size: 24px !important;
 }
-#layoutHeader /deep/ .el-menu--horizontal > .el-submenu .el-submenu__title:hover {
+#layoutHeader
+  /deep/
+  .el-menu--horizontal
+  > .el-submenu
+  .el-submenu__title:hover {
   background: none;
 }
 #layoutHeader /deep/ .el-submenu__title i {
@@ -377,7 +521,6 @@ export default {
 #layoutHeader .user {
   float: right;
   margin-right: 30px;
-  cursor: pointer;
   width: 95%;
   height: 100%;
   position: relative;
@@ -388,17 +531,22 @@ export default {
   justify-content: space-around;
   align-items: center;
   .manage-icon {
+    cursor: pointer;
+    position: absolute;
+    right: 170px;
+    top: 2px;
     width: 28px;
     height: 28px;
     padding: 15px;
     background: url("../../assets/home/header_manage.png") no-repeat center;
   }
   .alert-icon {
+    cursor: pointer;
     width: 26px;
     height: 30px;
     position: absolute;
-    left: 80px;
-    top: 14px;
+    right: 120px;
+    top: 16px;
     background: url("../../assets/home/header_alert.png") no-repeat center;
     .alert-info {
       width: 25px;
@@ -414,6 +562,14 @@ export default {
       justify-content: center;
     }
   }
+  .split-line {
+    width: 2px;
+    height: 60px;
+    position: absolute;
+    right: 85px;
+    top: 0px;
+    background: linear-gradient(to bottom, #3b67c9, #254ec6);
+  }
   .admin-icon {
     width: 41px;
     height: 41px;
@@ -425,6 +581,7 @@ export default {
     top: 8px;
   }
   .inner-user {
+    cursor: pointer;
     width: 46px;
     height: 46px;
     position: absolute;

+ 1 - 1
src/store/index.js

@@ -122,7 +122,7 @@ export default new Vuex.Store({
     },
     // 预设模型图层组
     changePreModelData: (state, data) => {
-      state.preModelLayerMap = data
+      state.preModelLayerMap = data;
     },
   },
   actions: {},

+ 191 - 123
src/views/FrequencyView.vue

@@ -14,7 +14,9 @@
         <div class="dialog_title_info">
           <div>
             立项年度:{{
-              formData[activeRowIndex] && formData[activeRowIndex].c_lxndwt ? formData[activeRowIndex].c_lxndwt : "--"
+              formData[activeRowIndex] && formData[activeRowIndex].c_lxndwt
+                ? formData[activeRowIndex].c_lxndwt
+                : "--"
             }}
           </div>
           <div>
@@ -30,15 +32,22 @@
         </div>
         <div class="dialog_title_info">
           问题金额(万元):{{
-            formData[activeRowIndex] && formData[activeRowIndex].c_wtjewt ? formData[activeRowIndex].c_wtjewt : "--"
+            formData[activeRowIndex] && formData[activeRowIndex].c_wtjewt
+              ? formData[activeRowIndex].c_wtjewt
+              : "--"
           }}
         </div>
         <div class="dialog_title">审计报告中的问题反映情况</div>
-        <div v-for="(item, index) in dialogData" :key="index" class="dialog_table">
+        <div
+          v-for="(item, index) in dialogData"
+          :key="index"
+          class="dialog_table"
+        >
           <div>{{ item.title }}</div>
           <div>
             {{
-              formData[activeRowIndex] && formData[activeRowIndex][item.columnName]
+              formData[activeRowIndex] &&
+              formData[activeRowIndex][item.columnName]
                 ? formData[activeRowIndex][item.columnName]
                 : "--"
             }}
@@ -50,17 +59,33 @@
       <div class="header">
         <div class="header-select">
           <div class="header-title">历史问题</div>
-          <div>
-            <el-input style="width: 300px; margin-right: 10px" v-model="allSearchColumn" clearable placeholder="请输入关键词">
-              <i class="el-icon-search" style="cursor: pointer" @click="getContentInfoWhere(1)" slot="append"></i>
+          <div class="header-search">
+            <el-input
+             style="width:300px;"
+              v-model="allSearchColumn"
+              clearable
+              placeholder="请输入关键词"
+            >
+              <i
+                class="el-icon-search"
+                style="cursor: pointer"
+                @click="getContentInfoWhere(1)"
+                slot="append"
+              ></i>
             </el-input>
             <el-button @click="resetEvent()">重置</el-button>
           </div>
         </div>
       </div>
       <div class="center" v-if="reStart">
-        <el-table :data="tableData" style="width: 100%" max-height="600" @row-click="rowClick">
-          <el-table-column type="index" width="70" align="center" label="序号"> </el-table-column>
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          max-height="600"
+          @row-click="rowClick"
+        >
+          <el-table-column type="index" width="70" align="center" label="序号">
+          </el-table-column>
           <el-table-column
             prop="createYear"
             label="立项年度"
@@ -111,7 +136,7 @@
         </el-table>
       </div>
       <div class="footer">
-        <Pagination class="pagination-style" :paginationData="paginationData" />
+        <Pagination :paginationData="paginationData" />
       </div>
     </div>
   </div>
@@ -153,7 +178,7 @@ export default {
         auditTownFilters: [],
         typeFilters: [],
         keyPointFilters: [],
-        problemTypeFilters: []
+        problemTypeFilters: [],
       },
       // 整改中的查看详情弹窗状态
       dialogVisible: false,
@@ -163,7 +188,7 @@ export default {
         { title: "问题定性二级", columnName: "c_wtdx2wt", info: "--" },
         { title: "问题事项", columnName: "c_wtsxwt", info: "--" },
         { title: "使用法条", columnName: "c_syftwt", info: "--" },
-        { title: "边审边改情况", columnName: "c_bsbgqkwt", info: "--" }
+        { title: "边审边改情况", columnName: "c_bsbgqkwt", info: "--" },
       ],
       // 暂存全部数据
       formData: [],
@@ -175,19 +200,25 @@ export default {
         currentPage: 1,
         pageSizes: [5, 10, 20, 30],
         total: 50,
-        currentChange: val => {
+        currentChange: (val) => {
           this.getTableData(val);
         },
-        handleSizeChange: val => {
+        handleSizeChange: (val) => {
           this.handleSizeChange(val);
-        }
-      }
+        },
+      },
     };
   },
   computed: {
     filteredValues() {
-      return this.timeSelectVal[0] + this.townSelectVal[0] + this.typeSelectVal[0] + this.keyPoint[0] + this.problemType[0];
-    }
+      return (
+        this.timeSelectVal[0] +
+        this.townSelectVal[0] +
+        this.typeSelectVal[0] +
+        this.keyPoint[0] +
+        this.problemType[0]
+      );
+    },
   },
   created() {
     this.townOptions = [];
@@ -207,13 +238,13 @@ export default {
       let params = new FormData();
       params = {
         type: type,
-        cName: cName
+        cName: cName,
       };
 
-      this.$Post(this.urlsCollection.selectByCNameAType, params).then(res => {
+      this.$Post(this.urlsCollection.selectByCNameAType, params).then((res) => {
         if (res.code === 200 && res.content.length > 0) {
           this.classDictMap[keyName] = new Map();
-          res.content.forEach(v => {
+          res.content.forEach((v) => {
             this.classDictMap[keyName].set(v.index + "", v.name);
           });
 
@@ -221,13 +252,13 @@ export default {
             this.classDictMap[keyName].forEach((v, i) => {
               this.townOptions.push({
                 value: i,
-                label: v
+                label: v,
               });
               this.unTownOptions[i] = v;
             });
             this.townOptions.unshift({
               value: "全部",
-              label: "全部"
+              label: "全部",
             });
           }
 
@@ -235,7 +266,7 @@ export default {
             this.classDictMap[keyName].forEach((v, i) => {
               this.typeOptions.push({
                 value: i,
-                label: v
+                label: v,
               });
             });
           }
@@ -306,7 +337,13 @@ export default {
       // 创建搜索条件对象
       this.whereStr = "";
       // 存在明确条件时
-      if (this.keyPoint[0] || this.problemType[0] || this.timeSelectVal[0] || this.townSelectVal[0] || this.typeSelectVal[0]) {
+      if (
+        this.keyPoint[0] ||
+        this.problemType[0] ||
+        this.timeSelectVal[0] ||
+        this.townSelectVal[0] ||
+        this.typeSelectVal[0]
+      ) {
         // 存在明确条件又存在模糊条件时
         let andWhereStr = "";
         let orWhereStr = "";
@@ -361,7 +398,8 @@ export default {
         if (orWhereStr) {
           this.whereStr = "where ";
           this.whereStr += andWhereStr.substring(3, andWhereStr.length);
-          this.whereStr += " and(" + orWhereStr.substring(2, orWhereStr.length) + ") ";
+          this.whereStr +=
+            " and(" + orWhereStr.substring(2, orWhereStr.length) + ") ";
         } else {
           this.whereStr = "where ";
           this.whereStr += andWhereStr.substring(3, andWhereStr.length);
@@ -400,97 +438,114 @@ export default {
       let params = new FormData();
       params = {
         columnId: 1127,
-        whereStr: this.whereStr
+        whereStr: this.whereStr,
       };
       // 开始查询
-      this.$Post(this.urlsCollection.getContentInfoWhere, params).then(res => {
-        if (res.code === 200 && res.content && res.content.length > 0) {
-          // 当前页数
-          this.paginationData.currentPage = val;
-          // 总数
-          this.paginationData.total = res.content.length;
-          // 每页显示数据个数
-          // this.currentPageSize;
-          this.formData = res.content.slice(
-            (this.paginationData.currentPage - 1) * this.currentPageSize,
-            this.paginationData.currentPage * this.currentPageSize > this.paginationData.total
-              ? this.paginationData.total
-              : this.paginationData.currentPage * this.currentPageSize
-          );
+      this.$Post(this.urlsCollection.getContentInfoWhere, params).then(
+        (res) => {
+          if (res.code === 200 && res.content && res.content.length > 0) {
+            // 当前页数
+            this.paginationData.currentPage = val;
+            // 总数
+            this.paginationData.total = res.content.length;
+            // 每页显示数据个数
+            // this.currentPageSize;
+            this.formData = res.content.slice(
+              (this.paginationData.currentPage - 1) * this.currentPageSize,
+              this.paginationData.currentPage * this.currentPageSize >
+                this.paginationData.total
+                ? this.paginationData.total
+                : this.paginationData.currentPage * this.currentPageSize
+            );
 
-          this.filters = {
-            createYearFilters: [],
-            auditTownFilters: [],
-            typeFilters: [],
-            keyPointFilters: [],
-            problemTypeFilters: []
-          };
-          let auditTownFilters = [];
-          let createYearFilters = [];
-          let typeFilters = [];
-          let problemTypeFilters = [];
-          let keyPointFilters = [];
-          res.content.forEach(item => {
-            if (auditTownFilters.indexOf(item.c_bsjzwt) == -1) {
-              auditTownFilters.push(item.c_bsjzwt);
-            }
-            if (createYearFilters.indexOf(item.c_lxndwt) == -1) {
-              createYearFilters.push(Number(item.c_lxndwt));
-            }
-            if (typeFilters.indexOf(item.c_sjlbwt) == -1) {
-              typeFilters.push(item.c_sjlbwt);
-            }
-            if (problemTypeFilters.indexOf(item.c_ckwtdxwt) == -1) {
-              problemTypeFilters.push(item.c_ckwtdxwt);
-            }
-            if (keyPointFilters.indexOf(item.c_zdsjsxwt) == -1) {
-              keyPointFilters.push(item.c_zdsjsxwt);
-            }
-          });
-          auditTownFilters.forEach(item => {
-            this.filters.auditTownFilters.push({ text: this.classDictMap["浦东新区行政区划"].get(item), value: item });
-          });
-          for (let index = 0; index < createYearFilters.length; index++) {
-            for (let index2 = index; index2 < createYearFilters.length; index2++) {
-              let syearsList = createYearFilters[index];
-              let eyearsList = createYearFilters[index2];
-              if (syearsList > eyearsList) {
-                createYearFilters[index] = eyearsList;
-                createYearFilters[index2] = syearsList;
+            this.filters = {
+              createYearFilters: [],
+              auditTownFilters: [],
+              typeFilters: [],
+              keyPointFilters: [],
+              problemTypeFilters: [],
+            };
+            let auditTownFilters = [];
+            let createYearFilters = [];
+            let typeFilters = [];
+            let problemTypeFilters = [];
+            let keyPointFilters = [];
+            res.content.forEach((item) => {
+              if (auditTownFilters.indexOf(item.c_bsjzwt) == -1) {
+                auditTownFilters.push(item.c_bsjzwt);
+              }
+              if (createYearFilters.indexOf(item.c_lxndwt) == -1) {
+                createYearFilters.push(Number(item.c_lxndwt));
+              }
+              if (typeFilters.indexOf(item.c_sjlbwt) == -1) {
+                typeFilters.push(item.c_sjlbwt);
+              }
+              if (problemTypeFilters.indexOf(item.c_ckwtdxwt) == -1) {
+                problemTypeFilters.push(item.c_ckwtdxwt);
+              }
+              if (keyPointFilters.indexOf(item.c_zdsjsxwt) == -1) {
+                keyPointFilters.push(item.c_zdsjsxwt);
+              }
+            });
+            auditTownFilters.forEach((item) => {
+              this.filters.auditTownFilters.push({
+                text: this.classDictMap["浦东新区行政区划"].get(item),
+                value: item,
+              });
+            });
+            for (let index = 0; index < createYearFilters.length; index++) {
+              for (
+                let index2 = index;
+                index2 < createYearFilters.length;
+                index2++
+              ) {
+                let syearsList = createYearFilters[index];
+                let eyearsList = createYearFilters[index2];
+                if (syearsList > eyearsList) {
+                  createYearFilters[index] = eyearsList;
+                  createYearFilters[index2] = syearsList;
+                }
               }
             }
+            createYearFilters.forEach((item) => {
+              this.filters.createYearFilters.push({
+                text: Number(item),
+                value: Number(item),
+              });
+            });
+            typeFilters.forEach((item) => {
+              this.filters.typeFilters.push({
+                text: this.classDictMap["审计类别"].get(item),
+                value: item,
+              });
+            });
+            problemTypeFilters.forEach((item) => {
+              this.filters.problemTypeFilters.push({ text: item, value: item });
+            });
+            keyPointFilters.forEach((item) => {
+              this.filters.keyPointFilters.push({ text: item, value: item });
+            });
+            let rowIndex = 0;
+            this.tableData = this.formData.map((v) => {
+              rowIndex++;
+              return {
+                rowIndex: rowIndex,
+                id: v.id || "--",
+                createYear: v.c_lxndwt || "--",
+                auditTown:
+                  this.classDictMap["浦东新区行政区划"].get(v.c_bsjzwt) || "--",
+                type: this.classDictMap["审计类别"].get(v.c_sjlbwt) || "--",
+                keyPoint: v.c_zdsjsxwt || "--",
+                problemType: v.c_ckwtdxwt || "--",
+                problemNature: v.c_wtdx1wt || "--",
+              };
+            });
+          } else {
+            this.paginationData.total = 0;
+            this.tableData = [];
           }
-          createYearFilters.forEach(item => {
-            this.filters.createYearFilters.push({ text: Number(item), value: Number(item) });
-          });
-          typeFilters.forEach(item => {
-            this.filters.typeFilters.push({ text: this.classDictMap["审计类别"].get(item), value: item });
-          });
-          problemTypeFilters.forEach(item => {
-            this.filters.problemTypeFilters.push({ text: item, value: item });
-          });
-          keyPointFilters.forEach(item => {
-            this.filters.keyPointFilters.push({ text: item, value: item });
-          });
-          let rowIndex = 0;
-          this.tableData = this.formData.map(v => {
-            rowIndex++;
-            return {
-              rowIndex: rowIndex,
-              id: v.id || "--",
-              createYear: v.c_lxndwt || "--",
-              auditTown: this.classDictMap["浦东新区行政区划"].get(v.c_bsjzwt) || "--",
-              type: this.classDictMap["审计类别"].get(v.c_sjlbwt) || "--",
-              keyPoint: v.c_zdsjsxwt || "--",
-              problemType: v.c_ckwtdxwt || "--",
-              problemNature: v.c_wtdx1wt || "--"
-            };
-          });
-        } else {
-          this.paginationData.total = 0;
-          this.tableData = [];
         }
-      });
+      );
     },
     // 切换页
     getTableData(val) {
@@ -501,13 +556,13 @@ export default {
       console.log(`每页 ${val} 条`);
       this.currentPageSize = val;
       this.getTableData(this.currentPage);
-    }
+    },
   },
   watch: {
     filteredValues() {
       this.getTableData(this.currentPage);
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="less" scoped>
@@ -518,11 +573,21 @@ export default {
   &-inner {
     width: 98%;
     height: 97%;
-    // background: rgba(0, 39, 77, 0.5);
+    background: rgba(0, 39, 77, 0.5);
     .header {
-      height: 13%;
+      height: 120px;
       width: 100%;
       position: relative;
+      &-search{
+        width: 400px;
+        height: 50px;
+        position: absolute;
+        top: 25px;
+        right: 10px;
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+      }
       &-title {
         width: 84px;
         height: 20px;
@@ -531,6 +596,9 @@ export default {
         font-weight: bold;
         color: #4dc3ff;
         line-height: 30px;
+        position: absolute;
+        top: 8px;
+        left: 15px;
       }
       &-select {
         height: 40px;
@@ -560,11 +628,15 @@ export default {
       }
       .query-btn {
         right: 110px;
-        background-image: linear-gradient(to top, rgba(79, 172, 254, 1), rgba(0, 242, 254, 1));
+        background-image: linear-gradient(
+          to top,
+          rgba(79, 172, 254, 1),
+          rgba(0, 242, 254, 1)
+        );
       }
     }
     .center {
-      height: 77%;
+      height: calc(90% - 120px);
       width: 100%;
       overflow: auto;
       /deep/.el-table {
@@ -579,13 +651,9 @@ export default {
       }
     }
     .footer {
-      height: 10%;
-      width: 100%;
       position: absolute;
-      .pagination-style {
-        position: absolute;
-        right: 50px;
-      }
+      right: 50px;
+      bottom: 30px;
     }
   }
 }

+ 116 - 56
src/views/HomeView.vue

@@ -23,10 +23,15 @@
           menuIndex: '2',
           subMenuIndex: '5',
           legendIcon: legendIcon,
-          legendTitle: legendTitle
+          legendTitle: legendTitle,
         }"
       />
-      <div class="select-title" :style="{ left: $ifMenu('2', '5') ? '20px' : 'calc(50% - 80px)' }">所属街道</div>
+      <div
+        class="select-title"
+        :style="{ left: $ifMenu('2', '5') ? '20px' : 'calc(50% - 80px)' }"
+      >
+        所属街道
+      </div>
       <NewSelect
         class="select-container"
         :style="{ left: $ifMenu('2', '5') ? '100px' : '50%' }"
@@ -38,7 +43,13 @@
     </div>
 
     <!-- 综合分析 -->
-    <ComprehensiveAnalysis id="ComprehensiveContainer" v-show="$ifMenu('3', '')" />
+    <ComprehensiveAnalysis
+      id="ComprehensiveContainer"
+      v-show="$ifMenu('3', '')"
+    />
+
+    <!-- 消息提醒 -->
+    <MessageList id="MessageListContainer" v-if="$ifMenu('6', '')" />
 
     <!-- 法律法规 -->
     <LawView id="LawContainer" v-if="$ifMenu('5', '1')" />
@@ -59,7 +70,8 @@
     </div>
     <!-- 左侧菜单列(较宽,两列) -- 疑点筛查 -->
     <div id="leftMenusW" v-for="(item, index) in menus.leftW" :key="index">
-      <MenuCard :menuData="item2" v-for="item2 in item" :key="item2.title"> </MenuCard>
+      <MenuCard :menuData="item2" v-for="item2 in item" :key="item2.title">
+      </MenuCard>
     </div>
     <!-- 中部菜单列 -->
     <div id="mainMenus">
@@ -72,7 +84,11 @@
         @selectEvent="homeSelect"
         v-if="$ifMenu('1', '')"
       />
-      <div id="mainMenus_topRight" v-if="menus.main[0]" v-show="$ifMenu('1', '')">
+      <div
+        id="mainMenus_topRight"
+        v-if="menus.main[0]"
+        v-show="$ifMenu('1', '')"
+      >
         <MenuCard :menuData="menus.main[0]">
           <div class="bar-btn">
             <div
@@ -105,17 +121,35 @@
           boxHeight: '180',
           menuIndex: '1',
           legendIcon: legendIcon,
-          legendTitle: legendTitle
+          legendTitle: legendTitle,
         }"
       />
     </div>
     <!-- 首页右侧菜单列 -->
-    <div class="rightMenus" v-for="(item, index) in menus.right" :key="'rightBox' + index">
-      <MenuCard :menuData="item2" v-for="(item2, index2) in item" :key="'right' + index2"> </MenuCard>
+    <div
+      class="rightMenus"
+      v-for="(item, index) in menus.right"
+      :key="'rightBox' + index"
+    >
+      <MenuCard
+        :menuData="item2"
+        v-for="(item2, index2) in item"
+        :key="'right' + index2"
+      >
+      </MenuCard>
     </div>
     <!-- 首页右侧菜单列 -->
-    <div class="rightMenusW" v-for="(item, index) in menus.rightW" :key="'rightBoxW' + index">
-      <MenuCard :menuData="item2" v-for="(item2, index2) in item" :key="'rightW' + index2"> </MenuCard>
+    <div
+      class="rightMenusW"
+      v-for="(item, index) in menus.rightW"
+      :key="'rightBoxW' + index"
+    >
+      <MenuCard
+        :menuData="item2"
+        v-for="(item2, index2) in item"
+        :key="'rightW' + index2"
+      >
+      </MenuCard>
     </div>
   </div>
 </template>
@@ -144,7 +178,9 @@ import IndexSystem from "@/views/IndexSystem.vue";
 import CapitalInput from "@/views/CapitalInput.vue";
 // 智能辅助 -- 法律法规
 import LawView from "@/views/LawView.vue";
+import MessageList from "@/views/MessageList.vue";
 import { removeWatermark, setWaterMark } from "@/utils/watermark";
+import MessageListVue from "./MessageList.vue";
 export default {
   name: "HomeView",
   components: {
@@ -164,7 +200,8 @@ export default {
     FrequencyView,
     LawView,
     IndexSystem,
-    CapitalInput
+    CapitalInput,
+    MessageList,
   },
   data() {
     return {
@@ -173,7 +210,7 @@ export default {
         type: "lr",
         title: "林地面积",
         value: 654,
-        unit: "公顷"
+        unit: "公顷",
       },
       testTitle: "土地资源",
       activeIndex: 1,
@@ -182,38 +219,38 @@ export default {
         left: [],
         leftW: [],
         main: [],
-        right: []
+        right: [],
       },
       // 首页饼图相关
       buttonData: ["A", "B", "C"],
       legendTitle: [
         {
           name: "A类",
-          info: "耕地林地总和占镇域面积约 45%以上,或超过3000公顷"
+          info: "耕地林地总和占镇域面积约 45%以上,或超过3000公顷",
         },
         {
           name: "B类",
-          info: "有一定的自然资源资产(耕地林地总和 900-3000公项)"
+          info: "有一定的自然资源资产(耕地林地总和 900-3000公项)",
         },
         {
           name: "C类",
-          info: "自然资源资产较少(耕地林地总和低于 900公项)"
-        }
+          info: "自然资源资产较少(耕地林地总和低于 900公项)",
+        },
       ],
       // legendData: ["#E565FF", "#0055FF", "#00FFD5"],
       legendIcon: [
         {
           background: "#E565FF",
-          border: "none"
+          border: "none",
         },
         {
           background: "#0055FF",
-          border: "none"
+          border: "none",
         },
         {
           background: "#00FFD5",
-          border: "none"
-        }
+          border: "none",
+        },
       ],
       btnChecked: "A",
       soil: [],
@@ -224,19 +261,19 @@ export default {
         soil: [],
         other: [],
         forestry: [],
-        categoryData: []
+        categoryData: [],
       },
       BData: {
         soil: [],
         other: [],
         forestry: [],
-        categoryData: []
+        categoryData: [],
       },
       CData: {
         soil: [],
         other: [],
         forestry: [],
-        categoryData: []
+        categoryData: [],
       },
       streetSelectVal: "全部",
       streetOptions: [],
@@ -245,12 +282,12 @@ export default {
         { name: "土地资源问题", num: 67 },
         { name: "水资源问题", num: 37 },
         { name: "林地资源问题", num: 60 },
-        { name: "生态资源问题", num: 55 }
+        { name: "生态资源问题", num: 55 },
       ],
       // 综合分析
       analysis: {
-        searchInput: ""
-      }
+        searchInput: "",
+      },
     };
   },
   mounted() {
@@ -271,12 +308,12 @@ export default {
       let params = new FormData();
       params = {
         type: type,
-        cName: cName
+        cName: cName,
       };
-      this.$Post(this.urlsCollection.selectByCNameAType, params).then(res => {
+      this.$Post(this.urlsCollection.selectByCNameAType, params).then((res) => {
         if (res.code === 200 && res.content.length > 0) {
           this.classTextToIndex[keyName] = new Map();
-          res.content.forEach(v => {
+          res.content.forEach((v) => {
             this.classTextToIndex[keyName].set(v.index + "", v.name);
           });
         }
@@ -322,12 +359,12 @@ export default {
       params.append("type", type);
       params.append("cName", cName);
       this.$Post(this.urlsCollection.selectByCNameAType, params).then(
-        res => {
+        (res) => {
           if (res.code === 200 && res.content.length > 0) {
             this.$store.state.selectSelectDataMap[keyName] = res.content;
           }
         },
-        error => {
+        (error) => {
           this.$message.error(error);
           console.log(error);
         }
@@ -361,10 +398,10 @@ export default {
         columnId: 30,
         states: "0,1,2,3",
         pageSize: 30,
-        page: 0
+        page: 0,
       };
       this.$Post(this.urlsCollection.selectContentList, params)
-        .then(res => {
+        .then((res) => {
           if (res.code === 200 && res.content.data.length > 0) {
             // console.log(res.content.data, "getSourcesData接口获取成功");
             this.soil = [];
@@ -374,32 +411,38 @@ export default {
             let ADataArr = [];
             let BDataArr = [];
             let CDataArr = [];
-            data.map(v => {
+            data.map((v) => {
               if (v.zy_type === "0") {
                 ADataArr.push({
-                  name: this.classTextToIndex["浦东新区行政区划"].get(v.zy_town),
+                  name: this.classTextToIndex["浦东新区行政区划"].get(
+                    v.zy_town
+                  ),
                   soil: v.c_land_area,
                   other: v.other_area,
                   forest: v.c_forest_area,
-                  sum: v.c_land_area + v.other_area + v.c_forest_area
+                  sum: v.c_land_area + v.other_area + v.c_forest_area,
                 });
               }
               if (v.zy_type === "1") {
                 BDataArr.push({
-                  name: this.classTextToIndex["浦东新区行政区划"].get(v.zy_town),
+                  name: this.classTextToIndex["浦东新区行政区划"].get(
+                    v.zy_town
+                  ),
                   soil: v.c_land_area,
                   other: v.other_area,
                   forest: v.c_forest_area,
-                  sum: v.c_land_area + v.other_area + v.c_forest_area
+                  sum: v.c_land_area + v.other_area + v.c_forest_area,
                 });
               }
               if (v.zy_type === "2") {
                 CDataArr.push({
-                  name: this.classTextToIndex["浦东新区行政区划"].get(v.zy_town),
+                  name: this.classTextToIndex["浦东新区行政区划"].get(
+                    v.zy_town
+                  ),
                   soil: v.c_land_area,
                   other: v.other_area,
                   forest: v.c_forest_area,
-                  sum: v.c_land_area + v.other_area + v.c_forest_area
+                  sum: v.c_land_area + v.other_area + v.c_forest_area,
                 });
               }
             });
@@ -409,20 +452,20 @@ export default {
             CDataArr.sort(publicFun.compare("sum"));
 
             // 按A,B,C分出各自资源的排序数组
-            ADataArr.forEach(item => {
+            ADataArr.forEach((item) => {
               this.AData.soil.push(item.soil);
               this.AData.other.push(item.other);
               this.AData.forestry.push(item.forest);
               this.AData.categoryData.push(item.name);
             });
-            BDataArr.forEach(item => {
+            BDataArr.forEach((item) => {
               this.BData.soil.push(item.soil);
               this.BData.other.push(item.other);
               this.BData.forestry.push(item.forest);
               this.BData.categoryData.push(item.name);
             });
 
-            CDataArr.forEach(item => {
+            CDataArr.forEach((item) => {
               this.CData.soil.push(item.soil);
               this.CData.other.push(item.other);
               this.CData.forestry.push(item.forest);
@@ -441,10 +484,10 @@ export default {
             });
           }
         })
-        .catch(error => {
+        .catch((error) => {
           console.log(error, "getSourcesData");
         });
-    }
+    },
   },
   created() {
     this.classDictQuery("0", "浦东新区行政区划", "浦东新区行政区划");
@@ -453,10 +496,10 @@ export default {
     for (let key in street) {
       this.streetOptions.push({
         value: street[key],
-        label: street[key]
+        label: street[key],
       });
     }
-  }
+  },
 };
 </script>
 <style lang="less" scoped>
@@ -565,6 +608,15 @@ export default {
   background: rgba(0, 0, 0, 0.9);
 }
 
+#MessageListContainer {
+  position: relative;
+  height: calc(100% - 60px);
+  width: 100%;
+  top: 60px;
+  z-index: 999;
+  background: rgba(0, 0, 0, 0.9);
+}
+
 /* 法律法规详细细节弹窗 */
 // #LawDetailsContainer {
 //   position: absolute;
@@ -760,14 +812,22 @@ export default {
     transform: translate(-50%, -50%) rotate(45deg);
     width: 110px;
     height: 100px;
-    background: linear-gradient(to left, @commonBorderColor, @commonBorderColor) left top no-repeat,
-      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left top no-repeat,
-      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right top no-repeat,
-      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) right top no-repeat,
-      linear-gradient(to left, @commonBorderColor, @commonBorderColor) left bottom no-repeat,
-      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left bottom no-repeat,
-      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right bottom no-repeat,
-      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right bottom no-repeat;
+    background: linear-gradient(to left, @commonBorderColor, @commonBorderColor)
+        left top no-repeat,
+      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left
+        top no-repeat,
+      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right top
+        no-repeat,
+      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) right
+        top no-repeat,
+      linear-gradient(to left, @commonBorderColor, @commonBorderColor) left
+        bottom no-repeat,
+      linear-gradient(to bottom, @commonBorderColor, @commonBorderColor) left
+        bottom no-repeat,
+      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right
+        bottom no-repeat,
+      linear-gradient(to left, @commonBorderColor, @commonBorderColor) right
+        bottom no-repeat;
     background-size: 6px 6px, 6px 6px, 6px 6px, 6px 6px;
   }
 }

+ 4 - 5
src/views/LawView.vue

@@ -331,7 +331,6 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
-
   &-inner {
     width: 98%;
     height: 97%;
@@ -352,12 +351,12 @@ export default {
         height: 20px;
         font-size: 20px;
         font-family: PingFang SC;
-        font-weight: 400;
+        font-weight: bold;
         color: #4dc3ff;
         line-height: 30px;
         position: absolute;
-        top: 1px;
-        left: 10px;
+        top: 8px;
+        left: 15px;
       }
       &-select {
         position: absolute;
@@ -421,7 +420,7 @@ export default {
         align-items: center;
         justify-content: center;
         position: absolute;
-        top: 15px;
+        top: 20px;
       }
       .reset-btn {
         right: 30px;

+ 289 - 0
src/views/MessageList.vue

@@ -0,0 +1,289 @@
+<template>
+  <div class="message-container">
+    <div class="message-container-inner">
+      <div class="header">
+        <div class="header-title">消息提醒</div>
+      </div>
+      <div class="center">
+        <div class="center-list">
+          <div
+            class="center-list-item"
+            v-for="item in messageData"
+            :key="item.id"
+            @click="showDetails(item)"
+            :class="{ active: btnChecked === item.id }"
+          >
+            <div class="top">
+              <div class="top-red-dot" v-if="item.isShow"></div>
+              <div class="top-system-info">{{ item.title }}</div>
+              <div class="top-date">今天 {{ item.time }}</div>
+            </div>
+            <div class="bottom">
+              <div class="bottom-content">{{ item.brief }}</div>
+            </div>
+          </div>
+        </div>
+        <div class="center-details">
+          <div class="center-details-inner">
+            <div class="title-info">
+              <div></div>
+              <div>您有新的消息</div>
+            </div>
+            <div class="date">今天 {{ currentDate }}</div>
+            <div class="text">{{ currentContent }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import publicFun from "@/utils/publicFunction.js";
+export default {
+  name: "MessageList",
+  data() {
+    return {
+      messageData: [
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "13:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: true,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "14:20",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+        {
+          id: publicFun.buildGuid("message"),
+          title: "系统消息",
+          isShow: false,
+          brief:
+            "这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息这里是新消息",
+          time: "12:16",
+          details:
+            "这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容这里是具体的新消息内容",
+        },
+      ],
+      currentDate: "",
+      currentContent: "",
+      btnChecked: "",
+    };
+  },
+  created() {
+    // this.$store.state.messageLength = this.messageData.length;
+  },
+  mounted() {
+    if (this.messageData.length > 0) {
+      this.btnChecked = this.messageData[0].id;
+      this.currentDate = this.messageData[0].time;
+      this.currentContent = this.messageData[0].details;
+    }
+  },
+  methods: {
+    showDetails(data) {
+      this.btnChecked = data.id;
+      this.currentDate = data.time;
+      this.currentContent = data.details;
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.message-container {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  &-inner {
+    width: 98%;
+    height: 97%;
+    background: rgba(0, 39, 77, 0.5);
+    position: relative;
+    .header {
+      height: 80px;
+      width: 100%;
+      position: relative;
+      &-title {
+        width: 84px;
+        height: 20px;
+        font-size: 20px;
+        font-family: PingFang SC;
+        font-weight: bold;
+        color: #4dc3ff;
+        line-height: 30px;
+        position: absolute;
+        top: 8px;
+        left: 15px;
+      }
+    }
+    .center {
+      height: calc(98% - 80px);
+      width: 100%;
+      display: flex;
+      &-list {
+        width: 30%;
+        height: 100%;
+        overflow: auto;
+        &-item {
+          width: 90%;
+          height: 120px;
+          border: 1px solid rgba(207, 222, 255, 0.15);
+          border-radius: 5px;
+          margin: 0 auto 10px auto;
+          background: rgba(0, 57, 92, 0.6);
+          position: relative;
+          cursor: pointer;
+          &:hover,
+          &.active {
+            background: rgba(245, 247, 250, 0.2);
+          }
+          .top {
+            width: 97%;
+            height: 30px;
+            margin: 0 auto;
+            position: relative;
+            &-red-dot {
+              width: 10px;
+              height: 10px;
+              background: red;
+              border-radius: 50%;
+              position: absolute;
+              left: 6px;
+              top: 10px;
+            }
+            &-system-info {
+              width: 20%;
+              height: 100%;
+              position: absolute;
+              left: 24px;
+              color: #e6e6e6;
+              display: flex;
+              align-items: center;
+            }
+            &-date {
+              width: 20%;
+              height: 100%;
+              position: absolute;
+              right: 10px;
+              display: flex;
+              align-items: center;
+              color: rgba(249, 248, 248, 0.3);
+            }
+          }
+          .bottom {
+            width: 97%;
+            height: calc(100% - 35px);
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            margin: 0 auto;
+            &-content {
+              width: 90%;
+              height: 90%;
+              color: #e6e6e6;
+            }
+          }
+        }
+      }
+      &-details {
+        width: 70%;
+        height: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        &-inner {
+          width: 96%;
+          height: 98%;
+          background: rgba(0, 57, 92, 0.6);
+          border-radius: 5px;
+          border: 1px solid rgba(207, 222, 255, 0.15);
+          .title-info {
+            width: 100%;
+            height: 50px;
+            display: flex;
+            align-items: center;
+            color: #e6e6e6;
+            padding-left: 20px;
+            & > div:nth-child(1) {
+              width: 26px;
+              height: 30px;
+              background: url("../assets/home/header_alert.png") no-repeat
+                center;
+            }
+            & > div:nth-child(2) {
+              width: 200px;
+              height: 30px;
+
+              line-height: 30px;
+              padding-left: 10px;
+            }
+          }
+          .date {
+            width: 97%;
+            height: 40px;
+            margin: 0 auto;
+            color: rgba(249, 248, 248, 0.3);
+          }
+          .text {
+            width: 97%;
+            height: calc(100% - 90px);
+            margin: 0 auto;
+            color: #e6e6e6;
+            text-indent: 2em;
+          }
+        }
+      }
+    }
+  }
+}
+</style>