Selaa lähdekoodia

Merge branch 'dev4.6.2.1' of http://192.168.3.207:8080/qmx/jy into dev4.6.2.1

熊啸云 3 vuotta sitten
vanhempi
commit
f58a227a8e
90 muutettua tiedostoa jossa 3612 lisäystä ja 161 poistoa
  1. 5 5
      src/config.json
  2. 0 5
      src/jfw/modules/app/src/app/front/areaPack.go
  3. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/analysis_result.css
  4. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css
  5. 5 5
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css
  6. 17 4
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/analysis_result.js
  7. 34 20
      src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js
  8. 1 1
      src/jfw/modules/app/src/web/staticres/jyapp/css/subscribe.css
  9. 55 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  10. 144 0
      src/jfw/modules/app/src/web/templates/big-member/page_free_buyer_project_news.html
  11. 3 3
      src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html
  12. 60 0
      src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/detail.html
  13. 69 0
      src/jfw/modules/app/src/web/templates/frontRouter/messageCenter/sess/index.html
  14. 3 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/commonRules.html
  15. 16 1
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_purchase.html
  16. 3 0
      src/jfw/modules/app/src/web/templates/weixin/historypush.html
  17. 6 0
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  18. 12 0
      src/jfw/modules/subscribepay/src/entity/areaPack.go
  19. 8 6
      src/jfw/modules/subscribepay/src/service/areaPack.go
  20. 7 7
      src/jfw/modules/subscribepay/src/service/dataExportPay.go
  21. 10 8
      src/jfw/modules/subscribepay/src/service/dataexportPack.go
  22. 7 7
      src/jfw/modules/subscribepay/src/service/integral.go
  23. 7 7
      src/jfw/modules/subscribepay/src/service/vipSubscribeChange.go
  24. 13 12
      src/jfw/modules/subscribepay/src/service/vipSubscribePay.go
  25. 5 5
      src/web/staticres/big-member/css/unit_portrayal.css
  26. 34 20
      src/web/staticres/big-member/js/unit_portrayal.js
  27. 48 13
      src/web/staticres/common-module/area-pack/js/buy.js
  28. 502 0
      src/web/staticres/common-module/big-member/js/buyer_project_news.js
  29. 1 1
      src/web/staticres/common-module/big-member/js/high_set.js
  30. 244 0
      src/web/staticres/common-module/messageCenter/css/index.css
  31. 530 0
      src/web/staticres/common-module/messageCenter/css/public.css
  32. BIN
      src/web/staticres/common-module/messageCenter/image/dingyue@2x.png
  33. BIN
      src/web/staticres/common-module/messageCenter/image/fenxi@2x.png
  34. BIN
      src/web/staticres/common-module/messageCenter/image/fuwu@2x.png
  35. BIN
      src/web/staticres/common-module/messageCenter/image/huodong@2x.png
  36. BIN
      src/web/staticres/common-module/messageCenter/image/mesg.png
  37. BIN
      src/web/staticres/common-module/messageCenter/image/mesg_active.png
  38. BIN
      src/web/staticres/common-module/messageCenter/image/no-mesg.png
  39. BIN
      src/web/staticres/common-module/messageCenter/image/qiye@2x.png
  40. BIN
      src/web/staticres/common-module/messageCenter/image/quanbu@2x.png
  41. BIN
      src/web/staticres/common-module/messageCenter/image/xiangmu@2x.png
  42. BIN
      src/web/staticres/common-module/messageCenter/image/xitong@2x.png
  43. 134 0
      src/web/staticres/common-module/messageCenter/js/detail.js
  44. 138 0
      src/web/staticres/common-module/messageCenter/js/func.js
  45. 137 0
      src/web/staticres/common-module/messageCenter/js/index.js
  46. 235 0
      src/web/staticres/frontRouter/pc/mesgCenter/css/index-pc.css
  47. BIN
      src/web/staticres/frontRouter/pc/mesgCenter/image/no-mesg.png
  48. 109 0
      src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js
  49. BIN
      src/web/staticres/images/pc/dingyue@2x.png
  50. BIN
      src/web/staticres/images/pc/fenxi@2x.png
  51. BIN
      src/web/staticres/images/pc/fuwu@2x.png
  52. BIN
      src/web/staticres/images/pc/guan.png
  53. BIN
      src/web/staticres/images/pc/guan_active.png
  54. BIN
      src/web/staticres/images/pc/huodong@2x.png
  55. BIN
      src/web/staticres/images/pc/lines.png
  56. BIN
      src/web/staticres/images/pc/mesg.png
  57. BIN
      src/web/staticres/images/pc/mesg_active.png
  58. BIN
      src/web/staticres/images/pc/mesg_fff.png
  59. BIN
      src/web/staticres/images/pc/no-mesg.png
  60. BIN
      src/web/staticres/images/pc/qiye@2x.png
  61. BIN
      src/web/staticres/images/pc/quanbu@2x.png
  62. BIN
      src/web/staticres/images/pc/xiangmu@2x.png
  63. BIN
      src/web/staticres/images/pc/xitong@2x.png
  64. BIN
      src/web/staticres/images/tabbar/book.png
  65. BIN
      src/web/staticres/images/tabbar/book_active.png
  66. BIN
      src/web/staticres/images/tabbar/box.png
  67. BIN
      src/web/staticres/images/tabbar/box_active.png
  68. BIN
      src/web/staticres/images/tabbar/home.png
  69. BIN
      src/web/staticres/images/tabbar/home_active.png
  70. BIN
      src/web/staticres/images/tabbar/mesg.png
  71. BIN
      src/web/staticres/images/tabbar/mesg_active.png
  72. BIN
      src/web/staticres/images/tabbar/mine.png
  73. BIN
      src/web/staticres/images/tabbar/mine_active.png
  74. 53 0
      src/web/staticres/js/dateFunc.js
  75. 5 1
      src/web/staticres/js/login.js
  76. 177 0
      src/web/staticres/js/message.js
  77. 2 2
      src/web/staticres/js/wxSupersearch.js
  78. 1 1
      src/web/staticres/me/css/mine.css
  79. 139 0
      src/web/templates/big-member/wx/page_free_buyer_project_news.html
  80. 3 3
      src/web/templates/big-member/wx/page_unit_portrayal.html
  81. 3 3
      src/web/templates/common/commonRules.html
  82. 237 14
      src/web/templates/common/pchead.html
  83. 102 0
      src/web/templates/frontRouter/pc/messageCenter/sess/index.html
  84. 66 0
      src/web/templates/frontRouter/wx/messageCenter/sess/detail.html
  85. 78 0
      src/web/templates/frontRouter/wx/messageCenter/sess/index.html
  86. 4 0
      src/web/templates/weixin/historypush.html
  87. 2 0
      src/web/templates/weixin/my.html
  88. 9 0
      src/web/templates/weixin/search/mainSearch.html
  89. 111 0
      src/web/templates/weixin/tabbar.html
  90. 16 1
      src/web/templates/weixin/vipsubscribe/vip_purchase.html

+ 5 - 5
src/config.json

@@ -10,8 +10,8 @@
     "agreement": "http",
     "webdomain": "https://web-zxl.jydev.jianyu360.com",
     "redirect": {
-        "searchinfo": "/jylab/mainSearch",
-        "rssset": "/swordfish/newhistorypush",
+        "searchinfo": "/jylab/mainSearch?msg=0",
+        "rssset": "/swordfish/newhistorypush?msg=1",
         "viewdemo": "/front/viewdemo",
         "wxpushlist": "/wxpush/bidinfo/%s",
         "share": "/swordfish/guide/share",
@@ -38,10 +38,10 @@
         "futureIndex": "/active/future/index",
         "keysetIndex": "/wxkeyset/keyset/index?tiptext=%s",
         "followEntDetail": "/jylab/followent/detail/%s",
-        "mymenu": "/front/wxMyOrder/myMenu",
-		"historypush": "/swordfish/newhistorypush?times=%s",
+        "mymenu": "/front/wxMyOrder/myMenu?msg=4",
+		"historypush": "/swordfish/newhistorypush?times=%s&msg=1",
 		"msgremind": "/front/vipsubscribe/msgremind?%s",
-		"treasurebox":"/jyTreasureBox/treasureBox",
+		"treasurebox":"/jyTreasureBox/treasureBox?msg=3",
 		"vipreport":"/subscribepay/report/wxtplmsg?start=%s&end=%s&pushcount=%s",
 		"viphomepage":"/front/vipsubscribe/introducePage",
 		"viphomepage_new":"/front/vipsubscribe/vipsubscribe_new",

+ 0 - 5
src/jfw/modules/app/src/app/front/areaPack.go

@@ -1,8 +1,6 @@
 package front
 
 import (
-	"fmt"
-
 	"github.com/go-xweb/xweb"
 )
 
@@ -16,8 +14,5 @@ func init() {
 }
 
 func (this *AreaPackAction) PageManager(htmlName string) error {
-	if htmlName == "buy" {
-		mongodb
-	}
 	return this.Render("/areaPack/page_" + htmlName + ".html")
 }

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/analysis_result.css

@@ -409,7 +409,7 @@
     flex: 1;
     width: 33.33%;
     margin-right: .24rem;
-    color: #FF9F40;
+    /* color: #FF9F40; */
     opacity: 0.8;
     white-space: nowrap;
 }

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/ent_portrait.css

@@ -251,7 +251,7 @@
     text-align: center;
 }
 .client .c-name{
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .3rem;
     color: #171826;
 }

+ 5 - 5
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/unit_portrayal.css

@@ -129,7 +129,7 @@
 }
 .d_title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -176,7 +176,7 @@
     color: #2ABED1;
     font-size: .24rem;
     border-radius: 4px;
-    font-weight: bold;
+    /* font-weight: bold; */
 }
 .i_time{
     font-size: .2rem;
@@ -345,7 +345,7 @@
 }
 .chart_title,.rank_title,.distribute_title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -358,7 +358,7 @@
 }
 .client-title,.agency-title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -398,7 +398,7 @@
     text-align: center;
 }
 .client .c-name{
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .3rem;
     color: #171826;
 }

+ 17 - 4
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/analysis_result.js

@@ -351,18 +351,26 @@ var vNode = {
         // 处理行业提交数据
         formatterIndustryData:function(data) {
             // var data = {"建筑工程": ["勘察设计", "工程施工", "监理咨询", "材料设备", "机电安装"],"信息技术": ['系统集成及安全','软件开发','运维服务','其他']}
-            var arr = []
+            // var result = []
             if(data) {
                 if(Object.keys(data).length === 0) {
                     return ''
                 } else {
+                    var k = ''
+                    var arr = []
                     for (var key in data) {
+                        k = key
                         for (var i = 0; i < data[key].length; i++) {
-                            data[key][i] = key + '_' + data[key][i]
+                            // data[key][i] = key + '_' + data[key][i]
                             arr.push(data[key][i])
                         }
                     }
-                    return arr;
+                    var result = arr.map(function(v) {
+                      v = k + '_' + v
+                      return v
+                    })
+                    console.log(result,'111')
+                    return result;
                 }
             }
         },
@@ -978,7 +986,12 @@ var vNode = {
         },
         onTabClick (page) {
           if (page == 1) {
-            this.projectListDetail = this.defaultProjectDetail
+            var loading = this.showLoading()
+            var _this = this
+            setTimeout(function() {
+              _this.projectListDetail = _this.defaultProjectDetail
+              loading.clear()
+            }, 50)
           } else {
             var _this = this
             this.$nextTick(function(){

+ 34 - 20
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -315,14 +315,24 @@ var vNode = {
                 }
             })
         },
+        // 跳转招标动态新页面
+        goProjectPage: function () {
+          if (this.power.indexOf(5) == -1) {
+            this.openDialog()
+            return
+          } else {
+            location.href = './free_buyer_project_news?entName=' + decodeURIComponent(utils.getParam('entName'))
+          }
+        },
         // 获取中标动态数据
         getNewMsg: function(){
           var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
           var that = this;
           var data = {
               buyer: decodeURIComponent(utils.getParam('entName')),
-              count: that.dt.pageCount,
-              pageSign: that.dt.isMore
+              // count: that.dt.pageCount,
+              // pageSign: that.dt.isMore,
+              pageNum: 1
           }
           $.ajax({
             type:'POST',
@@ -338,25 +348,29 @@ var vNode = {
                         v.firsttime = new Date(Number(v.firsttime + '000')).pattern('yyyy/MM/dd');
                         v.bidamount = v.bidamount ? utils.moneyUnit(v.bidamount) : ''
                     })
-                    if (!that.dt.isMore) {
-                        that.dt.list = []
-                        that.dt.isMore = 'more'
-                        if(res.data.count <= 3) {
-                            that.dt.isNext = false
-                        }
-                    } else if (that.dt.isMore === 'more') {
-                        if (that.power.indexOf(5) == -1) {
-                          that.openDialog()
-                          return
-                        }
-                        that.dt.isMore = 'max'
-                        if(res.data.count <= 23) {
-                            that.dt.isNext = false
-                        }
-                    } else if (that.dt.isMore === 'max') {
-                        that.dt.isNext = false
+                    if (res.data.count <= 10) {
+                      that.dt.isNext = false
                     }
-                    that.dt.list = that.dt.list.concat(res.data.list)
+                    that.dt.list = res.data.list
+                    // if (!that.dt.isMore) {
+                    //     that.dt.list = []
+                    //     that.dt.isMore = 'more'
+                    //     if(res.data.count <= 3) {
+                    //         that.dt.isNext = false
+                    //     }
+                    // } else if (that.dt.isMore === 'more') {
+                    //     if (that.power.indexOf(5) == -1) {
+                    //       that.openDialog()
+                    //       return
+                    //     }
+                    //     that.dt.isMore = 'max'
+                    //     if(res.data.count <= 23) {
+                    //         that.dt.isNext = false
+                    //     }
+                    // } else if (that.dt.isMore === 'max') {
+                    //     that.dt.isNext = false
+                    // }
+                    // that.dt.list = that.dt.list.concat(res.data.list)
                   }
                 }
               } else {

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/css/subscribe.css

@@ -2032,7 +2032,7 @@ html, body {
 .fixedPover{
   position: fixed;
   bottom: 0.2rem;
-  left: 1.24rem;
+  left: 0.64rem;
   padding: .24rem;
   width: 164px;
   height: 109px;

+ 55 - 1
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,48 @@ function autoLogin (url, callBack) {
   });
 }
 
+// 底部导航消息总数
+function checkMsgCount(acync, str, 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)
+      }
+      if (str == 1) {
+        var isMsg = localStorage.getItem('isMsgNum')
+        if (num !== Number(isMsg)) {
+          try {
+            JyObj.refreshAppointTab('message', 1)
+          } catch (e) {
+            console.log(e)
+          }
+          localStorage.setItem('isMsgNum', num)
+        }
+      } else {
+        localStorage.setItem('isMsgNum', num)
+      }
+      
+      callback && callback()
+    }
+  })
+}
+
+function keepQuest() {
+  var appType = androidOrIOS(), timer = null
+  if (appType == 'ios' || appType == 'android') {
+    clearInterval(timer)
+    timer = setInterval(() => {
+      checkMsgCount(true, 1)
+    }, 300000)
+  }
+}
+
 function loginSuccess (result) {
   JyObj.saveUserToken(result.sign);
   // 数据包默认选中企业需请求默认企业接口
@@ -1045,6 +1093,9 @@ function loginSuccess (result) {
 
       window.onlyUserID = getCookieValue('SESSIONID')
     }
+
+    // 消息总数方法
+    checkMsgCount(false, 0);
   } catch (e) {
     console.log('获取ID失败')
   }
@@ -1055,6 +1106,7 @@ function loginSuccess (result) {
       url: '/entbase/ent/mySelectent?t=' + new Date().getTime()
     })
   }
+
   //分销跳转
   if (getUrlParam("DisUrl") != null) {
     afterLoginSuccess("", true);
@@ -1089,6 +1141,7 @@ function loginSuccess (result) {
   afterLoginSuccess("S", false);
   //window.location.href = "/jyapp/jylab/mainSearch";
   //location.replace("/jyapp/jylab/mainSearch");
+
 }
 
 //2020-05-30 android replace失效
@@ -1219,7 +1272,7 @@ function redSpotOnMenu () {
 function redSpotBackFuc (r, flag) {
   var noticeCount = r.notice;
   //JyObj.getUnReadMessageCount("");
-
+  checkMsgCount(false, 0)
   // message红点
   if (noticeCount > 0) {
     $(".trigger-div-notice .dot-red").show()
@@ -1552,6 +1605,7 @@ function afterReceivePushMessage (type, url) {
 	}else if (type == "entnichepush" || type == "member" || type == "projectforecast" || type == "entchange" || type == "memberreport") {
       	JyObj.hideRedSpotOnMenu("my");
     }
+    checkMsgCount(true, 1)
     receivePushMessageHandle(type, url);
   } catch (e) { }
 }

+ 144 - 0
src/jfw/modules/app/src/web/templates/big-member/page_free_buyer_project_news.html

@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+<head>
+    <title>招标动态</title>
+
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+
+    <!--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/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/css/ent_project_news.css?v={{Msg "seo" "version"}}' />
+    <!--E-当前页面的css资源-->
+    <!--临时处理区域选择仅有一个时展示问题-->
+    <style>
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box {
+            display: none;
+        }
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box + .key-card-box .area-card-item:after {
+            content: "";
+            position: absolute;
+            right: 0;
+            bottom: 0;
+            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHHSURBVHgB7ZS/TsJQFMa/tkpIVEIMCRodIMQEZYGBB8An8AWMuOqgbm46uqFPIImzCS9gqrMDYhxYNAwODiQi/iMEe72nUkJJbe/FwuQ33Z57en49t+d+wL98VEovp1WMSUm9sgGm6grGIIKpDEVaj7zDFb1yYMFII+2QYGA47I+NDJjSbwuMsd3BuO/AtF4Ot6EVwFjead9XoAnjk0jL33J8A3JYrAuLueX5AhSF+QKUgf0ZSFZF7sGAsOg7Q198y6pkYEMDl/XKDrmHG2x9MYLz7BKS00FbXIOkyD0UhiO3nO1YFHuJeUQCk6i3O7huvPf2pDp0sion2FY8aq6rb584e6zb9oU7JKvisP1seMqctNeO4QnLlx943pctx3NK+62KYMVMwiySL9/zoi0pGEn1hNEd6/oiAZq8yMyEZoKtgRCF8e5uFBeY44UmyCmHhTiUil7UX7A2N+sJIzGGE0UG5gS15AUjGYoRV2VhP8Vb2OT/sNktLgKDohSruUzN1qGsVS0EA1iNhFB6enaHATXeXc4GJKvSGI5lrUpAPRg9mEcqYlVDiR/jh2JkLJgZEnEP4fpAg390jU/jlaYapbtc5nIw5xuaNAINUmtJBQAAAABJRU5ErkJggg==);
+            width: 14px;
+            height: 14px;
+            background-size: 100% 100%;
+        }
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box + .key-card-box .area-card-item {
+            position: relative;
+            background: #E8FAFD;
+            color: #2ABED1;
+        }
+    </style>
+</head>
+<body>
+<div class="j-container">
+    {{include "/big-member/header.html"}}
+    <div id="ent-project-news" class="j-main" v-cloak>
+        <div class="j-container search-container">
+            <div class="search-header">
+                <div class="header-ent-name border-line-b clickable">
+                    <span class="j-icon icon-company"></span>
+                    <span class="ent-title">${ entInfo.buyerName }</span>
+                    <!-- <div class="ent-follow">
+                        <span class="j-icon"
+                            :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
+                            @click="changeFollowState"
+                            v-if="entInfo.followSearchFinish && entInfo.entExist">
+                        </span>
+                        <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
+                    </div> -->
+                </div>
+                <!-- <div class="search-input">
+                    <van-search
+                        v-model.trim="searchInfo.content"
+                        @search="doSearch"
+                        maxlength="50"
+                        placeholder="输入关键词">
+                        <template #left-icon>
+                            <span class="j-icon base-icon icon-search"></span>
+                        </template>
+                    </van-search>
+                    <div class="action-text clickable" @click="doSearch">搜索</div>
+                </div>
+                <div class="search-filters">
+                    <van-dropdown-menu :close-on-click-outside="false">
+                        <van-dropdown-item get-container="body" :lazy-render="false" title="搜索范围" ref="matchTypeMenu">
+                            <popup-select-component :data-list="matchTypeList" multiple show-all-button @confirm="pConfirm($event, 'matchType')" ref="matchTypeSelector"></popup-select-component>
+                        </van-dropdown-item>
+                        <van-dropdown-item get-container="body" :lazy-render="false" title="信息类型" class="collection" ref="infoTypeMenu">
+                            <notice-component class="collection" @cancel="cancel" @confirm="confirm" :selectnoticelist="searchFilters.infoType"  ref="infoTypeSelector"></notice-component>
+                        </van-dropdown-item>
+                        <van-dropdown-item get-container="body" :lazy-render="false" title="项目地区" ref="projectAreaMenu">
+                            <area-component :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" @cancel="cancel" @confirm="confirm"></area-component>
+                        </van-dropdown-item>
+                        <van-dropdown-item get-container="body" :lazy-render="false" title="发布时间" ref="publishTimeMenu">
+                            <popup-select-component ref="publishTimeSelector" button-type="button" :data-list="publishTimeList" @confirm="pConfirm($event, 'publishTime')"></popup-select-component>
+                        </van-dropdown-item>
+                    </van-dropdown-menu>
+                </div> -->
+            </div>
+            <div class="j-main" ref="jList">
+                <div class="list-wrapper">
+                    <van-list
+                        v-model="listState.loading"
+                        :finished="listState.finished"
+                        :immediate-check="false"
+                        finished-text=""
+                        @load="onLoad"
+                        class="project-info-list">
+                        <div
+                            v-for="(item, index) in listState.list"
+                            class="project-info-item bg-white border-line-b clickable"
+                            :immediate-check="false"
+                            @click="goToDetail(item)"
+                            :key="item.id">
+                            <div class="project-name">${ item.title }</div>
+                            <div class="project-info">
+                                <span class="tags">
+                                    <span class="tag tag-success" v-if="item.area">${item.area}</span>
+                                    <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
+                                    <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
+                                </span>
+                                <span class="project-time">
+                                    ${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') : '-'}
+                                </span>
+                            </div>
+                        </div>
+                    </van-list>
+                    <div class="empty-container" v-show="listState.list.length === 0 && listState.loaded && !listState.loading">
+                        <div class="empty-content-position">
+                            <div class="image">
+                                <img src="/jyapp/big-member/image/img-empty.png">
+                            </div>
+                            <div class="empty-main tip-text">暂无数据</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!--S-当前页面的资源-->
+<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/zepto/1.2.0/zepto.min.js></script>
+{{include "/big-member/commonjs.html"}}
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/common.js?v={{Msg "seo" "version"}}'></script>
+<script>
+    var pageInfo = {
+        version: {{Msg "seo" "version"}},
+        platform: 'app'
+    }
+</script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/popup-select-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/notice-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/big-member/js/buyer_project_news.js?v={{Msg "seo" "version"}}'></script>
+</body>
+</html>

+ 3 - 3
src/jfw/modules/app/src/web/templates/big-member/page_unit_portrayal.html

@@ -80,9 +80,9 @@
                 <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
             </div>
             <!-- 采购单位通讯录 -->
-            <div v-if="getStatus">
+            <div v-if="getStatus" style="margin-top: .24rem;">
               <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
-                <p class="example-title">采购单位通讯录</p>
+                <p class="example-title win-bid-title">采购单位通讯录</p>
                 <buyer-example :status="bigStatus" :power="power" type="item_1" imgurl='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/image/buyer/01.png'></buyer-example>
               </div>
             </div>
@@ -144,7 +144,7 @@
                     </div>
                     <div v-show="dt.isNext">
                         <div class="more">
-                            <span @click.stop="getNewMsg">查看更多</span>
+                            <span @click.stop="goProjectPage">查看更多</span>
                         </div>
                     </div>
                 </div>

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

@@ -0,0 +1,60 @@
+<!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" id="descri">
+          <van-list
+            :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.url)">
+                  <span class="trangle"></span>
+                  <p class="p1">{item.title}</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>

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

@@ -0,0 +1,69 @@
+<!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="!$.isEmptyObject(lastData)">
+            <h5>重要提醒</h5>
+            <div class="h-conts" @click="msgClick(lastData.url,lastData.isRead,lastData.id,lastData.msg_type)">
+              <div class="p1">
+                <span class="spa-tit">{lastData.title}</span>
+                <span class="spa flex" @click.stop="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}</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>
+  <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/utils.js?v={{Msg "seo" "version"}}'></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>

+ 3 - 3
src/jfw/modules/app/src/web/templates/vipsubscribe/commonRules.html

@@ -129,7 +129,7 @@
         <div class="grid-content">
           <div class="g-c-list">
             <span class="rights-icon r-icon-22"></span>
-            <span>中标信息统计</span>
+            <span>中标/采购信息统计</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-23"></span>
@@ -141,7 +141,7 @@
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-5"></span>
-            <span>月度中标金额统计</span>
+            <span>月度中标/采购规模统计</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-6"></span>
@@ -153,7 +153,7 @@
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-2"></span>
-            <span>重点客户分析</span>
+            <span>重点客户/或企业代理机构</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-3"></span>

+ 16 - 1
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_purchase.html

@@ -811,9 +811,24 @@
       mounted () {
         this.init(this.$data)
         this.restoreState()
-        this.addBackTip()
+        this.getBuyInfo()
       },
       methods: {
+        // 获取已购买信息
+        getBuyInfo: function () {
+          var _this = this
+          $.ajax({
+            url: '/publicapply/free/subscribe',
+            type: 'POST',
+            success: function (res) {
+              if (res && res.error_code === 0) {
+                if (res.data && !res.data.provincenum) {
+                  _this.addBackTip()
+                }
+              }
+            }
+          })
+        },
         toBuyAreaPack: function () {
           this.dialog.backTip = false
           this.saveState()

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

@@ -467,6 +467,9 @@
         </div>
     </div>
 </div>
+
+<!-- 底部导航 -->
+{{include "/weixin/tabbar.html"}}
 <div class="vip_report_tip">
     <div class="weui-mask weui-animate-fade-in"></div>
     <div class="weui-dialog weui-animate-fade-in">

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

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

+ 12 - 0
src/jfw/modules/subscribepay/src/entity/areaPack.go

@@ -2,6 +2,7 @@ package entity
 
 import (
 	"encoding/json"
+	"fmt"
 	"log"
 	qutil "qfw/util"
 	"time"
@@ -169,6 +170,17 @@ func (this *areaPackPrice) PayCallBack(param *CallBackParam) bool {
 				log.Printf("用户%s更新省份订阅包用户状态出错:%v", userId, areaPack)
 				return false
 			}
+			//卡卷使用
+			userLotteryId := qutil.ObjToString((*orderData)["d_relation_id"])
+			order_code := qutil.ObjToString((*orderData)["order_code"])
+			if userLotteryId != "" {
+				go func(userId, userLotteryId, order_code string) {
+					phone, name := util.GetMyPhoneAndName(userId)
+					if !util.UpdateCouponState(userId, userLotteryId, name, phone, order_code, "省份订阅包", "0", 1, 0) {
+						log.Println(fmt.Sprintf("单号%s-消费失败-卡卷%s", order_code, userLotteryId))
+					}
+				}(userId, userLotteryId, order_code)
+			}
 			return true
 		} else {
 			return true

+ 8 - 6
src/jfw/modules/subscribepay/src/service/areaPack.go

@@ -80,15 +80,15 @@ func (this *AreaPack) CreateOrder() {
 				full_price, reduce_price := 0, 0
 				var discount float64
 				full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, products)
-				if discount == 100 { //满减
-					if full_price <= totalfee {
+				if full_price <= totalfee {
+					if discount == 100 { //满减
 						totalfee = totalfee - reduce_price
 						discount_price = reduce_price
+					} else { //满折
+						disCount_int := int(math.Ceil(discount * 100))
+						discount_price = totalfee - totalfee*disCount_int/1000
+						totalfee = totalfee * disCount_int / 1000
 					}
-				} else { //满折
-					disCount_int := int(math.Ceil(discount * 100))
-					discount_price = totalfee - totalfee*disCount_int/1000
-					totalfee = totalfee * disCount_int / 1000
 				}
 			}
 		}
@@ -144,6 +144,8 @@ func (this *AreaPack) CreateOrder() {
 				}
 				now := time.Now()
 				//校验是否超过三年
+				log.Println(time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 59, now.Location()).
+					AddDate(3, 0, 0).Before(endTime))
 				if time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 59, now.Location()).
 					AddDate(3, 0, 0).Before(endTime) && !isgive {
 					return nil, fmt.Errorf("订阅周期超过三年")

+ 7 - 7
src/jfw/modules/subscribepay/src/service/dataExportPay.go

@@ -156,16 +156,16 @@ func (p *DataExportPay) CreateOrder() {
 		discount_price := 0
 		if lotteryId != "" {
 			full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, config.CouponConfig.Products["数据导出"])
-			if discount == 100 {
-				if full_price <= order_money {
+			if full_price <= order_money {
+				if discount == 100 {
 					order_money = order_money - reduce_price
 					discount_price = reduce_price
+				} else {
+					//折扣
+					disCount_int := int(math.Ceil(discount * 100))
+					discount_price = order_money - order_money*disCount_int/1000
+					order_money = order_money * disCount_int / 1000
 				}
-			} else {
-				//折扣
-				disCount_int := int(math.Ceil(discount * 100))
-				discount_price = order_money - order_money*disCount_int/1000
-				order_money = order_money * disCount_int / 1000
 			}
 		}
 		log.Println(userLotteryId, "--discount_price:", discount_price)

+ 10 - 8
src/jfw/modules/subscribepay/src/service/dataexportPack.go

@@ -130,18 +130,20 @@ func (this *DataExportPack) CreateOrder() {
 			}
 			var fullPrice, reducePrice int
 			fullPrice, reducePrice, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, products)
-			if discount == 100 {
-				if fullPrice <= orderMoney {
+			if fullPrice <= orderMoney {
+				if discount == 100 {
+
 					orderMoney = orderMoney - reducePrice
 					discountPrice = reducePrice
+
+				} else {
+					//折扣
+					disCount_int := int(math.Ceil(discount * 100))
+					discountPrice = orderMoney - orderMoney*disCount_int/1000
+					orderMoney = orderMoney * disCount_int / 1000
 				}
-			} else {
-				//折扣
-				disCount_int := int(math.Ceil(discount * 100))
-				discountPrice = orderMoney - orderMoney*disCount_int/1000
-				orderMoney = orderMoney * disCount_int / 1000
+				log.Printf("用户%s 购买数据流量包 使用卡券:%s 折扣金额:%d", userId, userLotteryId, discountPrice)
 			}
-			log.Printf("用户%s 购买数据流量包 使用卡券:%s 折扣金额:%d", userId, userLotteryId, discountPrice)
 		}
 		//赠品相关
 		useProduct, _ = strconv.Atoi(config.CouponConfig.Products[packId])

+ 7 - 7
src/jfw/modules/subscribepay/src/service/integral.go

@@ -84,16 +84,16 @@ func (b *Integral) CreateOrder() {
 		if lotteryId != "" {
 			var discount float64
 			full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, config.CouponConfig.Products["剑鱼币"])
-			if discount == 100 {
-				if full_price <= order_money {
+			if full_price <= order_money {
+				if discount == 100 {
 					order_money = order_money - reduce_price
 					discount_price = reduce_price
+				} else {
+					//折扣
+					disCount_int := int(math.Ceil(discount * 100))
+					discount_price = order_money - order_money*disCount_int/1000
+					order_money = order_money * disCount_int / 1000
 				}
-			} else {
-				//折扣
-				disCount_int := int(math.Ceil(discount * 100))
-				discount_price = order_money - order_money*disCount_int/1000
-				order_money = order_money * disCount_int / 1000
 			}
 		}
 		log.Println(userLotteryId, "--discount_price:", discount_price)

+ 7 - 7
src/jfw/modules/subscribepay/src/service/vipSubscribeChange.go

@@ -235,16 +235,16 @@ func (this *SubscribeChange) Upgrade() {
 		var discount float64
 		if lotteryId != "" {
 			full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, config.CouponConfig.Products["超级订阅"])
-			if discount == 100 {
-				if reduce_price > 0 && full_price <= final_price {
+			if reduce_price > 0 && full_price <= final_price {
+				if discount == 100 {
 					final_price = final_price - reduce_price
 					discount_price = reduce_price
+				} else {
+					//折扣
+					disCount_int := int(math.Ceil(discount * 100))
+					discount_price = final_price - final_price*disCount_int/1000
+					final_price = final_price * disCount_int / 1000
 				}
-			} else {
-				//折扣
-				disCount_int := int(math.Ceil(discount * 100))
-				discount_price = final_price - final_price*disCount_int/1000
-				final_price = final_price * disCount_int / 1000
 			}
 		}
 		//测试打折

+ 13 - 12
src/jfw/modules/subscribepay/src/service/vipSubscribePay.go

@@ -178,15 +178,16 @@ func (this *SubVipPayOrder) CreateOrder() {
 			full_price, reduce_price := 0, 0
 			var discount float64
 			full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, products)
-			if discount == 100 { //满减
-				if full_price <= totalfee {
+			if full_price <= totalfee {
+				if discount == 100 { //满减
 					totalfee = totalfee - reduce_price
 					discount_price = reduce_price
+
+				} else { //满折
+					disCount_int := int(math.Ceil(discount * 100))
+					discount_price = totalfee - totalfee*disCount_int/1000
+					totalfee = totalfee * disCount_int / 1000
 				}
-			} else { //满折
-				disCount_int := int(math.Ceil(discount * 100))
-				discount_price = totalfee - totalfee*disCount_int/1000
-				totalfee = totalfee * disCount_int / 1000
 			}
 		}
 		//赠品相关
@@ -392,15 +393,15 @@ func (this *SubVipPayOrder) Renew() {
 				products = strconv.Itoa(useProduct)
 			}
 			full_price, reduce_price, discount, userLotteryId = util.GetCouponInfo(userId, lotteryId, products)
-			if discount == 100 { //满减
-				if full_price <= totalfee {
+			if full_price <= totalfee {
+				if discount == 100 { //满减
 					totalfee = totalfee - reduce_price
 					discount_price = reduce_price
+				} else { //满折
+					disCount_int := int(math.Ceil(discount * 100))
+					discount_price = totalfee - totalfee*disCount_int/1000
+					totalfee = totalfee * disCount_int / 1000
 				}
-			} else { //满折
-				disCount_int := int(math.Ceil(discount * 100))
-				discount_price = totalfee - totalfee*disCount_int/1000
-				totalfee = totalfee * disCount_int / 1000
 			}
 		}
 		filterStr, _ := json.Marshal(filter)

+ 5 - 5
src/web/staticres/big-member/css/unit_portrayal.css

@@ -129,7 +129,7 @@
 }
 .d_title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -176,7 +176,7 @@
     color: #2ABED1;
     font-size: .24rem;
     border-radius: 4px;
-    font-weight: bold;
+    /* font-weight: bold; */
 }
 .i_time{
     font-size: .2rem;
@@ -345,7 +345,7 @@
 }
 .chart_title,.rank_title,.distribute_title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -358,7 +358,7 @@
 }
 .client-title,.agency-title{
     padding: .32rem .32rem .12rem;
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .36rem;
     line-height: .52rem;
     color: #171826;
@@ -398,7 +398,7 @@
     text-align: center;
 }
 .client .c-name{
-    font-weight: bold;
+    /* font-weight: bold; */
     font-size: .3rem;
     color: #171826;
 }

+ 34 - 20
src/web/staticres/big-member/js/unit_portrayal.js

@@ -314,14 +314,24 @@ var vNode = {
                 }
             })
         },
+        // 跳转招标动态新页面
+        goProjectPage: function () {
+          if (this.power.indexOf(5) == -1) {
+            this.openDialog()
+            return
+          } else {
+            location.href = '/big/wx/page/free_buyer_project_news?entName=' + decodeURIComponent(utils.getParam('entName'))
+          }
+        },
         // 获取中标动态数据
         getNewMsg: function(){
           var that = this;
           var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
           var data = {
               buyer: decodeURIComponent(utils.getParam('entName')),
-              count: that.dt.pageCount,
-              pageSign: that.dt.isMore
+              // count: that.dt.pageCount,
+              // pageSign: that.dt.isMore,
+              pageNum: 1
           }
           $.ajax({
             type:'POST',
@@ -337,25 +347,29 @@ var vNode = {
                         v.firsttime = new Date(Number(v.firsttime + '000')).pattern('yyyy/MM/dd');
                         v.bidamount = v.bidamount ? utils.moneyUnit(v.bidamount) : ''
                     })
-                    if (!that.dt.isMore) {
-                        that.dt.list = []
-                        that.dt.isMore = 'more'
-                        if(res.data.count <= 3) {
-                            that.dt.isNext = false
-                        }
-                    } else if (that.dt.isMore === 'more') {
-                        if (that.power.indexOf(5) == -1) {
-                          that.openDialog()
-                          return
-                        }
-                        that.dt.isMore = 'max'
-                        if(res.data.count <= 23) {
-                            that.dt.isNext = false
-                        }
-                    } else if (that.dt.isMore === 'max') {
-                        that.dt.isNext = false
+                    if (res.data.count <= 10) {
+                      that.dt.isNext = false
                     }
-                    that.dt.list = that.dt.list.concat(res.data.list)
+                    that.dt.list = res.data.list
+                    // if (!that.dt.isMore) {
+                    //     that.dt.list = []
+                    //     that.dt.isMore = 'more'
+                    //     if(res.data.count <= 3) {
+                    //         that.dt.isNext = false
+                    //     }
+                    // } else if (that.dt.isMore === 'more') {
+                    //     if (that.power.indexOf(5) == -1) {
+                    //       that.openDialog()
+                    //       return
+                    //     }
+                    //     that.dt.isMore = 'max'
+                    //     if(res.data.count <= 23) {
+                    //         that.dt.isNext = false
+                    //     }
+                    // } else if (that.dt.isMore === 'max') {
+                    //     that.dt.isNext = false
+                    // }
+                    // that.dt.list = that.dt.list.concat(res.data.list)
                   }
                 }
               } else {

+ 48 - 13
src/web/staticres/common-module/area-pack/js/buy.js

@@ -17,7 +17,8 @@ var vm = new Vue({
         ppend: 0,
         areanum: 0, // 可调整地区次数
         provincenum: 0, // 已购买省份数量
-        area: {}
+        area: {},
+        simulatedAmount: false, // 模拟金额(购买时候进入,省份数量不足购买条件,默认展示1个月价格)
       },
       // 选择的省份数量
       areaInfo: '', // 空字符串或者null表示未选择省份,空对象表示全国/provinceMaxCount
@@ -152,12 +153,16 @@ var vm = new Vue({
       }
     },
     upgradeAreaText: function () {
-      return this.upgradeAreaCount + '个省'
+      if (this.upgradeAreaCount === -1) {
+        return '全国'
+      } else {
+        return this.upgradeAreaCount + '个省'
+      }
     },
-    // 升级数量 = 选中数量 - 已购买数量
+    // 升级数量 = 选中数量 - 已购买数量 - 免费数量
     upgradeAreaCount: function () {
       var alreadyBuyCount = this.getAlreadyBuyCount()
-      return this.selectAreaCount - alreadyBuyCount
+      return this.selectAreaCount - alreadyBuyCount - this.priceInfo.provinceFreeCount
     },
     // 选中的规格卡片info
     selectedSpecItem: function () {
@@ -247,7 +252,10 @@ var vm = new Vue({
     getUrlArea: function () {
       var area = utils.getParam('area')
       if (area) {
-        this.areaInfo = JSON.parse(decodeURIComponent(area))
+        var areaInfo = JSON.parse(decodeURIComponent(area))
+        if (!Array.isArray(areaInfo)) {
+          this.areaInfo = areaInfo
+        }
       }
     },
     getBuyType: function () {
@@ -463,6 +471,16 @@ var vm = new Vue({
     sortPrice: function () {
       var priceInfoArr = []
       var buyAreaCount = this.buyAreaCount
+
+      if (this.buyType === 'buy') {
+        if (buyAreaCount <= 0) {
+          buyAreaCount = 1
+          this.alreadyBuyInfo.simulatedAmount = true
+        } else {
+          this.alreadyBuyInfo.simulatedAmount = false
+        }
+      }
+
       this.specList.forEach(function (spec) {
         var priceInfo = this.commonGetPrice(buyAreaCount, spec.cycleType)
         spec.price = priceInfo.price
@@ -516,11 +534,12 @@ var vm = new Vue({
     },
     checkSubmitStatus: function (checkStatus) {
       this.bottomConf.checkboxStatus = checkStatus
-      return checkStatus && this.validatorPhonePass && this.bottomConf.initPrice
+      return checkStatus && this.validatorPhonePass && this.bottomConf.initPrice && !this.alreadyBuyInfo.simulatedAmount
     },
     // 保证mounted之后执行
     checkConfirmButtonDisabled: function () {
-      this.$refs.couponRef.submitStatus = !this.bottomConf.checkboxStatus
+      var status = this.bottomConf.checkboxStatus && this.validatorPhonePass && this.bottomConf.initPrice && !this.alreadyBuyInfo.simulatedAmount
+      this.$refs.couponRef.submitStatus = !status
     },
     // 调用此方法,即可检测当前页面表单是否满足条件(可计算出提交按钮是否可用)
     checkStatus: function () {
@@ -563,13 +582,29 @@ var vm = new Vue({
         data: data,
         success: function (res) {
           loading && loading.clear()
-          if (res.error_code === 0 && res.data) {
-            if (utils.isWeiXinBrowser) {
-              history.replaceState({}, '', '/weixin/common/areaPack/orderDetail?order_code=' + res.data.orderCode);
-              location.href = '/weixin/pay/checkout_areaPack?orderCode=' + res.data.orderCode
+          if (res.error_code === 0) {
+            if (res.data) {
+              if (utils.isWeiXinBrowser) {
+                history.replaceState({}, '', '/weixin/common/areaPack/orderDetail?order_code=' + res.data.orderCode);
+                location.href = '/weixin/pay/checkout_areaPack?orderCode=' + res.data.orderCode
+              } else {
+                history.replaceState({}, '', '/jyapp/common/areaPack/orderDetail?order_code=' + res.data.orderCode);
+                location.href = "/jyapp/pay/checkout_areaPack?orderCode=" + res.data.orderCode + '&from=' + _this.buyType
+              }
+            } else {
+              _this.showToast(res.error_msg)
+            }
+          } else {
+            if (res.error_msg && res.error_msg.indexOf('超过') !== -1) {
+              var buyInfo = _this.alreadyBuyInfo
+              // 获取剩余周期
+              var lastCycle = getDateSub(buyInfo.ppstart, buyInfo.ppend)
+              var lastArr = []
+              if (lastCycle[0]) lastArr.push(lastCycle[0] + '年')
+              if (lastCycle[1]) lastArr.push(lastCycle[1] + '个月')
+              _this.showToast(`最长周期不可超过3年\n剩余周期:${lastArr.join('')}`)
             } else {
-              history.replaceState({}, '', '/jyapp/common/areaPack/orderDetail?order_code=' + res.data.orderCode);
-              location.href = "/jyapp/pay/checkout_areaPack?orderCode=" + res.data.orderCode + '&from=' + _this.buyType
+              _this.showToast(res.error_msg)
             }
           }
         },

+ 502 - 0
src/web/staticres/common-module/big-member/js/buyer_project_news.js

@@ -0,0 +1,502 @@
+var matchTypeListForComputed = [
+    {
+        label: '标题搜索',
+        value: 'title'
+    },
+    {
+        label: '正文搜索',
+        value: 'content'
+    },
+    {
+        label: '中标项目/标的物',
+        value: 'purchasing'
+    },
+    {
+        label: '采购单位',
+        value: 'buyer'
+    },
+    {
+        label: '招标代理机构',
+        value: 'agency'
+    },
+    {
+        label: '附件',
+        value: 'file'
+    }
+]
+try {
+    if (is_weixin()) {
+        matchTypeListForComputed.pop()
+    }
+} catch (e) {}
+var vConfig = {
+    delimiters: ['${', '}'],
+    el: '#ent-project-news',
+    components: {
+        popupSelectComponent: popupSelectComponent,
+        areaComponent: areaComponent,
+        noticeComponent: noticeComponent,
+    },
+    data: {
+        platform: pageInfo.platform,
+        sessStorageKey: '$data-ent_project_news',
+        // 企业信息
+        entInfo: {
+            eid: '', // 企业id
+            name: '',
+            follow: 0,
+            followSearchFinish: false,
+            entExist: true,
+            buyerName: ''
+        },
+        searchInfo: {
+            content: ''
+        },
+        searchFilters: {
+            matchType: ['title', 'content'],
+            area: [],
+            infoType: [],
+            pushTime: ['5year'],
+        },
+        listState: {
+            refreshing: false,
+            loaded: false,
+            loading: false,
+            finished: false,
+            pageNum: 1,
+            pageSize: 10,
+            count: 0,
+            offset: 50,
+            scrollTop: 0,
+            list: []
+        },
+        matchTypeList: matchTypeListForComputed,
+        publishTimeList: [
+            {
+                label: '最近7天',
+                value: '7day'
+            },
+            {
+                label: '最新30天',
+                value: '30day'
+            },
+            {
+                label: '1年内',
+                value: '1year'
+            },
+            {
+                label: '3年内',
+                value: '3year'
+            },
+            {
+                label: '5年内',
+                value: '5year'
+            }
+        ],
+        filterInitData: {
+            areaArr: [],
+            infoType: [],
+            timeRange: [],
+        },
+        reqSign: 'bigmember'
+    },
+    computed: {
+        projectNewUrl: function () {
+            var urlMap = {
+                bigmember: '/bigmember/portrait/winner/getNewMsg', // 大会员
+                svip: '/bigmember/portrait/subVipPortrait/winnerNewMsg' // 超级订阅
+            }
+            var url = urlMap.bigmember
+            if (urlMap[this.reqSign]) {
+                url = urlMap[this.reqSign]
+            }
+            return url
+        },
+        filterInfoUrl: function () {
+            var urlMap = {
+                bigmember: '/bigmember/portrait/winner/getNewMsgSelects', // 大会员
+                svip: '/bigmember/portrait/subVipPortrait/getNewMsgSelects' // 超级订阅
+            }
+            var url = urlMap.bigmember
+            if (urlMap[this.reqSign]) {
+                url = urlMap[this.reqSign]
+            }
+            return url
+        },
+    },
+    created: function () {
+        // var eid = utils.getParam('eid')
+        // var reqSign = utils.getParam('reqSign')
+        // if (eid) {
+        //     this.entInfo.eid = decodeURIComponent(eid)
+        // }
+        // if (reqSign) {
+        //     this.reqSign = reqSign
+        // }
+        var entName = decodeURIComponent(utils.getParam('entName'))
+        if (entName) {
+          this.entInfo.buyerName = entName
+        }
+    },
+    mounted: function () {
+        var recover = this.recover()
+        if (!recover) {
+            // this.getFilterInfo()
+            this.onLoad()
+        } else {
+            this.initSelector(this.filterInitData)
+        }
+    },
+    methods: {
+        showToast: function (message) {
+            this.$toast({
+                duration: 1500,
+                forbidClick: true,
+                message: message,
+            })
+        },
+        showLoading: function () {
+            var loading = this.$toast.loading({
+                duration: 0,
+                forbidClick: true,
+                message: 'loading...',
+            })
+            return loading
+        },
+        // getFilterInfo: function () {
+        //     var _this = this
+        //     var loading = this.showLoading()
+        //     $.ajax({
+        //         type: 'POST',
+        //         url: this.filterInfoUrl,
+        //         data: {
+        //             entId: _this.entInfo.eid
+        //         },
+        //         success: function (res) {
+        //             if (res.error_code == 0) {
+        //                 loading.clear()
+        //                 _this.filterInitData = res.data
+        //                 _this.initSelector(res.data)
+        //             } else {
+        //                 _this.showToast(res.error_msg)
+        //             }
+        //         },
+        //         error: function (error) {
+        //             loading.clear()
+        //             console.log(error)
+        //         }
+        //     })
+        // },
+        onLoad: function () {
+            var _this = this
+            var t = this.listState
+            t.loading = true
+            var storageSet = JSON.parse(sessionStorage.getItem('buyer_high_set'))
+            var url = '/bigmember/portrait/buyer/getNewMsg'
+            var data = {
+              buyer: _this.entInfo.buyerName,
+              // match: _this.searchInfo.content,
+              // matchType: _this.searchFilters.matchType.join(','),
+              // area: _this.searchFilters.area.join(','),
+              // infoType: _this.searchFilters.infoType.join(','),
+              // pushTime: _this.searchFilters.pushTime.join(','),
+              pageNum: _this.listState.pageNum,
+              pageSize: _this.listState.pageSize,
+            }
+            $.ajax({
+                type: 'POST',
+                url: url,
+                data: storageSet ? Object.assign(data, storageSet) : data,
+                success: function (res) {
+                    if (res.data) {
+                        // 判断是否为刷新
+                        if (t.refreshing) {
+                            t.list = []
+                            t.refreshing = false
+                        }
+            
+                        // 列表赋值
+                        var list = res.data.list
+                        var count = res.data.count
+                        if (Array.isArray(list)) {
+                            _this.preSortList(list)
+                            if (_this.listState.pageNum === 1) {
+                                t.list = []
+                            }
+                            t.list = t.list.concat(list)
+                        } else {
+                            // list不为数组,则直接finish
+                            t.loaded = true
+                            t.loading = false
+                            t.finished = true
+                        }
+                        if (count && count != -1) {
+                            _this.listState.count = count
+                        }
+            
+                        // 加载状态结束
+                        t.loaded = true
+                        t.loading = false
+            
+                        // 翻页
+                        var hasNextPage = _this.listState.pageNum * _this.listState.pageSize < _this.listState.count
+                        if (hasNextPage) {
+                            t.pageNum++
+                        } else {
+                            t.finished = true
+                        }
+                    } else {
+                        t.loaded = true
+                        t.loading = false
+                        t.finished = true
+                        _this.$toast('请求失败')
+                    }
+                },
+                error: function (error) {
+                    console.log(error)
+                }
+            })
+        },
+        onRefresh: function () {
+            // 重置数据
+            this.listState.pageNum = 1
+            // 解除加载完成状态
+            this.listState.finished = false
+            // 重新加载数据
+            // 将 loading 设置为 true,表示处于加载状态
+            this.listState.loading = true
+            // 请求数据
+            this.onLoad()
+        },
+        resetState: function () {
+            var rState = {
+                refreshing: false,
+                loaded: false,
+                loading: false,
+                finished: false,
+                pageNum: 1,
+                pageSize: 10,
+                scrollTop: 0,
+                list: []
+            }
+            Object.assign(this.listState, rState)
+        },
+        doSearch: function () {
+            this.resetState()
+            this.onRefresh()
+            this.closeDropDownMenu(-1)
+        },
+        preSortList: function (list) {
+            return list
+        },
+        changeFollowState: function () {
+            return this.changeFollowStateRequest()
+            var _this = this
+            if (this.entInfo.follow) {
+                this.$dialog.confirm({
+                    title: '提示信息',
+                    message: '取消对“' + _this.entInfo.name + '”的关注?',
+                    confirmButtonColor: '#2cb7ca'
+                }).then(function () {
+                    _this.changeFollowStateRequest()
+                }).catch(function () {
+                    console.log('取消操作')
+                })
+            } else {
+                this.changeFollowStateRequest()
+            }
+        },
+        // 修改企业关注状态
+        changeFollowStateRequest: function () {
+            var _this = this
+            var loading = this.showLoading()
+            var urls = {
+                addFollow: '/bigmember/follow/ent/addFollow',
+                delFollow: '/bigmember/follow/ent/delFollow'
+            }
+            var url = !!this.entInfo.follow ? urls.delFollow : urls.addFollow
+            $.ajax({
+                type: 'POST',
+                url: url,
+                data: {
+                    entId: _this.entInfo.eid
+                },
+                success: function (res) {
+                    if (res.error_code == 0) {
+                        // 清除上个页面缓存
+                        sessionStorage.removeItem('$data-ent_portrait')
+                        loading.clear()
+                        if (res.data && res.data == 'success') {
+                            _this.entInfo.follow = !_this.entInfo.follow
+                        }
+                    } else {
+                        _this.showToast(res.error_msg)
+                    }
+                },
+                error: function (error) {
+                    loading.clear()
+                    console.log(error)
+                }
+            })
+        },
+        initSelector: function (data) {
+            // this.initMatchTypeSelector()
+            // this.initInfoTypeSelector(data.infoType)
+            // this.initProjectAreaSelector(data.areaArr)
+            // this.initPublishTimeSelector(data.timeRange)
+
+            // this.recoverFilterState()
+        },
+        initMatchTypeSelector: function () {
+            this.$refs.matchTypeSelector.setState(this.searchFilters.matchType)
+        },
+        initInfoTypeSelector: function (infoTypeList) {
+            if (!Array.isArray(infoTypeList)) return
+
+            var list = []
+            infoTypeSelectorMap.forEach(function (item) {
+                for (var key in item) {
+                    var arr = []
+                    item[key].forEach(function (t) {
+                        if (infoTypeList.indexOf(t) !== -1) {
+                            arr.push(t)
+                        }
+                    })
+                    if (arr.length) {
+                        list.push({
+                            [key]: arr
+                        })
+                    }
+                }
+            })
+
+            this.$refs.infoTypeSelector.getIndustryData(list)
+            this.$refs.infoTypeSelector.getbBtnClick()
+            this.$refs.infoTypeSelector.setStates()
+
+            this.$refs.infoTypeSelector.checkBoxAll()
+        },
+        initProjectAreaSelector: function (areaArr) {
+            if (!Array.isArray(areaArr)) return
+
+            if (areaArr.indexOf('全国') === -1) {
+                areaArr.unshift('全国')
+            }
+
+            var areaMap = this.$refs.projectAreaSelector.provinceListMap
+            var map = {}
+            for (var key in areaMap) {
+                var arr = []
+                areaMap[key].forEach(function (item) {
+                    if (areaArr.indexOf(item) !== -1) {
+                        arr.push(item)
+                    }
+                })
+                if (arr.length) {
+                    map[key] = arr
+                }
+            }
+            this.$refs.projectAreaSelector.arrangeListMap(map)
+        },
+        initPublishTimeSelector: function (timeRange) {
+            if (!Array.isArray(timeRange)) return
+            var arr = []
+            this.publishTimeList.forEach(function (item) {
+                if (timeRange.indexOf(item.value) !== -1) {
+                    arr.push(item)
+                }
+            })
+            this.publishTimeList = JSON.parse(JSON.stringify(arr))
+            this.$refs.publishTimeSelector.setSortedList(this.publishTimeList)
+        },
+        cancel: function (data) {
+            if (data.name === 'noticeItem') {
+                this.searchFilters.infoType = []
+                this.$refs.infoTypeSelector.setState()
+            } else if (data.name === 'areaItem') {
+                this.searchFilters.area = []
+            }
+        },
+        confirm: function (data) {
+            if (data.name === 'noticeItem') {
+                this.searchFilters.infoType = data.data
+            } else if (data.name === 'areaItem') {
+                this.searchFilters.area = data.data
+            }
+            this.doSearch()
+        },
+        closeDropDownMenu: function (index) {
+            if (index === 0) {
+                this.$refs.matchTypeMenu.toggle(false)
+            } else if (index === 1) {
+                this.$refs.infoTypeMenu.toggle(false)
+            } else if (index === 2) {
+                this.$refs.projectAreaMenu.toggle(false)
+            } else if (index === 3) {
+                this.$refs.publishTimeMenu.toggle(false)
+            } else if (index === -1) {
+                this.closeDropDownMenu(0)
+                this.closeDropDownMenu(1)
+                this.closeDropDownMenu(2)
+                this.closeDropDownMenu(3)
+            }
+        },
+        pConfirm: function (e, type) {
+            if (type === 'matchType') {
+                this.searchFilters.matchType = e.data
+            } else if (type === 'publishTime') {
+                this.searchFilters.pushTime = e.data
+            }
+            this.doSearch()
+        },
+        goToDetail: function (item) {
+            this.saveState()
+            var href = ''
+            if (this.platform === 'app') {
+                href = '/jyapp/article/content/' + item.id + '.html'
+            } else {
+                href = '/article/content/' + item.id + '.html'
+            }
+            location.href = href
+        },
+        recoverFilterState: function () {
+            if (this.searchFilters.infoType.length) {
+                this.$refs.infoTypeSelector.setState(this.searchFilters.infoType)
+            }
+            if (this.searchFilters.area.length) {
+                this.$refs.projectAreaSelector.setState(this.searchFilters.area)
+            } else {
+                this.$refs.projectAreaSelector.resetAll()
+            }
+            this.$refs.publishTimeSelector.setState(this.searchFilters.pushTime)
+        },
+        saveState: function () {
+            // 保存滚动高度
+            this.listState.scrollTop = parseInt(this.$refs.jList.scrollTop)
+            var $data = JSON.stringify(this.$data)
+            sessionStorage.setItem(this.sessStorageKey, $data)
+        },
+        recover: function () {
+            var _this = this
+            var excludeKey = ['sessStorageKey', 'matchTypeList', 'publishTimeList']
+            var $data = sessionStorage.getItem(this.sessStorageKey)
+            if ($data) {
+                $data = JSON.parse($data)
+                if (this.entInfo.eid !== $data.entInfo.eid) return
+                for (var key in $data) {
+                    if (excludeKey.indexOf(key) !== -1) {
+                        continue
+                    }
+                    this.$data[key] = $data[key]
+                }
+
+                this.$nextTick(function () {
+                    _this.$refs.jList.scrollTop = _this.listState.scrollTop
+                })
+                sessionStorage.removeItem(this.sessStorageKey)
+            }
+            return !!$data
+        },
+    }
+}
+var vm = new Vue(vConfig)

+ 1 - 1
src/web/staticres/common-module/big-member/js/high_set.js

@@ -370,7 +370,7 @@ var highSet = new Vue({
       this.conf.keywords = val.replace(/^\s\s*/,'')
     },
     onCancel: function (data) {
-      // console.log(data)
+      console.log(data)
       if (!data) {
         this.selectScopeList = ['purchasing']
         this.$refs.matchTypeSelector.setState(this.selectScopeList)

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

@@ -0,0 +1,244 @@
+.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 {
+    width: 1.12rem;
+    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;
+    justify-content: center;
+}
+
+.head-mesg .h-conts .p1 .spa-tit {
+    width: 4.8rem;
+}
+
+.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;
+    word-break: break-all;
+}
+.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: .16rem .24rem;
+    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;
+    word-break: break-all;
+}
+.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;
+}

BIN
src/web/staticres/common-module/messageCenter/image/dingyue@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/fenxi@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/fuwu@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/huodong@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/mesg.png


BIN
src/web/staticres/common-module/messageCenter/image/mesg_active.png


BIN
src/web/staticres/common-module/messageCenter/image/no-mesg.png


BIN
src/web/staticres/common-module/messageCenter/image/qiye@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/quanbu@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/xiangmu@2x.png


BIN
src/web/staticres/common-module/messageCenter/image/xitong@2x.png


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

@@ -0,0 +1,134 @@
+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() {
+    let wxType = getType()
+    if (!wxType) {
+      checkMsgCount(true, 0)
+    }
+    let indx = getQueryString('type')
+    let nums = getQueryString('num')
+    if (nums != 0) {
+      this.setRead(indx)
+    }
+    this.tit = this.imgSrcs[indx - 1].title
+    document.title = this.imgSrcs[indx - 1].title
+  },
+  mounted () {
+    iosBackRefresh()
+  },
+  updated() {
+    let el = document.getElementById('descri')
+    el.scrollTop = el.scrollHeight
+  },
+  methods: {
+    // 点击分类修改分类下的消息为已读
+    setRead(val) {
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/setReadStatus',
+        data: {
+          msgType: val
+        },
+        success:function (res) {
+          console.log(res)
+        }
+      })
+    },
+    // 消息详情
+    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) {
+              setTimeout(() => {
+                r.data.list.map(function (v) {
+                  _this.lists.unshift({
+                    id: v.id,
+                    msg_type: v.msg_type,
+                    title: v.title,
+                    content: v.content,
+                    createtime: v.createtime,
+                    link: v.link,
+                    url: v.url
+                  })
+                })
+              }, 200)
+            } 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) {
+      console.log(url)
+      let wxType = getType()
+      let appType = androidOrIOS()
+      if (wxType) {
+        if (url.weChatUrl) {
+          location.href = url.weChatUrl
+        } else {
+          return
+        }
+      } else {
+        if (appType == 'android') {
+          if (url.androidUrl) {
+            location.href = url.androidUrl
+          } else {
+            return
+          }
+        } else {
+          if (url.iosUrl) {
+            location.href = url.iosUrl
+          } else {
+            return
+          }
+        }
+      }
+    }
+  }
+})
+

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

@@ -0,0 +1,138 @@
+
+// 判断是否为微信浏览器
+function getType () {
+  var ua = window.navigator.userAgent.toLowerCase()
+  if(ua.match(/MicroMessenger/i) == 'micromessenger'){
+    return true
+  } else {
+    return false
+  }
+}
+
+// ios or android
+function androidOrIOS () {
+  var u = navigator.userAgent.toLowerCase()
+  var agent = null;
+  if (/iphone|ipod|ipad|ios/.test(u)) {
+    agent = 'ios'
+  } else if (/(Android)/i.test(u)) {
+    agent = 'android'
+  }
+  return agent
+}
+function isApp() {
+  return /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)
+}
+// android
+function androided() {
+  var u = navigator.userAgent
+  return u.indexOf("Chrome") > -1
+}
+
+function iosBackRefresh () {
+  var isPageHide = false;
+  window.addEventListener('pageshow', function () {
+      if (isPageHide) {
+          location.reload();
+      }
+  });
+  window.addEventListener('pagehide', function () {
+      isPageHide = true;
+  });
+}
+
+//获取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
+}

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

@@ -0,0 +1,137 @@
+var vm = new Vue({
+  el: '#mesged',
+  delimiters: ['{', '}'],
+  data: function () {
+    return {
+      isToggle: false,
+      isRow: false,
+      lastData: [],
+      msgList: [],
+      timer: null,
+      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()
+    let wxType = getType()
+    if (!wxType) {
+      checkMsgCount(true, 0)
+    }
+  },
+  mounted () {
+    iosBackRefresh()
+    keepQuest()
+  },
+  beforeDestroy() {
+    clearInterval(this.timer)
+  },
+  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
+          }
+        }
+      })
+    },
+    // 点击置顶消息为已读
+    topRead(ids) {
+      const _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success:function (res) {
+          console.log(res)
+          _this.msgData()
+        }
+      })
+    },
+    // 置顶消息跳转
+    msgClick(url, num, ids, type) {
+      console.log(url)
+      let wxType = getType()
+      let appType = androidOrIOS()
+      if (wxType) {
+        if (url.weChatUrl) {
+          if (!num) {
+            this.topRead(ids, type)
+          }
+          setTimeout(() => {
+            location.href = url.weChatUrl
+          }, 300)
+        } else {
+          return
+        }
+      } else {
+        if (appType == 'android') {
+          if (url.androidUrl) {
+            location.href = url.androidUrl
+            if (!num) {
+              this.topRead(ids)
+            }
+          } else {
+            return
+          }
+        } else {
+          if (url.iosUrl) {
+            if (!num) {
+              this.topRead(ids)
+            }
+            setTimeout(() => {
+              location.href = url.iosUrl
+            }, 300)
+          } else {
+            return
+          }
+        }
+      }
+    },
+    // 置顶消息展开,收起
+    toggleClick() {
+      this.isToggle = !this.isToggle
+    },
+    // 列表消息跳转详情页
+    msgDetailed(type, num) {
+      let wxType = getType()
+      if (wxType) {
+          location.href = '/weixin/frontPage/messageCenter/sess/detail?type=' + type + '&num=' + num
+      } else {
+          location.href = '/jyapp/frontPage/messageCenter/sess/detail?type=' + type + '&num=' + num
+      }
+    }
+  }
+})
+

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

@@ -0,0 +1,235 @@
+
+[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;
+  word-break: break-all;
+}
+.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 p, .main-mesg .tabs-mesg .el-tabs .el-tabs__item:hover .msg-label p {
+  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 .is-tabs .el-tabs .el-tabs__content {
+  padding-bottom: 16px;
+}
+.main-mesg .tab-tips {
+  margin-top: 0;
+  padding: 0;
+  padding: 16px 20px 0 20px;
+}
+.main-mesg .tab-tips .r-lis {
+  padding-bottom: 16px;
+}
+.main-mesg .tab-tips:not(:last-child) .r-lis {
+  box-shadow: 0px -1px 0px 0px rgb(0 0 0 / 5%) inset;
+}
+.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;
+}

BIN
src/web/staticres/frontRouter/pc/mesgCenter/image/no-mesg.png


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

@@ -0,0 +1,109 @@
+
+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, type) {
+      const _this = this
+      $.ajax({
+        type:'GET',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success:function () {
+          _this.tabsData(_this.isTabs)
+          _this.tabsCount()
+          message.checkOpened()
+        }
+      })
+    },
+    linked(id, url, str, num, type) {
+      if (url) {
+        location.href = url
+      }
+      if (num == 1) {
+        if (url) {
+          this.readed(id, type)
+        }
+      }
+      if (num == 2) {
+        if (!str) {
+          this.readed(id, type)
+        }
+      }
+    }
+  }
+})
+
+

BIN
src/web/staticres/images/pc/dingyue@2x.png


BIN
src/web/staticres/images/pc/fenxi@2x.png


BIN
src/web/staticres/images/pc/fuwu@2x.png


BIN
src/web/staticres/images/pc/guan.png


BIN
src/web/staticres/images/pc/guan_active.png


BIN
src/web/staticres/images/pc/huodong@2x.png


BIN
src/web/staticres/images/pc/lines.png


BIN
src/web/staticres/images/pc/mesg.png


BIN
src/web/staticres/images/pc/mesg_active.png


BIN
src/web/staticres/images/pc/mesg_fff.png


BIN
src/web/staticres/images/pc/no-mesg.png


BIN
src/web/staticres/images/pc/qiye@2x.png


BIN
src/web/staticres/images/pc/quanbu@2x.png


BIN
src/web/staticres/images/pc/xiangmu@2x.png


BIN
src/web/staticres/images/pc/xitong@2x.png


BIN
src/web/staticres/images/tabbar/book.png


BIN
src/web/staticres/images/tabbar/book_active.png


BIN
src/web/staticres/images/tabbar/box.png


BIN
src/web/staticres/images/tabbar/box_active.png


BIN
src/web/staticres/images/tabbar/home.png


BIN
src/web/staticres/images/tabbar/home_active.png


BIN
src/web/staticres/images/tabbar/mesg.png


BIN
src/web/staticres/images/tabbar/mesg_active.png


BIN
src/web/staticres/images/tabbar/mine.png


BIN
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

@@ -335,6 +335,7 @@ function checkMenuForEnt () {
         }
     })
 }
+
 //查询用户信息,响应页面登录信息
 var logic = function(data,num){
 	if(data.result=="ok"){
@@ -419,6 +420,7 @@ var logic = function(data,num){
       checkMenuForEnt()
 			infoListCss();
 			commonMouseEvent();
+            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.init()
 			}catch(e){}
 		}else{
 			$("#login").html("<button class='loginBtn' data-toggle='modal' onclick='openLoginDig()'>登录</button>");

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

@@ -0,0 +1,177 @@
+// 点击置顶消息为已读
+function topRead(ids, type) {
+    $.ajax({
+      type:'POST',
+      url:'/jymessageCenter/markRead',
+      data: {
+        msgId: ids,
+        msgType: type
+      },
+      success:function (res) {
+        message.checkMessage()
+        message.checkOpened()
+      }
+    })
+  }
+// 消息悬浮窗列表跳转详情页
+function linked (ids, url, num, type) {
+    console.info(ids, url, num, type)
+    if (url) {
+        window.location.href = url
+    }
+    if (num == 0) {
+        topRead(ids, type)
+    }
+}
+function Message() {
+    this.isOpened = false
+    this.imgArrs = ['quanbu', 'huodong', 'fuwu', 'dingyue', 'xiangmu', 'qiye', 'fenxi', 'xitong']
+    this.messageInfoList = {}
+    
+    // 初始化
+    this.init = function () {
+        if (!loginflag) return
+        this.checkOpened()
+        this.checkMessage()
+        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 messageInfoList = this.messageInfoList
+        var lists = $.isEmptyObject(messageInfoList.list) ? false : messageInfoList.list
+
+        var lasts = $.isEmptyObject(messageInfoList.last) ? false : messageInfoList.last
+        var temp = ''
+        if (lasts) {
+            if (lasts.isRead == 0) {
+                temp += '<div id="firsted" class="m-li" onclick="linked(\''+lasts.id+'\',\''+lasts.link+'\',\''+lasts.isRead+'\',\''+lasts.msg_type+'\')"><div class="lis-cont"><img src="/images/pc/'+imgArrs[lasts.msg_type]+'@2x.png"><i class="dots"></i><div class="r-lis"><div class="title"><span>'+lasts.title+'</span><span>'+dateMatter(lasts.createtime)+'</span></div><p>'+lasts.content+'</p></div></div></div>'
+            } else {
+                temp += '<div id="firsted" class="m-li" onclick="linked(\''+lasts.id+'\',\''+lasts.link+'\',\''+lasts.isRead+'\',\''+lasts.msg_type+'\')"><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++) {
+                if (lists[i].isRead == 0) {
+                    temp += '<div class="m-li" onclick="linked(\''+lists[i].id+'\',\''+lists[i].link+'\',\''+lists[i].isRead+'\',\''+lists[i].msg_type+'\')"><div class="lis-cont"><img src="/images/pc/'+imgArrs[lists[i].msg_type]+'@2x.png"><i class="dots"></i><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>'
+                } else {
+                    temp += '<div class="m-li" onclick="linked(\''+lists[i].id+'\',\''+lists[i].link+'\',\''+lists[i].isRead+'\',\''+lists[i].msg_type+'\')"><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>'
+        $('#public-nav .iner .jynav li').find('.m-ul').html('')
+        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()
+}

+ 2 - 2
src/web/staticres/js/wxSupersearch.js

@@ -2739,12 +2739,12 @@ var SuperSearch = {
         window.location.href="/front/vipsubscribe/toSubVipSetPage"
       }else{
         sessionStorage.removeItem("keysetindexToHistory");
-        window.location.href="/swordfish/newhistorypush"
+        window.location.href="/swordfish/newhistorypush?msg=1"
       }
     })
     $(".tips_all .GetAll").click(function(){
       sessionStorage.removeItem("keysetindexToHistory");
-      window.location.href="/swordfish/newhistorypush"
+      window.location.href="/swordfish/newhistorypush?msg=1"
     })
     $(".home_todetails").click(function(){
       window.location.href="/front/vipsubscribe/introducePage"

+ 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标签中修改) */

+ 139 - 0
src/web/templates/big-member/wx/page_free_buyer_project_news.html

@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+<head>
+    <title>项目动态</title>
+
+    <!--引入公共资源头部-->
+    {{include "/big-member/wx/meta.html"}}
+
+    <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/collection/css/index.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/ent_project_news.css?v={{Msg "seo" "version"}}'>
+    <!--临时处理区域选择仅有一个时展示问题-->
+    <style>
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box {
+            display: none;
+        }
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box + .key-card-box .area-card-item:after {
+            content: "";
+            position: absolute;
+            right: 0;
+            bottom: 0;
+            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHHSURBVHgB7ZS/TsJQFMa/tkpIVEIMCRodIMQEZYGBB8An8AWMuOqgbm46uqFPIImzCS9gqrMDYhxYNAwODiQi/iMEe72nUkJJbe/FwuQ33Z57en49t+d+wL98VEovp1WMSUm9sgGm6grGIIKpDEVaj7zDFb1yYMFII+2QYGA47I+NDJjSbwuMsd3BuO/AtF4Ot6EVwFjead9XoAnjk0jL33J8A3JYrAuLueX5AhSF+QKUgf0ZSFZF7sGAsOg7Q198y6pkYEMDl/XKDrmHG2x9MYLz7BKS00FbXIOkyD0UhiO3nO1YFHuJeUQCk6i3O7huvPf2pDp0sion2FY8aq6rb584e6zb9oU7JKvisP1seMqctNeO4QnLlx943pctx3NK+62KYMVMwiySL9/zoi0pGEn1hNEd6/oiAZq8yMyEZoKtgRCF8e5uFBeY44UmyCmHhTiUil7UX7A2N+sJIzGGE0UG5gS15AUjGYoRV2VhP8Vb2OT/sNktLgKDohSruUzN1qGsVS0EA1iNhFB6enaHATXeXc4GJKvSGI5lrUpAPRg9mEcqYlVDiR/jh2JkLJgZEnEP4fpAg390jU/jlaYapbtc5nIw5xuaNAINUmtJBQAAAABJRU5ErkJggg==);
+            width: 14px;
+            height: 14px;
+            background-size: 100% 100%;
+        }
+        .select-area-box.j-container.hide-all .van-index-bar__sidebar + .key-card-box + .key-card-box .area-card-item {
+            position: relative;
+            background: #E8FAFD;
+            color: #2ABED1;
+        }
+    </style>
+</head>
+<body>
+    <div id="ent-project-news" class="j-container search-container" v-cloak>
+        <div class="search-header">
+            <div class="header-ent-name border-line-b clickable">
+                <span class="j-icon icon-company"></span>
+                <span class="ent-title">${ entInfo.buyerName }</span>
+                <!-- <div class="ent-follow">
+                    <span class="j-icon"
+                        :class="!!entInfo.follow ? 'icon-favorite' : 'icon-add-favorite'"
+                        @click="changeFollowState"
+                        v-if="entInfo.followSearchFinish && entInfo.entExist">
+                    </span>
+                    <van-loading v-if="!entInfo.followSearchFinish" size="24px"></van-loading>
+                </div> -->
+            </div>
+            <!-- <div class="search-input">
+                <van-search
+                    v-model.trim="searchInfo.content"
+                    @search="doSearch"
+                    maxlength="50"
+                    placeholder="输入关键词">
+                    <template #left-icon>
+                        <span class="j-icon base-icon icon-search"></span>
+                    </template>
+                </van-search>
+                <div class="action-text clickable" @click="doSearch">搜索</div>
+            </div>
+            <div class="search-filters">
+                <van-dropdown-menu :close-on-click-outside="false">
+                    <van-dropdown-item get-container="body" :lazy-render="false" title="搜索范围" ref="matchTypeMenu">
+                        <popup-select-component :data-list="matchTypeList" multiple show-all-button @confirm="pConfirm($event, 'matchType')" ref="matchTypeSelector"></popup-select-component>
+                    </van-dropdown-item>
+                    <van-dropdown-item get-container="body" :lazy-render="false" title="信息类型" class="collection" ref="infoTypeMenu">
+                        <notice-component class="collection" @cancel="cancel" @confirm="confirm" :selectnoticelist="searchFilters.infoType"  ref="infoTypeSelector"></notice-component>
+                    </van-dropdown-item>
+                    <van-dropdown-item get-container="body" :lazy-render="false" title="项目地区" ref="projectAreaMenu">
+                        <area-component :class="{'hide-all': filterInitData.areaArr.length == 2}" ref="projectAreaSelector" @cancel="cancel" @confirm="confirm"></area-component>
+                    </van-dropdown-item>
+                    <van-dropdown-item get-container="body" :lazy-render="false" title="发布时间" ref="publishTimeMenu">
+                        <popup-select-component ref="publishTimeSelector" button-type="button" :data-list="publishTimeList" @confirm="pConfirm($event, 'publishTime')"></popup-select-component>
+                    </van-dropdown-item>
+                </van-dropdown-menu>
+            </div> -->
+        </div>
+        <div class="j-main" ref="jList">
+            <div class="list-wrapper">
+                <van-list
+                    v-model="listState.loading"
+                    :finished="listState.finished"
+                    :immediate-check="false"
+                    finished-text=""
+                    @load="onLoad"
+                    class="project-info-list">
+                    <div
+                        v-for="(item, index) in listState.list"
+                        class="project-info-item bg-white border-line-b clickable"
+                        :immediate-check="false"
+                        @click="goToDetail(item)"
+                        :key="item.id">
+                        <div class="project-name">${ item.title }</div>
+                        <div class="project-info">
+                            <span class="tags">
+                                <span class="tag tag-success" v-if="item.area">${item.area}</span>
+                                <span class="tag tag-success" v-if="item.bidstatus">${item.bidstatus}</span>
+                                <span class="tag tag-success" v-if="item.bidamount">${utils.moneyUnit(item.bidamount)}</span>
+                            </span>
+                            <span class="project-time">
+                                ${item.firsttime ? new Date(item.firsttime * 1000).pattern('yyyy-MM-dd') : '-'}
+                            </span>
+                        </div>
+                    </div>
+                </van-list>
+                <div class="empty-container" v-show="listState.list.length === 0 && listState.loaded && !listState.loading">
+                    <div class="empty-content-position">
+                        <div class="image">
+                            <img src="/big-member/image/img-empty.png">
+                        </div>
+                        <div class="empty-main tip-text">暂无数据</div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/big-member/css/ent_project_news.css?v={{Msg "seo" "version"}}'>
+
+    <!--S-当前页面的资源-->
+    <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/zepto/1.2.0/zepto.min.js></script>
+    <script>
+        var pageInfo = {
+            version: {{Msg "seo" "version"}},
+            platform: 'wx'
+        }
+    </script>
+    {{include "/big-member/wx/commonjs.html"}}
+    <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/popup-select-mobile.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/notice-mobile.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/area-mobile.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/big-member/js/buyer_project_news.js?v={{Msg "seo" "version"}}'></script>
+</body>
+</html>

+ 3 - 3
src/web/templates/big-member/wx/page_unit_portrayal.html

@@ -93,10 +93,10 @@
               <p class="buyer-type">采购单位类型:${statistics.buyerClass || '--'}</p>
           </div>
           <!-- 采购单位通讯录 -->
-          <div>
+          <div style="margin-top: .24rem;">
             <div v-if="getStatus" key="txl">
               <div class="vip_component" style="height:10.8rem;background:url('/common-module/collection/image/buyer/01-bg.png') no-repeat;background-size:100% 100%">
-                <p class="example-title">采购单位通讯录</p>
+                <p class="example-title win-bid-title">采购单位通讯录</p>
                 <buyer-example data-cl-event="c_wx_free_buttonclick" :status="bigStatus" :power="power" type="item_1" imgurl='{{Msg "seo" "cdn"}}/common-module/collection/image/buyer/01.png'></buyer-example>
               </div>
             </div>
@@ -158,7 +158,7 @@
                   </div>
                   <div v-show="dt.isNext">
                       <div class="more">
-                          <span @click.stop="getNewMsg">查看更多</span>
+                          <span @click.stop="goProjectPage">查看更多</span>
                       </div>
                   </div>
               </div>

+ 3 - 3
src/web/templates/common/commonRules.html

@@ -129,7 +129,7 @@
         <div class="grid-content">
           <div class="g-c-list">
             <span class="rights-icon r-icon-22"></span>
-            <span>中标信息统计</span>
+            <span>中标/采购信息统计</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-23"></span>
@@ -141,7 +141,7 @@
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-5"></span>
-            <span>月度中标金额统计</span>
+            <span>月度中标/采购规模统计</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-6"></span>
@@ -153,7 +153,7 @@
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-2"></span>
-            <span>重点客户分析</span>
+            <span>重点客户/或企业代理机构</span>
           </div>
           <div class="g-c-list">
             <span class="rights-icon r-icon-3"></span>

+ 237 - 14
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,11 +159,12 @@
     }
     #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){
-        padding-right: 8px !important;
+    #public-nav .iner .jynav li:nth-child(6){
+        height: 63px;
+        margin-left: 23px;
     }
     #public-nav .iner .jynav li .jynav-list{
         display: flex;
@@ -220,6 +224,191 @@
         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[data-theme] .iner .jynav li .img-flex {
+        display: flex;
+        flex-direction: column;
+    }
+    #public-nav[data-theme] .iner .jynav li .msg-img1,#public-nav[data-theme] .iner .jynav li .msg-img2 {
+        position: absolute;
+        left: 0;
+        top: 20px;
+    }
+    #public-nav[data-theme] .iner .jynav li .msg-img1 {
+        opacity: 0;
+    }
+    #public-nav[data-theme="light"] .iner .jynav li .msg-img1[data-theme='light'] {
+        opacity: 1;
+    }
+    #public-nav[data-theme="dark"] .iner .jynav li .msg-img1[data-theme='dark'] {
+        opacity: 1;
+    }
+    #public-nav .iner .jynav li .tips {
+        display: none;
+        position: absolute;
+        left: 14px;
+        top: 13px;
+        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);
+        margin-top: 63px;
+    }
+    #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 .lis-cont .dots {
+        position: absolute;
+        left: 28px;
+        top: 7px;
+        width: 6px;
+        height: 6px;
+        background: #fb483d;
+        border: 1px solid #ffffff;
+        border-radius: 50%;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-ul .m-li {
+        padding: 12px 24px!important;
+        box-shadow: 0px -1px 0px 0px rgb(0 0 0 / 5%) inset;
+    }
+    #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 {
+        position: relative;
+        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;
+        text-align: left;
+    }
+    #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;
+        word-break: break-all;
+    }
+    #public-nav .iner .jynav li .no-datas {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        margin-top: 18px;
+    }
+    #public-nav .iner .jynav li .no-datas img {
+        width: 200px;
+        height: 200px;
+    }
+    #public-nav .iner .jynav li .no-datas .tip-text p {
+        color: #999;
+        font-size: 14px;
+        line-height: 22px;
+    }
+    #public-nav .iner .jynav li .jy-list-msg .msg-par .m-foot {
+        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;
     }
@@ -372,6 +561,7 @@
     }
     #public-nav .useronline{
       height: 50px;
+      margin-left: 20px;
     }
 </style>
 <style type="text/css">
@@ -538,6 +728,27 @@
                         <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">
+                        <div class="img-flex">
+                            <img data-theme="light" src='{{Msg "seo" "cdn"}}/images/pc/mesg.png?v={{Msg "seo" "version"}}' class="jy-nav-msg msg-img1" alt="" />
+                            <img data-theme="dark" src='{{Msg "seo" "cdn"}}/images/pc/mesg_fff.png?v={{Msg "seo" "version"}}' class="jy-nav-msg msg-img1" alt="" />
+                        </div>
+                        <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>
@@ -630,8 +841,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();
     }
@@ -746,11 +961,9 @@
 
     }
     window.addEventListener('scroll', docScroll, true)
-
-
-
+    
 $(function(){
-
+    
     // 搜索框显示、隐藏
     $("#public-nav .iner .fl .jy_nav_searchBtn").on("click",function(){
         $(this).hide()
@@ -759,16 +972,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'})
@@ -777,7 +994,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()
     })
 
 

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

@@ -0,0 +1,102 @@
+
+<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,tabsList.lasts.msg_type)" 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}</p>
+            </div>
+          </div>
+          <div class="tabs-mesg" :class="{'is-tabs':tabsList.totals < 20}">
+            <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,ite.msg_type)"
+                  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-if="tabsList.totals > 20">
+                  <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>
+

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

@@ -0,0 +1,66 @@
+<!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" id="descri">
+          <van-list
+            :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.url)">
+                  <span class="trangle"></span>
+                  <p class="p1">{item.title}</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>
+  <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></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>

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

@@ -0,0 +1,78 @@
+<!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="!$.isEmptyObject(lastData)">
+            <h5>重要提醒</h5>
+            <div class="h-conts" @click="msgClick(lastData.url,lastData.isRead,lastData.id,lastData.msg_type)">
+              <div class="p1">
+                <span class="spa-tit">{lastData.title}</span>
+                <span class="spa flex" @click.stop="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}</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/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>
+  <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></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>

+ 4 - 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 {
@@ -820,6 +821,9 @@
     <div class="listcontent">
         <div id="list"></div>
     </div>
+    
+    <!-- 底部导航 -->
+    {{include "/weixin/tabbar.html"}}
 
     <span class="empty findnull-no-key">
         <div><img class="empty-img" src="{{Msg "seo" "cdn"}}/common-module/public/image/jy-smile.png"></div>

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

@@ -250,6 +250,8 @@
             </div>
         </div>
         <div class="j-footer"></div>
+        <!-- 底部导航 -->
+        {{include "/weixin/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>

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

@@ -361,6 +361,12 @@
         .home .home_data .data_list .list_title p {
             transition: all 1s;
         }
+				.home .home_data .no-data {
+					margin-bottom: 1.2rem!important;
+				}
+				.home .tips {
+					padding-bottom: 1.2rem;
+				}
         .custom-toast .weui-toast {
             font-size: 0.3rem;
             padding: 0.2rem;
@@ -660,6 +666,9 @@
                 <a class="home_toset" id="wx-setting" data-cl-event="c_wx_keyword_linkclick">去设置</a>
             </div>
         </div>
+				<!-- 底部导航 -->
+				{{include "/weixin/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/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/newhistorypush',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/zepto/1.2.0/zepto.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>

+ 16 - 1
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -789,9 +789,24 @@
               mounted () {
                 this.init(this.$data)
                 this.restoreState()
-                this.addBackTip()
+                this.getBuyInfo()
               },
               methods: {
+                // 获取已购买信息
+                getBuyInfo: function () {
+                  var _this = this
+                  $.ajax({
+                    url: '/publicapply/free/subscribe',
+                    type: 'POST',
+                    success: function (res) {
+                      if (res && res.error_code === 0) {
+                        if (res.data && !res.data.provincenum) {
+                          _this.addBackTip()
+                        }
+                      }
+                    }
+                  })
+                },
                 toBuyAreaPack: function () {
                   this.dialog.backTip = false
                   this.saveState()