Browse Source

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

tsz 3 years ago
parent
commit
3a1f9fdf6f
59 changed files with 1077 additions and 255 deletions
  1. 0 1
      README.md
  2. 1 0
      config_formal/app_172.17.148.50/config.json
  3. 1 0
      config_formal/app_i2_172.17.145.180/config.json
  4. 1 0
      config_formal/subscribepay_172.17.4.183/config.json
  5. 1 0
      config_formal/subscribepay_2_172.17.145.180/config.json
  6. 1 0
      config_formal/sword_172.17.145.167/config.json
  7. 1 0
      config_formal/sword_172.17.148.50/config.json
  8. 2 1
      src/config.json
  9. 1 3
      src/jfw/front/applysub.go
  10. 2 2
      src/jfw/front/login.go
  11. 2 4
      src/jfw/front/otherAct.go
  12. 1 1
      src/jfw/front/pchelper.go
  13. 3 3
      src/jfw/modules/app/src/app/front/login.go
  14. 2 1
      src/jfw/modules/app/src/config.json
  15. 75 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/p13.css
  16. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/images/no-read-dot.png
  17. BIN
      src/jfw/modules/app/src/web/staticres/jyapp/images/read-dot.png
  18. 15 1
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  19. 86 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/dateFunc.js
  20. 116 0
      src/jfw/modules/app/src/web/staticres/jyapp/js/message-index.js
  21. 4 0
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  22. 5 13
      src/jfw/modules/common/src/qfw/util/jy/jy.go
  23. 2 1
      src/jfw/modules/distribution/src/config.json
  24. 12 15
      src/jfw/modules/distribution/src/service/action/partner.go
  25. 3 3
      src/jfw/modules/distribution/src/service/config/config.go
  26. 2 1
      src/jfw/modules/subscribepay/src/config.json
  27. 1 0
      src/jfw/modules/subscribepay/src/config/config.go
  28. 0 18
      src/jfw/modules/subscribepay/src/entity/dataexport.go
  29. 1 1
      src/jfw/modules/subscribepay/src/service/phoneCollent.go
  30. 1 1
      src/jfw/modules/subscribepay/src/service/userAccountInfo.go
  31. 2 1
      src/jfw/modules/subscribepay/src/service/vipSubscribeTrial.go
  32. 36 0
      src/seo.json
  33. 73 0
      src/web/staticres/common-module/messageCenter/css/mesg-temp.css
  34. BIN
      src/web/staticres/common-module/messageCenter/image/jyxia.png
  35. BIN
      src/web/staticres/common-module/messageCenter/image/no-read-dot.png
  36. BIN
      src/web/staticres/common-module/messageCenter/image/read-dot.png
  37. 7 1
      src/web/staticres/common-module/messageCenter/js/detail.js
  38. 1 21
      src/web/staticres/common-module/messageCenter/js/func.js
  39. 13 13
      src/web/staticres/common-module/messageCenter/js/index.js
  40. 124 0
      src/web/staticres/common-module/messageCenter/js/message-template-index.js
  41. 3 0
      src/web/staticres/frontRouter/pc/mesgCenter/css/index-pc.css
  42. 6 2
      src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js
  43. BIN
      src/web/staticres/images/jyxia.png
  44. BIN
      src/web/staticres/images/no-read-dot.png
  45. BIN
      src/web/staticres/images/pc/banner.png
  46. BIN
      src/web/staticres/images/pc/msg-arrow.png
  47. BIN
      src/web/staticres/images/read-dot.png
  48. 4 4
      src/web/staticres/js/dateFunc.js
  49. 7 2
      src/web/staticres/js/ent-search-index-pc.js
  50. 1 1
      src/web/staticres/js/index_content.js
  51. 75 1
      src/web/staticres/js/login.js
  52. 4 4
      src/web/staticres/js/message.js
  53. 142 0
      src/web/staticres/js/pc-message-index.js
  54. 99 28
      src/web/staticres/pccss/index.css
  55. 6 0
      src/web/staticres/public-pc/css/header-nav.css
  56. 1 1
      src/web/staticres/public-pc/js/header-nav.js
  57. 2 0
      src/web/templates/frontRouter/pc/messageCenter/sess/index.html
  58. 125 106
      src/web/templates/pc/index.html
  59. 4 0
      src/web/templates/weixin/search/mainSearch.html

+ 0 - 1
README.md

@@ -2,6 +2,5 @@
 微信和pc端功能
 weixin sdk https://github.com/wizjin/weixin
 web用xweb框架
-
 v4.6.9
 增加地区数据

+ 1 - 0
config_formal/app_172.17.148.50/config.json

@@ -3,6 +3,7 @@
     "webport": "8405",
     "weixinrpc": "10.170.187.34:8202",
     "cacheflag":true,
+    "smsServiceRpc":"172.17.145.167:932",
     "agreement": "https",
     "webdomain": "https://app-i2.jianyu360.com",
     "redirect": {

+ 1 - 0
config_formal/app_i2_172.17.145.180/config.json

@@ -3,6 +3,7 @@
     "webport": "8405",
     "weixinrpc": "10.170.187.34:8202",
     "cacheflag":true,
+    "smsServiceRpc":"172.17.145.167:932",
     "agreement": "https",
     "webdomain": "https://app-i2.jianyu360.com",
     "redirect": {

+ 1 - 0
config_formal/subscribepay_172.17.4.183/config.json

@@ -2,6 +2,7 @@
 	"mongodbServers": "172.17.4.193:27080,172.17.4.83:27080",
 	"mongodbPoolSize": 35,
 	"mongodbName": "qfw",
+	"smsServiceRpc":"172.17.145.167:932",
 	"redisaddrs": "other=172.17.145.167:2203,session=172.17.145.167:2205,push=172.17.145.167:2203,pushcache_1=172.17.4.202:5000,pushcache_2_a=172.17.145.169:5000",
 	"elasticsearch": "http://172.17.148.59:9800,http://172.17.148.60:9800",
 	"elasticPoolSize": 25,

+ 1 - 0
config_formal/subscribepay_2_172.17.145.180/config.json

@@ -2,6 +2,7 @@
 	"mongodbServers": "172.17.4.193:27080,172.17.4.83:27080",
 	"mongodbPoolSize": 35,
 	"mongodbName": "qfw",
+	"smsServiceRpc":"172.17.145.167:932",
 	"redisaddrs": "other=172.17.145.167:2203,session=172.17.145.167:2205,push=172.17.145.167:2203,pushcache_1=172.17.4.202:5000,pushcache_2_a=172.17.145.169:5000",
 	"elasticsearch": "http://172.17.148.59:9800,http://172.17.148.60:9800",
 	"elasticPoolSize": 25,

+ 1 - 0
config_formal/sword_172.17.145.167/config.json

@@ -7,6 +7,7 @@
     "webrpcport": "84",
     "weixinrpc":"10.170.187.34:8202",
     "cacheflag":true,
+    "smsServiceRpc":"172.17.145.167:932",
     "agreement": "https",
     "webdomain": "https://www.jianyu360.cn",
     "redirect": {

+ 1 - 0
config_formal/sword_172.17.148.50/config.json

@@ -7,6 +7,7 @@
     "webrpcport": "84",
     "weixinrpc":"10.170.187.34:8202",
     "cacheflag":true,
+    "smsServiceRpc":"172.17.145.167:932",
     "agreement": "https",
     "webdomain": "https://www.jianyu360.cn",
     "redirect": {

+ 2 - 1
src/config.json

@@ -316,5 +316,6 @@
     "criticality":2,
     "indexcontentTimeOut":86400,
     "seoBeforeTimeHour":12160,
-    "canReadNotice": 3
+    "canReadNotice": 3,
+    "smsServiceRpc":"127.0.0.1:932"
 }

+ 1 - 3
src/jfw/front/applysub.go

@@ -119,10 +119,8 @@ func (a *Applysub) SendMsg() error {
 				session.Set("MsgCode", MsgCode)
 				session.Set("phoneNum", phoneNum)
 				session.Set("lastSendMsgTime", time.Now().Unix())
-				param := make(map[string]string)
-				param["code"] = MsgCode
 				go func() {
-					jy.SendSMS("2828060", phoneNum, param)
+					jy.SendSMS(util.ObjToString(config.Sysconfig["smsServiceRpc"]), phoneNum, MsgCode)
 				}()
 				log.Println("手机号码", phoneNum, "验证码", MsgCode)
 			} else {

+ 2 - 2
src/jfw/front/login.go

@@ -87,7 +87,7 @@ func (l *Login) Login() error {
 				return -1
 			} else if tmp := l.GetSession("CheckCodeId"); tmp == nil || !captcha.VerifyString(tmp.(string), l.GetString("code")) {
 				return -2
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(qutil.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return 1
 			}
 			return 0
@@ -210,7 +210,7 @@ func (l *Login) ForgetPwd() error {
 			//手机号是否已被注册
 			if !phoneIsExists(phone) {
 				return "phoneNotExists"
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(qutil.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return "y"
 			}
 		} else if reqType == "nextStep" {

+ 2 - 4
src/jfw/front/otherAct.go

@@ -2,6 +2,7 @@ package front
 
 import (
 	"fmt"
+	"jfw/config"
 	"qfw/util"
 	"qfw/util/jy"
 	"regexp"
@@ -63,11 +64,8 @@ func (f *Front) SendMessage() {
 				session.Set("MsgCode", MsgCode)
 				session.Set("phoneNum", phoneNum)
 				session.Set("lastSendMsgTime", time.Now().Unix())
-				param := make(map[string]string)
-				param["code"] = MsgCode
-
 				go func() {
-					jy.SendSMS("2828060", phoneNum, param)
+					jy.SendSMS(util.ObjToString(config.Sysconfig["smsServiceRpc"]), phoneNum, MsgCode)
 				}()
 				fmt.Println("手机号码", phoneNum, "验证码", MsgCode)
 			} else {

+ 1 - 1
src/jfw/front/pchelper.go

@@ -173,7 +173,7 @@ func (l *PcHelper) Login() error {
 				return -2
 			} else if !phoneReg.MatchString(phone) {
 				return -1
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(util.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return 1
 			}
 			return 0

+ 3 - 3
src/jfw/modules/app/src/app/front/login.go

@@ -145,7 +145,7 @@ func (l *Login) Login() error {
 				return -2
 			} else if !phoneReg.MatchString(phone) {
 				return -1
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(qutil.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return 1
 			}
 			return 0
@@ -380,7 +380,7 @@ func (l *Login) Register() error {
 			//手机号是否已被注册
 			if userIsExists(phone) {
 				return "phoneExists"
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(qutil.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return "y"
 			}
 		} else if reqType == "nextStep" {
@@ -667,7 +667,7 @@ func (l *Login) ForgetPwd() error {
 					{"s_m_phone": phone}},
 			}) == 0 {
 				return "phoneNotExists"
-			} else if jy.SendPhoneIdentCode(phone, l.Session()) {
+			} else if jy.SendPhoneIdentCode(qutil.ObjToString(config.Sysconfig["smsServiceRpc"]), phone, l.Session()) {
 				return "y"
 			}
 		} else if reqType == "nextStep" {

+ 2 - 1
src/jfw/modules/app/src/config.json

@@ -161,5 +161,6 @@
     "optimalTime":"2021-08-03 12:00:00",
     "criticality":2,
     "canReadNotice": 3,
-    "namePrefix":"JY_%s"
+    "namePrefix":"JY_%s",
+    "smsServiceRpc":"127.0.0.1:932"
 }

+ 75 - 0
src/jfw/modules/app/src/web/staticres/jyapp/css/p13.css

@@ -409,3 +409,78 @@
 }
 /* -e page 订阅*/
 /* -E p13 */
+
+/* 消息展示 */
+.p13 .home .side-line {
+    padding: 0.16rem 0;
+    background: #F5F6F7;
+}
+.p13 .home .list-msg {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: .24rem .32rem .16rem .32rem;
+    background: #fff;
+}
+.p13 .home .list-msg .l-msg .words {
+    width: 6.3rem;
+    display: flex;
+    flex-direction: initial;
+    align-items: center;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+.p13 .home .list-msg .l-msg .words:nth-child(2) {
+    margin-top: 0.16rem;
+}
+.p13 .home .list-msg .img-div {
+    padding: 0.5rem 0;
+}
+.p13 .home .list-msg .imgActive {
+    padding: 0.15rem 0;
+}
+.p13 .home .list-msg .r-msg {
+    width: .22rem;
+    height: .14rem;
+    cursor: pointer;
+    transform:rotate(-90deg);
+    -ms-transform:rotate(-90deg); 	/* IE 9 */
+    -moz-transform:rotate(-90deg); 	/* Firefox */
+    -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */
+    -o-transform:rotate(-90deg);
+}
+.p13 .home .list-msg .l-msg .words .dot-img {
+    width: .08rem;
+    height: .08rem;
+    margin-right: .16rem;
+}
+.p13 .home .list-msg .l-msg .words .dotActive {
+    background: #EDEFF2;
+}
+.p13 .home .list-msg .l-msg .words h3 {
+    font-size: .24rem;
+    font-weight: bold;
+    color: #171826;
+    line-height: .48rem;
+}
+.p13 .home .list-msg .l-msg .words span {
+    font-size: .24rem;
+    line-height: .48rem;
+    margin: 0 .24rem;
+    /* max-width: 3rem; */
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+.p13 .home .list-msg .l-msg .words .spActive {
+    max-width: 3rem;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+}
+.p13 .home .list-msg .l-msg .words p {
+    font-size: .22rem;
+    color: #9B9CA3;
+    line-height: .48rem;
+}

BIN
src/jfw/modules/app/src/web/staticres/jyapp/images/no-read-dot.png


BIN
src/jfw/modules/app/src/web/staticres/jyapp/images/read-dot.png


+ 15 - 1
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -1055,6 +1055,18 @@ function autoLogin (url, callBack) {
   });
 }
 
+// ios or android
+function msgAndroidOrIOS () {
+  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 checkMsgCount(acync, str, callback) {
   $.ajax({
@@ -1073,7 +1085,9 @@ function checkMsgCount(acync, str, callback) {
         var isMsg = localStorage.getItem('isMsgNum')
         if (num !== Number(isMsg)) {
           try {
+            JyObj.refreshAppointTab('search', 1)
             JyObj.refreshAppointTab('message', 1)
+            // JyObj.checkLab()
           } catch (e) {
             console.log(e)
           }
@@ -1089,7 +1103,7 @@ function checkMsgCount(acync, str, callback) {
 }
 
 function keepQuest() {
-  var appType = androidOrIOS(), timer = null
+  var appType = msgAndroidOrIOS(), timer = null
   if (appType == 'ios' || appType == 'android') {
     clearInterval(timer)
     timer = setInterval(() => {

+ 86 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/dateFunc.js

@@ -0,0 +1,86 @@
+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, drag = 'normal') {
+  // 时间转换
+  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) {
+    drag == 'normal' ? timeStr = dateTime(time) : timeStr = dateTime(time, 'yyyy年MM月dd日');
+  } else {
+    if (currentDay === dateLast()) {
+      drag == 'normal' ? timeStr = diff + dateTime(time, 'hh:mm') : timeStr = diff;
+    } else {
+      if (isTime < 0) {
+        drag == 'normal' ? timeStr = dateTime(time, 'MM月dd日 hh:mm') : timeStr = dateTime(time, 'MM月dd日');
+      } else {
+        timeStr = dateTime(time, 'hh:mm');
+      }
+    }
+  }
+
+  return timeStr;
+}
+// 判断是否为微信浏览器
+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
+}

+ 116 - 0
src/jfw/modules/app/src/web/staticres/jyapp/js/message-index.js

@@ -0,0 +1,116 @@
+// app
+var temp = '<div class="side-line" v-if="lists.length"><div class="list-msg"><div class="l-msg"><div class="words" v-for="item in lists" :key="item.id"><img class="dot-img" src="../images/no-read-dot.png" v-if="item.isRead == 0"><img class="dot-img" src="../images/read-dot.png" v-else><h3 :class="{isActive: item.isRead == 0}">@@item.msg_type@@</h3><span @click="titleGoto(item)">@@item.title@@</span><p>@@item.createtime@@</p></div></div><div class="img-div" :class="{imgActive:lists.length==1}" @click="gotoUrl"><img class="r-msg" src="../images/wx/jyxia.png"></div></div></div>'
+
+var vm = new Vue({
+  el: '#vue-message-index-app',
+  delimiters: ['@@', '@@'],
+  template: temp,
+  data: function () {
+    return {
+      lists: []
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    getList() {
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/latestNews',
+        success:function (res) {
+          if (res.data) {
+            res.data.forEach(v => {
+              v.msg_type = _this.msgType(v.msg_type)
+              v.createtime = dateMatter(v.createtime, 'nor')
+            });
+            _this.lists = res.data
+          }
+        }
+      })
+    },
+    topRead(ids, url, type) {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success:function () {
+          try {
+            // JyObj.refreshAppointTab('search', 0)
+            JyObj.refreshAppointTab('message', 1)
+            JyObj.checkLab()
+          } catch (e) {
+            console.log(e)
+          }
+          if (url) {
+            location.href = url
+          } else {
+            _this.getList()
+          }
+        }
+      })
+    },
+    titleGoto(item) {
+      let wxType = getType()
+      let appType = androidOrIOS()
+      let urls = item.url
+      if (wxType) {
+        if (item.isRead == 0) {
+          this.topRead(item.id, urls.weChatUrl, item.msg_type, wxType)
+        } else {
+          if (urls.weChatUrl) {
+            //链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
+            window.open(urls.weChatUrl);
+          }
+        }
+      } else {
+        if (appType == 'android') {
+          if (item.isRead == 0) {
+            this.topRead(item.id, urls.androidUrl, item.msg_type)
+          } else {
+            if (urls.androidUrl) {
+              location.href = urls.androidUrl
+            } else {
+              return
+            }
+          }
+        } else {
+          if (item.isRead == 0) {
+            this.topRead(item.id, urls.iosUrl, item.msg_type)
+          } else {
+            if (urls.iosUrl) {
+              location.href = urls.iosUrl
+            } else {
+              return
+            }
+          }
+        }
+      }
+    },
+    gotoUrl() {
+      // location.href = '/jyapp/frontPage/messageCenter/sess/index'
+      try {
+        JyObj.skipAppointTab('message')
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    msgType(val) {
+      const obj = {
+        '1': '活动优惠',
+        '2': '服务通知',
+        '3': '订阅消息',
+        '4': '项目动态 ',
+        '5': '企业动态',
+        '6': '分析报告 ',
+        '7': '系统通知',
+      }
+      return obj[val]
+    }
+  }
+})

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

@@ -342,6 +342,8 @@
                     </a>
                 </div>
             </div>
+            <!-- 消息展示 -->
+            <div id="vue-message-index-app"></div>
             <!-- 最新标讯 -->
             <div class="home_data">
                 <h3 class="data_nav">最新标讯</h3>
@@ -642,6 +644,8 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/visited.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/ent-search/ent-search-template.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/searchindex.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/dateFunc.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/js/message-index.js?v={{Msg "seo" "version"}}'></script>
 <script>
   {{$s:=(Ad "jy-app-sharepolitely-float" -1)}}
   var ADList={{$s}}

+ 5 - 13
src/jfw/modules/common/src/qfw/util/jy/jy.go

@@ -186,20 +186,14 @@ func SendMailIdentCode(to, code string, auth []*mail.GmailAuth) bool {
 	return false
 }
 
-//根据模板发送短信,模板是运营商设定的。
-//第三个参数是可变参数,可以传入多个,但要和模板相匹配
-func SendSMS(tplcode /*模板代码*/, mobile /*手机号码*/ string, param map[string]string) {
-	tmp := []string{}
-	for k, v := range param {
-		tmp = append(tmp, "#"+k+"#="+v)
-	}
-	text := strings.Join(tmp, "&")
-	sms.SendSms(mobile, tplcode, text)
+//
+func SendSMS(address, mobile string, params ...string) {
+	sms.SendSms(address, "01", mobile, params...)
 }
 
 //发送验证码
 //增加sessionKey字段 更换手机号防止绕过身份校验
-func SendPhoneIdentCode(phone string, session *httpsession.Session, sessionKey ...string) bool {
+func SendPhoneIdentCode(address, phone string, session *httpsession.Session, sessionKey ...string) bool {
 	sessionKeyFlag := defaultPhoneFlag
 	if len(sessionKey) > 0 && sessionKey[0] != "" {
 		sessionKeyFlag = sessionKey[0]
@@ -216,10 +210,8 @@ func SendPhoneIdentCode(phone string, session *httpsession.Session, sessionKey .
 	session.Set(fmt.Sprintf("%sKey", sessionKeyFlag), phone)
 	session.Set(fmt.Sprintf("%sTime", sessionKeyFlag), time.Now().Unix())
 	//发送短信
-	param := make(map[string]string)
-	param["code"] = s_ranNum
 	log.Println("短信验证码", phone, s_ranNum)
-	SendSMS("2828060", phone, param)
+	SendSMS(address, phone, s_ranNum)
 	return true
 }
 

+ 2 - 1
src/jfw/modules/distribution/src/config.json

@@ -98,5 +98,6 @@
 	"accountMergeOnline":"2055-03-30 00:00:00",
 	"regurl":[
 		"^distribution/share/shareLink$"
-	]
+	],
+    "smsServiceRpc":"127.0.0.1:932"
 }

+ 12 - 15
src/jfw/modules/distribution/src/service/action/partner.go

@@ -1,16 +1,14 @@
 package action
 
 import (
-	"log"
-	"timetask"
-
-	"qfw/util/jy"
-
 	. "api"
 	"database/sql"
+	"log"
 	qu "qfw/util"
+	"qfw/util/jy"
 	. "service/config"
 	"time"
+	"timetask"
 
 	"github.com/go-xweb/xweb"
 )
@@ -39,8 +37,7 @@ func (p *Partner) SendMessage() {
 	status, msg := func() (int, string) {
 		token := p.GetString("token")
 		phone := jy.CheckSendMsg(token)
-		log.Println("====", phone)
-		if jy.IsPhone(phone) && jy.SendPhoneIdentCode(phone, p.Session()) {
+		if jy.IsPhone(phone) && jy.SendPhoneIdentCode(Sysconfig.SmsServiceRpc, phone, p.Session()) {
 			return 1, ""
 		}
 		return -1, "发送失败"
@@ -76,13 +73,13 @@ func (p *Partner) AddPartner() {
 		} else if Mysql.Count("dis_partner", map[string]interface{}{"email": mail}) > 0 {
 			return -1, "该邮箱已加入合作伙伴"
 		}
-		log.Println("code:",p.GetString("code"))
+		log.Println("code:", p.GetString("code"))
 		send_phone := jy.CheckPhoneIdent(p.Session(), p.GetString("code")) //验证码不正确
-		log.Println("send_phone:",send_phone)
+		log.Println("send_phone:", send_phone)
 		if send_phone == "" {
 			user_phone := ""
 			u, ok := MQFW.FindById("user", userid, `{"s_phone":1,"s_m_phone":1,"s_myemail":1}`)
-			log.Println("user:",u,ok)
+			log.Println("user:", u, ok)
 			if ok && u != nil && *u != nil {
 				if s_phone, _ := (*u)["s_phone"].(string); s_phone != "" {
 					user_phone = s_phone
@@ -90,15 +87,15 @@ func (p *Partner) AddPartner() {
 					user_phone = s_m_phone
 				}
 			}
-			log.Println("phone:",phone)
-			log.Println("user_phone:",user_phone)
+			log.Println("phone:", phone)
+			log.Println("user_phone:", user_phone)
 			if phone != user_phone {
 				return -1, "验证码错误"
 
 			}
 		}
 		//typ, _ := p.GetInt("type") // 1个人伙伴 2企业伙伴
-		typ:=int64(2)
+		typ := int64(2)
 		if typ != 1 && typ != 2 {
 			return -1, "type参数格式错误"
 		}
@@ -418,7 +415,7 @@ func (p *Partner) ReapplyPartner() {
 				if (*phoneData)["uid"] != userid {
 					return -1, "该手机号已加入合作伙伴"
 				}
-			}else{
+			} else {
 				send_phone := jy.CheckPhoneIdent(p.Session(), p.GetString("code")) //验证码不正确
 				if send_phone == "" {
 					user_phone := ""
@@ -435,7 +432,7 @@ func (p *Partner) ReapplyPartner() {
 					}
 				}
 			}
-		}else{
+		} else {
 			send_phone := jy.CheckPhoneIdent(p.Session(), p.GetString("code")) //验证码不正确
 			if send_phone == "" {
 				user_phone := ""

+ 3 - 3
src/jfw/modules/distribution/src/service/config/config.go

@@ -3,7 +3,6 @@ package config
 import (
 	"log"
 	m "mongodb"
-	mg "qfw/mongodb"
 	"qfw/util"
 	"qfw/util/mail"
 	"qfw/util/mysql"
@@ -41,6 +40,7 @@ type config struct {
 	PhoneFilterFlag    bool
 	AccountMergeOnline string
 	Regurl             []string
+	SmsServiceRpc      string
 }
 
 type BalanceRes struct {
@@ -82,7 +82,7 @@ type mailConf struct {
 var (
 	Sysconfig *config
 	Mysql     *mysql.Mysql
-	MQFW      mg.MongodbSim
+	MQFW      m.MongodbSim
 	Mgo_Log   m.MongodbSim
 	GmailAuth []*mail.GmailAuth
 )
@@ -98,7 +98,7 @@ func init() {
 		//
 		if Sysconfig.Mongodb.Main != nil {
 			log.Println("初始化 mongodb main")
-			MQFW = mg.MongodbSim{
+			MQFW = m.MongodbSim{
 				MongodbAddr: Sysconfig.Mongodb.Main.Address,
 				Size:        Sysconfig.Mongodb.Main.Size,
 				DbName:      Sysconfig.Mongodb.Main.DbName,

+ 2 - 1
src/jfw/modules/subscribepay/src/config.json

@@ -95,5 +95,6 @@
 		"数据流量包":true,
 		"省份订阅包":true,
 		"附件下载包":true
-   }
+   },
+   "smsServiceRpc":"127.0.0.1:932"
 }

+ 1 - 0
src/jfw/modules/subscribepay/src/config/config.go

@@ -61,6 +61,7 @@ type config struct {
 	ActivityName       string
 	ShareRedisName     string
 	Product            map[string]bool
+	SmsServiceRpc      string
 }
 type mgoConf struct {
 	Address           string

+ 0 - 18
src/jfw/modules/subscribepay/src/entity/dataexport.go

@@ -11,7 +11,6 @@ import (
 	"os"
 	qutil "qfw/util"
 	"qfw/util/dataexport"
-	"qfw/util/jy"
 	"qfw/util/mail"
 	"regexp"
 	"strconv"
@@ -100,7 +99,6 @@ func (d *dataExportStruct) PayCallBack(param *CallBackParam) bool {
 			}, updateMap)
 			if update {
 				//先发个通知
-				go SendNotice(orderdata, download_url)
 				go SendMailToBJFinance(orderdata, pay_time, param.TransactionId, 1, config.GmailAuth)
 
 				//发送邮件移至定时任务
@@ -137,22 +135,6 @@ func (d *dataExportStruct) PayCallBack(param *CallBackParam) bool {
 	return update
 }
 
-//发送通知
-func SendNotice(order *map[string]interface{}, download_url string) {
-	order_code := qutil.ObjToString((*order)["order_code"])
-	user_mail := qutil.ObjToString((*order)["user_mail"])
-	url := fmt.Sprintf("%s%s", config.Config.WebDomain, download_url)
-	for _, audit := range config.ExConf.AuditPersons {
-		if regexp.MustCompile("^\\d+$").MatchString(audit) {
-			jy.SendSMS("2828100", audit, map[string]string{
-				"name":     order_code,
-				"username": user_mail,
-				"tel":      url,
-			})
-		}
-	}
-}
-
 var finaceLock *sync.Mutex = &sync.Mutex{}
 
 //给北京财务人员发邮件

+ 1 - 1
src/jfw/modules/subscribepay/src/service/phoneCollent.go

@@ -110,7 +110,7 @@ func phoneStep_coll(sess *httpsession.Session, step int, phone, code string) (st
 		if !jy.PhoneReg.MatchString(phone) {
 			return "", fmt.Errorf("手机号格式不正确")
 		}
-		if !jy.SendPhoneIdentCode(phone, sess) {
+		if !jy.SendPhoneIdentCode(config.Config.SmsServiceRpc, phone, sess) {
 			return "", fmt.Errorf("验证码发送频繁")
 		}
 		return phone, nil

+ 1 - 1
src/jfw/modules/subscribepay/src/service/userAccountInfo.go

@@ -776,7 +776,7 @@ func phoneStep(sess *httpsession.Session, step int, phone, code, sign string) (s
 				return "", fmt.Errorf("手机号已被使用")
 			}
 		}
-		if !jy.SendPhoneIdentCode(phone, sess, fmt.Sprintf("%s_%s", customSendPhoneMsgSessionKey, sign)) {
+		if !jy.SendPhoneIdentCode(config.Config.SmsServiceRpc, phone, sess, fmt.Sprintf("%s_%s", customSendPhoneMsgSessionKey, sign)) {
 			return "", fmt.Errorf("验证码发送频繁")
 		}
 		incurKey := fmt.Sprintf(redisPhoneCaptchaFilter, qutil.ObjToString(sess.Get("userId")), time.Now().Day())

+ 2 - 1
src/jfw/modules/subscribepay/src/service/vipSubscribeTrial.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"config"
 	"encoding/json"
 	"entity"
 	"errors"
@@ -130,7 +131,7 @@ func (t *TrialOrder) SendPhoneCaptcha() {
 		t.SetSession("subvip_trial_lastSend", time.Now().Unix())
 		log.Printf("%s 发送短信验证码 %s\n", t.GetSession("userId"), MsgCode)
 		go func() {
-			jy.SendSMS("2828060", phoneNum, map[string]string{"code": MsgCode})
+			jy.SendSMS(config.Config.SmsServiceRpc, phoneNum, MsgCode)
 		}()
 		return true, ""
 	}()

+ 36 - 0
src/seo.json

@@ -2758,6 +2758,42 @@
             "KEYWORDS": "铁门关市",
             "DESCRIPTION": "铁门关市"
         },
+        "XJ_BT": {
+            "NAME": "北屯市",
+            "TITLE": "北屯市",
+            "KEYWORDS": "北屯市",
+            "DESCRIPTION": "北屯市"
+        },
+        "XJ_SHH": {
+            "NAME": "双河市",
+            "TITLE": "双河市",
+            "KEYWORDS": "双河市",
+            "DESCRIPTION": "双河市"
+        },
+        "XJ_KKDL": {
+            "NAME": "可克达拉市",
+            "TITLE": "可克达拉市",
+            "KEYWORDS": "可克达拉市",
+            "DESCRIPTION": "可克达拉市"
+        },
+        "XJ_KY": {
+            "NAME": "昆玉市",
+            "TITLE": "昆玉市",
+            "KEYWORDS": "昆玉市",
+            "DESCRIPTION": "昆玉市"
+        },
+        "XJ_HYH": {
+            "NAME": "胡杨河市",
+            "TITLE": "胡杨河市",
+            "KEYWORDS": "胡杨河市",
+            "DESCRIPTION": "胡杨河市"
+        },
+        "XJ_XX": {
+            "NAME": "新星市",
+            "TITLE": "新星市",
+            "KEYWORDS": "新星市",
+            "DESCRIPTION": "新星市"
+        },
         "XG_XG": {
             "NAME": "香港",
             "TITLE": "香港",

+ 73 - 0
src/web/staticres/common-module/messageCenter/css/mesg-temp.css

@@ -0,0 +1,73 @@
+/* 消息展示 */
+.side-line {
+  padding: 0.16rem 0;
+  background: #F5F6F7;
+}
+.list-msg {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: .24rem .32rem .16rem .32rem;
+  background: #fff;
+}
+.list-msg .l-msg .words {
+  width: 6.3rem;
+  display: flex;
+  flex-direction: initial;
+  align-items: center;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.list-msg .l-msg .words:nth-child(2) {
+  margin-top: 0.16rem;
+}
+.list-msg .img-div {
+  padding: 0.5rem 0;
+}
+.list-msg .imgActive {
+  padding: 0.15rem 0;
+}
+.list-msg .r-msg {
+  width: .22rem;
+  height: .14rem;
+  cursor: pointer;
+  transform:rotate(-90deg);
+  -ms-transform:rotate(-90deg); 	/* IE 9 */
+  -moz-transform:rotate(-90deg); 	/* Firefox */
+  -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */
+  -o-transform:rotate(-90deg);
+}
+.list-msg .l-msg .words .dot-img {
+  width: .08rem;
+  height: .08rem;
+  margin-right: .16rem;
+}
+.list-msg .l-msg .words .dotActive {
+  background: #EDEFF2;
+}
+.list-msg .l-msg .words h3 {
+  font-size: .24rem;
+  font-weight: bold;
+  color: #171826;
+  line-height: .48rem;
+}
+.list-msg .l-msg .words span {
+  font-size: .24rem;
+  line-height: .48rem;
+  margin: 0 .24rem;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.list-msg .l-msg .words .spActive {
+  max-width: 3rem;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.list-msg .l-msg .words p {
+  font-size: .22rem;
+  color: #9B9CA3;
+  line-height: .48rem;
+}

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


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


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


+ 7 - 1
src/web/staticres/common-module/messageCenter/js/detail.js

@@ -60,7 +60,13 @@ var vm = new Vue({
         data: {
           msgType: val
         },
-        success:function () {}
+        success:function () {
+          try {
+            JyObj.refreshAppointTab('search', 1)
+          } catch (error) {
+            console.log(error) 
+          }
+        }
       })
     },
     appMesg(type) {

+ 1 - 21
src/web/staticres/common-module/messageCenter/js/func.js

@@ -53,26 +53,6 @@ function getQueryString(name) {
   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, '/') : ''
@@ -114,7 +94,7 @@ function dateMatter (time, type) {// 时间转换
   var diff = isTime < 0 ? '昨天' : ''
   var isDate = new Date(iosTime) - dateYear()
   if (isDate < 0) {
-    timeStr = dateTime(time)
+    type == 'out' ? timeStr = dateTime(time) : timeStr = dateTime(time, 'yyyy年MM月dd日')
   } else {
     if (currentDay === dateLast()) {
       if (type === 'out') {

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

@@ -26,7 +26,7 @@ var vm = new Vue({
     }
   },
   mounted () {
-    iosBackRefresh()
+    // iosBackRefresh()
     keepQuest()
   },
   beforeDestroy() {
@@ -65,7 +65,7 @@ var vm = new Vue({
       })
     },
     // 点击置顶消息为已读
-    topRead(ids, url, type) {
+    topRead(ids, url, type, wxType) {
       const _this = this
       $.ajax({
         type:'POST',
@@ -77,12 +77,12 @@ var vm = new Vue({
         success:function () {
           _this.msgData()
           if (url) {
-        	if(getType()){
-				//链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
-				window.open(url);
-			}else{
-	            location.href = url
-			}
+            if (getType()) {
+              //链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
+              window.open(url)
+            } else {
+              location.href = url
+            }
           }
         }
       })
@@ -114,18 +114,18 @@ var vm = new Vue({
       let appType = androidOrIOS()
       if (wxType) {
         if (!num) {
-          this.topRead(ids, url.weChatUrl, type)
+          this.topRead(ids, url.weChatUrl, type, wxType)
         } else {
           if (url.weChatUrl) {
             //location.href = url.weChatUrl
-        	//链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
-			window.open(url.weChatUrl);
+            //链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
+            window.open(url.weChatUrl);
           }
         }
       } else {
         if (appType == 'android') {
           if (!num) {
-            this.topRead(ids, url.androidUrl, type)
+            this.topRead(ids, url.androidUrl, type, wxType)
           } else {
             if (url.androidUrl) {
               location.href = url.androidUrl
@@ -133,7 +133,7 @@ var vm = new Vue({
           }
         } else {
           if (!num) {
-            this.topRead(ids, url.iosUrl, type)
+            this.topRead(ids, url.iosUrl, type, wxType)
           } else {
             if (url.iosUrl) {
               location.href = url.iosUrl

+ 124 - 0
src/web/staticres/common-module/messageCenter/js/message-template-index.js

@@ -0,0 +1,124 @@
+// 微信端
+function iosBackRefresh () {
+  var isPageHide = false
+  window.addEventListener('pageshow', function () {
+      if (isPageHide) {
+          location.reload()
+      }
+  })
+  window.addEventListener('pagehide', function () {
+      isPageHide = true
+  })
+}
+var temp = '<div class="side-line" v-if="lists.length"><div class="list-msg"><div class="l-msg"><div class="words" v-for="item in lists" :key="item.id"><img class="dot-img" src="../images/no-read-dot.png" v-if="item.isRead == 0"><img class="dot-img" src="../images/read-dot.png" v-else><h3 :class="{isActive: item.isRead == 0}">@@item.msg_type@@</h3><span @click="titleGoto(item)">@@item.title@@</span><p>@@item.createtime@@</p></div></div><div class="img-div" :class="{imgActive:lists.length==1}" @click="gotoUrl"><img class="r-msg" src="../images/jyxia.png"></div></div></div>'
+
+var vm = new Vue({
+  el: '#vue-message-index-app',
+  delimiters: ['@@', '@@'],
+  template: temp,
+  data: function () {
+    return {
+      lists: []
+    }
+  },
+  created() {
+    this.getList()
+  },
+  mounted() {
+    iosBackRefresh()
+  },
+  methods: {
+    getList() {
+      var _this = this
+      $.ajax({
+        type:'POST',
+        url:'/jymessageCenter/latestNews',
+        success:function (res) {
+          if (res.data) {
+            res.data.forEach(v => {
+              v.msg_type = _this.msgType(v.msg_type)
+              v.createtime = dateMatter(v.createtime, 'out')
+            })
+            _this.lists = res.data
+          }
+        }
+      })
+    },
+    topRead(ids, url, type) {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success:function () {
+          if (url) {
+            // window.open(url)
+            const a1 = document.createElement('a')
+            a1.href = url
+            a1.click()
+          } else {
+            _this.getList()
+          }
+        }
+      })
+    },
+    titleGoto(item) {
+      let wxType = getType()
+      let appType = androidOrIOS()
+      let urls = item.url
+      if (wxType) {
+        if (item.isRead == 0) {
+          this.topRead(item.id, urls.weChatUrl, item.msg_type)
+        } else {
+          if (urls.weChatUrl) {
+            //链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
+            window.open(urls.weChatUrl)
+          } else {
+            return
+          }
+        }
+      } else {
+        if (appType == 'android') {
+          if (item.isRead == 0) {
+            this.topRead(item.id, urls.androidUrl, item.msg_type)
+          } else {
+            if (urls.androidUrl) {
+              location.href = urls.androidUrl
+            } else {
+              return
+            }
+          }
+        } else {
+          if (item.isRead == 0) {
+            this.topRead(item.id, urls.iosUrl, item.msg_type)
+          } else {
+            if (urls.iosUrl) {
+              location.href = urls.iosUrl
+            } else {
+              return
+            }
+          }
+        }
+      }
+    },
+    gotoUrl() {
+      // location.href = '/weixin/frontPage/messageCenter/sess/index?msg=2'
+      window.open('/weixin/frontPage/messageCenter/sess/index?msg=2')
+    },
+    msgType(val) {
+      const obj = {
+        '1': '活动优惠',
+        '2': '服务通知',
+        '3': '订阅消息',
+        '4': '项目动态 ',
+        '5': '企业动态',
+        '6': '分析报告 ',
+        '7': '系统通知',
+      }
+      return obj[val]
+    }
+  }
+})

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

@@ -145,6 +145,9 @@
 .main-mesg .tabs-mesg .el-tabs .el-tabs__content {
   padding: 8px 0;
 }
+.main-mesg .tabs-mesg .el-tabs .el-tabs__content .el-loading-mask {
+  z-index: 99;
+}
 .main-mesg .is-tabs .el-tabs .el-tabs__content {
   padding-bottom: 16px;
 }

+ 6 - 2
src/web/staticres/frontRouter/pc/mesgCenter/js/index-pc.js

@@ -4,6 +4,7 @@ var vm = new Vue({
   delimiters: ['{', '}'],
   data: function () {
     return {
+      loading: false,
       activeName: '0',
       counts: [],
       isTabs: '',
@@ -29,7 +30,6 @@ var vm = new Vue({
   methods: {
     tabClick(val) {
       this.isTabs = val.name
-      this.tabsList.lists = []
       this.tabsList.offset = 1
       this.tabsData(val.name)
     },
@@ -48,6 +48,7 @@ var vm = new Vue({
     },
     tabsData(num) {
       const _this = this
+      this.loading = true
       $.ajax({
         type:'POST',
         url:'/jymessageCenter/messageList',
@@ -59,7 +60,11 @@ var vm = new Vue({
           pageSize: this.tabsList.pageSize
         },
         success:function (res) {
+          setTimeout(() => {
+            _this.loading = false
+          }, 300)
           if (res && res.status == 1) {
+            _this.tabsList.lists = []
             _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
@@ -69,7 +74,6 @@ var vm = new Vue({
     },
     onPageChange(page) {
       this.tabsList.offset = page
-      this.tabsList.lists = []
       this.tabsData(this.isTabs)
     },
     readed(ids, type, url) {

BIN
src/web/staticres/images/jyxia.png


BIN
src/web/staticres/images/no-read-dot.png


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


BIN
src/web/staticres/images/pc/msg-arrow.png


BIN
src/web/staticres/images/read-dot.png


+ 4 - 4
src/web/staticres/js/dateFunc.js

@@ -45,7 +45,7 @@ function dateLast() {
   return dateTime(day, 'yyyy/MM/dd');
 }
 
-function dateMatter(time) {
+function dateMatter(time, drag = 'normal') {
   // 时间转换
   var timeStr = '';
   var currentDay = dateTime(time, 'yyyy/MM/dd'); // 当前日期
@@ -57,13 +57,13 @@ function dateMatter(time) {
   var isDate = new Date(time) - dateYear();
 
   if (isDate < 0) {
-    timeStr = dateTime(time);
+    drag == 'normal' ? timeStr = dateTime(time) : timeStr = dateTime(time, 'yyyy年MM月dd日');
   } else {
     if (currentDay === dateLast()) {
-      timeStr = diff + dateTime(time, 'hh:mm');
+      drag == 'normal' ? timeStr = diff + dateTime(time, 'hh:mm') : timeStr = diff;
     } else {
       if (isTime < 0) {
-        timeStr = dateTime(time, 'MM月dd日 hh:mm');
+        drag == 'normal' ? timeStr = dateTime(time, 'MM月dd日 hh:mm') : timeStr = dateTime(time, 'MM月dd日');
       } else {
         timeStr = dateTime(time, 'hh:mm');
       }

+ 7 - 2
src/web/staticres/js/ent-search-index-pc.js

@@ -406,10 +406,15 @@ var vm = new Vue({
         },
         areaCityChange: function (area) {
             var city = []
+            var area_arr = []
             for (var key in area) {
-                city = city.concat(area[key])
+            	if(area[key].length>0){
+                	city = city.concat(area[key])
+                }else{
+                	area_arr = area_arr.concat(key)
+                }
             }
-            this.filterState.entArea = Object.keys(area)
+            this.filterState.entArea = area_arr//Object.keys(area)
             this.filterState.entCity = city
             this.doSearch()
         },

+ 1 - 1
src/web/staticres/js/index_content.js

@@ -111,7 +111,7 @@ $("#index .ser").bind("input propertychange",function(){
   function judgeTop(){
       for(var j=0; j<num.length;j++){
           if (num[j] >= wScrollTop && num[j] < (wScrollTop+wH-50)) {
-            console.log(j)
+            // console.log(j)
               if(j == 0){
                 obj.eq(j).css({
                     'animation-name':'CfadeInUp',

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

@@ -389,6 +389,73 @@ function checkMenuForEnt () {
         }
     })
 }
+var msgTimer = null
+function toReaded(ids, type, url) {
+    const _this = this
+    $.ajax({
+        type: 'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+            msgId: ids,
+            msgType: type
+        },
+        success:function () {
+            if (url) {
+                location.href = url
+            } else {
+                return
+            }
+        }
+    })
+}
+// 查看是否有新消息
+function checkCounts() {
+    Notification.requestPermission(function(status) {
+        if(status === 'granted'){
+            var str = window.location.href
+            var arr = str.split('https://')[1].split('/')[1]
+            if (arr) {
+                clearInterval(msgTimer)
+                return
+            }
+            clearInterval(msgTimer)
+            msgTimer = setInterval(function () {
+                $.ajax({
+                    type: 'POST',
+                    url: '/jymessageCenter/lastNewMessage?t=' + Date.now(),
+                    success: function (r) {
+                        if (r.error_code == 1001) {
+                            clearInterval(msgTimer)
+                            return
+                        }
+                        var num = r.count
+                        var datas = r.data
+                        // var noMesgs = window.localStorage.setItem('noMesg', num)
+                        // if (num !== noMesgs && !$.isEmptyObject(datas)) {
+                        if (!$.isEmptyObject(datas) && datas !=="") {
+                            var notify = new Notification(datas.title,{
+                                icon: '../images/t3_new.jpg',
+                                body: datas.content
+                            })
+                            // 点击时桌面消息时触发
+                            notify.onclick = () => {
+                                if (r.data.isRead == 0) {
+                                   toReaded(r.data.id, r.data.msg_type, r.data.link)
+                                }
+                            }
+                        }
+                        window.localStorage.setItem('noMesg', num)
+                    },
+                    error: function () {
+                        clearInterval(msgTimer)
+                    }
+                })
+            }, 300000)
+        } else {
+            Notification.requestPermission()
+        }
+    })
+}
 
 //查询用户信息,响应页面登录信息
 var logic = function(data,num){
@@ -487,7 +554,9 @@ var logic = function(data,num){
 			infoListCss();
 			commonMouseEvent();
             message.init()
-		}catch(e){}
+            checkCounts()
+            initIndexMsgList()
+		}catch(e){ console.log(e) }
 	}
 }
 
@@ -692,6 +761,8 @@ var signout = function(){
 				getNewShareId(mynum,true);*/
 			}
             window.localStorage.removeItem('bus-key-group-SCOPE')
+            window.localStorage.removeItem('noMesg')
+            clearInterval(msgTimer)
 		}
 	})
 }
@@ -796,6 +867,8 @@ var haslogin = function(num,kyorpn,url){
 				infoListCss();
 				commonMouseEvent();
                 message.init()
+                checkCounts()
+                initIndexMsgList()
 			}catch(e){}
 		}
 		else{
@@ -806,6 +879,7 @@ var haslogin = function(num,kyorpn,url){
 			if (nosess!=null && (!loginflag)){
 			    openLoginDig();
 			}
+            window.localStorage.setItem('noMesg', 0)
 		}
 		getNewShareId(num,true);
 	})

+ 4 - 4
src/web/staticres/js/message.js

@@ -140,17 +140,17 @@ function Message() {
         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+'\',\''+lasts.msgLogId+'\')"><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>'
+                temp += '<div id="firsted" class="m-li" onclick="linked(\''+lasts.id+'\',\''+lasts.link+'\',\''+lasts.isRead+'\',\''+lasts.msg_type+'\',\''+lasts.msgLogId+'\')"><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, 'nor')+'</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+'\',\''+lasts.msgLogId+'\')"><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>'
+                temp += '<div id="firsted" class="m-li" onclick="linked(\''+lasts.id+'\',\''+lasts.link+'\',\''+lasts.isRead+'\',\''+lasts.msg_type+'\',\''+lasts.msgLogId+'\')"><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, 'nor')+'</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+'\',\''+lists[i].msgLogId+'\')"><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>'
+                    temp += '<div class="m-li" onclick="linked(\''+lists[i].id+'\',\''+lists[i].link+'\',\''+lists[i].isRead+'\',\''+lists[i].msg_type+'\',\''+lists[i].msgLogId+'\')"><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, 'nor')+'</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+'\',\''+lists[i].msgLogId+'\')"><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>'
+                    temp += '<div class="m-li" onclick="linked(\''+lists[i].id+'\',\''+lists[i].link+'\',\''+lists[i].isRead+'\',\''+lists[i].msg_type+'\',\''+lists[i].msgLogId+'\')"><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, 'nor')+'</span></div><p>'+lists[i].content+'</p></div></div></div>'
                 }
             }
         }

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

@@ -0,0 +1,142 @@
+var temp = '<div class="list-msg" v-if="lists.length"><div class="l-msg"><div class="words" v-for="item in lists" :key="item.id"><i v-show="item.isRead == 0"></i><h3 :class="{isActive: item.isRead == 1}">@@item.msg_type@@</h3><span @click="titleGoto(item)">@@item.title@@</span><p>@@item.createtime@@</p></div></div><img @click="gotoUrl" class="r-msg" src="/images/pc/msg-arrow.png"></div>'
+
+var vmMesg = new Vue({
+  // el: '#vue-message-index-pc',
+  delimiters: ['@@', '@@'],
+  template: temp,
+  data: function () {
+    return {
+      el: '#vue-message-index-pc',
+      lists: [],
+      timer: null
+    }
+  },
+  mounted: function () {
+    this.getList()
+    // this.checkCounts()
+  },
+  methods: {
+    getList() {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jymessageCenter/latestNews',
+        success:function (res) {
+          if (res.data) {
+            res.data.forEach(v => {
+              v.msg_type = _this.msgType(v.msg_type)
+              v.createtime = dateMatter(v.createtime)
+            });
+            _this.lists = res.data
+            // _this.lists = []
+            if (_this.lists.length == 0) {
+              window.localStorage.setItem('noMesg', 0)
+            } else {
+              window.localStorage.setItem('noMesg', _this.lists.length)
+            }
+            // window.localStorage.setItem('noMesg', 0)
+          } else {
+            window.localStorage.setItem('noMesg', 0)
+          }
+        },
+        error:function () {
+          window.localStorage.setItem('noMesg', 0)
+        }
+      })
+    },
+    readed(ids, type, url) {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url:'/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success:function () {
+          if (url) {
+            location.href = url
+          } else {
+            _this.getList()
+          }
+        }
+      })
+    },
+    titleGoto(item) {
+      if (item.isRead == 0) {
+        this.readed(item.id, item.msg_type, item.link)
+      } else {
+        if (item.link) {
+          location.href = item.link
+        }
+      }
+    },
+    checkCounts() {
+      const _this = this
+      Notification.requestPermission(function(status) {
+        console.info(status, '----------')
+        if(status === 'granted'){
+          clearInterval(_this.timer)
+          _this.timer = setInterval(function () {
+            $.ajax({
+              type: 'POST',
+              url: '/jymessageCenter/lastNewMessage?t=' + Date.now(),
+              success: function (r) {
+                var num = r.count
+                var isMsg = window.localStorage.getItem('noMesg')
+                if (num !== Number(isMsg)) {
+                  var datas = r.data
+                  var notify = new Notification(datas.title,{
+                      icon: '../images/t3_new.jpg',
+                      body: datas.content
+                  })
+                  // 点击时桌面消息时触发
+                  notify.onclick = () => {
+                    if (datas.link) {
+                      location.href = datas.link
+                    } else {
+                      return
+                    }
+                  }
+                  localStorage.setItem('noMesg', num)
+                }
+              },
+              error: function () {
+                clearInterval(_this.timer)
+              }
+            })
+          }, 3000)
+        } else {
+            Notification.requestPermission()
+        }
+      })
+    },
+    gotoUrl() {
+      location.href = '/swordfish/frontPage/messageCenter/sess/index'
+    },
+    msgType(val) {
+      const obj = {
+        '1': '活动优惠',
+        '2': '服务通知',
+        '3': '订阅消息',
+        '4': '项目动态 ',
+        '5': '企业动态',
+        '6': '分析报告 ',
+        '7': '系统通知',
+      }
+      return obj[val]
+    }
+  }
+})
+
+function initIndexMsgList () {
+  try {
+    var el = vmMesg._data.el
+    var $el = $(el)
+    if ($el.length > 0) {
+      vmMesg.$mount(el)
+    }
+  } catch (error) {
+    console.log(error)
+  }
+}

+ 99 - 28
src/web/staticres/pccss/index.css

@@ -48,17 +48,21 @@
   height: auto;
   min-width: 1200px;
   min-height: 100vh;
-  background: url(/images/pc/banner@2x.jpg) center 0px no-repeat, url(/images/pc/bgTwo.jpg) no-repeat center 710px;
-  background-size: 1920px auto;
   position: relative;
-  
 }
+#index .jy-search-fadeInUp-top {
+  height: 453px;
+  background: url(/images/pc/banner.png) no-repeat center center;
+  background-size: cover;
 
+}
 #index .title {
+  line-height: 49px;
   color: #fff;
   font-size: 42px;
   text-align: center;
-  padding-top: 150px;
+  padding-top: 120px;
+  letter-spacing: 3px;
 }
 
 #index .search{
@@ -66,7 +70,7 @@
   position: relative;
 }
 #index .search form{
-  padding-top: 36px;
+  padding-top: 24px;
   text-align: center;
   position: relative;
 }
@@ -131,21 +135,21 @@ font-size: 14px;
 #index .search .btn {
   position: absolute;
   right: 50%;
-  top: 36px;
+  top: 24px;
   margin-right: -310px;
-    width: 64px;
-    height: 42px;
-    border-radius: 0 21px 21px 0;
-    border: none;
-    background:#2CB7CA url(/images/pc/index-searchicon.png) center center no-repeat;
-    background-size: 20px 20px;
-    cursor: pointer;
+  width: 64px;
+  height: 42px;
+  border-radius: 0 21px 21px 0;
+  border: none;
+  background:#2CB7CA url(/images/pc/index-searchicon.png) center center no-repeat;
+  background-size: 20px 20px;
+  cursor: pointer;
 }
 #index .search .tips{
   display: inline-block;
   width: 620px;
   text-align: left;
-  margin-top: 20px;
+  margin-top: 14px;
   font-size: 14px;
   color: rgba(255, 255, 255, 0.8);
   position: relative;
@@ -177,14 +181,14 @@ font-size: 14px;
 #index .projectList{
   display: flex;
   justify-content: center;
-  margin-top: 108px;
+  margin-top: 48px;
 }
 #index .projectList ul{
   display: flex;
   background: #fff;
   box-shadow: 0px 0px 28px 0px rgba(0,0,0,0.08); 
   width: 1200px;
-  height: 112px;
+  height: 96px;
   border-radius: 6px;
 }
 
@@ -225,11 +229,18 @@ font-size: 14px;
 #index .projectList ul li:hover p{
   color: #2CB7CA;
 }
-
+#index .jy-banner-or-area {
+  height: 820px;
+  background: url(/images/pc/bgTwo.jpg) no-repeat center bottom;
+  background-size: cover;
+}
+#index .jy-banner-or-area-bg {
+  height: 780px;
+}
 #index .jy-banner{
   width: 1200px;
   margin: 0 auto;
-  margin-top: 56px;
+  margin-top: 24px;
   display: flex;
   justify-content: space-between;
 }
@@ -264,7 +275,7 @@ font-size: 14px;
 
 #index .jy-area{
   width: 1200px;
-  margin: 58px auto 0;
+  margin: 34px auto 0;
 }
 #index .jy-area .tab-header{
   display: flex;
@@ -296,10 +307,10 @@ font-size: 14px;
   color: #2CB7CA;
 }
 #index .jy-area .tab-content{
-  height: 450px;
+  height: 442px;
   background-color: #fff;
   border-radius: 6px;
-  margin-top: 40px;
+  margin-top: 26px;
   padding: 24px 4px;
 }
 #index .jy-area .tab-content .tab-content-area{
@@ -364,10 +375,10 @@ font-size: 14px;
 }
 
 #index .newNotice{
-  margin-top: 80px;
   width: 100%;
-  height: 580px;
+  /* height: 592px; */
   background: #fff;
+  padding: 56px 0 64px 0;
 }
 
 #index .newNotice .newNotice-content,#index .newNotice .newNotice-header{
@@ -378,7 +389,7 @@ font-size: 14px;
   font-size: 24px;
   text-align: center;
   line-height: 36px;
-  padding-top: 56px;
+  /* padding-top: 56px; */
 }
 #index .newNotice .newNotice-header{
   display: flex;
@@ -475,7 +486,8 @@ font-size: 14px;
   width: 100%;
   height: 600px;
   background: url(/images/pc/zixun-bg.jpg) no-repeat center center;
-  background-size: 1920px auto;
+  /* background-size: 1920px auto; */
+  background-size: cover;
 }
 #index .newLatest h3{
   font-size: 24px;
@@ -635,13 +647,13 @@ font-size: 14px;
 }
 .jy-advantage .jy-advantage-content{
   width: 1200px;
-  margin: 0 auto 100px;
+  margin: 0 auto 80px;
   background: #fff;
 }
 .jy-advantage .jy-advantage-content ul{
   display: flex;
   justify-content: space-between;
-  padding-top: 100px;
+  padding-top: 80px;
 }
 .jy-advantage .jy-advantage-content ul li{
   width: 280px;
@@ -747,7 +759,7 @@ font-size: 14px;
 .jy-partners{
   width: 1204px;
   height: 450px;
-  margin: 0 auto 70px;
+  margin: 0 auto 40px;
 }
 .jy-partners h3{
   font-size: 24px;
@@ -1179,3 +1191,62 @@ body{
     color: #1d1d1d;
     background-color: #ececec;
 }
+#index .list-msg {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  width: 1200px;
+  height: 80px;
+  margin: auto;
+  border-radius: 8px;
+  border: 1px solid #2CB7CA;
+  margin-top: 28px;
+  padding: 0 16px;
+}
+#index .noActive {
+  margin-top: 56px;
+}
+#index .list-msg .l-msg .words {
+  display: flex;
+  flex-direction: initial;
+  align-items: center;
+}
+#index .list-msg .l-msg .words:nth-child(2) {
+  margin-top: 8px;
+}
+#index .list-msg .r-msg {
+  width: 20px;
+  height: 20px;
+  cursor: pointer;
+}
+#index .list-msg .l-msg .words i {
+  width: 6px;
+  height: 6px;
+  background: #FF3A20;
+  border-radius: 50%;
+  margin-right: 9px;
+}
+#index .list-msg .l-msg .words h3 {
+  font-size: 16px;
+  font-weight: bold;
+  color: #2CB7CA;
+  line-height: 24px;
+}
+#index .list-msg .l-msg .words span {
+  font-size: 14px;
+  color: #1D1D1D;
+  line-height: 22px;
+  margin: 0 16px;
+}
+#index .list-msg .l-msg .words span:hover {
+  color: #2CB7CA;
+  cursor: pointer;
+}
+#index .list-msg .l-msg .words p {
+  font-size: 12px;
+  color: #999999;
+  line-height: 18px;
+}
+#index .list-msg .l-msg .words .isActive {
+  margin-left: 15px;
+}

+ 6 - 0
src/web/staticres/public-pc/css/header-nav.css

@@ -367,6 +367,12 @@
     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(1) {
+    max-width: 200px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
 #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;

+ 1 - 1
src/web/staticres/public-pc/js/header-nav.js

@@ -94,7 +94,7 @@ function trySelectNav (name) {
 })();
 function docScroll(e){
   var $href = window.location.href;
-  var opa = $(document).scrollTop() / 150
+  var opa = $(document).scrollTop() / 120
   var curTheme =$("#public-nav").attr('data-theme')
   if(opa >= 1){
     setNavTheme('light')

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

@@ -43,6 +43,7 @@
                   <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 v-loading="loading">
                 <div
                   class="tips tab-tips"
                   v-for="(ite, indx) in tabsList.lists"
@@ -61,6 +62,7 @@
                       <p>{ite.content}</p>
                   </div>
                 </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

+ 125 - 106
src/web/templates/pc/index.html

@@ -140,132 +140,139 @@
 	<body>
 		{{include "/common/pchead.html"}}
 		<section id="index">
-			<h3 class="title">全国招标信息免费看,不遮挡</h3>
-			<div class="search">
-				<form method="post" action="/jylab/supsearch/index.html" id="zbIndex" name="zbIndex">
-					<input class="ser" autocomplete="off"  type="text" name="keywords" placeholder="请输入您想要查询的招标信息,多个关键词用空格隔开" id="keywords" value="" />
-          <input type="hidden" name="searchvalue">
-          <input type="hidden">
-					<input class="btn" type="button" onclick="zbSeatch('zbIndex')" />
-				</form>
-        <div class="index_search_thikn">
+      <div class="jy-search-fadeInUp-top">
+        <h3 class="title">全国招标信息免费看,不遮挡</h3>
+        <div class="search">
+          <form method="post" action="/jylab/supsearch/index.html" id="zbIndex" name="zbIndex">
+            <input class="ser" autocomplete="off"  type="text" name="keywords" placeholder="请输入您想要查询的招标信息,多个关键词用空格隔开" id="keywords" value="" />
+            <input type="hidden" name="searchvalue">
+            <input type="hidden">
+            <input class="btn" type="button" onclick="zbSeatch('zbIndex')" />
+          </form>
+          <div class="index_search_thikn">
+            <ul>
+            </ul>
+          </div>
+          <div class="tips">
+            <span class="active spa1">招标搜索</span>
+            <span class="spa1">企业搜索</span>
+            <span id="buyUnits" class="cai-gou">采购单位搜索</span>
+            <i></i>
+          </div>
+          <div class="pre-search-list" style="display: none;"></div>
+      </div>
+
+        <div class="projectList CfadeInUp">
           <ul>
+            <li>
+              <a href="">
+                <span><img src="/images/pc/kecheng1.png" alt="" /></span>
+                <p>大会员</p>
+              </a>
+            </li>
           </ul>
         </div>
-        <div class="tips">
-          <span class="active spa1">招标搜索</span>
-          <span class="spa1">企业搜索</span>
-          <span id="buyUnits" class="cai-gou">采购单位搜索</span>
-          <i></i>
-        </div>
-        <div class="pre-search-list" style="display: none;"></div>
-		</div>
-
-      <div class="projectList CfadeInUp">
-        <ul>
-          <li>
-            <a href="">
-              <span><img src="/images/pc/kecheng1.png" alt="" /></span>
-              <p>大会员</p>
-            </a>
-          </li>
-        </ul>
       </div>
+      <!-- 消息展示 -->
+      <div id="vue-message-index-pc"></div>
+      <div class="jy-banner-or-area">
+        <div class="jy-banner-or-area-bg">
+          <!-- 剑鱼广告位轮播 -->
+          <div class="jy-banner CfadeInUp">
+            <div class="jy-banner-l" id="jy-pc-index-leftad">
+              <div  class="carousel slide center-block" id="slidershow" data-ride="carousel">
+                <div class="carousel-inner" role="listbox">
+                </div>
+                <ol class="carousel-indicators"></ol>
+              </div>
+            </div>
+            <div class="jy-banner-r"  id="jy-pc-index-rightad">
+              <div  class="carousel-one slide center-block" id="slidershow1" data-ride="carousel">
+                <div class="carousel-inner" role="listbox">
 
-      <!-- 剑鱼广告位轮播 -->
-      <div class="jy-banner CfadeInUp">
-        <div class="jy-banner-l" id="jy-pc-index-leftad">
-          <div  class="carousel slide center-block" id="slidershow" data-ride="carousel">
-            <div class="carousel-inner" role="listbox">
+                </div>
+                <ol class="carousel-indicators">
+                </ol>
+              </div>
             </div>
-            <ol class="carousel-indicators"></ol>
           </div>
-        </div>
-        <div class="jy-banner-r"  id="jy-pc-index-rightad">
-          <div  class="carousel-one slide center-block" id="slidershow1" data-ride="carousel">
-            <div class="carousel-inner" role="listbox">
 
+          <!-- 剑鱼区域链接 -->
+          <div class="nav-tab jy-area">
+            <div class="tab-header CfadeInUp">
+              <span class="active">按地域</span>
+              <span>按信息类型</span>
+              <span>热门招标</span>
+              <i></i>
             </div>
-            <ol class="carousel-indicators">
-						</ol>
-          </div>
-        </div>
-      </div>
+            <div class="tab-content CfadeInUp">
+              <div class="tab-content-area">
+                <ul>
+                  <li class="zxs">
+                    {{range $i, $v := .T.labUrl_1}}
+                        {{range $y, $x := $v}}
+                          {{if lt (len $x) 3}}
+                            {{range $yi, $xi := $x}}
+                              {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{ $xi.city }}</a>{{end}}
+                            {{end}}
+                          {{end}}
 
-      <!-- 剑鱼区域链接 -->
-      <div class="nav-tab jy-area">
-        <div class="tab-header CfadeInUp">
-           <span class="active">按地域</span>
-           <span>按信息类型</span>
-           <span>热门招标</span>
-           <i></i>
-        </div>
-        <div class="tab-content CfadeInUp">
-           <div class="tab-content-area">
-             <ul>
-              <li class="zxs">
-                {{range $i, $v := .T.labUrl_1}}
-                    {{range $y, $x := $v}}
-                      {{if lt (len $x) 3}}
-                        {{range $yi, $xi := $x}}
-                          {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{ $xi.city }}</a>{{end}}
-                        {{end}}
                       {{end}}
+                    {{end}}
+                  </li>
+                    {{range $i, $v := .T.labUrl_1}}
+                          {{range $y, $x := $v}}
+                              {{if gt (len $x) 2}}
+                                <li class="provice">
+                                  {{range $yi, $xi := $x}}
+                                      {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{ $xi.city }}</a>
+                                      <div>
+                                      {{else}}
+                                            <span><a href="{{$xi.url}}" target="_blank">{{$xi.city}}</a></span>
+                                      {{end}}
 
-                  {{end}}
-                {{end}}
-              </li>
-                {{range $i, $v := .T.labUrl_1}}
-                      {{range $y, $x := $v}}
-                          {{if gt (len $x) 2}}
-                            <li class="provice">
-                              {{range $yi, $xi := $x}}
-                                  {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{ $xi.city }}</a>
-                                  <div>
-                                  {{else}}
-                                        <span><a href="{{$xi.url}}" target="_blank">{{$xi.city}}</a></span>
                                   {{end}}
-
+                                </div></li>
                               {{end}}
-                            </div></li>
                           {{end}}
-                      {{end}}
-                {{end}}
+                    {{end}}
 
-             </ul>
-           </div>
-           <div class="tab-content-area">
-            <ul>
-              {{range $i, $v := .T.labUrl_2}}
-              <li class="provice">
-                {{range $y, $x := $v}}
-                   {{range $yi, $xi := $x}}
-                      {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a>
-                      <div>
-                      {{else}}
-                      <span><a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a></span>
+                </ul>
+              </div>
+              <div class="tab-content-area">
+                <ul>
+                  {{range $i, $v := .T.labUrl_2}}
+                  <li class="provice">
+                    {{range $y, $x := $v}}
+                      {{range $yi, $xi := $x}}
+                          {{if eq $yi 0}}<a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a>
+                          <div>
+                          {{else}}
+                          <span><a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a></span>
+                          {{end}}
                       {{end}}
-                   {{end}}
-                {{end}}
-              </div></li>
-              {{end}}
+                    {{end}}
+                  </div></li>
+                  {{end}}
 
-            </ul>
-          </div>
-          <div class="tab-content-area">
-            <ul>
-              {{range $i, $v := .T.labUrl_3}}
-               <li class="provice industry">
-                  {{range $y, $x := $v}}
-                  <a href="javascript:;" >{{$y}}</a><div>
-                     {{range $yi, $xi := $x}}
-                        <span><a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a></span>
-                     {{end}}
+                </ul>
+              </div>
+              <div class="tab-content-area">
+                <ul>
+                  {{range $i, $v := .T.labUrl_3}}
+                  <li class="provice industry">
+                      {{range $y, $x := $v}}
+                      <a href="javascript:;" >{{$y}}</a><div>
+                        {{range $yi, $xi := $x}}
+                            <span><a href="{{$xi.url}}" target="_blank">{{$xi.key}}</a></span>
+                        {{end}}
+                      {{end}}
+                    </div></li>
                   {{end}}
-                </div></li>
-              {{end}}
 
-            </ul>
+                </ul>
+              </div>
+            </div>
           </div>
         </div>
       </div>
@@ -713,7 +720,9 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/selector/js/static-data.js?v={{Msg "seo" "version"}}'></script>
 <script src="//cdn-common.jianyu360.com/cdn/lib/vue/2.6.14/vue.min.js"></script>
 <script src="//cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.7/lib/index.js"></script>
+<script src='{{Msg "seo" "cdn"}}/js/dateFunc.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/js/pc-collect-user-info.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/js/pc-message-index.js?v={{Msg "seo" "version"}}'></script>
 <script>
 var visitedLinks = {
   init: function () {
@@ -1088,6 +1097,16 @@ $('.carousel-one').carousel({
     interval: 3000
 })
 //最新公告信息
+// var noMesg = window.localStorage.getItem('noMesg')
+// console.log(noMesg, '===============')
+// if (noMesg == 0 || noMesg == undefined || noMesg == null) {
+//   $('.jy-banner').css('marginTop', '56px')
+//   $(".newNotice").css('marginTop', '192px')
+// } else {
+//   $('.jy-banner').css('marginTop', '28px')
+//   $(".newNotice").css('marginTop', '112px')
+// }
+
 $(".newNotice .newNotice-header span").on('click', function () {
 
   $(".newNotice .newNotice-header span").removeClass('active')

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

@@ -50,6 +50,7 @@
 <link href='{{Msg "seo" "cdn"}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
 <link href='{{Msg "seo" "cdn"}}/common-module/collection/css/public.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
 <link href='{{Msg "seo" "cdn"}}/common-module/ent-search/ent-search-template.prefixer.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
+<link href='{{Msg "seo" "cdn"}}/common-module/messageCenter/css/mesg-temp.css?v={{Msg "seo" "version"}}' rel="stylesheet"/>
 
 
 
@@ -673,6 +674,8 @@
                 </a>
             </div>
         </div>
+				<!-- 消息展示 -->
+				<div id="vue-message-index-app"></div>
         <!-- 最新标讯 -->
         <div class="home_data">
             <h3 class="data_nav">最新标讯</h3>
@@ -973,6 +976,7 @@
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/cate-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/ent-search/ent-search-template.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Msg "seo" "cdn"}}/common-module/messageCenter/js/message-template-index.js?v={{Msg "seo" "version"}}'></script>
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/wxSupersearch.js?v={{Msg "seo" "version"}}"></script>
 <script>
   {{$s:=(Ad "jy-wx-sharepolitely-float" -1)}}