浏览代码

提交代码

wangxiaogang 3 年之前
父节点
当前提交
f52891da53
共有 61 个文件被更改,包括 2352 次插入16 次删除
  1. 29 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  2. 62 0
      src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/detail.html
  3. 68 0
      src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html
  4. 6 0
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  5. 236 0
      src/web/staticres/common-module/messageCenter/css/index.css
  6. 530 0
      src/web/staticres/common-module/messageCenter/css/public.css
  7. 二进制
      src/web/staticres/common-module/messageCenter/image/dingyue@2x.png
  8. 二进制
      src/web/staticres/common-module/messageCenter/image/fenxi@2x.png
  9. 二进制
      src/web/staticres/common-module/messageCenter/image/fuwu@2x.png
  10. 二进制
      src/web/staticres/common-module/messageCenter/image/huodong@2x.png
  11. 二进制
      src/web/staticres/common-module/messageCenter/image/mesg.png
  12. 二进制
      src/web/staticres/common-module/messageCenter/image/mesg_active.png
  13. 二进制
      src/web/staticres/common-module/messageCenter/image/no-mesg.png
  14. 二进制
      src/web/staticres/common-module/messageCenter/image/qiye@2x.png
  15. 二进制
      src/web/staticres/common-module/messageCenter/image/quanbu@2x.png
  16. 二进制
      src/web/staticres/common-module/messageCenter/image/xiangmu@2x.png
  17. 二进制
      src/web/staticres/common-module/messageCenter/image/xitong@2x.png
  18. 86 0
      src/web/staticres/common-module/messageCenter/js/detail.js
  19. 105 0
      src/web/staticres/common-module/messageCenter/js/func.js
  20. 112 0
      src/web/staticres/common-module/messageCenter/js/index.js
  21. 232 0
      src/web/staticres/frontRouter/pc/mesgCenter/css/index-pc.css
  22. 二进制
      src/web/staticres/frontRouter/pc/mesgCenter/image/no-mesg.png
  23. 108 0
      src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js
  24. 二进制
      src/web/staticres/images/pc/dingyue@2x.png
  25. 二进制
      src/web/staticres/images/pc/fenxi@2x.png
  26. 二进制
      src/web/staticres/images/pc/fuwu@2x.png
  27. 二进制
      src/web/staticres/images/pc/guan.png
  28. 二进制
      src/web/staticres/images/pc/guan_active.png
  29. 二进制
      src/web/staticres/images/pc/huodong@2x.png
  30. 二进制
      src/web/staticres/images/pc/lines.png
  31. 二进制
      src/web/staticres/images/pc/mesg.png
  32. 二进制
      src/web/staticres/images/pc/mesg_active.png
  33. 二进制
      src/web/staticres/images/pc/no-mesg.png
  34. 二进制
      src/web/staticres/images/pc/qiye@2x.png
  35. 二进制
      src/web/staticres/images/pc/quanbu@2x.png
  36. 二进制
      src/web/staticres/images/pc/xiangmu@2x.png
  37. 二进制
      src/web/staticres/images/pc/xitong@2x.png
  38. 二进制
      src/web/staticres/images/tabbar/book.png
  39. 二进制
      src/web/staticres/images/tabbar/book_active.png
  40. 二进制
      src/web/staticres/images/tabbar/box.png
  41. 二进制
      src/web/staticres/images/tabbar/box_active.png
  42. 二进制
      src/web/staticres/images/tabbar/home.png
  43. 二进制
      src/web/staticres/images/tabbar/home_active.png
  44. 二进制
      src/web/staticres/images/tabbar/mesg.png
  45. 二进制
      src/web/staticres/images/tabbar/mesg_active.png
  46. 二进制
      src/web/staticres/images/tabbar/mine.png
  47. 二进制
      src/web/staticres/images/tabbar/mine_active.png
  48. 53 0
      src/web/staticres/js/dateFunc.js
  49. 5 1
      src/web/staticres/js/login.js
  50. 142 0
      src/web/staticres/js/message.js
  51. 1 1
      src/web/staticres/me/css/mine.css
  52. 206 12
      src/web/templates/common/pchead.html
  53. 103 0
      src/web/templates/frontRouter/pc/messageCenter/sess/index.html
  54. 1 1
      src/web/templates/frontRouter/pc/page_big_pc/sess/index.html
  55. 67 0
      src/web/templates/frontRouter/wx/messageCenter/sess/detail.html
  56. 77 0
      src/web/templates/frontRouter/wx/messageCenter/sess/index.html
  57. 1 1
      src/web/templates/weixin/dataExport/dataExport.html
  58. 3 0
      src/web/templates/weixin/historypush.html
  59. 2 0
      src/web/templates/weixin/my.html
  60. 6 0
      src/web/templates/weixin/search/mainSearch.html
  61. 111 0
      src/web/templates/weixin/search/tabbar.html

+ 29 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -341,6 +341,12 @@ $(function () {
         window.webkit.messageHandlers.skipCameraWithParam.postMessage(JyObjMessage)
         JyObj.clearMessage()
       },
+      // 底部导航消息总数方法
+      sendMsgCount: function (num) {
+        JyObjMessage.num = num
+        window.webkit.messageHandlers.sendMsgCount.postMessage(JyObjMessage)
+        JyObj.clearMessage()
+      },
       // 新打开相册客户端方法
       skipAlbumWithParam: function (type) {
         JyObjMessage.type = type
@@ -1032,6 +1038,24 @@ function autoLogin (url, callBack) {
   });
 }
 
+// 底部导航消息总数
+function checkMsgCount(acync, callback) {
+  $.ajax({
+    type: 'GET',
+    url: '/jymessageCenter/isMsgOpen?t=' + Date.now(),
+    async: acync || false,
+    success: function (r) {
+      var num = r.data.count
+      try {
+        JyObj.sendMsgCount(num)
+      } catch (e) {
+        console.log(e)
+      }
+      callback && callback()
+    }
+  })
+}
+
 function loginSuccess (result) {
   JyObj.saveUserToken(result.sign);
   // 数据包默认选中企业需请求默认企业接口
@@ -1045,6 +1069,9 @@ function loginSuccess (result) {
 
       window.onlyUserID = getCookieValue('SESSIONID')
     }
+
+    // 消息总数方法
+    checkMsgCount();
   } catch (e) {
     console.log('获取ID失败')
   }
@@ -1055,6 +1082,7 @@ function loginSuccess (result) {
       url: '/entbase/ent/mySelectent?t=' + new Date().getTime()
     })
   }
+
   //分销跳转
   if (getUrlParam("DisUrl") != null) {
     afterLoginSuccess("", true);
@@ -1089,6 +1117,7 @@ function loginSuccess (result) {
   afterLoginSuccess("S", false);
   //window.location.href = "/jyapp/jylab/mainSearch";
   //location.replace("/jyapp/jylab/mainSearch");
+
 }
 
 //2020-05-30 android replace失效

+ 62 - 0
src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/detail.html

@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <meta http-equiv="Cache-control" content="no-cache">
+    <title></title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/css/public.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/css/index.css?v={{Msg "seo" "version"}}' />
+  </head>
+<body>
+  <div class="j-container" v-cloak id="detailed">
+    <div class="j-header jy-app-header">
+      <span class="header-left" @click="history.back()">
+        <span class="icon-back j-icon base-icon"></span>
+      </span>
+      <span class="l-title"></span>
+      <span class="header-title">{tit}</span>
+    </div>
+    <div class="j-main detailed">
+      <div class="j-container">
+        <div class="j-main descri">
+          <van-list
+            v-model="tabsList.loading"
+            :finished="tabsList.finished"
+            finished-text="没有更多了"
+            @load="msgData"
+          >
+            <div class="d-list" v-for="item in lists" :key="item.id">
+              <p class="p-time">{dateMatter(item.createtime, 'in')}</p>
+              <div class="words">
+                <img :src="'/common-module/messageCenter/image/'+imgSrcs[item.msg_type - 1].url+'@2x.png'">
+                <div class="m-tip" @click="msgClick(item.link)">
+                  <span class="trangle"></span>
+                  <p class="p1">{item.title}</p>
+                  <!-- <p class="p2">{item.content}<i @click="msgClick(item.link)">点击立即支付>></i></p> -->
+                  <p class="p2">{item.content}</p>
+                </div>
+              </div>
+            </div>
+          </van-list>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src='https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js'></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/js/func.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/js/detail.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 68 - 0
src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html

@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <meta http-equiv="Cache-control" content="no-cache">
+    <title>消息中心</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/bidedoc/css/public.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/css/index.css?v={{Msg "seo" "version"}}' />
+  </head>
+<body>
+  <div class="j-container">
+    <div class="j-header jy-app-header">
+      <span class="l-title">消息中心</span>
+      <span class="header-title"></span>
+    </div>
+    <div class="j-main mesged" v-cloak id="mesged">
+      <div class="j-container">
+        <div class="j-main" v-show="msgList">
+          <div class="head-mesg" v-show="lastData">
+            <h5>重要提醒</h5>
+            <div class="h-conts" @click="msgClick(lastData.link,lastData.isRead,lastData.id)">
+              <div class="p1">{lastData.title}
+                <span class="spa flex" @click="toggleClick" v-show="isRow">{isToggle?'收起':'展开'}&nbsp;<van-icon :class="isToggle?'is-icon1':'is-icon2'" name="arrow-down" /></span>
+              </div>
+              <!-- <p class="p2" :class="{'active':isRow && !isToggle}">{lastData.content}<i @click="msgClick(lastData.link)">点击立即支付>></i></p> -->
+              <p class="p2" :class="{'active':isRow && !isToggle}">{lastData.content}</p>
+            </div>
+          </div>
+          <div class="t-list">
+            <div class="tips" v-for="(ite, index) in msgList" :key="index" @click="msgDetailed(ite.type,ite.count)" v-show="!$.isEmptyObject(ite.newMsg)">
+              <div class="imgs">
+                <van-badge :class="{'no-active':ite.count <= 0}" :content="ite.count" max="99">
+                  <img :src="'/common-module/messageCenter/image/'+imgSrcs[ite.type - 1].url+'@2x.png'">
+                </van-badge>
+              </div>
+              <div class="r-lis">
+                  <div class="title">
+                      <span>{imgSrcs[ite.type - 1].title}</span>
+                      <span v-if="ite.newMsg">{dateMatter(ite.newMsg.createtime, 'out')}</span>
+                  </div>
+                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.content}</p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="no-data" v-show="!msgList"><img src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/image/no-mesg.png?v={{Msg "seo" "version"}}'><div class="tip-text"><p>暂无消息</p></div></div>
+        
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src='https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js'></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/js/func.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/messageCenter/js/index.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 6 - 0
src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html

@@ -640,6 +640,12 @@
     var member_status;
     var isMember = false;
     var vSwitch = 'v'
+    // 消息总数
+    try {
+        checkMsgCount(true)
+    } catch (e) {
+        console.log(e)
+    }
     // 子账户判断
     $.ajax({
         type:'POST',

+ 236 - 0
src/web/staticres/common-module/messageCenter/css/index.css

@@ -0,0 +1,236 @@
+.flex {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: center;
+    align-items: center;
+}
+
+.j-header.jy-app-header {
+    padding: 31px 0.24rem 6px;
+    background-color: #fff;
+}
+
+.j-header:after {
+  content: unset;
+}
+
+.j-header .l-title {
+    font-size: .44rem;
+    color: #171826;
+    line-height: .64rem;
+}
+
+.j-container .j-header.jy-app-header .border-line-t:after, .border-line-b:after {
+    height: 0;
+}
+
+[v-cloak] {
+    display: none !important;
+}
+
+.mesged, .detailed {
+    width: 100%;
+}
+
+.head-mesg {
+    margin: .24rem .4rem 0 .4rem;
+}
+
+.head-mesg h5 {
+    font-size: .26rem;
+    color: #9b9ca3;
+    line-height: .4rem;
+}
+
+.head-mesg .h-conts {
+    padding: .32rem;
+    background: #ffffff;
+    border-radius: 8px;
+    box-shadow: 0px 2px 8px 0px rgba(54,147,179,0.05);
+    margin-top: .08rem;
+}
+
+.head-mesg .h-conts .p1 {
+    display: flex;
+    justify-content: space-between;
+    font-size: .28rem;
+    font-weight: 700;
+    color: #171826;
+    line-height: .48rem;
+}
+
+.head-mesg .h-conts .p1 .spa {
+    height: .36rem;
+    line-height: .36rem;
+    padding: .0 .2rem;
+    background: rgba(42,190,209,0.10);
+    border-radius: 4px;
+    font-size: .24rem;
+    color: #2abed1;
+    font-weight: 400;
+}
+
+.head-mesg .h-conts .p1 .spa .is-icon1::before {
+    transform: rotate(180deg) translateZ(0);
+    transition: transform 0.2s;
+}
+
+.head-mesg .h-conts .p1 .spa .is-icon2::before {
+    transform: rotate(0deg) translateZ(0);
+    transition: transform 0.2s;
+}
+
+.head-mesg .h-conts .p2 {
+    font-size: .26rem;
+    color: #9b9ca3;
+    line-height: .4rem;
+    margin-top: .08rem;
+}
+
+.head-mesg .h-conts .active {
+    overflow: hidden;
+    display: -webkit-box; 
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 2; 
+    text-overflow: ellipsis;
+
+}
+
+.head-mesg .h-conts .p2 i {
+    color: #2cb7ca;
+}
+
+.j-main .tips:first-child {
+    margin-top: .32rem;
+}
+.t-list {
+    margin-bottom: 1.2rem;
+}
+.tips {
+    display: flex;
+    flex-direction: initial;
+    padding: .32rem;
+    background: #fff;
+    margin-bottom: 1px;
+}
+.tips .imgs {
+    position: relative;
+    margin-right: .16rem;
+}
+.tips .imgs img {
+    width: .96rem;
+}
+.tips .imgs .van-badge {
+    min-width: .3rem;
+    height: .3rem;
+    line-height: .3rem;
+    background-color: #FB483D;
+    font-size: .22rem;
+}
+.tips .imgs .van-badge--fixed {
+    top: .15rem;
+    right: .15rem;
+}
+.tips .imgs .no-active .van-badge--fixed {
+    display: none;
+}
+.tips .r-lis {
+    width: 100%;
+}
+.tips .r-lis .title {
+    display: flex;
+    flex-direction: initial;
+    justify-content: space-between;
+    font-size: .32rem;
+    color: #171826;
+    font-weight: 700;
+    line-height: .48rem;
+}
+.tips .r-lis .title span:nth-child(2) {
+    font-size: .22rem;
+    color: #9B9CA3;
+    font-weight: 500;
+}
+.tips .r-lis .p3 {
+    overflow: hidden;
+    display: -webkit-box; 
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 1; 
+    text-overflow: ellipsis;
+    font-size: .26rem;
+    color: #9B9CA3;
+    line-height: .4rem;
+    margin-top: .08rem;
+}
+.no-data {
+    margin-top: 1.56rem;
+    text-align: center;
+}
+.no-data img {
+    width: 4rem;
+    height: 4rem;
+    overflow: visible;
+}
+.no-data .tip-text {
+    color: #5F5E64;
+    font-size: .28rem;
+    line-height: .4rem;
+}
+/* 详情页样式 */
+.descri {
+    padding: 0 .48rem .52rem .24rem;
+}
+.descri .d-list {
+    margin-top: .48rem;
+}
+.descri .d-list .p-time {
+    font-size: .22rem;
+    color: #9b9ca3;
+    line-height: .36rem;
+    text-align: center;
+    padding-left: .24rem;
+}
+.descri .d-list .words {
+    display: flex;
+    margin-top: .16rem;
+}
+.descri .d-list .words img {
+    width: .8rem;
+    height: .8rem;
+}
+.descri .d-list .words .m-tip {
+    width: 100%;
+    position: relative;
+    padding: .24rem .16rem;
+    margin-left: .32rem;
+    background: #ffffff;
+    border-radius: .16rem;
+    box-shadow: 0px 2px 8px 0px rgba(54,147,179,0.05);
+}
+.descri .d-list .words .m-tip .p1 {
+    font-size: .28rem;
+    font-weight: 700;
+    color: #171826;
+    line-height: .48rem;
+}
+
+.descri .d-list .words .m-tip .p2 {
+    font-size: .26rem;
+    color: #9b9ca3;
+    line-height: .4rem;
+    margin-top: .08rem;
+}
+.descri .d-list .words .m-tip .p2 i {
+    color: #2cb7ca;
+}
+.descri .d-list .words .m-tip .trangle{
+    position: absolute;
+    left: -0.16rem;
+    top: .28rem;
+    width: 0;
+    height: 0;
+    border-top: .16rem solid transparent;
+    border-bottom: .16rem solid transparent;
+    border-right: .24rem solid #fff;
+}

+ 530 - 0
src/web/staticres/common-module/messageCenter/css/public.css

@@ -0,0 +1,530 @@
+@charset "UTF-8";
+
+/* reset css start ---------> */
+* {
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+    -webkit-overflow-scrolling: touch;
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+    -webkit-tap-highlight-color: transparent;
+}
+html,
+body {
+    height: 100%;
+    color: #171826;
+}
+
+html > body {
+    font-size: 12px;
+    background-color: #F5F6F7;
+}
+
+input, textarea {
+    caret-color: #2cb7ca;
+}
+
+
+/* 清除默认样式 */
+ul,
+ol {
+    list-style: none;
+}
+/*清除输入框内阴影*/
+input,
+textarea,
+select,
+button {
+    outline: none;
+    border: 0;
+    -webkit-appearance: none;
+    appearance: none;
+}
+button,
+span,
+div {
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+    /* -webkit-user-modify:read-only; */
+}
+img {
+    border: 0;
+    vertical-align: middle;
+    max-width: 100%;
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+a {
+    text-decoration: none;
+    color: #3d3d3d;
+    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
+    -webkit-user-select: none;
+    -moz-user-focus: none;
+    -moz-user-select: none;
+}
+/*禁用长按页面时的弹出菜单(iOS下有效) ,img和a标签都要加*/
+img,
+a {
+    -webkit-touch-callout: none;
+}
+
+input::placeholder {
+    color: #C0C4CC;
+}
+
+/* reset css end ------ */
+
+/* common css class start */
+[v-cloak] {
+    display: none!important;
+}
+
+.clearfix {
+    zoom: 1;
+}
+.clearfix:after {
+    clear: both;
+    height: 0;
+    overflow: hidden;
+    display: block;
+    visibility: hidden;
+    content: '';
+}
+.left {
+    float: left;
+}
+.right {
+    float: right;
+}
+.ellipsis {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+/* 超过2行省略号显示 */
+.ellipsis-2 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+}
+/* 超过3行省略号显示 */
+.ellipsis-3 {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-line-clamp: 3;
+    -webkit-box-orient: vertical;
+}
+.scrollbar-none::-webkit-scrollbar {
+    display: none;
+}
+
+/* 禁止长按复制 加给body ---- */
+.no-touch {
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+
+.j-pd {
+    padding-left: 0.32rem;
+    padding-right: 0.32rem;
+}
+
+.j-arrow {
+    display: inline-block;
+    width: 0.26rem;
+    height: 0.26rem;
+    border: 2px solid #5f5e64;
+    border-bottom-color: transparent;
+    border-right-color: transparent;
+    background: 0 0;
+    transform: rotate(-45deg);
+}
+
+.highlight-text {
+    color: #2cb7ca!important;
+}
+.bg-white {
+    background-color: #fff;
+}
+[class*=clickable]:active {
+    background-color: #f2f3f5;
+}
+
+/* 
+    border-line-t 0.5px上边框
+    border-line-b 0.5px下边框
+*/
+.border-line-t,
+.border-line-b {
+    position: relative;
+}
+.border-line-t:after,
+.border-line-b:after {
+    content: '';
+    position: absolute;
+    left: 0;
+    width: 100%;
+    height: 1px;
+    transform: scaleY(0.6);
+    transform-origin: 0 0;
+    background: rgba(0, 0, 0, 0.05);
+    /* background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.05) 65%, transparent 35%); */
+}
+.border-line-t:after {
+    top: -1px;
+}
+.border-line-b:after {
+    bottom: -1px;
+}
+
+/* common css class end ---- */
+
+/* j-container布局  start ---- */
+.j-container {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+}
+
+.j-header {
+    position: relative;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
+
+.j-header.jy-app-header {
+    box-sizing: border-box;
+    padding: 10.66667vw 3.2vw 0 3.2vw;
+    height: 21.33333vw;
+    background: #fff;
+    z-index: 9;
+}
+
+.j-header .header-left,
+.j-header .header-title,
+.j-header .header-right {
+    display: flex;
+    align-items: center;
+}
+
+.j-header .header-left {
+    height: .6rem;
+    width: .6rem;
+}
+.j-header .header-left .j-icon {
+    height: .4rem;
+    width: .4rem;
+}
+
+.j-header .header-title {
+    position: absolute;
+    left: 50%;
+    font-size: 17px;
+    color: #171826;
+    transform: translateX(-50%);
+}
+
+.j-header .header-right {
+    height: 100%;
+    min-width: 0.4rem;
+    font-size: .3rem;
+}
+
+.j-header .header-left.hide,
+.j-header .header-right.hide {
+    visibility: hidden;
+}
+
+/* 头部透明 */
+.j-container .j-header.transparent-header {
+    background-color: transparent;
+}
+.j-container .j-header.transparent-header:after {
+    content: unset;
+}
+.j-header.transparent-header .header-left,
+.j-header.transparent-header .header-title {
+    color: #fff;
+}
+.j-header.transparent-header .header-title {
+    font-size: 0;
+}
+
+.j-main {
+    position: relative;
+    display: flex;
+    flex-direction: column;
+    flex: 1;
+    overflow-y: scroll;
+    overflow-x: hidden;
+    /* 所有都j-main开启ios-touch */
+    -webkit-overflow-scrolling: touch;
+}
+
+.j-main.calc-height-1px {
+    height: calc(100% + 1Px);
+}
+
+/* 单独关闭ios惯性滚动 */
+.j-main.no-ios-touch {
+    -webkit-overflow-scrolling: auto;
+}
+
+.j-footer {
+    box-shadow: 0px -2px 8px rgba(54, 147, 179, 0.051);
+}
+/* j-container布局  end ---- */
+
+@keyframes ballRotate {
+    0% {
+        transform: rotate(0);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+.ball-clip-rotate {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    z-index: 2;
+    transform: translate(-50%, -50%);
+}
+
+.ball-clip-rotate .ball {
+    display: inline-block;
+    width: 26px;
+    height: 26px;
+    border-radius: 50%;
+    border: 3px solid #fff;
+    border-bottom-color: transparent;
+    background: 0 0;
+    -webkit-animation: ballRotate 0.75s 0s linear infinite;
+    animation: ballRotate 0.75s 0s linear infinite;
+}
+
+.j-mask {
+    position: fixed;
+    z-index: 1000;
+    top: 0;
+    right: 0;
+    left: 0;
+    bottom: 0;
+}
+
+.black {
+    background: rgba(0, 0, 0, 0.6);
+}
+
+.j-loading {
+    display: none;
+}
+
+.j-loading .j-toast {
+    position: fixed;
+    top: 45%;
+    left: 50%;
+    z-index: 1001;
+    padding: 0.2rem;
+    min-width: 2.2rem;
+    max-width: 6.2rem;
+    width: auto;
+    height: auto;
+    color: #fff;
+    font-size: 0.28rem;
+    text-align: center;
+    background: rgba(18, 18, 18, 0.7);
+    border-radius: 5px;
+    transform: translate(-50%, -50%);
+}
+
+.j-loading .j-toast.icon {
+    padding: 0.5rem 0.2rem;
+}
+
+.j-loading .j-toast.icon .j-toast_icon {
+    display: inline-block;
+    width: 38px;
+    height: 38px;
+}
+
+.j-loading .j-toast .j-toast_icon {
+    display: none;
+}
+
+.j-loading .j-toast .j-toast_content {
+    text-align: center;
+}
+
+.j-loading-icon {
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    vertical-align: baseline;
+    background: transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat;
+    background-size: 100%;
+    -webkit-animation: ballRotate 1s steps(12) infinite;
+    animation: ballRotate 1s steps(12) infinite;
+}
+
+.j-button-group {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    width: 100%;
+    padding: 0.16rem 0.32rem 0.24rem;
+    background-color: #fff;
+    box-sizing: border-box;
+}
+
+.j-button-confirm,
+.j-button-cancel {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex: 1;
+    width: 100%;
+    height: 0.8rem;
+    font-size: 0.32rem;
+    line-height: inherit;
+    text-align: center;
+    border-radius: 0.16rem;
+}
+
+.single .j-button-confirm,
+.single .j-button-cancel {
+    height: 0.92rem;
+}
+
+.j-button-cancel {
+    margin-right: 0.26rem;
+    color: #5f5e64;
+    background-color: #edeff2;
+}
+
+.j-button-confirm {
+    color: #fff;
+    background-color: #2cb7ca;
+}
+
+button[disabled] {
+    opacity: 0.5;
+}
+
+.checkbox {
+    width: 0.4rem;
+    height: 0.4rem;
+    border: 1px solid #ddd;
+    border-radius: 50%;
+    margin-right: 0.2rem;
+    -webkit-appearance: none;
+    background: #fff;
+}
+
+.checkbox:checked {
+    border: 0;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACpElEQVRogc1asa2DMBBlhIyQMpKNxAiMwAiMwAhswAgZgQrOHSVwLhiBERghvwCSwMdgOzYG6aQUhLw7v3u+Z+J5Bq4g724U6pCUTeIznlGGHQHsKcOBAPbT544yntOiTSnUoYnf/Rm0X7YRAXxShgMFfCkH4zkBjE8HTos21QYtCJ/xzDpwAhgTwN4k8OWK4GBlRYK8u1HGc2vA/yfSPaC+GwFPoQ6tVn1vNQoMfgJPyiYxzXXl3ijbSA88YOwa/BzKfUEKDK4C/hOSe8cD6vv1wOOLMhykGvtUtVFPotunDmDsHORBCPth1PoLUmeDStvUKdrUObgxqinE9xRt+q/6TjarZWW79cZFGXaiVQjy7va+0S/byDX4LYUhZZOIvrPoBafKw7BbVFOW1ozn7pt3B/xe9ed4QH33KNSho+pXv4CngC9SNon0zVcDTwFHNTqb/wTwqcX5TQry3KNHmmswfMYzEXif8Uz5mQwHT1r/55MGC+AJ4FPruVIJrJwRhToUbjA74LeATxuoHvg5gSMJFf24bO9YAy+7AgTwuQVAirfrmeULvBHxYDhINTEpm0SYhGgMsQ1+LG4v3f17B09rCyqa2Y0fzzCeq8pXJUpiPB/F6jTwc1GVJ1GNQ6dp3lJSLqkEyjbSG+YYDrKnBA+o77a8xruQunK219yeN/aGNaM0j9NTAvpmXqA2VsHDSigMWMrFdDnt1vY8xtpSep4hUz+qTGXbIG1K+iWMvW7137x1Y27UQtBzHyqd6A80qi/00AsqXfKETuWFh0OjLwSv/KLjSkkcbZjXTYLhoA3eeRI6tBFd86h8Inhzr1m/L+v7xESZQ6m8XCJnARckoketca+paNGmVuiievllG032tKKjtezf1f36u43PeEYAY1PV/gMeU6lGAhyHxgAAAABJRU5ErkJggg==) no-repeat center center;
+    background-size: 100% 100%;
+}
+
+.checkbox.transparent:checked {
+    border: 0;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHBSURBVHgBzZiPcYIwFIeDE7hB6QR1gzqCG2g3cAPtBLqBdoK6Ae0EXCd4bmA3+PW9JlxTJEJCgnx37xQSku9IyL9MeQIg558FxxPHnGNqQvjmOJv45DhlWXZWKWCRFUcBf0p5VsWCC5tzEPpDvcT44SnHDvGRMqe+Mjn0q04FQffFzjKE9FCrFHQzEYZDWuFf801qThuOXA3HzNR5DfRnfS/mlUdmCZEa9u3YnHkAfZQ/EyOzGkjmyPHWcD+HPUYh7SdesbXqOzakF1VijvRs7dfB1wdHvgdJXCMtdZnljbxryfCOccgIh1v9h6CbM3Qa8ZX5rVMyXtoKhB7Bfd5kiIxwUTcSCbW5hq/38JdZwAPVkk4NUlt0l5nB3QJOobYHqKNUbxmYJqMuGaWCWoX23HeMICOUrlHTxbKh4n0kGeEUMjA2LxdUlMXdOnTq2CSQEfKqsAL+7CLLlK4O6lUI9C4itM/YrMRlnAs0w4u6H6+Nd9FtaojN3qkJPYkOsXqsILTtYjGmjeKAUmVnmVrzpehTUqbfYUNNTMYoQn8I1oawN0YspMMX8DgXypQn+DvSe1Z6IJWwj/QkPji+VMCR3g//T7SIqLP6vQAAAABJRU5ErkJggg==) no-repeat center center;
+    background-size: 100% 100%;
+}
+
+.j-button {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    height: 0.72rem;
+    padding: 0 0.2rem;
+    background-color: #f5f6f7;
+    color: #5f5e64;
+    border-radius: 0.08rem;
+}
+
+.j-button-item {
+    position: relative;
+    display: inline-block;
+    color: #171826;
+}
+
+.j-button-item.active {
+    color: #2abed1;
+    background-color: #e8fafd;
+}
+
+.j-button-item.active:after {
+    content: '';
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    width: 0.24rem;
+    height: 0.24rem;
+    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKySURBVHgB7Zg/aNRQHMd/eXfWP6i9omJBhBOXa0W4bK6ni6Murro76Cgu1kF0aysOjnXTyTopLkEcHM8TxIMOHghFQfBAaUtp8/P9Qt+Rpnm99y+XBO6zXJJ7gc83v+S9XwIwZsyY0jIbdB54UFIuBF/mEfFu6QLUX7drR2qVeUC8RfulChDJT7KAbzbFsdIEaLxt19nBSL4eP16KADJ5ovAB9pMnCh1g9n276VVZgAA12RgGBaURdG4OkycKWYGZoHPHQ1hQGVu4CkSrq6I8UagKkDwgzOmcU5gAojUATXIPkGwNdMk1QFproEtuAYYtUKrkEsCVPDHyAC7liZEGUGkNdBnZQqbaGugykgrotAa6ZF4B3dZAlwpkiElrILg2PQVL/nm4ceYE/N3ahu6/jdRxmd1Cpq0BQfKPZs4O9inApY9fU8dWwTGiNUDD1iApT1AAGU4DDFoDRKPWIE2eePb9l/QcZ7eQ7QIlk7//7Qe8+flHep6TAHnJE9azUFJedfYQ2MgTVgGoNWAT7BPfnBbHnl6sw8mJA3C8WoErpyZhdWNTGsJWntM3XshkrQGJxyFBEk3iQJ7oGVWAWgOG8JxvHkr+93tzK7rycZKVcCTPn2B8px1gpzV4IvufJElWFqJx9LAbeU6IuKg1C+m0BrKrnIaJPLHmhVPKFaDWgMvfUx0vq0QSU3l++yyttPxXQ1dim9ZgeUdMVgljeU4I+JB+961A7KvBVTBEVgkbeURY7F5uvqRtaQVcvruKStw+dxqO8Wn28cqquTyfOtdZOCf2Ux9i1y/eriB59MJWt+X3xLE9C1mR5T0vvB6XJ3ZVIIuvBi5Iu/KCQQWy+mpgCz2w617op8kTUQWy/GpgSB8xfIEMFmTiAs/mxdshfX6te9zjM78pPqyx7eVey++rnPgfnLxxiLvERTEAAAAASUVORK5CYII=) no-repeat;
+    background-size: contain;
+}
+
+/* 空状态 配合j-icons中的img-empty和j-img使用 */
+/* 具体使用参考page_ent_follow.html */
+.empty {
+    display: flex;
+    align-items: center;
+    flex-direction: column;
+    flex: 1;
+    padding-top: 1.34rem;
+    width: 100%;
+}
+.empty .empty-img {
+    padding: .2rem;
+    width: 3.2rem;
+    height: 3.2rem;
+    margin-bottom: 0.24rem;
+    background-origin: content-box;
+}
+.empty .empty-text {
+    font-size: .26rem;
+    line-height: .4rem;
+    color: #9B9CA3;
+}
+
+.shiyong_common {
+    width: 5.92rem!important;
+    height: 4.48rem;
+}
+
+.shiyong_common .van-dialog__header{
+    font-size: 0.36rem;
+    font-weight: bold;
+    color: #000000;
+}
+
+.shiyong_common .van-dialog__message--has-title {
+    padding-top: 0.36rem;
+    padding-bottom: 0;
+}
+
+.shiyong_common .van-dialog__message--has-title .shiyong_text{
+    line-height: 0.4rem;
+    font-size: 0.28rem;
+    text-align: justify;
+    color: #5f5e64;
+}
+
+.shiyong_common .van-dialog__message--has-title .shiyong_buy{
+    margin-top: 0.36rem;
+    width: 100%;
+    height: 0.8rem;
+    background: #2ABED1;
+    border-radius: 4px;
+    color: #F7F9FA;
+    font-size: 0.32rem;
+}

二进制
src/web/staticres/common-module/messageCenter/image/dingyue@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/fenxi@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/fuwu@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/huodong@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/mesg.png


二进制
src/web/staticres/common-module/messageCenter/image/mesg_active.png


二进制
src/web/staticres/common-module/messageCenter/image/no-mesg.png


二进制
src/web/staticres/common-module/messageCenter/image/qiye@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/quanbu@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/xiangmu@2x.png


二进制
src/web/staticres/common-module/messageCenter/image/xitong@2x.png


+ 86 - 0
src/web/staticres/common-module/messageCenter/js/detail.js

@@ -0,0 +1,86 @@
+var vm = new Vue({
+  el: '#detailed',
+  delimiters: ['{', '}'],
+  data () {
+    return {
+      tit: '',
+      imgSrcs: [
+        {title: '活动优惠', url:'huodong'},
+        {title: '服务通知', url:'fuwu'},{title: '订阅消息', url:'dingyue'},
+        {title: '项目动态', url:'xiangmu'},{title: '企业动态', url:'qiye'},
+        {title: '分析报告', url:'fenxi'},{title: '系统通知', url:'xitong'}
+      ],
+      lists: [],
+      tabsList: {
+        offset: 1,
+        pageSize: 20,
+        totals: 0,
+        loading: true,
+        finished: false
+      }
+    }
+  },
+  created() {
+    checkMsgCount(true)
+    let indx = getQueryString('type')
+    this.tit = this.imgSrcs[indx - 1].title
+    document.title = this.imgSrcs[indx - 1].title
+    this.msgData()
+  },
+  methods: {
+    // 消息详情
+    msgData() {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jymessageCenter/messageList',
+        data: {
+          needFilter: 0,
+          msgType: getQueryString('type'),
+          isRead: '-1',
+          offset: this.tabsList.offset,
+          pageSize: this.tabsList.pageSize
+        },
+        success: function (r) {
+          if (r && r.status == 1) {
+            _this.tabsList.offset++
+            if (_this.tabsList.offset === 1) {
+              if (r.data.total || r.data.total === 0) {
+                _this.tabsList.total = r.data.total
+              } else {
+                _this.tabsList.finished = true
+              }
+            }
+            if (Array.isArray(r.data.list) && r.data.list.length !== 0) {
+              _this.lists = _this.lists.concat(r.data.list.map(function (v) {
+                return {
+                  id: v.id,
+                  msg_type: v.msg_type,
+                  title: v.title,
+                  content: v.content,
+                  createtime: v.createtime,
+                  link: v.link
+                }
+              }))
+            } else {
+              _this.tabsList.finished = true
+            }
+    
+            _this.tabsList.loading = false
+            if (_this.tabsList.total !== -1 && _this.tabsList.total <= _this.lists.length) {
+              _this.tabsList.finished = true
+            }
+          }
+        }
+      })
+    },
+    msgClick(url) {
+      if (url) {
+        location.href = url
+      } else {
+        return
+      }
+    }
+  }
+})
+

+ 105 - 0
src/web/staticres/common-module/messageCenter/js/func.js

@@ -0,0 +1,105 @@
+function getType () {
+  // 判断是否为微信浏览器
+  var ua = window.navigator.userAgent.toLowerCase()
+  if(ua.match(/MicroMessenger/i) == 'micromessenger'){
+    return true
+  } else {
+    return false
+  }
+}
+
+//获取url中"?"符后的字符串并正则匹配
+function getQueryString(name) {
+  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
+  var r = window.location.search.substr(1).match(reg);
+  var context = "";
+  if (r != null)
+    context = r[2];
+    reg = null;
+    r = null;
+  return context == null || context == "" || context == "undefined" ? "" : context;
+}
+
+function dateTime (date, fmt='yyyy年MM月dd日 hh:mm') {// 时间戳转换
+  if (!date) return ''
+  d = new Date(date)
+  var o = {
+    "M+": d.getMonth() + 1, //月份 
+    "d+": d.getDate(), //日 
+    "h+": d.getHours(), //小时 
+    "m+": d.getMinutes(), //分 
+    "s+": d.getSeconds() //秒
+  }
+
+  // 根据y的长度来截取年
+  if (/(y+)/.test(fmt)){ 
+    fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length))
+  }
+  for (var k in o){
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
+  }
+  return fmt
+}
+function dateTime (date, fmt='yyyy年MM月dd日 hh:mm') {// 时间戳转换
+  if (!date) return ''
+  var changes =  date ? String(date).replace(/-/g, '/') : ''
+  d = new Date(changes)
+  var o = {
+    "M+": d.getMonth() + 1, //月份 
+    "d+": d.getDate(), //日 
+    "h+": d.getHours(), //小时 
+    "m+": d.getMinutes(), //分 
+    "s+": d.getSeconds() //秒
+  }
+
+  // 根据y的长度来截取年
+  if (/(y+)/.test(fmt)){ 
+    fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length))
+  }
+  for (var k in o){
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
+  }
+  return fmt
+}
+function dateYear () {// 获取当年的第一天
+  var date = new Date()
+  date.setDate(1)
+  date.setMonth(0)
+  return date.getTime()
+}
+function dateLast () {// 获取昨天
+  var day = new Date()
+  day.setTime(day.getTime()-24*60*60*1000)
+  return dateTime(day,'yyyy/MM/dd')
+}
+function dateMatter (time, type) {// 时间转换
+  var iosTime = time ? time.replace(/-/g, '/') : '' // 兼容ios
+  var timeStr = ''
+  var currentDay = dateTime(time,'yyyy/MM/dd') // 当前日期
+  var lingDay = new Date(new Date().toLocaleDateString()).getTime() // 获取当天0点
+  var isTime = new Date(iosTime) - lingDay
+  var diff = isTime < 0 ? '昨天' : ''
+  var isDate = new Date(iosTime) - dateYear()
+  if (isDate < 0) {
+    timeStr = dateTime(time)
+  } else {
+    if (currentDay === dateLast()) {
+      if (type === 'out') {
+        timeStr = diff
+      } else {
+        timeStr = diff + dateTime(time,'hh:mm')
+      }
+    } else {
+      if (isTime < 0) {
+        if (type === 'out') {
+          timeStr = dateTime(time,'MM月dd日')
+        } else {
+          timeStr = dateTime(time,'MM月dd日 hh:mm')
+        }
+      } else {
+        timeStr = dateTime(time,'hh:mm')
+      }
+    }
+  }
+  return timeStr
+}

+ 112 - 0
src/web/staticres/common-module/messageCenter/js/index.js

@@ -0,0 +1,112 @@
+var vm = new Vue({
+  el: '#mesged',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+      isToggle: false,
+      isRow: false,
+      lastData: [],
+      msgList: [],
+      imgSrcs: [
+        {title: '活动优惠', url:'huodong'},
+        {title: '服务通知', url:'fuwu'},{title: '订阅消息', url:'dingyue'},
+        {title: '项目动态', url:'xiangmu'},{title: '企业动态', url:'qiye'},
+        {title: '分析报告', url:'fenxi'},{title: '系统通知', url:'xitong'}
+      ]
+    }
+  },
+  created() {
+    this.lastMsg()
+    this.msgData()
+  },
+  methods: {
+    // 置顶消息
+    lastMsg() {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/lastMessage',
+        success:function (res) {
+          if (res && res.status == 1) {
+            _this.lastData = $.isEmptyObject(res.data) ? false : res.data
+            if (res.data && res.data.content && res.data.content.length > 46) {
+              _this.isRow = true
+            } else {
+              _this.isRow = false
+            }
+          }
+        }
+      })
+    },
+    // 消息列表
+    msgData() {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/classAndNew',
+        success:function (res) {
+          if (res && res.status == 1) {
+            _this.msgList = $.isEmptyObject(res.data) ? false : res.data
+          }
+        }
+      })
+    },
+    // 点击分类修改分类下的消息为已读
+    setRead(val) {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/setReadStatus',
+        data: {
+          msgType: val
+        },
+        success:function (res) {
+          console.log(res)
+        }
+      })
+    },
+    // 点击置顶消息为已读
+    topRead(ids) {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids
+        },
+        success:function (res) {
+          console.log(res)
+          _this.msgData()
+        }
+      })
+    },
+    // 置顶消息跳转
+    msgClick(url, num, ids) {
+      if (url) {
+        location.href = url
+        if (!num) {
+          this.topRead(ids)
+        }
+      } else {
+        return
+      }
+    },
+    // 置顶消息展开,收起
+    toggleClick() {
+      this.isToggle = !this.isToggle
+    },
+    // 列表消息跳转
+    msgDetailed(type, num) {
+      let wxType = getType()
+      if (num) {
+        this.setRead(type)
+      }
+      if (wxType) {
+          location.href = '/weixin/frontPage/messageCenter/sess/detail?type=' + type
+      } else {
+          location.href = '/jyapp/frontPage/messageCenter/sess/detail?type=' + type
+      }
+    }
+  }
+})
+

+ 232 - 0
src/web/staticres/frontRouter/pc/mesgCenter/css/index-pc.css

@@ -0,0 +1,232 @@
+
+[v-cloak] {
+    display: none !important;
+}
+
+.flex {
+    display: flex;
+    align-items: center;
+  }
+.mesg-container {
+  padding-top: 64px;
+  min-height: calc(100vh - 364px);
+  background: #F2F4F7;
+}
+.main-mesg {
+  width: 1000px;
+  margin: 0 auto;
+  padding: 52px 0 80px 0;
+}
+.main-mesg h3 {
+  font-size: 20px;
+  font-weight: 700;
+  color: #1d1d1d;
+  line-height: 30px;
+}
+.main-mesg .tips {
+  display: flex;
+  flex-direction: initial;
+  padding: 20px 20px 12px;
+  background: #fff;
+  border-radius: 4px;
+  margin-top: 24px;
+  cursor: pointer;
+}
+.main-mesg .tips .imgs {
+  position: relative;
+  margin-right: 12px;
+}
+.main-mesg .tips .imgs img {
+  width: 40px;
+  height: 40px;
+  margin-top: 4px;
+}
+.main-mesg .tips .dots {
+  position: absolute;
+  right: 0;
+  top: 7px;
+  width: 6px;
+  height: 6px;
+  background: #fb483d;
+  border: 1px solid #ffffff;
+  border-radius: 50%;
+}
+.main-mesg .tips .r-lis {
+  width: 100%;
+}
+.main-mesg .tips .r-lis .title {
+  display: flex;
+  flex-direction: initial;
+  justify-content: space-between;
+  font-size: 14px;
+  color: #1d1d1d;
+  font-weight: 700;
+  line-height: 22px;
+}
+.main-mesg .tips .r-lis .title span:nth-child(2) {
+  font-size: 12px;
+  color: #999;
+  font-weight: 500;
+}
+.main-mesg .tips .r-lis p {
+  font-size: 14px;
+  color: #686868;
+  line-height: 22px;
+  margin-top: 4px;
+  text-align: left;
+}
+.main-mesg .tips .r-lis p a {
+  color: #2CB7CA;
+  text-decoration: none;
+}
+.main-mesg .tabs-mesg {
+  background: #fff;
+  border-radius: 4px;
+  margin-top: 20px;
+  box-shadow: 0px 0px 18px 0px rgba(0,0,0,0.02); 
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item {
+  height: auto;
+  padding: 0;
+  padding: 0 34.5px;
+}
+.el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+  padding-left: 0!important;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item .msg-label {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 56px;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item .msg-label .b-item {
+  position: absolute;
+  right: -2px;
+  top: 2px;
+  height: 18px;
+  line-height: 16px;
+  padding: 0 4px;
+  border: 1px solid #fff;
+  background: #ff3a20;
+  border-radius: 10px;
+  font-size: 12px;
+  color: #fff;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item .msg-label .words {
+  font-size: 14px;
+  color: #1d1d1d;
+  line-height: 22px;
+  margin: 8px 0 16px 0;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item .msg-label img {
+  width: 48px;
+  height: 48px;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__nav {
+  margin: 16px 0 0 35px;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__active-bar {
+  width: 56px!important;
+  height: 7px;
+  background: url('/images/pc/lines.png') no-repeat;
+  background-size: cover;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__item.is-active .msg-label, .main-mesg .tabs-mesg .el-tabs .el-tabs__item:hover .msg-label {
+  color: #2CB7CA;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__nav-wrap::after {
+  height: 1px;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__header {
+  margin: 0;
+}
+.main-mesg .tabs-mesg .el-tabs .el-tabs__content {
+  padding: 8px 0;
+}
+.main-mesg .tab-tips {
+  margin-top: 0;
+  padding: 0;
+  padding: 16px 20px 0 20px;
+}
+.main-mesg .tab-tips .r-lis {
+  padding-bottom: 16px;
+  border-bottom: 1px solid #eee;
+}
+.main-mesg .tab-tips:not(:last-child) .r-lis {
+  border-bottom: 1px solid #eee;
+}
+.main-mesg .tab-tips:hover {
+  cursor: pointer;
+  background: #f5f6f7;
+}
+.main-mesg .tab-tips .r-lis:hover .title {
+  color: #2CB7CA;
+}
+.main-mesg .tab-tips .r-lis .title {
+  font-weight: 400;
+}
+.no-data {
+  margin: 80px auto 80px auto;
+  text-align: center;
+}
+.no-data img {
+  width: 200px;
+  height: 200px;
+  overflow: visible;
+}
+.no-data .tip-text {
+  margin-top: 20px;
+  color: #999;
+  font-size: 14px;
+  line-height: 22px;
+}
+.tabs-mesg .el-pagination {
+  margin: 28px 0 20px 0;
+  padding: 2px 15px;
+  text-align: right;
+  color: rgba(0, 0, 0, 0.65);
+}
+
+.tabs-mesg .el-pagination .el-pager .active + li {
+  border: 1px solid #D9D9D9;
+}
+
+.tabs-mesg .el-pagination ul li {
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+  background: #fff!important;
+  border: 1px solid #D9D9D9;
+  font-weight: normal;
+  border-radius: 2px;
+  padding: 0;
+}
+
+.tabs-mesg .el-pagination ul li:hover {
+  color: #2CB7CA!important;
+}
+
+.tabs-mesg .el-pagination.is-background .btn-prev, .tabs-mesg .el-pagination.is-background .btn-next {
+  width: 32px;
+  height: 32px;
+  line-height: 32px;
+  background: none;
+  border: 1px solid #D9D9D9;
+}
+
+.tabs-mesg .el-pagination.is-background .el-pager li:not(.disabled).active {
+  background: #2CB7CA!important;
+  border-radius: 2px;
+  border-color: #2CB7CA;
+}
+
+.tabs-mesg .el-pagination.is-background .el-pager li:not(.disabled).active:hover {
+  color: #fff!important;
+}
+
+.tabs-mesg .el-pagination.is-background .btn-next, 
+.tabs-mesg .el-pagination.is-background .btn-prev, 
+.tabs-mesg .el-pagination.is-background .el-pager li {
+  color: #1d1d1d;
+}

二进制
src/web/staticres/frontRouter/pc/mesgCenter/image/no-mesg.png


+ 108 - 0
src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js

@@ -0,0 +1,108 @@
+
+var vm = new Vue({
+  el: '.mesg-container',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+      activeName: '0',
+      counts: [],
+      isTabs: '',
+      imgSrcs: [
+        {type: '0', title: '全部', url:'/images/pc/quanbu@2x.png'},{type: '1', title: '活动优惠', url:'/images/pc/huodong@2x.png'},
+        {type: '2', title: '服务通知', url:'/images/pc/fuwu@2x.png'},{type: '3', title: '订阅消息', url:'/images/pc/dingyue@2x.png'},
+        {type: '4', title: '项目动态', url:'/images/pc/xiangmu@2x.png'},{type: '5', title: '企业动态', url:'/images/pc/qiye@2x.png'},
+        {type: '6', title: '分析报告', url:'/images/pc/fenxi@2x.png'},{type: '7', title: '系统通知', url:'/images/pc/xitong@2x.png'}
+      ],
+      tabsList: {
+        lasts: [],
+        lists: [],
+        offset: 1,
+        pageSize: 20,
+        totals: 0,
+      }
+    }
+  },
+  created() {
+    this.tabsCount()
+    this.tabsData('0')
+  },
+  methods: {
+    tabClick(val) {
+      this.isTabs = val.name
+      this.tabsList.lists = []
+      this.tabsList.offset = 1
+      this.tabsData(val.name)
+    },
+    tabsCount() {
+      const _this = this
+      $.ajax({
+        type:'GET',
+        url:'/jymessageCenter/ClassCount',
+        data: {},
+        success:function (res) {
+          if (res && res.status == 1) {
+            _this.counts = res.data
+          }
+        }
+      })
+    },
+    tabsData(num) {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/messageList',
+        data: {
+          needFilter: 0,
+          msgType: num,
+          isRead: '-1',
+          offset: this.tabsList.offset,
+          pageSize: this.tabsList.pageSize
+        },
+        success:function (res) {
+          if (res && res.status == 1) {
+            _this.tabsList.lasts = $.isEmptyObject(res.data.last) ? false : res.data.last
+            _this.tabsList.lists = $.isEmptyObject(res.data.list) ? false : res.data.list
+            _this.tabsList.totals = res.data.total
+          }
+        }
+      })
+    },
+    onPageChange(page) {
+      this.tabsList.offset = page
+      this.tabsList.lists = []
+      this.tabsData(this.isTabs)
+    },
+    readed(ids) {
+      const _this = this
+      $.ajax({
+        type:'GET',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids
+        },
+        success:function () {
+          _this.tabsData(_this.isTabs)
+          _this.tabsCount()
+          message.checkOpened()
+        }
+      })
+    },
+    linked(id, url, str, num) {
+      if (url) {
+        location.href = url
+      }
+      if (num == 1) {
+        if (url) {
+          this.readed(id)
+        }
+      }
+      if (num == 2) {
+        if (!str) {
+          this.readed(id)
+        }
+      }
+    }
+  }
+})
+
+

二进制
src/web/staticres/images/pc/dingyue@2x.png


二进制
src/web/staticres/images/pc/fenxi@2x.png


二进制
src/web/staticres/images/pc/fuwu@2x.png


二进制
src/web/staticres/images/pc/guan.png


二进制
src/web/staticres/images/pc/guan_active.png


二进制
src/web/staticres/images/pc/huodong@2x.png


二进制
src/web/staticres/images/pc/lines.png


二进制
src/web/staticres/images/pc/mesg.png


二进制
src/web/staticres/images/pc/mesg_active.png


二进制
src/web/staticres/images/pc/no-mesg.png


二进制
src/web/staticres/images/pc/qiye@2x.png


二进制
src/web/staticres/images/pc/quanbu@2x.png


二进制
src/web/staticres/images/pc/xiangmu@2x.png


二进制
src/web/staticres/images/pc/xitong@2x.png


二进制
src/web/staticres/images/tabbar/book.png


二进制
src/web/staticres/images/tabbar/book_active.png


二进制
src/web/staticres/images/tabbar/box.png


二进制
src/web/staticres/images/tabbar/box_active.png


二进制
src/web/staticres/images/tabbar/home.png


二进制
src/web/staticres/images/tabbar/home_active.png


二进制
src/web/staticres/images/tabbar/mesg.png


二进制
src/web/staticres/images/tabbar/mesg_active.png


二进制
src/web/staticres/images/tabbar/mine.png


二进制
src/web/staticres/images/tabbar/mine_active.png


+ 53 - 0
src/web/staticres/js/dateFunc.js

@@ -0,0 +1,53 @@
+function dateTime (date, fmt='yyyy年MM月dd日 hh:mm') {// 时间戳转换
+  if (!date) return ''
+  d = new Date(date)
+  var o = {
+    "M+": d.getMonth() + 1, //月份 
+    "d+": d.getDate(), //日 
+    "h+": d.getHours(), //小时 
+    "m+": d.getMinutes(), //分 
+    "s+": d.getSeconds() //秒
+  }
+
+  // 根据y的长度来截取年
+  if (/(y+)/.test(fmt)){ 
+    fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length))
+  }
+  for (var k in o){
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)))
+  }
+  return fmt
+}
+function dateYear () {// 获取当年的第一天
+  var date = new Date()
+  date.setDate(1)
+  date.setMonth(0)
+  return date.getTime()
+}
+function dateLast () {// 获取昨天
+  var day = new Date()
+  day.setTime(day.getTime()-24*60*60*1000)
+  return dateTime(day,'yyyy/MM/dd')
+}
+function dateMatter (time) {// 时间转换
+  var timeStr = ''
+  var currentDay = dateTime(time,'yyyy/MM/dd') // 当前日期
+  var lingDay = new Date(new Date().toLocaleDateString()).getTime() // 获取当天0点
+  var isTime = new Date(time) - lingDay
+  var diff = isTime < 0 ? '昨天' : ''
+  var isDate = new Date(time) - dateYear()
+  if (isDate < 0) {
+    timeStr = dateTime(time)
+  } else {
+    if (currentDay === dateLast()) {
+      timeStr = diff + dateTime(time,'hh:mm')
+    } else {
+      if (isTime < 0) {
+        timeStr = dateTime(time,'MM月dd日 hh:mm')
+      } else {
+        timeStr = dateTime(time,'hh:mm')
+      }
+    }
+  }
+  return timeStr
+}

+ 5 - 1
src/web/staticres/js/login.js

@@ -419,6 +419,8 @@ var logic = function(data,num){
       checkMenuForEnt()
 			infoListCss();
 			commonMouseEvent();
+            message.checkMessage()
+            message.init()
 		}catch(e){}
 	}
 }
@@ -605,7 +607,8 @@ var signout = function(){
 	$(".superSearch").show();
 	$.post("/front/signOut",function(data){
 		if(data=="ok"){
-		  clearLoginStorage(/-login-clear/)
+            $('#noticed').hide()
+            clearLoginStorage(/-login-clear/)
 			try{
 				$.cookie("userid_secure","",{expires:-1,path:"/",domain:document.domain.replace(/[^.]+/,"")});
 			}catch(e){
@@ -700,6 +703,7 @@ var haslogin = function(num,kyorpn,url){
         checkMenuForEnt()
 				infoListCss();
 				commonMouseEvent();
+                message.checkMessage()
 			}catch(e){}
 		}else{
 			$("#login").html("<button class='loginBtn' data-toggle='modal' onclick='openLoginDig()'>登录</button>");

+ 142 - 0
src/web/staticres/js/message.js

@@ -0,0 +1,142 @@
+function Message() {
+    this.isOpened = false
+    this.imgArrs = ['quanbu', 'huodong', 'fuwu', 'dingyue', 'xiangmu', 'qiye', 'fenxi', 'xitong']
+    this.tabName = ['全部', '优惠活动', '服务通知', '订阅消息', '项目动态', '企业动态', '分析报告', '系统通知']
+    this.messageInfoList = {}
+    
+    // 初始化
+    this.init = function () {
+        this.checkOpened()
+        this.bindEvents()
+    }
+    // 悬浮窗列表数据请求
+    this.checkMessage = function () {
+        var _this = this
+        $('#noticed').show()
+        $.ajax({
+            url: '/jymessageCenter/messageList',
+            type: 'POST',
+            data: {
+                needFilter: 1,
+                msgType: '0',
+                isRead: '-1',
+                offset: 0,
+                pageSize: 5
+            },
+            success: function (r) {
+                if (r && r.status === 1) {
+                    // message列表数据赋值
+                    _this.messageInfoList = r.data
+                    _this.renderMessageList()
+                }
+            }
+        })
+    }
+    // 判断今天是否首次打开过剑鱼网站和是否有未读消息
+    this.checkOpened = function () {
+        var _this = this
+        $.ajax({
+            url: '/jymessageCenter/isMsgOpen',
+            type: 'GET',
+            success: function (r) {
+                if (r && r.status === 1) {
+                    // 头部导航消息中心显示/隐藏
+                    if (r.data.count > 0) {
+                        $('#tips').show()
+                        $('#tips').html(r.data.count > 99 ? '99+' : r.data.count)
+                        $('#noNum').html(r.data.count)
+                    } else {
+                        $('#tips').hide()
+                    }
+
+                    _this.isOpened = r.data.open
+                    _this.openedChange()
+                }
+            }
+        })
+    }
+    
+    // 消息浮窗显示隐藏
+    this.openedChange = function () {
+        var isOpened = this.isOpened
+        if (isOpened) {
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').removeClass('jynav-list')
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').show()
+            $(this).find('.msg-img1').hide()
+            $(this).find('.msg-img2').show()
+        } else {
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').addClass('jynav-list')
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').hide()
+        }
+    }
+
+    // 渲染浮窗消息列表数据
+    this.renderMessageList = function () {
+        var imgArrs = this.imgArrs
+        var tabName = this.tabName
+        var messageInfoList = this.messageInfoList
+        var lists = $.isEmptyObject(messageInfoList.list) ? false : messageInfoList.list
+
+        var lasts = $.isEmptyObject(messageInfoList.last) ? false : messageInfoList.last, temp = ''
+        if (lasts) {
+            temp += '<div id="firsted" class="m-li" onclick="linked(lasts.link)"><div class="lis-cont"><img src="/images/pc/'+imgArrs[lasts.msg_type]+'@2x.png"><div class="r-lis"><div class="title"><span>'+lasts.title+'</span><span>'+dateMatter(lasts.createtime)+'</span></div><p>'+lasts.content+'</p></div></div></div>'
+        }
+        if (lists) {
+            for (var i = 0; i < lists.length; i++) {
+                temp += '<div class="m-li" onclick="linked(lists[i].link)"><div class="lis-cont"><img src="/images/pc/'+imgArrs[lists[i].msg_type]+'@2x.png"><div class="r-lis"><div class="title"><span>'+lists[i].title+'</span><span>'+dateMatter(lists[i].createtime)+'</span></div><p>'+lists[i].content+'</p></div></div></div>'
+            }
+        }
+        var tempNo = '<div class="no-datas"><img src="/frontRouter/pc/mesgCenter/image/no-mesg.png"><div class="tip-text"><p>暂未接收到信息</p></div></div>'
+        if (lasts || lists) {
+            $('#public-nav .iner .jynav li').find('.m-ul').append(temp)
+        } else {
+            $('#public-nav .iner .jynav li').find('.m-ul').append(tempNo)
+        } 
+    }
+    // 消息事件绑定
+    this.bindEvents = function () {
+        // 消息tabs事件
+        $('#public-nav .iner .jynav').find('#noticed').bind("mouseenter", function () {
+            $(this).find('.msg-img1').hide()
+            $(this).find('.msg-img2').show()
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').show()
+        })
+        // 头像tabs事件
+        $('#public-nav .iner').find('.useronline').bind("mouseenter", function () {
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').hide()
+        })
+        $('#public-nav .iner').find('.useronline').bind("mouseleave", function () {
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').show()
+        })
+
+        // 消息浮窗关闭按钮事件
+        $('#public-nav .iner .jynav li').find('.imgs').bind("mouseenter", function () {
+            $(this).toggle()
+            $('#public-nav .iner .jynav li').find('.imgs').hide()
+            $('#public-nav .iner .jynav li').find('.imgs1').show()
+        })
+        $('#public-nav .iner .jynav li').find('.imgs1').bind("mouseleave", function () {
+            $(this).toggle()
+            $('#public-nav .iner .jynav li').find('.imgs').show()
+            $('#public-nav .iner .jynav li').find('.imgs1').hide()
+        })
+        // 关闭悬浮窗
+        $('#imgActive').on('click', function () {
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').addClass('jynav-list')
+            $.ajax({
+                url: '/jymessageCenter/closeMessage',
+                type: 'GET',
+                success: function (r) {
+                    if (r && r.status === 1) {
+                        $('#public-nav .iner .jynav li').find('.jy-list-msg').hide()
+                    }
+                },
+                error: function () {
+                    $('#public-nav .iner .jynav li').find('.jy-list-msg').show()
+                }
+            })
+        })
+    }
+
+    this.init()
+}

+ 1 - 1
src/web/staticres/me/css/mine.css

@@ -108,7 +108,7 @@
 }
 
 .main-list {
-    padding: 0 .32rem 0.32rem;
+    padding: 0 .32rem 1.32rem 0.32rem;
 }
 
 /* menu-list相关 样式在安全中心多个页面复用,请慎重修改(单个页面的定制样式(小改动)建议在页面style标签中修改) */

+ 206 - 12
src/web/templates/common/pchead.html

@@ -15,8 +15,11 @@
         position: fixed;
         top: 0;
     }
+    #public-nav .iner {
+        width: 1200px;
+    }
     #public-nav .iner .fl{
-        margin-left: 60px;
+        margin-left: 0;
         display: flex;
         width: 430px;
         height: 100%;
@@ -156,12 +159,15 @@
     }
     #public-nav .iner .jynav li{
         position: relative;
-        padding: 0 24px !important;
+        padding: 0 23px !important;
         min-width: inherit !important;
     }
-    #public-nav .iner .jynav li:nth-child(5){
+    #public-nav .iner .jynav li:nth-child(6){
         padding-right: 8px !important;
     }
+    #public-nav .iner .jynav li:nth-child(6) a{
+        display: inherit;
+    }
     #public-nav .iner .jynav li .jynav-list{
         display: flex;
         flex-direction: column;
@@ -220,6 +226,157 @@
         left: 68px;
         width: 50px;
     }
+    #public-nav .iner .jynav li .jy-nav-msg{
+        width: 24px;
+        vertical-align: middle;
+    }
+    #public-nav .iner .jynav li .msg-img2 {
+        display: none;
+    }
+    #public-nav .iner .jynav li .tips {
+        display: none;
+        position: absolute;
+        left: 38px;
+        top: 16px;
+        height: 18px;
+        line-height: 16px;
+        padding: 0 4px;
+        border: 1px solid #fff;
+        background: #ff3a20;
+        border-radius: 10px;
+        font-size: 12px;
+        color: #fff;
+    }
+    /* 滚动条样式 */
+    #public-nav .iner .jynav li .jy-list-msg .msg-par ::-webkit-scrollbar {
+        /*滚动条整体样式*/
+        width: 6px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par ::-webkit-scrollbar-thumb {
+        /*滚动条里面小方块*/
+        border-radius: 3px;
+        background: #E0E0E0;
+        opacity: 0.15;
+    }
+    #public-nav .iner .jynav li .msg-style {
+        display: none;
+        position: absolute;
+        right: 0!important;
+        left: initial;
+        transform: translate(0%, 0%)!important;
+        width: 400px;
+        padding: 0;
+        background: #ffffff;
+        border-radius: 0px 0px 8px 8px;
+        box-shadow: 0px 6px 8px 0px rgba(0,0,0,0.08);
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par {
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        height: 368px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        padding: 16px 24px;
+        line-height: 24px;
+        box-shadow: 0px -1px 0px 0px rgba(0,0,0,0.05) inset; 
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .imgs, #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .imgs1 {
+        width: 16px;
+        height: 16px;
+        cursor: pointer;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .imgs1 {
+        display: none;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .spa {
+        height: auto;
+        font-size: 16px;
+        color: #1d1d1d;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .spa i {
+        font-size: 14px;
+        color: #686868;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-head .spa i em {
+        color: #2CB7CA;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul {
+        flex: 1;
+        overflow-y: scroll;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li {
+        padding: 12px 24px!important;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li:hover {
+        cursor: pointer;
+        background: #f5f6f7;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont {
+        display: flex;
+        flex-direction: initial;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont img {
+        width: 32px;
+        height: 32px;
+        margin: 4px 12px 0 0;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont .r-lis {
+        width: 100%;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont .r-lis .title {
+        display: flex;
+        flex-direction: initial;
+        justify-content: space-between;
+        font-size: 14px;
+        color: #1d1d1d;
+        line-height: 22px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont .r-lis .title span {
+        height: auto;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont .r-lis .title span:nth-child(2) {
+        font-size: 12px;
+        color: #999;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li .lis-cont .r-lis p {
+        font-size: 13px;
+        color: #686868;
+        line-height: 20px;
+        margin-top: 4px;
+        text-align: left;
+    }
+    #public-nav .iner .jynav li .no-datas {
+        margin-top: 18px;
+        text-align: center;
+    }
+    #public-nav .iner .jynav li .no-datas img {
+        width: 200px;
+        height: 200px;
+    }
+    #public-nav .iner .jynav li .no-datas .tip-text {
+        color: #999;
+        font-size: 14px;
+        line-height: 22px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-foot {
+        /* width: 100%; */
+        padding: 12px 0;
+        display: flex;
+        justify-content: center;
+        box-shadow: 0px 1px 0px 0px rgba(0,0,0,0.05) inset; 
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-foot a {
+        font-size: 16px;
+        color: #1d1d1d;
+        line-height: 24px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-foot a:hover {
+        color: #2CB7CA;
+    }
     #public-nav .iner .jynav li .jynav-list span.active a{
         color: #2CB7CA;
     }
@@ -535,6 +692,24 @@
                         <span name="广告服务"><a href="/front/advservices.html">广告服务</a></span>
                         <span name="关于我们"><a href="/front/aboutus.html">关于我们</a></span>
                         <span name="产品销售合作" class="recruit"><a href="/swordfish/frontPage/partner/free/index">产品销售合作</a></span>
+                    </div>
+				</li>
+                <li  name="消息" id="noticed" style="display: none;">
+                    <a href="/swordfish/frontPage/messageCenter/sess/index">
+                        <img src='{{Msg "seo" "cdn"}}/images/pc/mesg.png?v={{Msg "seo" "version"}}' class="jy-nav-msg msg-img1" alt="" />
+                        <img src='{{Msg "seo" "cdn"}}/images/pc/mesg_active.png?v={{Msg "seo" "version"}}' class="jy-nav-msg msg-img2" alt="" />
+                        <span class="tips" id="tips"></span>
+                    </a>
+                    <div class="jy-list-msg msg-style">
+                        <div class="msg-par">
+                            <div class="m-head">
+                                <span class="spa">消息中心<i>( <em id="noNum">0</em> 条未读 )</i></span>
+                                <img class="imgs" src='{{Msg "seo" "cdn"}}/images/pc/guan.png?v={{Msg "seo" "version"}}'>
+                                <img id="imgActive" class="imgs1" src='{{Msg "seo" "cdn"}}/images/pc/guan_active.png?v={{Msg "seo" "version"}}'>
+                            </div>
+                            <div class="m-ul"></div>
+                            <div class="m-foot"><a href="/swordfish/frontPage/messageCenter/sess/index">查看全部</a></div>
+                        </div>
                     </div>
 				</li>
 				<li class="slider"></li>
@@ -627,8 +802,12 @@
       </div>
   </div>
 </div>
+<script src='{{Msg "seo" "cdn"}}/js/dateFunc.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/js/message.js?v={{Msg "seo" "version"}}'></script>
 <script type="text/javascript">
-
+    // 初始化message模块内容
+    var message = new Message()
+    
     function zbSeatch(id){
         $("#"+id).submit();
     }
@@ -743,9 +922,14 @@
 
     }
     window.addEventListener('scroll', docScroll, true)
-
-
-
+    // 消息悬浮窗列表跳转详情页
+    function linked(url) {
+        if (url) {
+            window.location.href = url
+        } else {
+            return
+        }
+    }
 $(function(){
 
     // 搜索框显示、隐藏
@@ -756,16 +940,20 @@ $(function(){
     $("#public-nav .iner .fl .search-box .search-close").on('click',function(){
         $(this).parents('.search-box').hide()
         $("#public-nav .iner .fl .jy_nav_searchBtn").show()
-    })
-
-
-        // 导航栏展示/关闭
+    })  
+    
+    // 导航栏展示/关闭
     var curTheme = 'light'
     $("#public-nav .iner .jynav li").bind("mouseenter",function(){
          var l = $(this).find('.jynav-list').length;
          if(l > 0){
-            $(this).siblings().find('.jynav-list').hide()
+            //  隐藏消息悬浮窗
+            $('#public-nav .iner .jynav li').find('.jy-list-msg').hide()
             $(this).find('.jynav-list').toggle()
+            $(this).find('.msg-img1').hide()
+            $(this).find('.msg-img2').show()
+
+            $(this).siblings().find('.jynav-list').hide()
             curTheme =$("#public-nav").attr('data-theme')
             setNavTheme('light',1)
             $(".loginBtn").css({"borderColor":"#e0e0e0","color":'#252627'})
@@ -774,7 +962,13 @@ $(function(){
     $("#public-nav .iner .jynav li").bind("mouseleave",function(){
         setNavTheme(curTheme,1)
         docScroll()
+
+        //  隐藏消息悬浮窗
+        $('#public-nav .iner .jynav li').find('.jy-list-msg').show()
+        
         $("#public-nav .iner .jynav li").find('.jynav-list').hide()
+        $(this).find('.msg-img1').show()
+        $(this).find('.msg-img2').hide()
     })
 
 

+ 103 - 0
src/web/templates/frontRouter/pc/messageCenter/sess/index.html

@@ -0,0 +1,103 @@
+
+<html lang="zh-cn">
+	<head>
+		<title>消息中心_{{Msg "seo" "qfw.swordfishsl.title"}}</title>
+		<meta name="Keywords" content="{{Msg "seo" "qfw.swordfishsl.key"}}"/>
+		<meta name="Description" content="{{Msg "seo" "qfw.swordfishsl.description"}}"/>
+		<meta name="renderer" content="webkit">
+		<meta content="telephone=no" name="format-detection"/>
+    <meta content="消息中心" theme="light" name="enable-header"/>
+		{{include "/common/pnc.html"}}
+		<link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+		<link href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" rel="stylesheet" />
+    <link href="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/theme-chalk/index.css" rel="stylesheet" />
+    <link href='{{Msg "seo" "cdn"}}/frontRouter/pc/mesgCenter/css/index-pc.css?v={{Msg "seo" "version"}}' rel="stylesheet"> 
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src="//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js"></script>
+  </head>
+
+	<body>
+	{{include "/common/pchead.html"}}
+	  <section class="mesg-container" v-cloak>
+        <div class="main-mesg">
+          <h3>消息中心</h3>
+          <div class="tips" @click="linked(tabsList.lasts.id, tabsList.lasts.link, tabsList.lasts.isRead,1)" v-show="tabsList.lasts">
+            <div class="imgs">
+              <img :src='imgSrcs[tabsList.lasts.msg_type].url' v-if="tabsList.lasts.msg_type">
+              <i class="dots" v-if="tabsList.lasts.isRead == 0"></i>
+            </div>
+            <div class="r-lis">
+                <div class="title">
+                    <span>{tabsList.lasts.title}</span>
+                    <span>{dateMatter(tabsList.lasts.createtime)}</span>
+                </div>
+                <!-- <p>{tabsList.lasts.content}<a href="">点击立即支付>></a></p> -->
+                <p>{tabsList.lasts.content}</p>
+            </div>
+          </div>
+          <div class="tabs-mesg">
+            <el-tabs v-model="activeName" @tab-click="tabClick">
+              <el-tab-pane v-for="(item, index) in counts" :key="index" :name="imgSrcs[item.type].type">
+                <div class="msg-label" slot="label">
+                    <img :src='imgSrcs[item.type].url'>
+                    <i class="b-item" v-show="item.count">{item.count > 99 ? '99+' : item.count}</i>
+                  <p class="words">{imgSrcs[item.type].title}</p>
+                </div>
+                <div
+                  class="tips tab-tips"
+                  v-for="(ite, indx) in tabsList.lists"
+                  @click="linked(ite.id, ite.link, ite.isRead,2)"
+                  v-if="tabsList.lists"
+                >
+                  <div class="imgs">
+                    <img :src='imgSrcs[ite.msg_type].url'>
+                    <i class="dots" v-show="!ite.isRead"></i>
+                  </div>
+                  <div class="r-lis">
+                      <div class="title">
+                          <span>{ite.title}</span>
+                          <span>{dateMatter(ite.createtime)}</span>
+                      </div>
+                      <p>{ite.content}</p>
+                  </div>
+                </div>
+                <div class="no-data" v-if="!tabsList.lists"><img src='{{Msg "seo" "cdn"}}/frontRouter/pc/mesgCenter/image/no-mesg.png?v={{Msg "seo" "version"}}'><div class="tip-text"><p>暂未接收到信息</p></div></div>
+                <div class="el-pagination-container" v-show="tabsList.totals">
+                  <el-pagination
+                      background
+                      layout="prev, pager, next, ->"
+                      :hide-on-single-page="true"
+                      :current-page="tabsList.offset"
+                      :page-size="tabsList.pageSize"
+                      :total="tabsList.totals"
+                      @current-change="onPageChange"
+                  ></el-pagination>
+                </div>
+              </el-tab-pane>
+            </el-tabs>
+          </div>
+        </div>
+    </section>
+
+    {{include "/common/pcbottom.html"}}
+    {{include "/common/baiducc.html"}}
+
+    <script>
+        haslogin({{.T.logid}})
+        function baiduEvent(name) {
+          try {
+            console.log(name, 'name')
+            _hmt.push(['_trackEvent', '超级订阅-pc', 'click', name]);
+          } catch (e) {
+            console.log('未初始化百度统计')
+          }
+        }
+    </script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn.jsdelivr.net/npm/element-ui@2.13.2/lib/index.js></script>
+    <script src='{{Msg "seo" "cdn"}}/frontRouter/pc/mesgCenter/js/index-pc.js?v={{Msg "seo" "version"}}'></script>
+</body>
+
+</html>
+

+ 1 - 1
src/web/templates/frontRouter/pc/page_big_pc/sess/index.html

@@ -36,7 +36,7 @@
     <script type="systemjs-importmap" crossorigin="anonymous">
       {
         "imports": {
-          "app": "/page_big_pc/js/app.js?v={{Msg "seo" "big_pc_v"}}",
+          "app": "http://localhost:8080/js/app.js?v={{Msg "seo" "big_pc_v"}}",
           "single-spa": "https://cdn.jsdelivr.net/npm/single-spa@4.3.7/lib/system/single-spa.min.js",
           "vue": "https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js",
           "vue-router": "https://cdn-common.jianyu360.com/cdn/lib/vue-router/3.1.5/vue-router.min.js",

+ 67 - 0
src/web/templates/frontRouter/wx/messageCenter/sess/detail.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <meta name="keywords" content="剑鱼标讯">
+  <meta name="description" content="剑鱼标讯">
+  <meta name="author" content="剑鱼标讯">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+  <meta name="browsermode" content="application">
+  <meta name="x5-orientation" content="portrait">
+  <meta name="screen-orientation" content="portrait">
+  <meta name="x5-page-mode" content="app">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <title></title>
+  <script src="/big-member/js/rem.js"></script>
+  <!--S-当前页面的css资源-->
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/messageCenter/css/public.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/messageCenter/css/index.css?v={{Msg "seo" "version"}}' />
+</head>
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main detailed" id="detailed" v-cloak>
+      <div class="j-container">
+        <div class="j-main descri">
+          <van-list
+            v-model="tabsList.loading"
+            :finished="tabsList.finished"
+            finished-text="没有更多了"
+            @load="msgData"
+          >
+            <div class="d-list" v-for="item in lists" :key="item.id">
+              <p class="p-time">{dateMatter(item.createtime, 'in')}</p>
+              <div class="words">
+                <img :src="'/common-module/messageCenter/image/'+imgSrcs[item.msg_type - 1].url+'@2x.png'">
+                <div class="m-tip" @click="msgClick(item.link)">
+                  <span class="trangle"></span>
+                  <p class="p1">{item.title}</p>
+                  <!-- <p class="p2">{item.content}<i @click="msgClick(item.link)">点击立即支付>></i></p> -->
+                  <p class="p2">{item.content}</p>
+                </div>
+              </div>
+            </div>
+          </van-list>
+        </div>
+      </div>
+    </div>
+  </div>
+  <!--S-当前页面的资源-->
+  <script src='https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js'></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/func.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/detail.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 77 - 0
src/web/templates/frontRouter/wx/messageCenter/sess/index.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="utf-8">
+  <meta name="keywords" content="剑鱼标讯">
+  <meta name="description" content="剑鱼标讯">
+  <meta name="author" content="剑鱼标讯">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+  <meta name="browsermode" content="application">
+  <meta name="x5-orientation" content="portrait">
+  <meta name="screen-orientation" content="portrait">
+  <meta name="x5-page-mode" content="app">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <title>消息中心</title>
+  <script src="/big-member/js/rem.js"></script>
+  <!--S-当前页面的css资源-->
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+  <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/bidedoc/css/public.css?v={{Msg "seo" "version"}}' />
+  <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/messageCenter/css/index.css?v={{Msg "seo" "version"}}' />
+</head>
+<body>
+  <div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div class="j-main mesged" id="mesged" v-cloak>
+      <div class="j-container">
+        <div class="j-main" v-show="msgList">
+          <div class="head-mesg" v-show="lastData">
+            <h5>重要提醒</h5>
+            <div class="h-conts" @click="msgClick(lastData.link,lastData.isRead,lastData.id)">
+              <div class="p1">{lastData.title}
+                <span class="spa flex" @click="toggleClick" v-show="isRow">{isToggle?'收起':'展开'}&nbsp;<van-icon :class="isToggle?'is-icon1':'is-icon2'" name="arrow-down" /></span>
+              </div>
+              <!-- <p class="p2" :class="{'active':isRow && !isToggle}">{lastData.content}<i @click="msgClick(lastData.link)">点击立即支付>></i></p> -->
+              <p class="p2" :class="{'active':isRow && !isToggle}">{lastData.content}</p>
+            </div>
+          </div>
+          <div class="t-list">
+            <div class="tips" v-for="(ite, index) in msgList" :key="index" @click="msgDetailed(ite.type,ite.count)" v-show="!$.isEmptyObject(ite.newMsg)">
+              <div class="imgs">
+                <van-badge :class="{'no-active':ite.count <= 0}" :content="ite.count" max="99">
+                  <img :src="'/common-module/messageCenter/image/'+imgSrcs[ite.type - 1].url+'@2x.png'">
+                </van-badge>
+              </div>
+              <div class="r-lis">
+                  <div class="title">
+                      <span>{imgSrcs[ite.type - 1].title}</span>
+                      <span v-if="ite.newMsg">{dateMatter(ite.newMsg.createtime, 'out')}</span>
+                  </div>
+                  <p class="p3" v-if="ite.newMsg">{ite.newMsg.content}</p>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="no-data" v-show="!msgList"><img src='{{Msg "seo" "cdn"}}/common-module/messageCenter/image/no-mesg.png?v={{Msg "seo" "version"}}'><div class="tip-text"><p>暂无消息</p></div></div>
+      </div>
+    </div>
+    <!-- 底部导航 -->
+    {{include "/weixin/search/tabbar.html"}}
+  </div>
+  <!--S-当前页面的资源-->
+  <script src=https://cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+  <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <!--E-当前页面的资源-->
+  {{include "/big-member/commonjs.html"}}
+  <script src='{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/func.js?v={{Msg "seo" "version"}}'></script>
+  <script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/index.js?v={{Msg "seo" "version"}}'></script>
+  {{include "/common/baiducc.html"}}
+</body>
+
+</html>

+ 1 - 1
src/web/templates/weixin/dataExport/dataExport.html

@@ -319,7 +319,7 @@
       </div>
       <div class="resetOne j-button-group">
           <button class="reset j-button-cancel">重置</button>
-          <button class="saveData j-button-confirm">确认</button>
+          <button data-cl-event="c_wx_confirm_buttonclick" class="saveData j-button-confirm">确认</button>
       </div>
     </div>
     <div class="js_dialog match_way" id="match_way" style="display: none;">

+ 3 - 0
src/web/templates/weixin/historypush.html

@@ -71,6 +71,7 @@
             padding: 0px 10px;
             background: #fff;
             margin-top: 100px;
+            padding-bottom: 50px!important;
         }
 
         .adv-wxpush-center {
@@ -800,6 +801,8 @@
         </div>
     </div>
 </section>
+<!-- 底部导航 -->
+{{include "/weixin/search/tabbar.html"}}
 <div class="vip_report_tip">
     <div class="weui-mask weui-animate-fade-in"></div>
     <div class="weui-dialog weui-animate-fade-in">

+ 2 - 0
src/web/templates/weixin/my.html

@@ -250,6 +250,8 @@
             </div>
         </div>
         <div class="j-footer"></div>
+        <!-- 底部导航 -->
+        {{include "/weixin/search/tabbar.html"}}
     </div>
     <script src='https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js'></script>
     <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>

+ 6 - 0
src/web/templates/weixin/search/mainSearch.html

@@ -358,6 +358,9 @@
         body .loading_,body .loading_Top{
             margin-top:0px;
         }
+				.home .home_data .data_list {
+					padding-bottom: 1.2rem!important;
+				}
         .home .home_data .data_list .list_title p {
             transition: all 1s;
         }
@@ -573,6 +576,9 @@
                 <a class="home_toset" id="wx-setting">去设置</a>
             </div>
         </div>
+				<!-- 底部导航 -->
+				{{include "/weixin/search/tabbar.html"}}
+				
         <div class="tips">
             <p class="tips_text home_1" style="display: none;">设置订阅关键词,随时接收最新招标信息</p>
             <p class="tips_text home_2" style="display: none;">为了使您接收更多信息,可对关键词进行新增或修改。</p>

+ 111 - 0
src/web/templates/weixin/search/tabbar.html

@@ -0,0 +1,111 @@
+
+<link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+<style>
+  [v-cloak] {
+      display: none !important;
+  }
+  #tabMesg .van-tabbar-item__icon img {
+    width: .48rem;
+    height: .48rem;
+  }
+  #tabMesg .van-tabbar-item .van-tabbar-item__icon .van-info {
+    margin-top: .12rem;
+    background: #FB483D;
+  }
+  #tabMesg .a-badge .van-tabbar-item__icon .van-info{
+    display: none;
+  }
+</style>
+
+<div id="tabMesg" v-cloak>
+  <van-tabbar v-model="tabActive" active-color="#2ABED1" inactive-color="#171826">
+    <van-tabbar-item @click="routeHref('/jylab/mainSearch',0)">
+      <span>首页</span>
+      <template #icon="props">
+        <img :src="props.active ? home.active : home.inactive" />
+      </template>
+    </van-tabbar-item>
+    <van-tabbar-item @click="routeHref('/swordfish/historypush',1)">
+      <span>订阅</span>
+      <template #icon="props">
+        <img :src="props.active ? book.active : book.inactive" />
+      </template>
+    </van-tabbar-item>
+    <van-tabbar-item @click="routeHref('/weixin/frontPage/messageCenter/sess/index',2)" :class="{'a-badge':counts==0}" :badge="counts">
+      <span>消息</span>
+      <template #icon="props">
+        <img :src="props.active ? mesg.active : mesg.inactive" />
+      </template>
+    </van-tabbar-item>
+    <van-tabbar-item @click="routeHref('/page_treasurebox/index.html',3)">
+      <span>百宝箱</span>
+      <template #icon="props">
+        <img :src="props.active ? box.active : box.inactive" />
+      </template>
+    </van-tabbar-item>
+    <van-tabbar-item @click="routeHref('/front/wxMyOrder/myMenu',4)">
+      <span>我的</span>
+      <template #icon="props">
+        <img :src="props.active ? my.active : my.inactive" />
+      </template>
+    </van-tabbar-item>
+  </van-tabbar>
+</div>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+<script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/func.js?v={{Msg "seo" "version"}}'></script>
+<script>
+	var vm = new Vue({
+  el: '#tabMesg',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+			tabActive: 0,
+			counts: 0,
+			home: {
+				active: '/images/tabbar/home_active.png',
+				inactive: '/images/tabbar/home.png',
+			},
+			book: {
+				active: '/images/tabbar/book_active.png',
+				inactive: '/images/tabbar/book.png',
+			},
+			mesg: {
+				active: '/images/tabbar/mesg_active.png',
+				inactive: '/images/tabbar/mesg.png',
+			},
+			box: {
+				active: '/images/tabbar/box_active.png',
+				inactive: '/images/tabbar/box.png',
+			},
+			my: {
+				active: '/images/tabbar/mine_active.png',
+				inactive: '/images/tabbar/mine.png',
+			}
+		}
+	},
+	created() {
+		this.tabsCount()
+    this.tabActive = Number(getQueryString('msg'))
+	},
+	methods: {
+		tabsCount() {
+      const _this = this
+      $.ajax({
+        type:'GET',
+        url:'/jymessageCenter/isMsgOpen',
+        data: {},
+        success:function (res) {
+          if (res && res.status == 1) {
+            _this.counts = res.data.count > 99 ? '99+' : res.data.count
+          }
+        }
+      })
+    },
+		routeHref(url, status) {
+      location.href = url + '?msg=' + status
+		}
+	}
+})
+</script>