ソースを参照

Merge branch 'dev2.8.5' of http://192.168.3.207:10080/qmx/jy into dev2.8.5

wangkaiyue 5 年 前
コミット
4084cf0605
46 ファイル変更1398 行追加491 行削除
  1. 0 4
      src/jfw/front/shorturl.go
  2. 0 12
      src/jfw/front/vipsubscribe.go
  3. 0 30
      src/jfw/modules/app/src/app/front/myorder.go
  4. 8 0
      src/jfw/modules/app/src/app/front/shorturl.go
  5. 1 1
      src/jfw/modules/app/src/app/front/vipsubscribe.go
  6. 10 1
      src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_update.css
  7. 3 3
      src/jfw/modules/app/src/web/templates/dataExport/dataExport_toMyOrder.html
  8. 2 2
      src/jfw/modules/app/src/web/templates/me/index.html
  9. 11 3
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_area_upgrade.html
  10. 9 2
      src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry_upgrade.html
  11. 12 8
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html
  12. 104 113
      src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html
  13. 635 0
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_order_detail.html
  14. 81 108
      src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html
  15. 4 4
      src/jfw/modules/pushsubscribe/src/match/job/matchjob.go
  16. 2 2
      src/jfw/modules/pushsubscribe/src/match/matcher/vipmatch.go
  17. 1 1
      src/jfw/modules/pushsubscribe/src/public/entity.go
  18. 1 1
      src/jfw/modules/pushsubscribe/src/push/job/movejob.go
  19. 12 11
      src/jfw/modules/pushsubscribe/src/push/job/projectjob.go
  20. 3 0
      src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go
  21. 15 6
      src/jfw/modules/subscribepay/src/entity/subscribeVip.go
  22. 8 2
      src/jfw/modules/subscribepay/src/service/afterPay.go
  23. 1 1
      src/jfw/modules/subscribepay/src/service/vipSubscribePay.go
  24. 7 7
      src/jfw/modules/weixin/src/wx/wx.go
  25. 10 1
      src/web/staticres/vipsubscribe/css/vip_update.css
  26. 17 6
      src/web/staticres/vipsubscribe/js/additionWord.js
  27. 19 5
      src/web/staticres/vipsubscribe/js/exclusiveWord.js
  28. 3 1
      src/web/staticres/vipsubscribe/js/keyWord.js
  29. 149 63
      src/web/templates/weixin/email/bind_email.html
  30. 12 2
      src/web/templates/weixin/email/bind_success.html
  31. 2 1
      src/web/templates/weixin/email/unbind_email.html
  32. 53 33
      src/web/templates/weixin/historypush.html
  33. 14 0
      src/web/templates/weixin/my.html
  34. 4 2
      src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html
  35. 2 1
      src/web/templates/weixin/vipsubscribe/choose_industry_upgrade.html
  36. 27 11
      src/web/templates/weixin/vipsubscribe/edit_subscribe_success.html
  37. 10 7
      src/web/templates/weixin/vipsubscribe/keyWord.html
  38. 10 12
      src/web/templates/weixin/vipsubscribe/renew_notice.html
  39. 6 9
      src/web/templates/weixin/vipsubscribe/renew_pay.html
  40. 10 2
      src/web/templates/weixin/vipsubscribe/vip_index.html
  41. 1 1
      src/web/templates/weixin/vipsubscribe/vip_order_detail.html
  42. 1 0
      src/web/templates/weixin/vipsubscribe/vip_purchase.html
  43. 8 11
      src/web/templates/weixin/vipsubscribe/vip_upgrade.html
  44. 1 1
      src/web/templates/weixin/wxinfocontent.html
  45. 104 0
      src/web/templates/weixin/wxinfocontent_rec.html
  46. 5 0
      src/web/templates/weixin/wxkeyset/index.html

+ 0 - 4
src/jfw/front/shorturl.go

@@ -6,7 +6,6 @@ import (
 	"jfw/jyutil"
 	"jfw/public"
 	"jfw/wx"
-	"log"
 	"math/rand"
 	"net/url"
 	"qfw/util"
@@ -35,7 +34,6 @@ var Map_stype = map[string]bool{
 }
 
 func (s *Short) Article(stype, id string) error {
-	log.Println("into Article..")
 	//先判断是否有session
 	source := s.GetString("source")
 	aboutUrl := "/swordfish/about"
@@ -92,7 +90,6 @@ func (s *Short) Article(stype, id string) error {
 		data1, _ := mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid}, `{"_id":1}`)
 		userId = util.BsonIdToSId((*data1)["_id"])
 	}
-	log.Println("bm---", bm)
 	if bm {
 		//判断有没有取关,取关的话,跳转到关于剑鱼标讯页面
 		if ssOpenid != nil && ssOpenid != "" {
@@ -138,7 +135,6 @@ func (s *Short) Article(stype, id string) error {
 		if util.IntAll((*res)["i_vip_status"]) == 1 || util.IntAll((*res)["i_vip_status"]) == 2 {
 			isVip = true
 		}
-		log.Println("isVip:----", isVip)
 		s.T["isVip"] = isVip
 		mynickname, _ := s.GetSession("s_nickname").(string)
 		myavatar, _ := s.GetSession("s_avatar").(string)

+ 0 - 12
src/jfw/front/vipsubscribe.go

@@ -226,12 +226,6 @@ func (s *Subscribepay) SubmitEditSubFinish() {
 
 //升级订阅服务
 func (s *Subscribepay) ToUpgradePage() {
-	myopenid := util.ObjToString(s.GetSession("s_m_openid"))
-	mynickname, _ := s.Session().Get("s_nickname").(string)
-	myavatar, _ := s.Session().Get("s_avatar").(string)
-	s.T["nickname"] = mynickname
-	s.T["avatar"] = myavatar
-	s.T["openid"] = se.EncodeString(myopenid)
 	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
 	s.Render("/weixin/vipsubscribe/vip_upgrade.html")
 }
@@ -283,12 +277,6 @@ func (s *Subscribepay) RenewPage(sign string) {
 
 //服务续费(will:即将到期,exprie:已到期)
 func (s *Subscribepay) RenewPayPage() {
-	myopenid := util.ObjToString(s.GetSession("s_m_openid"))
-	mynickname, _ := s.Session().Get("s_nickname").(string)
-	myavatar, _ := s.Session().Get("s_avatar").(string)
-	s.T["nickname"] = mynickname
-	s.T["avatar"] = myavatar
-	s.T["openid"] = se.EncodeString(myopenid)
 	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
 	s.Render("/weixin/vipsubscribe/renew_pay.html")
 }

+ 0 - 30
src/jfw/modules/app/src/app/front/myorder.go

@@ -24,7 +24,6 @@ type MyOrder struct {
 	paySuccess    xweb.Mapper `xweb:"/jyapp/front/myorder/paySuccess/(\\w+)"`          //支付成功发票
 	deleteOrder   xweb.Mapper `xweb:"/jyapp/front/myorder/deleteOrder"`                //删除订单
 	getOneMore    xweb.Mapper `xweb:"/jyapp/front/myorder/getOneMore"`                 //获取额外一条数据
-	//	testPay       xweb.Mapper `xweb:"/jyapp/front/myorder/testPay"`                    //模拟去支付
 	//我的邮箱
 	myEmail    xweb.Mapper `xweb:"/jyapp/front/myorder/myEmail"`    //我的邮箱
 	setSuccess xweb.Mapper `xweb:"/jyapp/front/myorder/setSuccess"` //查询订单
@@ -46,35 +45,6 @@ var (
 	order_pageSize          = 10
 )
 
-/*
-func (m *MyOrder) TestPay() error {
-	userId := m.Session().Get("userId")
-	order_code := m.GetString("orderCode")
-	testBl := false
-	queryMap := map[string]interface{}{}
-	if userId != nil {
-		log.Println("usid:", userId)
-		queryMap["order_code"] = order_code
-		queryMap["user_id"] = userId
-		now := time.Now()
-		testBl = public.Mysql.Update(tableName_order, queryMap, map[string]interface{}{
-			"pay_money":    1 * 100,
-			"order_status": 1,
-			"pay_time":     util.FormatDate(&now, util.Date_Full_Layout),
-			"download_url": "download_url",
-			"service_time": util.FormatDate(&now, util.Date_Full_Layout),
-		})
-
-	} else {
-		log.Println("userid为空")
-	}
-	log.Println("-----------", testBl, "-------------")
-	m.ServeJson(map[string]interface{}{
-		"testBl": testBl,
-	})
-	return nil
-}
-*/
 func (m *MyOrder) GetOneMore() error {
 	defer util.Catch()
 	pageNum, _ := m.GetInteger("pageNum")

+ 8 - 0
src/jfw/modules/app/src/app/front/shorturl.go

@@ -38,6 +38,13 @@ func (s *Short) Article(stype, id string) error {
 	if b {
 		return s.Redirect("/jyapp/free/mob/err")
 	}
+	//判断用户是否是vip用户
+	isVip := false
+	vip_status, _ := mongodb.FindOne("user", bson.M{"_id": bson.ObjectIdHex(userId), "i_vip_status": bson.M{"$in": []int{1, 2}}}) //获取vip标志
+	if len(*vip_status) == 1 {
+		isVip = true
+	}
+	s.T["isVip"] = isVip
 	surl := s.GetString("url")
 	kds := s.GetString("keywords")
 	industry := s.GetString("industry")
@@ -48,6 +55,7 @@ func (s *Short) Article(stype, id string) error {
 	} else {
 		sid = sid_openid[0]
 	}
+
 	s.T["keywords"] = kds
 	var obj map[string]interface{}
 	obj = wxvisitD(sid, userId)

+ 1 - 1
src/jfw/modules/app/src/app/front/vipsubscribe.go

@@ -17,7 +17,7 @@ type Subscribepay struct {
 	toChooseArea      xweb.Mapper `xweb:"/jyapp/vipsubscribe/toChooseArea"`      //订阅收费地区筛选
 	toChooseIndustry  xweb.Mapper `xweb:"/jyapp/vipsubscribe/toChooseIndustry"`  //订阅收费行业筛选
 	toPaySuccessPage  xweb.Mapper `xweb:"/jyapp/vipsubscribe/toPaySuccessPage"`  //订阅支付完成页面
-	toOrderDetailPage xweb.Mapper `xweb:"/weixin/pay/toOrderDetailPage"`         //订阅收费支付订单详情页面
+	toOrderDetailPage xweb.Mapper `xweb:"/jyapp/vipsubscribe/toOrderDetailPage"` //订阅收费支付订单详情页面
 	toSetKeyWordPage  xweb.Mapper `xweb:"/jyapp/vipsubscribe/toSetKeyWordPage"`  //订阅收费设置关键词
 	toSetPage         xweb.Mapper `xweb:"/jyapp/vipsubscribe/toSetPage"`         //订阅收费设置
 	toSetInfoTypePage xweb.Mapper `xweb:"/jyapp/vipsubscribe/toSetInfoTypePage"` //订阅收费设置信息类型

+ 10 - 1
src/jfw/modules/app/src/web/staticres/jyapp/vipsubscribe/css/vip_update.css

@@ -532,7 +532,7 @@
   float: left;
   width: 5rem;
   height: 100%;
-  color: #686868;
+  color: #000;
   font-size: 0.28rem;
   text-align: right;
   overflow: hidden;
@@ -541,6 +541,15 @@
   background-color: transparent;
 }
 
+.vip_update .choose_condition .chooseList .choose_item a .info::placeholder,
+.vip_update .choose_condition .pay_mode .choose_item a .info::placeholder {
+  color: #000;
+}
+
+.choose_item input:disabled, .choose_item input[disabled]{
+  opacity: 1;
+}
+
 .vip_update .choose_condition .chooseList .choose_item a i.iconfont,
 .vip_update .choose_condition .pay_mode .choose_item a i.iconfont, .vip_renew .choose_condition .chooseList .choose_item a i.iconfont,
 .vip_renew .choose_condition .pay_mode .choose_item a i.iconfont {

+ 3 - 3
src/jfw/modules/app/src/web/templates/dataExport/dataExport_toMyOrder.html

@@ -459,7 +459,7 @@
 			function beforeJump(eid,isVipOrder){
 				setSessionStorage();
 				if (isVipOrder=="true"){
-					window.location.href="/weixin/pay/toOrderDetailPage?orderCode="+eid;
+					window.location.href="/jyapp/vipsubscribe/toOrderDetailPage?orderCode="+eid;
 				}else{
 					window.location.href="/jyapp/front/myOrder/toOrderDetail?orderCode="+eid;
 				}
@@ -786,14 +786,14 @@
 		        		pay_way="ali_app";
 		        	}
 				});
-				
+				var canpay=true;
 				//确认支付
 				$(".surePay").on("click", function() {
 					$(".loading_").show();
 					let isvip_order=$(".media").attr("isviporder");
 					//vip支付;
 					if (isvip_order=="true"){
-						var orderCode =$(e).attr("orderCode");
+						var orderCode =$(".media").attr("orderCode");
 						if(!canpay)return  
 		            	canpay=false;
 			            $.post("/subscribepay/vipsubscribe/orderToPay",{"orderCode":orderCode},function(r){

+ 2 - 2
src/jfw/modules/app/src/web/templates/me/index.html

@@ -384,9 +384,9 @@
 		$(".vip_").click(function(){
 			$.post("/subscribepay/orderListDetails/isVip?v="+nowTimestamp,{},function(data){
 				if (data.isvip){
-					window.location.href="/front/vipsubscribe/toSetPage";		//vip订阅入口  试用或正式vip
+					window.location.href="/jyapp/vipsubscribe/toSetPage";		//vip订阅入口  试用或正式vip
 				}else{
-					window.location.href="/front/vipsubscribe/introducePage";		//vip订阅入口  非vip
+					window.location.href="/jyapp/vipsubscribe/introducePage";		//vip订阅入口  非vip
 				}
 			})
 		})

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

@@ -13,7 +13,8 @@
     <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" href="/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="/jyapp/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}4">
-	{{include "/common/weixin.html"}}
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}"/>
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
 </head>
 <style type="text/css">
 	body,html {
@@ -21,6 +22,11 @@
 	}
 </style>
 <body>
+	<div class="app-layout-header">
+        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+        区域选择
+    </div>
+    <div class="app-layout-content-b">
     <div id="choose_area" >
         <div class="result">
             <!-- 首次购买 显示"已选择" -----  升级订阅显示"已新增" -->
@@ -387,10 +393,12 @@
             <a href="javascript:;">Z</a>
         </div>
     </div>
+    </div>
     <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
     <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
     <script src="/jyapp/vipsubscribe/js/mapJSON.js?v={{Msg "seo" "version"}}"></script>
     <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
     	//已购买
     	var buystr = "";
@@ -792,8 +800,8 @@
             	let areas = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
             	for(var province in areas){
             		if(province === "全国"){
-            			console.log("23123")
-              			$(".other").trigger("click");
+            			$(".other").prop("checked",true);
+              			AreaChoose.reset();
             		}
             	}
             }

+ 9 - 2
src/jfw/modules/app/src/web/templates/vipsubscribe/choose_industry_upgrade.html

@@ -11,8 +11,8 @@
         <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
         <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
         <link rel="stylesheet" href="/jyapp/vipsubscribe/css/choose_industry.css?v={{Msg "seo" "version"}}3">
-        {{include "/common/weixin.html"}}
-        
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}"/>
+	    <link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
     </head>
     <style type="text/css">
     	body,html {
@@ -20,6 +20,11 @@
 		}
     </style>
     <body>
+    	<div class="app-layout-header">
+	        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+	        行业选择
+	    </div>
+	    <div class="app-layout-content-b">
         <main class="choose_industry main">
             <div class="result">
                 <span class="label">已新增:</span>
@@ -247,10 +252,12 @@
                 </div>
             </div>
         </main>
+        </div>
         <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
         <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
         <script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
         <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+        <script src="/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
         <script>
            //
            // 点击导航跳转

+ 12 - 8
src/jfw/modules/app/src/web/templates/vipsubscribe/renew_notice.html

@@ -9,7 +9,8 @@
 		<link rel="stylesheet" href="/jyapp/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
 		<link rel="stylesheet" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
 		<link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_service_expire.css?v={{Msg "seo" "version"}}1">
-		{{include "/common/weixin.html"}}
+		<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}"/>
+    	<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
 	</head>
 	<style type="text/css">
 		body,html {
@@ -17,6 +18,11 @@
 		}
 	</style>
 	<body>
+		<div class="app-layout-header">
+	        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+	        VIP订阅
+	    </div>
+	    <div class="app-layout-content-b">
 		<div class="vip_service_expire layout_top-bottom">
 			<div class="service_expire_tip layou_top">
                 <div class="tip_title_box">
@@ -50,11 +56,13 @@
                 <button style="display: none;" class="renew_service" onclick="window.location.href='/jyapp/vipsubscribe/renewPayPage'">续费</button>
                 <button style="display: none;" class="free_service" onclick="window.location.href='/jyapp/swordfish/historypush'">使用免费订阅</button>
             </div>
+		</div>
 		</div>
 		<script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js"></script>
     	<!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
     	<script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     	<script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+		<script src="/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
 		<script type="text/javascript">
 			//
 			var orderId = {{.T.orderId}};
@@ -189,13 +197,9 @@
 					    	$(".date-span").text(dateHtml);
 					    }
 					    if(exprie === "will"){
-					    	let a = (endstime/1000) - (86400 * 3)
-					    	let b = nowTime/1000
-					    	if(b > a){
-					    		$(".renew_service").show();
-						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
-						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
-					    	}
+				    		$(".renew_service").show();
+					    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+					    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
 					    }else{
 					    	$(".renew_service").show();
 					    	$(".free_service").show();

+ 104 - 113
src/jfw/modules/app/src/web/templates/vipsubscribe/renew_pay.html

@@ -14,23 +14,29 @@
     <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}5">
-	{{include "/common/weixin.html"}}
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
 </head>
 <style type="text/css">
 	body,html {
 		height: 100%;
 	}
-	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
-	  	color: #686868;
-	}
 	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
 	    width: 100%;
-	    position: fixed;
+	    position: static;
 	    bottom: 0;
 	    left: 0;
 	}
+	::-webkit-input-placeholder{
+		color: #000;
+	}
 </style>
 <body class="no-touch">
+	<div class="app-layout-header">
+        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+        VIP订阅续费
+    </div>
+    <div class="app-layout-content-b">
     <div class="vip_renew">
         <div class="choose_condition">
              <!-- 正常点击vip首页续费进入显示下列提示 -->
@@ -64,7 +70,7 @@
                 <li class="choose_item select_cycle">
                     <a href="javascript:;">
                         <span class="label">延长订阅周期</span>
-                        <input type="text" value="" onfocus="this.blur();" placeholder="选择年、月" class="info choose_time">
+                        <input type="text" value="" disabled placeholder="选择年、月" class="info choose_time">
                         <!-- <span class="info choose_time">选择年、月</span> -->
                         <i class="iconfont icon-arrow choose_time"></i>
                     </a>
@@ -185,7 +191,7 @@
                                 <p><img src="/jyapp/vipsubscribe/image/weixin.png">微信支付</p>
                             </div>
                             <div class="weui-cell__hd">
-                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked />
+                                <input type="radio" class="weui-check paytypes" name="way" value="微信支付" id="wx" checked />
                                 <i class="weui-icon-checked"></i>
                             </div>
                         </label>
@@ -194,7 +200,7 @@
                                 <p><img src="/jyapp/vipsubscribe/image/zhifubao.png">支付宝支付</p>
                             </div>
                             <div class="weui-cell__hd">
-                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb" />
+                                <input type="radio" class="weui-check paytypes" name="way" value="支付宝支付" id="zfb" />
                                 <i class="weui-icon-checked"></i>
                             </div>
                         </label>
@@ -203,73 +209,12 @@
             </div>
         </div>
     </div>
+    </div>
     <script src="/vipsubscribe/js/jquery-2.1.4.js"></script>
     <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}4"></script>
     <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
     <script src="https://res.wx.qq.com/open/libs/weuijs/1.1.4/weui.min.js?v={{Msg "seo" "version"}}"></script>
-    <script type="text/javascript">
-    	//
-    	try{
-			var signature = {{.T.signature}};
-			var isConfigSuccess = true;
-			var id = {{.T._id}}
-			if(signature && signature.length == 4){
-			  	wx.config({
-			  	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
-			  	    appId: signature[0], // 必填,公众号的唯一标识
-			  	    timestamp:signature[1], // 必填,生成签名的时间戳
-			  	    nonceStr: signature[2], // 必填,生成签名的随机串
-			  	    signature: signature[3],// 必填,签名,见附录1
-			  	    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
-			  	});
-			  	wx.ready(function(){
-			  		if(!isConfigSuccess){
-			  			return;
-			  		}
-			  		wx.hideAllNonBaseMenuItem();
-			    });
-			  	wx.error(function(res){
-			  	    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
-			  		//alert(res);
-			  		isConfigSuccess = false;
-			  	});
-			}
-			//调用微信支付接口
-  			function onBridgeReady(res,ordercode){
-  			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
-		    		"appId": res["appId"],
-		          	"timeStamp": res["timestamp"],
-		          	"nonceStr": res["nonceStr"],
-		          	"package": res["prepayId"],
-		          	"signType": res["signType"],
-		         	"paySign": res["sign"]
-  				},
-  				function(r){
-				    if(r.err_msg == "get_brand_wcpay_request:ok"){
-						setTimeout(function(){
-							window.location.replace("/jyapp/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-						},500)
-					}	
-//					}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
-////	                	alert("开发环境【支付跳转完成】")
-//		                try{
-////		  					window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-////		                    window.location.reload();
-//		                }catch(e){
-//		                  alert(e)
-//		                }
-//	  				}else{
-//	                	weui.toast("系统异常,请稍微再试",{
-//	                  		duration: 2000,
-//	                  		className: 'custom-toast',
-//	                	});
-//	  				}
-  				});
-  			}   
-		}catch(e){
-		  console.log(e)
-		}
-    </script>
+    <script src="/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
     	$(function () {    
 			var isPageHide = false;   
@@ -292,6 +237,16 @@
 
         // 选择订阅周期
         $('.select_cycle > a').click(function () {
+        	if((nowUpgrade)>=36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
             $('#time_cycle').show(200);
         })
         // 选择支付方式
@@ -366,6 +321,16 @@
                 currentNum = currentNum <= data.numboxMin ? data.numboxMin : currentNum - data
                     .numboxStep;
             }
+            if((currentNum+nowUpgrade)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
             if (currentNum >= 10) {
             	$('.profit_tips').text("已选择"+currentNum+"个月,建议“按年订阅”更划算哦~");
                 $('.profit_tips').show();
@@ -406,8 +371,17 @@
 
        /* -------- 控制年份number_box的事件  点击1年 2年 3年触发的事件------- */
         $('#number_box_year').on('click', 'span', function (e) {
-            console.log(e.target.dataset.id)
             let id = e.target.dataset.id;
+            if((id*12+nowUpgrade)>36){
+            	var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
+		        weui.toast(overtimeWarning, {
+		            duration: 3000,
+		            className: 'custom-toast',
+		            callback: function() {
+		            }
+		        })
+		        return
+            }
             $('.profit_tips').hide()
             $('#number_box_month').removeClass('active');
             $(this).addClass('active').siblings().removeClass('active')
@@ -543,9 +517,12 @@
 	    	}else if(payType === "alipy"){
 	    		payHtml = "支付宝支付";
 	    	}
-	    	$('input:radio[name="way"]').val(payHtml);
-	    	$('input:radio[name="way"]').prop("checked", true);
-	    	$("#payType").text(payHtml);
+	    	$(".paytypes").each(function(){
+	    		if($(this).attr("value") === payHtml){
+	    			$(this).prop("checked", true);
+	    		}
+	    	});
+	    	$(".weixin_pay").text(payHtml);
 	    }
         
         //
@@ -629,14 +606,10 @@
 			    	$(".item_validity .label_for").text(dateHtml);
 			    }
 			    if(starts !== "" && ends !== ""){
-			    	let end = new Date(ends*1000).toLocaleDateString();
-			    	let endtime = end.split("/");
-			    	let endYear = Number(endtime[0]);
-			    	let endMonth = Number(endtime[1]);
-			    	let start = new Date(starts*1000).toLocaleDateString();
-			    	let starttime = start.split("/");
-			    	let startYear = Number(starttime[0]);
-			    	let startMonth = Number(starttime[1]);
+			    	let endYear = new Date(ends*1000).getFullYear();
+			    	let endMonth = new Date(ends*1000).getMonth()+1;
+			    	let startYear = new Date(starts*1000).getFullYear();
+			    	let startMonth = new Date(starts*1000).getMonth()+1;
 			    	let year = "";
 			    	let month = "";
 			    	if(endYear > startYear){
@@ -684,17 +657,13 @@
 		    }
         }, false);
         //
-        var nowDate = new Date(startTime).toLocaleDateString();
-		nowDate = nowDate.split("/");
-		var nowMonth = Number(nowDate[1]);
-		var nowYear = Number(nowDate[0]);
-		var nowDay = Number(nowDate[2]);
+		var nowMonth = new Date(startTime).getMonth()+1;
+		var nowYear = new Date(startTime).getFullYear();
+		var nowDay = new Date(startTime).getDate();
 		//
-		var endDate = new Date(endTime).toLocaleDateString();
-		endDate = endDate.split("/");
-		var endMonth = Number(endDate[1]);
-		var endYear = Number(endDate[0]);
-		var endDay = Number(endDate[2]);
+		var endMonth = new Date(endTime).getMonth()+1;
+		var endYear = new Date(endTime).getFullYear();
+		var endDay = new Date(endTime).getDate();
 		var nowUpgrade = 0;
 		if(endYear === nowYear){
 			if(endMonth === nowMonth){
@@ -773,7 +742,6 @@
 	    }
 	    //
 	    $(".save_renew").on("click", function(){
-	    	console.log(nowUpgrade)
 //	    	let times = $('.choose_item.select_cycle .info').attr('placeholder');
 	    	let times = $('.choose_item.select_cycle .info').val();
 	        if (times.match("月") !== null){
@@ -781,35 +749,41 @@
 	        }else if (times.match("年") !== null){
 	        	times = 12 * Number(times.replace("年",""));
 	        }
-	    	// 当续费时间 + 当前已经买的时间超过36个月,给出提醒
-	    	if(times > 36-nowUpgrade){
-	    		var overtimeWarning = `最长订阅周期不可超过3年<br />当前订阅周期:${nowUpgrade}个月`
-		        weui.toast(overtimeWarning, {
-		            duration: 3000,
-		            className: 'custom-toast',
-		            callback: function() {
-		   
-		            }
-		        })
-		        return
-	    	}
+	    	//
+	    	let payTypes = $(".weixin_pay").text();
+            let payType = "wx_app";
+            if(payTypes === "支付宝支付"){
+            	payType = "ali_app";
+            }
 	        $(".save_renew").attr("disabled","disabled");
 	    	var param = {
 	    		"area": JSON.stringify(area),
 	    		"industry": buyerclass.toString(),
 	    		"time": $('.choose_item.select_cycle .info').val(),
-	    		"payWay":"wx_js",
+	    		"payWay": payType,
 	    		"pay_source": "Renew",
 	    		"endtime": ends,
 	    	}
 	    	console.log(param)
-	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
-                if(r.success){
+	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder", param, function (r) {
+                if (r.success) {
+                    //唤起app支付
+                    try {
+                        if (pay_way == "wx_app") {
+                            JyObj.wxPay(r.data.res);
+                        } else {
+                            JyObj.aliPay(r.data.res)
+                        }
+                        //校验是否支付完成
+                        checkpay(r.data.code);
+                    } catch (e) {
+                        alert(e)
+                    }
                     clearSessionStorage();
-                    onBridgeReady(JSON.parse(r.data.res),r.data.code);
+                } else {
+                    $(".save_renew").removeAttr("disabled")
                 }
-                $(".save_renew").removeAttr("disabled");
-            })
+            });
 	    });
 	    
 	    //
@@ -820,7 +794,24 @@
 	    	sessionStorage.removeItem("renew_finally_price");
 	    	sessionStorage.removeItem("buyChecks");
 	    }
-	    
+	    //
+	    //校验是否支付
+	    var interval;
+	
+	    function checkpay(orderid) {
+	        if (interval) {
+	            clearInterval(interval);
+	        }
+	        interval = setInterval(function () {
+	            $.post("/jypay/isPaySuccess", {code: orderid}, function (r) {
+	                if (r.success) {
+	                    clearInterval(interval);
+	                    clearSessionStorage();
+	                    window.location.replace("/jyapp/vipsubscribe/toPaySuccessPage?orderCode=" + orderid);
+	                }
+	            });
+	        }, 2000)
+	    }
 	    //
 	    function checkObj(obj) {
 		    //检验数组

+ 635 - 0
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_order_detail.html

@@ -0,0 +1,635 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>我的订单</title>
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/weui/1.1.2/style/weui.css" />
+    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/vip_order_detail.css?v={{Msg "seo" "version"}}1">
+	
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}" />
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}" />   
+	<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/jyapp/dataExport/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+</head>
+<style>
+	.person > p >span , .unit > p >span{
+		margin-bottom: .12rem;
+	}
+	
+	.jymobile-setting-dialog {
+  font-size: .32rem;
+}
+
+.jymobile-setting-dialog .weui-dialog__hd {
+  padding: 0;
+  height: 0.82rem;
+  line-height: .82rem;
+  text-align: center;
+  background-color: #F5F4F9;
+}
+
+.jymobile-setting-dialog .weui-dialog__hd .weui-dialog__title {
+  font-size: .36rem;
+}
+
+.jymobile-setting-dialog .weui-dialog__bd {
+  padding: .37rem .1rem .38rem;
+  color: #1D1D1D;
+  font-size: .32rem;
+  text-align: center;
+}
+
+.jymobile-setting-dialog .weui-dialog__ft {
+  display: flex;
+  padding: 0 0 .38rem 0;
+  text-align: center;
+  justify-content: space-around;
+}
+
+.jymobile-setting-dialog .weui-dialog__ft:after {
+  border: none;
+}
+
+.jymobile-setting-dialog .weui-dialog__ft .weui-dialog__btn {
+  display: flex;
+  flex: none;
+  align-items: center;
+  justify-content: center;
+  width: 1.72rem;
+  height: .72rem;
+  color: #fff;
+  font-size: .32rem;
+  vertical-align: center;
+}
+
+.jymobile-setting-dialog .weui-dialog__ft .weui-dialog__btn_primary {
+  margin: 0;
+  margin-left: .3rem;
+  background-color: #2CB7CA;
+}
+
+.jymobile-setting-dialog .weui-dialog__ft .weui-dialog__btn_default {
+  margin: 0;
+  margin-right: .3rem;
+  background-color: #BFBFC3;
+}
+.cancel_time{
+	font-size: 16px;
+	margin-left: 20px;
+}
+
+.pay_way .box {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    background: #fff;
+    height: 4.9rem;
+    z-index: 9999;
+}
+.pay_way .box .box_hd {
+    padding: 0 .4rem;
+    height: .88rem;
+    line-height: .88rem;
+    background: #F4F4F9;
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: flex;
+    -webkit-box-pack: justify;
+    -ms-flex-pack: justify;
+    justify-content: space-between;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    align-items: center;
+    border-bottom: 1px solid #eee;
+}
+
+ .pay_way .box .box_bd p {
+    font-size: .32rem;
+}
+.pay_way .box .box_bd .zfb_label{
+	margin-bottom:.38rem;
+}
+ .pay_way .box .box_hd>h3 {
+    color: #1D1D1D;
+    font-size: .32rem;
+}
+.pay_way .box .box_hd .cancel {
+    color: #2cb7ca;
+    font-size: .32rem;
+}
+.pay_way .box .box_bd img {
+    width: .8rem;
+    height: .8rem;
+    margin-right: .3rem;
+}
+.pay_way .box .box_bd .wx_label, .pay_way .box .box_bd .zfb_label {
+    margin-top: .38rem;
+    padding: 0 .3rem;
+}
+.zfje{
+	font-size: .32rem;
+	margin: 0 auto;
+	
+}
+.money_pay{
+    font-size: .50rem;
+    text-align: center;
+    height: 1rem;
+    line-height: 1rem;
+}
+.surePay{
+	font-size: .40rem;
+    text-align: center;
+    height: 1rem;
+    line-height: 1rem;
+    background-color: #2CB7CA;
+    color: #fff;
+    margin-top:  0.28rem;
+}
+
+.weui-cells {
+    margin-top: 0px !important;
+    background-color: 
+	#fff;
+	line-height: 1.47058824;
+	font-size: 17px;
+	overflow: hidden;
+	position: relative;
+}
+
+.weui-cell::before {
+    content: " ";
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 0;
+    height: 1px;
+    border-top: 0px solid #e5e5e5 !important;
+    border-top-color: 
+    rgb(229, 229, 229);
+    border-top-style: solid;
+    border-top-width: 5px;
+	color:#e5e5e5;
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0;
+    -webkit-transform: scaleY(.5);
+    transform: scaleY(.5);
+    left: 15px;
+    z-index: 2;
+}
+</style>
+<body>
+ 	<div class="app-layout-header">
+		<span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+		订单详情
+	</div>
+	<div class="app-layout-content-b">
+	<div class="vip_order_detail">
+	        <main class="main">
+	            <div class="lists">
+	                <div class="card">
+	                    <div class="card-header">
+	                        <img src="/vipsubscribe/image/line.png?v={{Msg "seo" "version"}}">
+	                        <h3 id="pageTitle"></h3>
+	                        <!-- <h3>待付款</h3> -->
+	                        <img src="/vipsubscribe/image/line.png?v={{Msg "seo" "version"}}">
+	                    </div>
+	                    <div class="card-content">
+	                        <p class="text ellipsis">订单编号:<span class="orderCode"></span></p>
+	                        <p class="text ellipsis">下单时间:<span class="prepayTime"></span></p>
+	                        <!-- 订单状态为已完成时显示支付时间、支付方式和订单号,状态为待付款时不显示 -->
+	                        <p class="text ellipsis line_paytime" id="paytime" style="display:none">支付时间:<span class="payTime"></span></p>
+	                        <p class="text ellipsis line_payway"  style="display:none">支付方式:<span class="payWay"></span></p>
+	                        <p class="text ellipsis line_transaction"  style="display:none">支付单号:<span class="transaction_id"></span></p>
+	                        <p class="text ellipsis">产品类型:<span class="productType"></span></p>
+	                        <p class="text ellipsis" id="price">价格:¥<span class="price"></span></p>
+	                        <!----- 未开发票状态 ----->
+	                        <p class="text ellipsis invoice">发票:<a class="invoicing" style="display:none">开发票</a></p>
+	                        <!----- 已开发飘状态 ----->
+	                        <!--  单位发票-->
+	                        <div class="unit" style="display: none;">
+	                            <p><span>发票类型:</span><span>普通发票(电子发票)</span></p>
+	                            <p><span>发票内容:</span><span>明细</span></p>
+	                            <p><span>发票抬头:</span><span>单位</span></p>
+	                            <p><span>单位名称:</span><span class="company_name"></span></p>
+	                            <p><span>纳税人识别号:</span><span class="taxpayer_number"></span></p>
+	                        </div>
+	                        <!-- 个人发票 -->
+	                        <div class="person" style="display: none;">
+	                            <p><span>发票类型:</span><span>普通发票(电子发票)</span></p>
+	                            <p><span>发票内容:</span><span>明细</span></p>
+	                            <p><span>发票抬头:</span><span>个人</span></p>
+	                        </div>
+	                    </div>
+	                </div>
+	                <div class="card">
+	                    <div class="card-header">
+	                        <img src="/vipsubscribe/image/line.png?v={{Msg "seo" "version"}}">
+	                        <h3>订阅条件</h3>
+	                        <img src="/vipsubscribe/image/line.png?v={{Msg "seo" "version"}}">
+	                    </div>
+	                    <div class="card-content">
+	                        <div class="item-list">
+	                            <label>订阅区域:</label>
+	                            <ul class="item-list-parents">
+	                                <li class="areaNum"></li>
+	                            </ul>
+	                        </div>
+	                        <div class="item-list">
+	                            <label>订阅行业:</label>
+	                            <ul class="item-list-parents">
+	                                <li><span class="industryNum"></span></li>
+	                            </ul>
+	                        </div>
+	                        <div class="item-list">
+	                            <label>订阅周期:</label>
+	                            <ul class="item-list-parents">
+	                                <li><span class="cyclecount"></li>
+	                            </ul>
+	                        </div>
+	                        <div class="item-list line_cycle" style="display:none">
+	                            <label>有效日期:</label>
+	                            <ul class="item-list-parents">
+	                                <li><span class="serviceTime"></span></li>
+	                            </ul>
+	                        </div>
+	                    </div>
+	                </div>
+	            </div>
+	        </main>
+			<div class="js_dialog pay_way" id="pay_way" style="display: none;">
+	            <div class="weui-mask"></div>
+	            <div class="box">
+	                <div class="box_hd">
+	                    <span  class="zfje">支付方式</span>
+	                    <div></div>
+	                    <span class="cancel">取消</span>
+	                </div>
+	               <!-- <div class="money_pay">
+	                	
+	                </div>-->
+	                <div class="box_bd">
+	                    <div class="weui-cells weui-cells_checkbox choose-form">
+	                        <label class="weui-cell weui-check__label wx_label" for="wx">
+	                            <div class="weui-cell__bd read">
+	                                <p><img src="/jyapp/dataExport/images/weixin.png">微信支付</p>
+	                            </div>
+	                            <div class="weui-cell__hd">
+	                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked />
+	                                <i class="weui-icon-checked"></i>
+	                            </div>
+	                        </label>
+	                        <label class="weui-cell weui-check__label zfb_label" for="zfb">
+	                            <div class="weui-cell__bd read">
+	                                <p><img src="/jyapp/dataExport/images/zhifubao.png">支付宝支付</p>
+	                            </div>
+	                            <div class="weui-cell__hd">
+	                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb" />
+	                                <i class="weui-icon-checked"></i>
+	                            </div>
+	                        </label>
+	                    </div>
+	                    <div style="display: none;" class="param_dataType"></div>
+	                    <div style="display: none;" class="param_id"></div>
+	                    <div style="display: none;" class="this"></div>
+	                    <div style="display: none;" class="order_code_vip"></div>
+	                </div>
+	                <!--确认支付 --> 
+                    	<div class="surePay">
+                    		确认支付
+                    	</div>
+	            </div>
+	        </div>
+	        <!-- 当状态为待付款时显示去支付按钮 -->
+	        <!--当状态为已取消时显示再次购买按钮-->
+	        <a href="#" class="button align" style="display:none">去支付<span class="cancel_time"></span></a>
+	    </div>
+	</div>
+</body>
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+<!--<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
+<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+<script src="{{Msg "seo" "cdn"}}/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
+
+<script>
+  $(function(){
+    var canpay=true;
+    var orderCode=decodeURIComponent(getParam("orderCode"));
+    if(!orderCode){
+      weui.toast("订单号异常",{
+        duration: 2000,
+        className: 'custom-toast',
+	    });
+    }
+    $(".orderCode").text(orderCode);
+    $DoPost("/subscribepay/orderListDetails/getOrderPayAllMsg",{"orderCode":orderCode},function(r){
+      if(r.success){
+      	
+        //下单时间
+        if(r.data.order.prepay_time) {
+        	$(".prepayTime").text(r.data.order.prepay_time.replace("-",".").replace("-","."));
+        }
+        //产品类型
+        if(r.data.order.product_type) $(".productType").text(r.data.order.product_type);
+        if(r.data.order.original_price==0){
+        	$(".productType").text(r.data.order.product_type+"(试用)");
+        }
+        //1 续费 2升级
+        if(r.data.order.vip_type==1){
+        	$(".productType").text(r.data.order.product_type+"(续费)");
+        }else if(r.data.order.vip_type==2){
+        	$(".productType").text(r.data.order.product_type+"(升级)");
+        }
+        //价格
+        $(".price").text(r.data.order.original_price/100);
+        
+        //订单条件        
+        if(r.data.order.filter){
+            var filterObj=JSON.parse(r.data.order.filter);
+            //省份数 城市数
+            if(!$.isEmptyObject(filterObj.area)){
+              var cityNum=0;
+              var provinceNum=0;
+              for(var i in filterObj.area) {
+                let citys=filterObj.area[i];
+                if(citys.length>0){
+                  cityNum+=citys.length;
+                }else{
+                  provinceNum++;
+                }
+              }
+              var areaText="";//1个省级区域、4个地市
+              if(provinceNum>0) areaText= areaText + provinceNum+"个省级区域";
+              if(cityNum>0){
+                if(provinceNum>0) areaText= areaText+"、"
+                areaText = areaText+ cityNum+"个地市";
+              }
+              $(".areaNum").text(areaText);
+            }else{
+              $(".areaNum").text("全国");
+            }
+         
+          
+          //行业数
+          if(filterObj.industry.length!=0){
+            $(".industryNum").text(filterObj.industry.length+"个行业");
+          }else{
+            $(".industryNum").text("全行业");
+          }
+          
+        }
+        
+        //周期
+       if((r.data.order.vip_starttime!=undefined)&&(r.data.order.vip_endtime!=undefined)){
+       		var start_time_vip = r.data.order.vip_starttime;
+       		var end_time_vip = r.data.order.vip_endtime;
+       		var start_time_arr = start_time_vip.split(" ")[0].split("-")
+       		var end_time_arr = end_time_vip.split(" ")[0].split("-")
+       		var start_year=start_time_arr[0];
+       		var start_month=start_time_arr[1];
+       		var end_year=end_time_arr[0];
+       		var end_month=end_time_arr[1];
+       		
+       		var year = 0;
+			var month = 0;
+			if(end_year > start_year){
+	    		if(end_month > start_month){
+    				year = end_year - start_year;
+    				month = end_month - start_month;
+	    		}else{
+    				year = end_year - start_year-1;
+    				month = 12+Number(end_month)-start_month;
+    				if (month==12){
+    					year=Number(year)+1;
+    					month=0;
+    				}
+	    		}
+	    	}else if(end_year === start_year){
+    			month = end_month - start_month;
+	    	}
+	    	
+	    	if(year != 0 && month !=0){
+	    		$(".cyclecount").text(year+"年"+month+"个月");
+	    	}else if(year !== 0&& month ===0){
+	    		$(".cyclecount").text(year+"年");
+	    	}else if(year === 0&& month !==0){
+	    		$(".cyclecount").text(month+"个月");
+	    	}else {
+	    		$(".cyclecount").text("7天");
+	    	}
+       }else{
+       		//未支付
+	      if(filterObj.cycleunit==1){
+	        $(".cyclecount").text(filterObj.cyclecount+"年")
+	      }else if(filterObj.cycleunit==2){
+	       $(".cyclecount").text(filterObj.cyclecount+"个月")
+	      }else if(filterObj.cycleunit==3){
+	           $(".cyclecount").text(filterObj.cyclecount+"天")
+	      }
+       }
+        
+        if(r.data.order.order_status==0){       	
+          //未支付
+	        $("#pageTitle").text("待付款");
+	        $(".invoice").css("display","none");//隐藏开发票
+	        $(".button.align").css("display","").on("click",function(){//显示去支付按钮
+	         	$("#pay_way").show();
+	        })
+        }else if (r.data.order.order_status==1){
+          $("#pageTitle").text("已完成");
+          //支付时间
+          $(".line_paytime").css("display","");
+          if(r.data.order.pay_time) $(".payTime").text(r.data.order.pay_time.replace("-",".").replace("-","."));
+          if (r.data.order.original_price==0){
+         	 $(".line_paytime").css("display","none");
+          }
+          
+          //有效周期
+          $(".line_cycle").css("display","");
+          //有效日期  
+          if(r.data.time.vip_starttime&&r.data.time.vip_endtime){
+            	var vip_starttime=r.data.time.vip_starttime+"";
+           		var vip_endtime=r.data.time.vip_endtime+"";
+           		vip_starttime=vip_starttime.split(" ")[0].replace(/-/g,".");
+           		vip_endtime=vip_endtime.split(" ")[0].replace(/-/g,".");
+           		var serviceTime=vip_starttime+" - "+vip_endtime;
+           	  	$(".serviceTime").text(serviceTime)
+          }
+          
+          //支付方式
+          if(r.data.order.pay_way.indexOf("wx")>-1){
+            $(".line_payway").css("display","");
+            $(".payWay").text("微信支付");
+          }else if(r.data.order.pay_way.indexOf("ali")>-1){
+            $(".payWay").text("支付宝支付");
+            $(".line_payway").css("display","");
+          }else{//试用用户
+            $(".invoice").css("display","none");
+            return
+          }
+			
+		//确认支付
+		$(".surePay").on("click", function() {
+			$(".loading_").show();
+			canpay = false;
+			var param = {};
+			var dataType=$(".param_dataType").text();
+			param.pay_way = pay_way;
+			param.data_spec = dataType == "高级字段包" ? "senior" : "standard";
+			param.id = $(".param_id").text();
+			param.sourcePage = "weixin"
+			//支付已经创建订单
+			$.post("/jypay/dataExport/app/createOrder", param, function(data) {
+				if (data.success){
+					try {
+		                if(pay_way=="wx_app"){
+		                  JyObj.wxPay(data.data)
+		                }else{
+		                  JyObj.aliPay(data.data)
+		                }
+		                $('.pay_way').hide(200);
+		                checkPaySuccess(data.order);
+					} catch (e) {
+						alert(e)
+					}
+				}
+	            $(".loading_").hide();
+	            canpay = true;
+			})
+		})
+
+          $(".line_transaction").css("display","");
+          if(r.data.transaction_id) $(".transaction_id").text(r.data.transaction_id);
+          //发票
+          if(r.data.order.applybill_status==0){ 
+            //已支付未申请发票
+            $(".invoice .invoicing").css("display","");
+            $(".invoicing").on("click",function(){
+            	var nowTimestamp= (new Date()).valueOf();
+            	$.post("/subscribepay/orderListDetails/emailOperation?v="+nowTimestamp,{},function(r){
+					if (r.success){
+						//没有绑定邮箱
+						weuiDialog();
+					}else{
+						//绑定了邮箱
+						window.location.href="/front/vipsubscribe/openInvoice/"+orderCode;
+					}
+				})
+            });
+          }else{
+            //已支付已申请发票
+			      $(".invoice").css("display","none");
+            switch (r.data.order.applybill_type){
+            	case 0:
+            	$(".person").css("display","");
+            	break;
+            	case 1:
+            	$(".unit").css("display","");
+            	$(".company_name").html(r.data.order.applybill_company);
+            	$(".taxpayer_number").html(r.data.order.applybill_taxnum);
+            	break;
+            }
+
+          } 
+        }else if(r.data.order.order_status==-2){
+    		$("#pageTitle").text("已取消");
+     		$(".invoice").css("display","none");//隐藏开发票
+        }
+       
+      }
+      	
+      	if (r.data.order.order_status==0){
+	    	//倒计时 未购买
+			var create_time=r.data.order.create_time;
+			//create_time="2019-11-09 11:17:55";
+			var clock_end = +new Date(create_time) + 172800000;
+			setTimeFunc(clock_end); 
+			setInterval(function(){
+				setTimeFunc(clock_end);
+			},1000)
+		}
+    })
+    function formatEffectiveDate(strat,end){
+        var startDate = new Date(strat*1000);
+        var endDate = new Date(end*1000);
+        return formatDate(startDate)+" - "+formatDate(endDate)
+    }
+    function formatDate(d){
+	    return (d.getFullYear()) + "." + 
+	    (Array(2).join(0)+(d.getMonth() + 1)).slice(-2) + "." +
+	    (Array(2).join(0)+(d.getDate())).slice(-2);
+    }
+    
+	function weuiDialog(){
+		weui.dialog({
+			title: '提示信息',
+			content: '您未绑定邮箱<br/>请绑定后再开发票',
+	        className: 'jymobile-setting-dialog',// 设置弹框的类名
+	        buttons: [
+	        {
+	        	label: '去设置',
+	        	type: 'primary',
+	        	onClick: function () {
+	        		window.location.href="/front/wxMyOrder/myEmail?name=invoice&orderCode="+orderCode;
+	        	}
+	        },
+	        {
+	        	label: '取消',
+	        	type: 'default',
+	        	onClick: function () {
+	        		console.log('取消')
+	        	}
+	        }
+	        ]
+	    });
+	}
+
+
+	// 参数为结束时间戳
+	function setTimeFunc (endtime){
+  		var t = endtime - +new Date();
+  		if (t <= 0) {
+  			$(".button").hide();
+  			$(".cancel_time").hide();
+  			$("#pageTitle").html("已取消");
+  		}
+  		//天时分秒
+		var days = parseInt(t / 1000 / 60 / 60 / 24 , 10).toString().padStart(2, '0'); //计算剩余的天数 
+		var hours = parseInt(t / 1000 / 60 / 60 % 24 , 10).toString().padStart(2, '0');; //计算剩余的小时 
+		var minutes = parseInt(t / 1000 / 60 % 60, 10).toString().padStart(2, '0');;//计算剩余的分钟 
+		var seconds = parseInt(t / 1000 % 60, 10).toString().padStart(2, '0');;//计算剩余的秒数
+		//时分秒
+		var days_ = parseInt(t / 1000 / 60 / 60   , 10).toString().padStart(2, '0'); //计算剩余的天数 
+		var minutes_ = parseInt(t / 1000 / 60 % 60, 10).toString().padStart(2, '0');;//计算剩余的分钟 
+		
+		//$(".cancel_time").text("("+days+"天" + hours+"小时" + minutes+"分"+seconds+"秒)");
+		$(".cancel_time").text("剩余"+days_+":" + minutes_+":"+seconds+" ");
+	  }
+  })
+      
+  //苹果端  刷新js
+  $(function () {    
+		var isPageHide = false;   
+		window.addEventListener('pageshow', function () {      
+		    if (isPageHide) {
+                location.reload();
+		    }    
+		});    
+		window.addEventListener('pagehide', function () {
+		    isPageHide = true;
+		});  
+	});
+</script>
+	{{include "/common/baiducc.html"}}
+</html>	

+ 81 - 108
src/jfw/modules/app/src/web/templates/vipsubscribe/vip_upgrade.html

@@ -14,40 +14,46 @@
     <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/jyapp/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" href="/jyapp/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}4">
-	{{include "/common/weixin.html"}}
+    <link rel="stylesheet" href="/jyapp/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}7">
+	<link rel="stylesheet" type="text/css" href="/jyapp/css/layout.css?v={{Msg "seo" "version"}}"/>
+    <link rel="stylesheet" type="text/css" href="/jyapp/css/font.css?v={{Msg "seo" "version"}}"/>
 </head>
 <style type="text/css">
 	body,html {
 		height: 100%;
 	}
-	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
-	  	color: #686868;
-	}
 	.vip_update .fixed-bottom-box, .vip_renew .fixed-bottom-box {
 	    width: 100%;
-	    position: fixed;
+	    position: static;
 	    bottom: 0;
 	    left: 0;
 	}
+	::-webkit-input-placeholder{
+		color: #000;
+	}
 </style>
 <body class="no-touch">
+	<div class="app-layout-header">
+        <span class="app-back jyapp-icon jyapp-icon-zuojiantou"></span>
+        VIP订阅升级
+    </div>
+    <div class="app-layout-content-b">
     <div class="vip_update">
         <div class="choose_condition">
             <p class="update_tip">提示:订阅升级可在已购买的服务基础上,增加区域、行业、以及延长订阅周期!</p>
             <ul class="chooseList">
                 <li class="choose_item">
-                    <a href="/jyapp/front/vipsubscribe/toChooseAreaUpgrade">
+                    <a href="/jyapp/vipsubscribe/toChooseAreaUpgrade">
                         <span class="label">区域</span>
-                        <input type="text" id="area" value="" onfocus="this.blur();" placeholder="选择全国、省份、地市" class="info">
+                        <input type="text" id="area" value="" disabled placeholder="选择全国、省份、地市" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <p class="add_tips area-list" style="display: none;">已新增 1 个省级区域、4 个地市</p>
                 </li>
                 <li class="choose_item">
-                    <a href="/jyapp/front/vipsubscribe/toChooseIndustryUpgrade">
+                    <a href="/jyapp/vipsubscribe/toChooseIndustryUpgrade">
                         <span class="label">行业</span>
-                        <input type="text" id="buyerclass" onfocus="this.blur();" value="" placeholder="选择采购单位行业" class="info">
+                        <input type="text" id="buyerclass" disabled value="" placeholder="选择采购单位行业" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <p class="add_tips industry-list" style="display: none;">已新增 2 个行业</p>
@@ -282,7 +288,7 @@
                                 <p><img src="/jyapp/vipsubscribe/image/weixin.png">微信支付</p>
                             </div>
                             <div class="weui-cell__hd">
-                                <input type="radio" class="weui-check" name="way" value="微信支付" id="wx" checked />
+                                <input type="radio" class="weui-check paytypes" name="way" value="微信支付" id="wx" checked />
                                 <i class="weui-icon-checked"></i>
                             </div>
                         </label>
@@ -291,7 +297,7 @@
                                 <p><img src="/jyapp/vipsubscribe/image/zhifubao.png">支付宝支付</p>
                             </div>
                             <div class="weui-cell__hd">
-                                <input type="radio" class="weui-check" name="way" value="支付宝支付" id="zfb" />
+                                <input type="radio" class="weui-check paytypes" name="way" value="支付宝支付" id="zfb" />
                                 <i class="weui-icon-checked"></i>
                             </div>
                         </label>
@@ -300,75 +306,12 @@
             </div>
         </div>
     </div>
+    </div>
     <script src="/jyapp/vipsubscribe/js/jquery-2.1.4.js"></script>
     <!--<script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>-->
     <script src="/jyapp/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="/jyapp/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}3"></script>
-    <script type="text/javascript">
-    	//
-    	try{
-			var signature = {{.T.signature}};
-			var isConfigSuccess = true;
-			var id = {{.T._id}}
-			if(signature && signature.length == 4){
-			  	wx.config({
-			  	    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
-			  	    appId: signature[0], // 必填,公众号的唯一标识
-			  	    timestamp:signature[1], // 必填,生成签名的时间戳
-			  	    nonceStr: signature[2], // 必填,生成签名的随机串
-			  	    signature: signature[3],// 必填,签名,见附录1
-			  	    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
-			  	});
-			  	wx.ready(function(){
-			  		if(!isConfigSuccess){
-			  			return;
-			  		}
-			  		wx.hideAllNonBaseMenuItem();
-			    });
-			  	wx.error(function(res){
-			  	    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
-			  		//alert(res);
-			  		isConfigSuccess = false;
-			  	});
-			}
-			//调用微信支付接口
-  			function onBridgeReady(res,ordercode){
-  			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
-		    		"appId": res["appId"],
-		          	"timeStamp": res["timestamp"],
-		          	"nonceStr": res["nonceStr"],
-		          	"package": res["prepayId"],
-		          	"signType": res["signType"],
-		         	"paySign": res["sign"]
-  				},
-  				function(r){
-				    if(r.err_msg == "get_brand_wcpay_request:ok"){
-				    	//
-                    	clearSessionStorage();
-						setTimeout(function(){
-							window.location.replace("/jyapp/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-						},500)
-					}
-//					}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
-////	                	alert("开发环境【支付跳转完成】")
-//		                try{
-////		  					window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-////		                	window.location.reload();
-//		                }catch(e){
-//		                  alert(e)
-//		                }
-//	  				}else{
-//	                	weui.toast("系统异常,请稍微再试",{
-//	                  		duration: 2000,
-//	                  		className: 'custom-toast',
-//	                	});
-//	  				}
-  				});
-  			}   
-		}catch(e){
-		  console.log(e)
-		}
-    </script>
+    <script src="/jyapp/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
         $(function () {    
 			var isPageHide = false;   
@@ -444,10 +387,8 @@
          // 选择生效日期
         $('.choose_effect_date > a').click(function () {
             $('#effective_date').show(200);
-            var nowDates = new Date().toLocaleDateString();
-			nowDates = nowDates.split("/");
-			var nowMonths = Number(nowDates[1]);
-			var nowYears = Number(nowDates[0]);
+			var nowMonths = new Date().getMonth()+1;
+			var nowYears = new Date().getFullYear();
 			var as = nowMonths +1;
 			if(as > 12){
 				as = as-12;
@@ -839,9 +780,12 @@
 	    	}else if(payType === "alipy"){
 	    		payHtml = "支付宝支付";
 	    	}
-	    	$('input:radio[name="way"]').val(payHtml);
-	    	$('input:radio[name="way"]').prop("checked", true);
-	    	$("#payType").text(payHtml);
+	    	$(".paytypes").each(function(){
+	    		if($(this).attr("value") === payHtml){
+	    			$(this).prop("checked", true);
+	    		}
+	    	});
+	    	$(".weixin_pay").text(payHtml);
 	    }
 
 		if(sessionStorage.upgrade_cyclecount!==undefined&&sessionStorage.upgrade_cycleunit!==undefined){
@@ -919,7 +863,7 @@
 					if(checkObj(area)){
 						areaHtml = "全国";
 					}
-			    	$('#area').val(areaHtml);
+			    	$('#area').attr("placeholder",areaHtml);
 			    }
 			    if(buyerclass !== "" && buyerclass !== undefined){
 			    	for(var i in buyerclass){
@@ -931,7 +875,7 @@
 					if(checkObj(buyerclass)){
 						buyerclassHtml = "全行业";
 					}
-					$('#buyerclass').val(buyerclassHtml);
+					$('#buyerclass').attr("placeholder",buyerclassHtml);
 			    }
 			    //
 			    var nowDate = data.now.replace(/-/g, ".");
@@ -952,17 +896,13 @@
         	$(".save_upgrade").attr('disabled','disabled');
 	    	var nowUpgrade = "";
 			//
-			var nowDate = new Date(startTime).toLocaleDateString();
-			nowDate = nowDate.split("/");
-			var nowMonth = Number(nowDate[1]);
-			var nowYear = Number(nowDate[0]);
-			var nowDay = Number(nowDate[2]);
+			var nowMonth = new Date(startTime).getMonth()+1;
+			var nowYear = new Date(startTime).getFullYear();
+			var nowDay = new Date(startTime).getDate();
 			//
-			var endDate = new Date(endTime).toLocaleDateString();
-			endDate = endDate.split("/");
-			var endMonth = Number(endDate[1]);
-			var endYear = Number(endDate[0]);
-			var endDay = Number(endDate[2]);
+			var endMonth = new Date(endTime).getMonth()+1;
+			var endYear = new Date(endTime).getFullYear();
+			var endDay = new Date(endTime).getDate();
 			var oldPrice = "";
 			var price = "";
 			var effect = "";
@@ -1235,13 +1175,11 @@
         	let effective = $("#effect_date_name").text();
         	var effect = "now";
         	if(effective !== "立即生效,需支付当月费用差价"){
-        		let nowDate = new Date().toLocaleDateString();
-				nowDate = nowDate.split("/");
-				let nowMonth = Number(nowDate[1]);
-				let nowYear = Number(nowDate[0]);
+				let nowMonth = new Date().getMonth()+1;
+				let nowYear = new Date().getFullYear();
 				let a = nowMonth +1
         		if(a > 12){
-        			a = nowMonth-12;
+        			a = a-12;
         			nowYear = nowYear +1;
         		}
         		let b = nowYear+"/"+a+"/1";
@@ -1266,25 +1204,44 @@
             if(renew_time !== "不延长"){
             	times = $('.choose_item.lengthen .info').text();
             }
+            //
+            let payTypes = $(".weixin_pay").text();
+            let payType = "wx_app";
+            if(payTypes === "支付宝支付"){
+            	payType = "ali_app";
+            }
             //
 	    	var param = {
 	    		"area": JSON.stringify(areas),
 	    		"industry": industrys.join(","),
 	    		"areas": JSON.stringify(areaarr),
 	    		"industryarr": industryarr.join(","),
-	    		"payWay": "wx_js",
+	    		"payWay": payType,
 	    		"effect": effect,
 	    		"pay_source" : "Upgrade",
 	    		"time": times,
 	    		"nowUp": Number(nowRenew),
 	    	}
 	    	console.log(param)
-	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder",param,function(r){
-                if(r.success){
-                    onBridgeReady(JSON.parse(r.data.res),r.data.code);
+	    	$DoPost("/subscribepay/renewUpgrade/renewUpgradeCreateOrder", param, function (r) {
+                if (r.success) {
+                    //唤起app支付
+                    try {
+                        if (pay_way == "wx_app") {
+                            JyObj.wxPay(r.data.res);
+                        } else {
+                            JyObj.aliPay(r.data.res)
+                        }
+                        //校验是否支付完成
+                        checkpay(r.data.code);
+                    } catch (e) {
+                        alert(e)
+                    }
+                    clearSessionStorage();
+                } else {
+                    $(".save_upgrade").removeAttr("disabled")
                 }
-                $(".save_upgrade").removeAttr("disabled");
-            })
+            });
 	    });
 	    
 	    //
@@ -1298,8 +1255,24 @@
 	    	sessionStorage.removeItem("effectiveDate");
 	    	sessionStorage.removeItem("buyCheck");
 	    }
-	    
 	    //
+	    //校验是否支付
+	    var interval;
+	
+	    function checkpay(orderid) {
+	        if (interval) {
+	            clearInterval(interval);
+	        }
+	        interval = setInterval(function () {
+	            $.post("/jypay/isPaySuccess", {code: orderid}, function (r) {
+	                if (r.success) {
+	                    clearInterval(interval);
+	                    clearSessionStorage();
+	                    window.location.replace("/jyapp/vipsubscribe/toPaySuccessPage?orderCode=" + orderid);
+	                }
+	            });
+	        }, 2000)
+	    }
 	    //
 	    function checkObj(obj) {
 		    //检验数组

+ 4 - 4
src/jfw/modules/pushsubscribe/src/match/job/matchjob.go

@@ -203,7 +203,7 @@ func (m *MatchJob) ToMatch(batchIndex int, matcher Matcher, datas *[]map[string]
 				"vipstatus":     user.VipStatus,
 			})
 			if len(saveBatch) == BulkSize {
-				mongodb.SaveBulk(Pushspace_project, saveBatch...)
+				mongodb.SaveBulk(Pushspace_temp, saveBatch...)
 				saveBatch = []map[string]interface{}{}
 			}
 		}(u, i)
@@ -277,7 +277,7 @@ func (m *MatchJob) ToRelationProject(projectUser *sync.Map) {
 							"infoid":     _id,
 							"userid":     user.Id,
 							"maxid":      list_last_infoid,
-							"toptypes":   user.O_vipjy.TopTypes,
+							"subtypes":   user.O_vipjy.SubTypes,
 							"createtime": time.Now().Unix(),
 						},
 					},
@@ -322,7 +322,7 @@ func (m *MatchJob) LoadBidding(lastId, newId string, lastTime int64) *[]map[stri
 		c_query["_id"] = idQuery
 	}
 	//c_query = map[string]interface{}{
-	//"_id": bson.ObjectIdHex("5da4c4dfa5cb26b9b7ffdc5d"),
+	//"_id": bson.ObjectIdHex("5da6c3bda5cb26b9b7da1ffe"),
 	//}
 	logger.Info("开始加载", Bidding, "数据", c_query)
 	var res []map[string]interface{}
@@ -571,7 +571,7 @@ func (m *MatchJob) OnceUserBatch(batchIndex int, lastUserId *string) (int, *VipU
 						if s_v == "" {
 							continue
 						}
-						user.O_vipjy.TopTypes = append(user.O_vipjy.TopTypes, s_v)
+						user.O_vipjy.SubTypes = append(user.O_vipjy.SubTypes, s_v)
 						vipUser.Add(s_v, user, &vipUser.InfoTypeUsers)
 					}
 				}

+ 2 - 2
src/jfw/modules/pushsubscribe/src/match/matcher/vipmatch.go

@@ -41,7 +41,7 @@ func (v *VipUser) Match(info *map[string]interface{}) (*map[*UserInfo]*MatchUser
 		area = ""
 	}
 	city, _ := (*info)["city"].(string)
-	toptype, _ := (*info)["toptype"].(string)
+	subtype, _ := (*info)["subtype"].(string)
 	title, _ := (*info)["title"].(string)
 	title = strings.ToUpper(title)
 	//订阅词
@@ -92,7 +92,7 @@ func (v *VipUser) Match(info *map[string]interface{}) (*map[*UserInfo]*MatchUser
 		if k.O_vipjy.ProjectMatch == 1 {
 			projectUsers = append(projectUsers, k)
 		}
-		if !v.InfoTypeUsers[""][k] && !v.InfoTypeUsers[toptype][k] {
+		if !v.InfoTypeUsers[""][k] && !v.InfoTypeUsers[subtype][k] {
 			continue
 		}
 		users[k] = matchUser

+ 1 - 1
src/jfw/modules/pushsubscribe/src/public/entity.go

@@ -40,7 +40,7 @@ type O_jy struct {
 	Infotype map[string]map[string]bool //关键词-信息类型
 }
 type O_vipjy struct {
-	TopTypes     []string
+	SubTypes     []string
 	ProjectMatch int
 }
 

+ 1 - 1
src/jfw/modules/pushsubscribe/src/push/job/movejob.go

@@ -106,7 +106,7 @@ func (m *MoveJob) Execute() {
 		}(data)
 		data = make(map[string]interface{})
 		if index%500 == 0 {
-			logger.Info("迁移数据", index)
+			logger.Info("迁移数据", index)
 		}
 	}
 	m.moveWait.Wait()

+ 12 - 11
src/jfw/modules/pushsubscribe/src/push/job/projectjob.go

@@ -35,6 +35,7 @@ func (p *ProjectPushJob) Execute() {
 	for {
 		batchIndex++
 		batchCount, datas := p.loadPushspace_project(batchIndex, &startId)
+		logger.Info("开始第", batchIndex, "次关联项目匹配。。。")
 		index := 0
 		for k, v := range *datas {
 			p.pushPool <- true
@@ -80,11 +81,11 @@ func (p *ProjectPushJob) Execute() {
 						if !ok {
 							return
 						}
-						topTypes, _ := list[i]["toptypes"].([]interface{})
+						subtypes, _ := list[i]["subtypes"].([]interface{})
 						maxId, _ := list[i]["maxid"].(string)
-						userTopType := map[string]bool{}
-						for _, t := range topTypes {
-							userTopType[util.ObjToString(t)] = true
+						userSubtype := map[string]bool{}
+						for _, t := range subtypes {
+							userSubtype[util.ObjToString(t)] = true
 						}
 						//
 						project, _ := pi.(map[string]interface{})
@@ -100,8 +101,8 @@ func (p *ProjectPushJob) Execute() {
 							if unix-publishtime > Config.ProjectPublishTimeLimit { //发布时间7天之内
 								continue
 							}
-							topType, _ := plm["toptype"].(string)
-							if len(userTopType) > 0 && !userTopType[topType] {
+							subtype, _ := plm["subtype"].(string)
+							if len(userSubtype) > 0 && !userSubtype[subtype] {
 								continue
 							}
 							isExists, err := redis.Exists(Pushcache_2_a, PushInfoKey(userId, infoId))
@@ -140,7 +141,7 @@ func (p *ProjectPushJob) Execute() {
 						}
 					}
 					if len(updateProject) > 0 {
-						mongodb.NewUpdateBulk(Pushspace_project, updateProject...)
+						mongodb.NewUpdateBulk(Pushspace_project, true, true, updateProject...)
 					}
 					if len(updateProject) < BigBulkSize {
 						break
@@ -172,11 +173,11 @@ func (p *ProjectPushJob) Execute() {
 			}(k, v)
 			index++
 			if index%500 == 0 {
-				logger.Info("第", batchIndex, "次关联项目匹配", index)
+				logger.Info("第", batchIndex, "次关联项目匹配", index)
 			}
 		}
 		p.pushWait.Wait()
-		logger.Info("第", batchIndex, "次关联项目匹配", index)
+		logger.Info("第", batchIndex, "次关联项目匹配结束", index)
 		if batchCount < Config.PushBatch {
 			break
 		}
@@ -220,7 +221,7 @@ func (p *ProjectPushJob) loadPushspace_project(batchIndex int, startId *string)
 	it := sess.DB(DbName).C(Pushspace_project).Find(query).Select(map[string]interface{}{
 		"_id":       1,
 		"maxid":     1,
-		"toptypes":  1,
+		"subtypes":  1,
 		"userid":    1,
 		"projectid": 1,
 	}).Sort("-_id", "userid").Iter()
@@ -277,7 +278,7 @@ func (p *ProjectPushJob) loadProject() *sync.Map {
 		m = make(map[string]interface{})
 		index++
 		if index%500 == 0 {
-			logger.Info("加载项目", index)
+			logger.Info("加载项目", index)
 		}
 	}
 	p.loadWait.Wait()

+ 3 - 0
src/jfw/modules/pushsubscribe/src/push/pusher/specialpush.go

@@ -58,6 +58,9 @@ func (s *SpecialPush) GetUserInfo(user map[string]interface{}) (*UserInfo, *puti
 		return nil, nil
 	}
 	userInfo, _ := NewUserInfoByUserColl(u)
+	if userInfo == nil {
+		return nil, nil
+	}
 	if !IsVipUser(userInfo.VipStatus) {
 		logger.Info(userId, "已经不是vip用户了", userInfo.VipStatus)
 		s.deletePushspaceVip(user)

+ 15 - 6
src/jfw/modules/subscribepay/src/entity/subscribeVip.go

@@ -132,9 +132,11 @@ func (this *vipSubscribeStruct) PayCallBack(param *CallBackParam) bool {
 	} else if vmsg.OrderType == 2 { //续费
 		flag = JyVipSubStruct.RenewSubVip(userid, qutil.ObjToString((*orderdata)["vip_endtime"]))
 	} else if vmsg.OrderType == 3 { //立即升级
-		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), true)
-	} else if vmsg.OrderType == 4 || vmsg.OrderType == 5 { //下月升级
-		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), false)
+		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_starttime"]), qutil.ObjToString((*orderdata)["vip_endtime"]), true, "no")
+	} else if vmsg.OrderType == 4 { //下月升级
+		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_starttime"]), qutil.ObjToString((*orderdata)["vip_endtime"]), false, "no")
+	} else if vmsg.OrderType == 5 {
+		flag = JyVipSubStruct.UpgradeSubVip(userid, vmsg, qutil.ObjToString((*orderdata)["vip_starttime"]), qutil.ObjToString((*orderdata)["vip_endtime"]), false, "exprie")
 	} else if vmsg.OrderType == 6 { //下月升级未生效再次升级
 		flag = JyVipSubStruct.UpgradeSubVipTwo(userid, vmsg, qutil.ObjToString((*orderdata)["vip_endtime"]), false)
 	}
@@ -182,13 +184,14 @@ func (this *vipSubscribeStruct) RenewSubVip(userId, endtime string) bool {
 }
 
 //升级
-func (this *vipSubscribeStruct) UpgradeSubVip(userId string, vmsg VipSimpleMsg, end string, isNow bool) bool {
+func (this *vipSubscribeStruct) UpgradeSubVip(userId string, vmsg VipSimpleMsg, start string, end string, isNow bool, isExprie string) bool {
 	//	startTime, err := time.ParseInLocation(qutil.Date_Full_Layout, start, time.Local)
 	//	if err != nil {
 	//		log.Println("%s格式化日期出错%s\n", userId, start)
 	//		return false
 	//	}
-	endTime, err := time.ParseInLocation(qutil.Date_Full_Layout, end, time.Local)
+	endTime, _ := time.ParseInLocation(qutil.Date_Full_Layout, end, time.Local)
+	startTime, err := time.ParseInLocation(qutil.Date_Full_Layout, start, time.Local)
 	if err != nil {
 		log.Println("%s格式化日期出错%s\n", userId, endTime)
 		return false
@@ -213,7 +216,13 @@ func (this *vipSubscribeStruct) UpgradeSubVip(userId string, vmsg VipSimpleMsg,
 			log.Printf("%s更新结束%d日期出错\n", userId, endTime.Unix())
 			return false
 		}
-		effectTime := time.Date(time.Now().Year(), time.Now().Month()+1, 1, 0, 0, 0, 0, time.Local)
+		var effectTime time.Time
+		if isExprie != "no" {
+			effectTime = startTime
+		} else {
+			effectTime = time.Date(time.Now().Year(), time.Now().Month()+1, 1, 0, 0, 0, 0, time.Local)
+		}
+
 		return util.MQFW.Save("vip_upgrade",
 			bson.M{
 				"s_userid":     userId,            //试用设置地区

+ 8 - 2
src/jfw/modules/subscribepay/src/service/afterPay.go

@@ -186,17 +186,23 @@ func (a *AfterPay) SetUserInfo() error {
 				_kws := strings.Split(kws_name, " ")
 				if actionType == "SK" { //保存关键词
 					if len(addtion_kws) > 0 {
-						for _, addval := range addtion_kws {
+						for i, addval := range addtion_kws {
 							if len([]rune(addval)) > 20 {
 								addval = qutil.SubString(addval, 0, 20)
 							}
+							if addval == "" {
+								addtion_kws = append(addtion_kws[:i], addtion_kws[i+1:]...)
+							}
 						}
 					}
 					if len(not_kws) > 0 {
-						for _, notval := range not_kws {
+						for i, notval := range not_kws {
 							if len([]rune(notval)) > 20 {
 								notval = qutil.SubString(notval, 0, 20)
 							}
+							if notval == "" {
+								not_kws = append(not_kws[:i], not_kws[i+1:]...)
+							}
 						}
 					}
 					if kwscount != "0" {

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

@@ -135,7 +135,7 @@ func (this *SubVipPayOrder) CreateOrder() {
 		if orderType == 5 { //插入生效时间和结束时间
 			timeStamp := qutil.Int64All((*userData)["l_vip_endtime"])
 			startTime := time.Unix(timeStamp, 0)
-			endTime := util.GetDATE(filter.Cycleunit, filter.Cycleunit, timeStamp)
+			endTime := util.GetDATE(filter.Cycleunit, filter.Cyclecount, timeStamp)
 			insertMap["vip_starttime"] = qutil.FormatDate(&startTime, qutil.Date_Full_Layout)
 			insertMap["vip_endtime"] = qutil.FormatDate(&endTime, qutil.Date_Full_Layout)
 		}

+ 7 - 7
src/jfw/modules/weixin/src/wx/wx.go

@@ -102,7 +102,7 @@ func MsgTxtHandler(w ResponseWriter, r *Request) {
 	}
 	autoReply_reg, _ := regexp.Compile("剑鱼|招标|中标|订阅|公告|项目|设置|推送")
 	shalong_text, shalong_img := "", ""
-	log.Println(len(autoReply_reg.FindStringIndex(r.Content)))
+	//	log.Println(len(autoReply_reg.FindStringIndex(r.Content)))
 	if strings.Replace(r.Content, " ", "", -1) == "沙龙" {
 		shalong_text, shalong_img = shalongActive.Get()
 	}
@@ -213,8 +213,8 @@ func pcSetUserKeys(user map[string]interface{}, shareid, pccodepre string) (map[
 	result := "fail"
 	subkey := redis.Get("sso", "pc_subscribe_"+shareid)
 	keys := strings.Split(fmt.Sprint(subkey), " ")
-	log.Println(subkey)
-	log.Println(keys)
+	//	log.Println(subkey)
+	//	log.Println(keys)
 	if subkey != nil {
 		if o_jy, ok := user["o_jy"].(map[string]interface{}); ok {
 			if tmp, ok := o_jy["a_key"].([]interface{}); ok {
@@ -242,7 +242,7 @@ func pcSetUserKeys(user map[string]interface{}, shareid, pccodepre string) (map[
 							}
 							if result != "repeat" {
 								keys := strings.Split(fmt.Sprint(subkey), " ")
-								log.Println("==:", keys)
+								//								log.Println("==:", keys)
 								tmp = append(tmp, map[string]interface{}{"key": keys})
 								o_jy["a_key"] = tmp
 								result = "ok"
@@ -329,7 +329,7 @@ func saveUser(u *UserInfo, source, pre, RSource string) (bool, string, string) {
 	isJyopUser := strings.HasPrefix(source, "Jyop")
 	pcresult := "" //pc订阅结果
 	subkey := ""   //pc订阅关键词
-	log.Println("保存用户:", subkey)
+	//	log.Println("保存用户:", subkey)
 	fg := false
 	tusers, ok := tools.MQFW.Find("user", map[string]interface{}{
 		"s_unionid": u.UnionId,
@@ -1396,7 +1396,7 @@ func YjHandle(w http.ResponseWriter, r *http.Request) {
 	} else {
 		tmp := map[string]interface{}{}
 		json.Unmarshal(ret, &tmp)
-		log.Println(tmp)
+		//		log.Println(tmp)
 		url := tmp["url"].(string)
 		w.Write([]byte(url))
 	}
@@ -1559,7 +1559,7 @@ func vipFastSubscribe(user *map[string]interface{}, keyWord, openId string) (ret
 		}
 		if keysCount+len(keysFilter) > 300 {
 			//vip订阅超过300组关键词
-			log.Println("vip订阅超过300组关键词-----")
+			//			log.Println("vip订阅超过300组关键词-----")
 			return -3, strings.Replace(keyWord, "+", " ", -1), hasOldKey
 		}
 	}

+ 10 - 1
src/web/staticres/vipsubscribe/css/vip_update.css

@@ -532,7 +532,7 @@
   float: left;
   width: 5rem;
   height: 100%;
-  color: #686868;
+  color: #000;
   font-size: 0.28rem;
   text-align: right;
   overflow: hidden;
@@ -541,6 +541,15 @@
   background-color: transparent;
 }
 
+.vip_update .choose_condition .chooseList .choose_item a .info::placeholder,
+.vip_update .choose_condition .pay_mode .choose_item a .info::placeholder {
+  color: #000;
+}
+
+.choose_item input:disabled, .choose_item input[disabled]{
+  opacity: 1;
+}
+
 .vip_update .choose_condition .chooseList .choose_item a i.iconfont,
 .vip_update .choose_condition .pay_mode .choose_item a i.iconfont, .vip_renew .choose_condition .chooseList .choose_item a i.iconfont,
 .vip_renew .choose_condition .pay_mode .choose_item a i.iconfont {

+ 17 - 6
src/web/staticres/vipsubscribe/js/additionWord.js

@@ -39,7 +39,7 @@ $(function(){
     // 添加keyWords检查输入框内是否有文字,如果有才能点击添加按钮
     $('.addkeyWord input.enterOne').on('input', function() {
         var buttonDOM = $(this).siblings().find('button')[1]
-        if ($(this).val().length >= 1) {
+        if ($.trim($(this).val()).length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
         } else {
@@ -51,8 +51,13 @@ $(function(){
     // 添加 按钮的点击事件
     $('.addkeyWord .btn button:nth-child(2)').on('click', function(){
         var timestamp = new Date().getTime();//动态生成不同的id,因为id唯一不能重复,所以 用时间戳 代替  防止重复
-        var keyWord = $('.addkeyWord input.enterOne').val();
-		if(keyWord==""){
+        var keyWord = $.trim($('.addkeyWord input.enterOne').val());
+		if(keyWord==""&&keyWord.length==0){
+            weui.toast('附加词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
 			return
 		}
 		_addindex = 0;
@@ -114,7 +119,7 @@ $(function(){
     // 编辑 删除
     $('.showKeyWord').on('click', '.deleteKey', function(e) {
         var jQueryDOM = $(this).parents('li');
-        _addkws = $(this).siblings('textarea').val();
+        _addkws = $.trim($(this).siblings('textarea').val());
 		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         weui.confirm('确定要删除附加词?', {
             buttons: [{
@@ -134,9 +139,15 @@ $(function(){
     })
     // 编辑 确定
     $('.showKeyWord').on('click', '.ascertainKey', function(e) {
-        var keyWord = $(this).siblings('textarea').val();
+        var keyWord = $.trim($(this).siblings('textarea').val());
 		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
-        if(keyWord.length > 20){
+		if(keyWord.length==0){
+            weui.toast('附加词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+		}else if(keyWord.length > 20){
             weui.toast('每组附加词不能超过20字', {
                 duration: 2000,
                 className: 'custom-toast',

+ 19 - 5
src/web/staticres/vipsubscribe/js/exclusiveWord.js

@@ -43,7 +43,7 @@ $(function(){
         }
 
         var buttonDOM = $(this).siblings().find('button')[1]
-        if ($(this).val().length >= 1) {
+        if ($.trim($(this).val()).length >= 1) {
             buttonDOM.style.opacity = 1
             buttonDOM.removeAttribute("disabled")
         } else {
@@ -63,7 +63,15 @@ $(function(){
     // 添加 按钮的点击事件
    
     $('.addkeyWord .btn button:nth-child(2)').on('click', function(){
-        var keyWord = $('.addkeyWord input.enterOne').val()
+        var keyWord = $.trim($('.addkeyWord input.enterOne').val());
+		if (keyWord==""){
+            weui.toast('排除词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+			return
+		}
 		_notindex = 0;
 		if($(".showKeyWord li").length>0){
         	_notindex = Number($(".showKeyWord li:first").find(".editKeyWord").attr("dataIndex")) + Number(1);
@@ -123,7 +131,7 @@ $(function(){
     // 编辑 删除
     $('.showKeyWord').on('click', '.deleteKey', function(e) {
         var jQueryDOM = $(this).parents('li');
-        _notkws = $(this).siblings('textarea').val();
+        _notkws = $.trim($(this).siblings('textarea').val());
 		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
         weui.confirm('确定要删除排除词?', {
             buttons: [{
@@ -145,9 +153,15 @@ $(function(){
     // 编辑 确定
     $('.showKeyWord').on('click', '.ascertainKey', function(e) {
         var $this = $(this);
-        var keyWord = $(this).siblings('textarea').val();
+        var keyWord = $.trim($(this).siblings('textarea').val());
 		var _index =  $('.showKeyWord li').length - $(this).parent().parent("li").index() -1;
-        if(keyWord.length > 20){
+		if(keyWord.length ==0){
+            weui.toast('排除词不能为空', {
+                duration: 2000,
+                className: 'custom-toast',
+                callback: function () { console.log('close') }
+            });
+        }else if(keyWord.length > 20){
             weui.toast('每组排除词不能超过20字', {
                 duration: 2000,
                 className: 'custom-toast',

+ 3 - 1
src/web/staticres/vipsubscribe/js/keyWord.js

@@ -177,7 +177,7 @@ var reloadFunc = function(){
         }
         $('.enter.addkeyWord').hide()
         let oSpan = $(this).parent().siblings().children('textarea');
-        let val = $(oSpan).val()
+        let val =  $.trim($(oSpan).val());
         $(this).parent().hide()
         $(this).parent().siblings().show().parent().siblings().children('.modify').hide().siblings('.one').show()
         $(oSpan).val('').focus().val(val) 
@@ -306,7 +306,9 @@ var reloadFunc = function(){
         $('.classify-edit-pop').hide();
         $('input.classify-keyword').val('');
         if($(".showKeyWord li").length>0){
+			kws_name = classify_name;
             saveData('SC')
+			kws_name = "";
             a_items[classify_index]["s_item"] = classify_name;
         }
     })

+ 149 - 63
src/web/templates/weixin/email/bind_email.html

@@ -3,7 +3,7 @@
 	<head>
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		{{if .T.text_email}}
-		<title>修改邮箱</title>
+		<title>更换邮箱</title>
 		{{else}}
 		<title>我的邮箱</title>
 		{{end}}
		<meta name="Keywords" content="绑定邮箱"/>
		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/reset.css?v={{Msg "seo" "version"}}">
		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/common.css?v={{Msg "seo" "version"}}">
		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/wxmyemail/css/mine.css?v={{Msg "seo" "version"}}"/>        
@@ -12,7 +12,8 @@
 		{{include "/common/weixin.html"}}
 		<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>
 	</head>
-	<body>
+	<body style="visibility:hidden">
+		<!--<body>-->
 		<style>
 			.code_true{
 				position: absolute;
@@ -27,34 +28,105 @@
 			.email_input,.code_input{
 				line-height: 20px !important;
 			}
+			body .loading_ {
+			    height: 100%;
+			    width: 100%;
+			    position: fixed;
+			    background: #382f3d;
+			    z-index: 999999999990;
+				opacity: .7;
+				    margin-top: 20px;
+			}
+			body .loading_ > p {
+			    position: absolute;
+			    left: 0;
+			    right: 0;
+			    top: 0;
+			    bottom: 0;
+			    margin: auto;
+			    height: 60px;
+			    width: 60px;
+			    text-align: center;
+			    line-height: 60px;
+			    font-size: 0.36rem;
+			    color: rgba(44, 183, 202, 0.8);
+			}
+			body .loading_ p span {
+			    position: absolute;
+			    display: block;
+			    height: 40px;
+			    width: 40px;
+			    margin: 10px;
+			    border-radius: 50%;
+			    -webkit-box-shadow: 0 2px 3px rgba(44, 183, 202, 0.8);
+			    animation: loading_ ease 1s infinite;
+			    left: 0;
+			    top: 0;
+			}
+			@keyframes loading_ {
+			  0% {
+			    transform: rotate(0deg); }
+			  100% {
+			    transform: rotate(360deg); } 
+			}
 		</style>
+		<!-- 加载数据-->
+		<div class="loading_">
+		    <p><span></span></p>
+		</div>
 		<div class="bind_email">
			<div class="input mgT26">
				<input type="email" placeholder="输入邮箱" name="" id="" value="" class="email_input" />
				<input type="text" placeholder="输入验证码" name="" id="" value="" class="code_input" />
				<button class="sendcode" >获取验证码</button>
 				<button class="code_true"><i class="icon iconfont email_check_ok" style="display: inline;"></i></button>
-				<!--<i class="icon iconfont email_check_ok" style="display: inline;color:#2cb7ca"></i>-->
			</div>
			<button type="button" disabled="disabled" class="common_btn btn" id="bindBtn">绑定</button>
			<div class="toast" style="display: none;">
				<div class="toast_content"></div>
			</div>
		</div>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js//zepto.js?v={{Msg "seo" "version"}}"></script>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/public.js?v={{Msg "seo" "version"}}1"></script>
		<script>
			$(function(){
+				<!--<i class="icon iconfont email_check_ok" style="display: inline;color:#2cb7ca"></i>-->
			</div>
			<button type="button" disabled="disabled" class="common_btn btn" id="bindBtn">绑定</button>
			<div class="toast" style="display: none;">
				<div class="toast_content"></div>
			</div>
		</div>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js//zepto.js?v={{Msg "seo" "version"}}"></script>
		<script src="{{Msg "seo" "cdn"}}/wxmyemail/js/public.js?v={{Msg "seo" "version"}}1"></script>
		<script>
+			$(function () {    
+				var isPageHide = false;   
+				window.addEventListener('pageshow', function () {      
+				    if (isPageHide) {
+		                location.reload();
+				    }    
+				});    
+				window.addEventListener('pagehide', function () {
+				    isPageHide = true;
+				});  
+			});
+			var param = getParam('name');
+			var orderCode=getParam("orderCode");
+			function initpage(){
+				$(".loading_").hide();
+				if(sessionStorage.getItem("1-1")=="1"){
+					sessionStorage.removeItem("1-1")
+					if((param=="change")||(param=="unbind")){
+						window.location.replace("/front/wxMyOrder/myEmail");
+					}else{
+						location.reload();
+					}
+				}else{
+					$("body").css({"visibility":""});
+				}
+			}
			$(function(){
+//				var initflag = true;
+//				$(window).bind("pageshow", function(event){
+//					initflag = false;
+//					if (initflag){
+//						initpage();
+//					}
+//				});
+//				if (initflag){
+//					initflag = false;
+//					initpage();
+//				}
+				$("body").css({"visibility":""});
+				$(".loading_").hide();
 				initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
				var emailVal,code;
 				var userId={{.T.userId}}
				var reg = /^[a-zA-Z0-9]+([._-]*[a-zA-Z0-9]*)*@[a-zA-Z0-9]+.[a-zA-Z0-9{2,5}$]/;
 				//判断是否是更改邮箱;
-				var param = getParam('name');
-				var orderCode=getParam("orderCode");
 				if (param=="change"){
-					$(".email_input").attr("placeholder",{{.T.text_email}})
+					$(".email_input").attr("placeholder","输入新邮箱");
 					$("#bindBtn").html("确定");
 				}else if(param == "unbind"){
 					sessionStorage.setItem("unbind_"+userId,"ok");
 					promptbox("解绑成功");
 				}
 				
-//				$(".email_input").bind('input propertychange',()=>{
-//					if((sessionStorage.getItem("send_myemail_"+userId)!=null)&&(sessionStorage.getItem("send_myemail_"+userId)!="")){
-//						if((sessionStorage.getItem("send_myemail_"+userId))!= $('.email_input').val()){
-//							$('.sendcode').prop("disabled","disabled");
-//						}else{
-//							sessionStorage.removeItem("send_myemail_"+userId);
-//							$('.sendcode').removeAttr("disabled");
-//						}
-//					}
-//				})
-				
 				//
				$('.sendcode').on('click',function(){
 					var that =this;
					emailVal = $('.email_input').val();
					let isEmail = reg.test(emailVal);//正则验证邮箱号
					if($.trim(emailVal) === ''){
 						promptbox('邮箱号不能为空');
					}else if(isEmail === false){
						promptbox('邮箱格式不正确');
					}else{
@@ -82,57 +154,69 @@
 						});
 
					}
				})
 				
-										//验证码校验
-						$('.code_input').bind('input propertychange',()=>{
-							var verity=$(".code_input").val();
-							var email=$(".email_input").val().replace(/\s*/g,"");
-							if(verity.length==6){
-								$.post("/subscribepay/orderListDetails/checkMailCodeVerify",{
-									"email":email,
-									"emailVerity":verity,
-								},function(data){
-									if(data.success){
-										$(".sendcode").css("display","none");
-										$(".code_true").show();
-										$(".code_input").prop("readonly","true");
-										$("#bindBtn").removeAttr("disabled");
-									}else{
-										$(".code_true").hide();
-										$("#bindBtn").attr("disabled","disabled");
-										promptbox("邮箱验证码错误");
-									}
-								});
-							}
-						}).on("blur",()=>{
-							var code_input_len=$(".code_input").val().length
-							if((code_input_len!=6)&&(code_input_len!=0)){
+				//验证码校验
+				$('.code_input').bind('input propertychange',()=>{
+					var verity=$(".code_input").val();
+					var email=$(".email_input").val().replace(/\s*/g,"");
+					if(verity.length==6){
+						$.post("/subscribepay/orderListDetails/checkMailCodeVerify",{
+							"email":email,
+							"emailVerity":verity,
+						},function(data){
+							if(data.success){
+								$(".sendcode").css("display","none");
+								$(".code_true").show();
+								$(".code_input").prop("readonly","true");
+								$(".email_input").prop("readonly",true);
+								$("#bindBtn").removeAttr("disabled");
+							}else{
 								$(".code_true").hide();
 								$("#bindBtn").attr("disabled","disabled");
 								promptbox("邮箱验证码错误");
 							}
 						});
-						
-						//绑定
-						$("#bindBtn").on("click",function(){
-							$.post("/subscribepay/orderListDetails/emailOperation",{
-								"operation":"binding",
-								"email":$(".email_input").val()
-								},function(data){
-								if(data.success){
-									if ($("#bindBtn").text()=="确定"){	//更改绑定
-										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-										window.location.replace("/front/wxMyOrder/setSuccess?name=changeEmail"); 
-									}else{
-										sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-										if((param="invoice")&&(orderCode!=null)){
-											window.location.replace("/front/wxMyOrder/setSuccess?name=invoice&orderCode="+orderCode); 
-										}else{
-											window.location.replace("/front/wxMyOrder/setSuccess?name=bindEmail"); 
-										}
-									}
+					}
+				}).on("blur",()=>{
+					var code_input_len=$(".code_input").val().length
+					if((code_input_len!=6)&&(code_input_len!=0)){
+						$(".code_true").hide();
+						$("#bindBtn").attr("disabled","disabled");
+						promptbox("邮箱验证码错误");
+					}
+				});
+				
+				//绑定
+				$("#bindBtn").on("click",function(){
+					$.post("/subscribepay/orderListDetails/emailOperation",{
+						"operation":"binding",
+						"email":$(".email_input").val()
+						},function(data){
+						if(data.success){
+							if ($("#bindBtn").text()=="确定"){	//更改绑定
+								sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
+								sessionStorage.setItem("1-1","1")
+								window.location.replace("/front/wxMyOrder/setSuccess?name=changeEmail"); 
+								$("body").css({"visibility":"hidden"});
+								$(".loading_").show();
+								//window.location.href="/front/wxMyOrder/setSuccess?name=changeEmail";
+							}else{
+								sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
+								if((param="invoice")&&(orderCode!=null)){
+									$(".loading_").show();
+									$("body").css({"visibility":"hidden"});
+									window.location.replace("/front/wxMyOrder/setSuccess?name=invoice&orderCode="+orderCode); 
+									//Window.location.href="/front/wxMyOrder/setSuccess?name=invoice&orderCode="+orderCode;
+								}else{
+									$("body").css({"visibility":"hidden"});
+									$(".loading_").show();
+									sessionStorage.setItem("1-1","1")
+									window.location.replace("/front/wxMyOrder/setSuccess?name=bindEmail");  
+									//window.location.href="/front/wxMyOrder/setSuccess?name=bindEmail";
 								}
-							})
-						})
			})
+							}
+						}
+					})
+				})
			})
 			
 			//提示框
 			function promptbox(str){
@@ -141,7 +225,9 @@
 				setTimeout(() =>{
 					$('.toast').hide(400);
 				},1500)
-			}
		</script>
+			}
+			
+
		</script>
 		
 	{{include "/common/baiducc.html"}}
	</body>
 </html>

+ 12 - 2
src/web/templates/weixin/email/bind_success.html

@@ -25,8 +25,16 @@
 				//分享
 				initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
 				
+				
 				let param = getParam('name');//获取url传来的参数 判断显示成功的字幕
 				var orderCode=getParam("orderCode"); //开发票的订单
+				if(param!="invoice"){
+					//增加一条历史记录
+					history.pushState({},"","");
+					window.addEventListener('popstate', function(event){
+						window.location.replace('/front/wxMyOrder/myEmail');
+					});
+				}
 				var time = 3;
 				function countDown(){
 					if(time == 0){
@@ -34,7 +42,8 @@
 						if((param=="invoice")&&(orderCode!=null)){
 							window.location.replace('/weixin/pay/toOrderDetailPage?orderCode='+orderCode);
 						}else{
-							window.location.replace('/front/wxMyOrder/myEmail');
+							window.history.go(-1);
+							//window.location.replace('/front/wxMyOrder/myEmail');
 						}
 					}else{
 						$('.time').html('(' + time + ')');
@@ -68,7 +77,8 @@
 					if((param=="invoice")&&(orderCode!=null)){
 							window.location.replace('/weixin/pay/toOrderDetailPage?orderCode='+orderCode);
 						}else{
-							window.location.replace('/front/wxMyOrder/myEmail');
+							window.history.go(-1);
+							//window.location.replace('/front/wxMyOrder/myEmail');
 						}
 				})
 			})

+ 2 - 1
src/web/templates/weixin/email/unbind_email.html

@@ -17,7 +17,8 @@
 					});
 					$('#sure_choose').on('click',() =>{
 						//sessionStorage.removeItem("send_myemail_"+{{.T.userId}});
-						window.location.replace("/front/wxMyOrder/myEmail?name=change");
+						//window.location.replace("/front/wxMyOrder/myEmail?name=change");
+						window.location.href="/front/wxMyOrder/myEmail?name=change";
 					});
 				})
 				

+ 53 - 33
src/web/templates/weixin/historypush.html

@@ -96,9 +96,9 @@
 				hasNextPage = sessionStorage.historypushHasNextPage=="true"?true:false;
 				scrollTop = sessionStorage.historypushScrollTop;
 				dataCache = JSON.parse(sessionStorage.historypushDataCache);
-				isVipSub = sessionStorage.isVipSub=="true"?true:false;;
-				isPassCount = sessionStorage.isPassCount=="true"?true:false;;
-				haskey = sessionStorage.haskey=="true"?true:false;;
+				isVipSub = sessionStorage.isVipSub=="true"?true:false;
+				isPassCount = sessionStorage.isPassCount=="true"?true:false;
+				haskey = sessionStorage.haskey=="true"?true:false;
 				isOnTail = sessionStorage.isOnTail;
 				isExpire = sessionStorage.isExpire;
 				userId = sessionStorage.userId;
@@ -109,10 +109,12 @@
 			    }
 				$("#list>*").remove();
 				count = 0;
+				firstPage = dataCache;
 				if(dataCache.length==0){
 					hasNoData();
+				}else{
+					structureHtml(dataCache,true);
 				}
-				structureHtml(dataCache,true);
 				$(window).scrollTop(scrollTop);
 				sessionStorage.removeItem("historypushDataCache");
 				sessionStorage.removeItem("historypushPageIndexCache");
@@ -152,21 +154,6 @@
 						isExpire = data.isExpire;
 						sessionStorage.isExpire = isExpire;
 						sessionStorage.setItem(userId+"_searchTime",firstTime);
-						if(!firstPage.length>0 && !haskey){
-							if(sessionStorage&&(sessionStorage.keysetindexToHistory=="1"||sessionStorage.keysetindexToHistory=="2"||sessionStorage.keysetindexToHistory=="3")){
-								sessionStorage.removeItem("keysetindexToHistory");
-								if(sessionStorage.keysetindexToHistory=="1"){
-									wx.ready(function () {
-										wx.closeWindow();
-									});
-								}else{
-									setTimeout(function(){
-										wx.closeWindow();
-									},2000);
-								}
-								return
-							}
-						}
 						showPage();
 					},
 					error: function(xhr, type){
@@ -174,6 +161,7 @@
 					}
 				});
 				if(firstPage!=null&&firstPage.length>0){
+					$(".findnull_").hide();
 					$("#list").css("visibility","hidden");
 					dataCache = dataCache.concat(firstPage);
 					structureHtml(firstPage,true);
@@ -248,22 +236,37 @@
 			//地区渲染
   			mapData();
 			if(!isVipSub){
-				history.pushState({},"","");
-				if(isInTSguide){
-					if(localStorage){
-						localStorage.removeItem("tsGuide_status");
-					}
-					window.location.href='/front/tenderSubscribe/guide';
-				}else{
-					window.location.href='/wxkeyset/keyset/index';
-				}
+				$(".normal_set").show();
+				$(".tab_left .area").hide();
 				$(".vip_banner").show();
 				$(".subscribe").css("margin-top","2rem");
 				if(isPassCount){
 					$(".open_remind").show();
 				}
-				$(".normal_set").show();
-				$(".tab_left .area").hide();
+				if(!firstPage.length>0 && !haskey){
+					if(sessionStorage&&(sessionStorage.keysetindexToHistory=="1"||sessionStorage.keysetindexToHistory=="2"||sessionStorage.keysetindexToHistory=="3")){
+						sessionStorage.removeItem("keysetindexToHistory");
+						if(sessionStorage.keysetindexToHistory=="1"){
+							wx.ready(function () {
+								wx.closeWindow();
+							});
+						}else{
+							setTimeout(function(){
+								wx.closeWindow();
+							},2000);
+						}
+						return
+					}
+					history.pushState({},"","");
+					if(isInTSguide){
+						if(localStorage){
+							localStorage.removeItem("tsGuide_status");
+						}
+						window.location.href='/front/tenderSubscribe/guide';
+					}else{
+						window.location.href='/wxkeyset/keyset/index';
+					}
+				}
 			}else{
 				if(!haskey){
 					$(".set_keyword").show();
@@ -569,6 +572,7 @@
 				$(".loading_").css("display","none");
 				return;
 			}
+			$(".findnull_").hide();
 			$("#list").css("visibility","hidden");
 			//dataCache = firstPage;
 			$("#list").html("");
@@ -777,6 +781,7 @@
 			/**/
 			overflow: hidden;
 			height:100vh;
+			overflow-y:scroll;
 		}
 		.buyerclass {
 		    border: 1px solid #CFAD89;
@@ -1015,6 +1020,16 @@
         		ajaxFun("",selectCity);
         	}
         }
+		//
+		var _scrollTop = 0;
+		function scrollHtml(){
+			if($(".subscribe").hasClass('overClass')){
+				$(".subscribe").scrollTop(_scrollTop);
+			}else{
+				$("body").scrollTop(_scrollTop);
+				_scrollTop =0;
+			}
+		}
 		//禁止默认行为方法
 		function stopScroll(e) {
 		    e.preventDefault()
@@ -1082,12 +1097,16 @@
             });
             // 选择地区
             $('#showArea').on('click', function (){
+				if(_scrollTop==0){
+					_scrollTop = scrollTop;
+				}
+            	$(".subscribe").toggleClass('overClass');
+				scrollHtml();
 				if(sessionStorage.getItem(userId+"_selectCityName")==""||sessionStorage.getItem(userId+"_selectCityName")==undefined){
 					$(this).find("span").toggleClass("current");
 				}
             	$('.area_container').slideToggle();
             	$('.screen').toggle();
-            	$(".subscribe").toggleClass('overClass');
             })
             // 地区省份选择的操作
             $('.province .p_item').click(function(){
@@ -1115,9 +1134,10 @@
             })
             //
             $('.screen').click(function(){
-				 $('#showArea').find("span").toggleClass("current");
-            	$('.area_container').slideUp();
             	$(".subscribe").toggleClass('overClass');
+				scrollHtml();
+				$('#showArea').find("span").toggleClass("current");
+            	$('.area_container').slideUp();
             	$('.screen').hide();
             })
             // 地区选择确认按钮

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

@@ -79,6 +79,18 @@
 		</style>
 		
 		<script>
+			$(function () {    
+				var isPageHide = false;   
+				window.addEventListener('pageshow', function () {      
+				    if (isPageHide) {
+		                location.reload();
+				    }    
+				});    
+				window.addEventListener('pagehide', function () {
+				    isPageHide = true;
+				});  
+			});
+		
 			initShare({{.T.signature}},{{.T.openid}},2,"jy_wxmyorder",{{.T.nickname}},{{.T.avatar}});
 			$(function(){
 				var nowTimestamp= (new Date()).valueOf();
@@ -133,6 +145,8 @@
 			        }
 			    }
 			}
+			
+
 		</script>
 
 	</head>

+ 4 - 2
src/web/templates/weixin/vipsubscribe/choose_area_upgrade.html

@@ -14,6 +14,8 @@
     <link rel="stylesheet" href="/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
     <link rel="stylesheet" href="/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}4">
 	{{include "/common/weixin.html"}}
+	<!--<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>-->
+	<script src="/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}"></script>
 </head>
 <style type="text/css">
 	body,html {
@@ -795,8 +797,8 @@
             	let areas = JSON.parse(sessionStorage.vipSubSelectAreaUpgrade);
             	for(var province in areas){
             		if(province === "全国"){
-            			console.log("23123")
-              			$(".other").trigger("click");
+              			$(".other").prop("checked",true);
+              			AreaChoose.reset();
             		}
             	}
             }

+ 2 - 1
src/web/templates/weixin/vipsubscribe/choose_industry_upgrade.html

@@ -12,7 +12,8 @@
         <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
         <link rel="stylesheet" href="/vipsubscribe/css/choose_industry.css?v={{Msg "seo" "version"}}3">
         {{include "/common/weixin.html"}}
-        
+        <!--<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>-->
+    	<script src="/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}"></script>
     </head>
     <style type="text/css">
     	body,html {

+ 27 - 11
src/web/templates/weixin/vipsubscribe/edit_subscribe_success.html

@@ -16,28 +16,44 @@
         <div class="edit_success">
             <div><i class="icon iconfont success">&#xe612;</i></div>
             <p>修改成功</p>
-            <button class="public_btn" id="back">返回(<em class="time">5</em>)</button>
+            <button class="public_btn" id="back">返回<em class="time"></em></button>
         </div>
         <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
         <script>
-            function timer(obj,callback) { 
+
+            $(function(){
+//              timer($('.time'),()=>{
+//                  window.history.go(-1); 
+//              })
+				countDown();
+                $('#back').click(function () {  
+                    window.history.go(-1); 
+                })
+            })
+       		var time =3;
+        	function countDown(){
+				if(time == 0){
+					$('.time').html('');
+					  window.history.go(-1); 
+				}else{
+					 $('.time').html('(' + time + ')');
+					time--;
+					setTimeout(()=>{
+						countDown()
+					},1000)
+				}
+			}
+        	
+        	function timer(obj,callback) { 
                 let t = 3; 
                 let timer = setInterval(() => {
                     t--;
                     obj.html(t)
-                    if(t == 0){
+                    if(t == 1){
                         callback()
                     }
                 }, 1000);
             }
-            $(function(){
-                timer($('.time'),()=>{
-                    window.history.go(-1); 
-                })
-                $('#back').click(function () {  
-                    window.history.go(-1); 
-                })
-            })
         </script>
     </body>
 </html>

+ 10 - 7
src/web/templates/weixin/vipsubscribe/keyWord.html

@@ -417,7 +417,7 @@
                     if(keystr!=""){
                         keystr += "、"
                     }
-                    keystr += a_key[j]["key"].join('');
+                    keystr += a_key[j]["key"].join(' ');
 					kws_arr[a_key[j]["key"].join(' ')]=j+"-"+i
                 } 
                 classifyHtml +='<li class="classify-item">'
@@ -448,7 +448,6 @@
         }
         //修改关键词内容
         function toSetKws(){
-			console.log(kws_index)
             //分类列表进入
             if(kws_index==-1){
                 var edhtml = '<input type="text" class="enterOne" placeholder="请输入关键词" maxlength="20">'
@@ -571,13 +570,13 @@
         //跳转附加词
         function toappendkey(th){
             if(!$('.enter.addkeyWord').is(':hidden')){
-                if($('.addkeyWord input.enterOne').val()==""){
+                if($.trim($('.addkeyWord input.enterOne').val())==""){
                     return
                 }
                 kws_index = -1
                 kws_name = $.trim($('.addkeyWord input.enterOne').val());
             }else{
-               if($(th).parent(".modify").find("textarea").val()==""){
+               if($.trim($(th).parent(".modify").find("textarea").val())==""){
                  return
                }
                 kws_name = $.trim($(th).parent(".modify").find("textarea").val());
@@ -589,13 +588,13 @@
         //
         function tonotkey(th){
             if(!$('.enter.addkeyWord').is(':hidden')){
-                if($('.addkeyWord input.enterOne').val()==""){
+                if($.trim($('.addkeyWord input.enterOne').val())==""){
                     return
                 }
                 kws_index = -1
                 kws_name = $.trim($('.addkeyWord input.enterOne').val());
             }else{
-               if($(th).parent(".modify").find("textarea").val()==""){
+               if($.trim($(th).parent(".modify").find("textarea").val())==""){
                  return
                }
                 kws_name = $.trim($(th).parent(".modify").find("textarea").val());
@@ -840,7 +839,11 @@
                 $(".add-keyword-container .addNewKeyword i").hide();
                 $('.add-keyword-container').show();
                 $('.all-classify-column').hide();
-                
+                //
+				kws_index = 0;
+				modifyFlag = false;
+				addition_kws = [];
+				not_kws = [];
                 // 显示添加关键词的输入框
                 $(".enter.addkeyWord").find(".btnChoose button").eq(0).html('添加 附加词');
                 $(".enter.addkeyWord").find(".btnChoose button").eq(1).html('添加 排除词');

+ 10 - 12
src/web/templates/weixin/vipsubscribe/renew_notice.html

@@ -4,12 +4,14 @@
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 		<title>VIP订阅</title>
-		<script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
-		<link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
-		<link rel="stylesheet" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
-		<link rel="stylesheet" href="/vipsubscribe/css/vip_service_expire.css?v={{Msg "seo" "version"}}1">
+		<script src="{{Msg "seo" "cdn"}}/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+		<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}"/>
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/vipsubscribe/css/vip_service_expire.css?v={{Msg "seo" "version"}}1">
 		{{include "/common/weixin.html"}}
+		<!--<script src="{{Msg "seo" "cdn"}}/wxswordfish/share.js?v={{Msg "seo" "version"}}"></script>-->
+		<script src="/vipsubscribe/js/share.js?v={{Msg "seo" "version"}}"></script>
 	</head>
 	<style type="text/css">
 		body,html {
@@ -192,13 +194,9 @@
 					    	$(".date-span").text(dateHtml);
 					    }
 					    if(exprie === "will"){
-					    	let a = (endstime/1000) - (86400 * 3)
-					    	let b = nowTime/1000
-					    	if(b > a){
-					    		$(".renew_service").show();
-						    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
-						    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
-					    	}
+				    		$(".renew_service").show();
+					    	$("#exprie").text("VIP订阅服务即将到期,请及时续费")
+					    	$(".recommend_title").text("以下区域、行业的订阅推送即将停止,为了不影响您的使用,请立即续费!")
 					    }else{
 					    	$(".renew_service").show();
 					    	$(".free_service").show();

+ 6 - 9
src/web/templates/weixin/vipsubscribe/renew_pay.html

@@ -13,16 +13,13 @@
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
-    <link rel="stylesheet" href="/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}5">
+    <link rel="stylesheet" href="/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}7">
 	{{include "/common/weixin.html"}}
 </head>
 <style type="text/css">
 	body,html {
 		height: 100%;
 	}
-	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
-	  	color: #686868;
-	}
 	.weixin_pay{
 		padding-right: 3px;
 	}
@@ -36,12 +33,12 @@
 	    -webkit-overflow-scrolling: touch;
 	    height: 100%;
 	}
+	::-webkit-input-placeholder{
+		color: #000;
+	}
 	
 </style>
 <body class="no-touch">
-	<script type="text/javascript">
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
-	</script>
     <div class="vip_renew">
         <div class="choose_condition">
              <!-- 正常点击vip首页续费进入显示下列提示 -->
@@ -75,7 +72,7 @@
                 <li class="choose_item select_cycle">
                     <a href="javascript:;">
                         <span class="label">延长订阅周期</span>
-                        <input type="text" value="" onfocus="this.blur();" placeholder="选择年、月" class="info choose_time">
+                        <input type="text" value="" disabled placeholder="选择年、月" class="info choose_time">
                         <!-- <span class="info choose_time">选择年、月</span> -->
                         <i class="iconfont icon-arrow choose_time"></i>
                     </a>
@@ -711,7 +708,7 @@
 		var nowYear = new Date(startTime).getFullYear();
 		var nowDay = new Date(startTime).getDate();
 		//
-		var endMonth = new Date(endTime).getMonth();
+		var endMonth = new Date(endTime).getMonth()+1;
 		var endYear = new Date(endTime).getFullYear();
 		var endDay = new Date(endTime).getDate();
 		var nowUpgrade = 0;

+ 10 - 2
src/web/templates/weixin/vipsubscribe/vip_index.html

@@ -292,10 +292,18 @@
 							//地区
 							var area = _vipData["o_area"];
 							var _area = getAreaClassArr_index(area)
-	                        $("._area").text(_area.join("、"));
+							if (_area.length>0){
+	                        	$("._area").text(_area.join("、"));
+							}else{
+	                        	$("._area").text("全国");
+							}
 							//行业
 							var buyerclass =  SortArr(_vipData["a_buyerclass"]);
-	                        $("._buyerClass").text(buyerclass.join("、"));
+							if (buyerclass.length>0){
+	                        	$("._buyerClass").text(buyerclass.join("、"));
+							}else{
+	                        	$("._buyerClass").text("全部行业");
+							}
 	                        $("._cycleCount").text(_vipData["cycle"]);
 	                        $("._activeDate").text(_userData["l_vip_starttime"]+" - "+_userData["l_vip_endtime"]);
 	                        if(_vipData["a_infotype"]==""){

+ 1 - 1
src/web/templates/weixin/vipsubscribe/vip_order_detail.html

@@ -411,7 +411,7 @@ try{
       	if (r.data.order.order_status==0){
 	    	//倒计时 未购买
 			var create_time=r.data.order.create_time;
-			//create_time="2019-11-09 11:17:55";
+			create_time=create_time.replace(/-/g,'/')
 			var clock_end = +new Date(create_time) + 172800000;
 			setTimeFunc(clock_end); 
 			setInterval(function(){

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

@@ -386,6 +386,7 @@
                             if (r.timeSelect!=undefined&&r.company!=undefined){
                            		purchase.timeSelect=[r.timeSelect,r.company];
                             }
+                            $(".weui-icon-checked").click();
                             sessionStorage.setItem("vipSubSelectArea", JSON.stringify(purchase.areaSelect));
                             sessionStorage.setItem("vipSubSelectIndustry", JSON.stringify(purchase.industrySelect));
                             sessionStorage.setItem("vipSubSelectTime", JSON.stringify(purchase.timeSelect));

+ 8 - 11
src/web/templates/weixin/vipsubscribe/vip_upgrade.html

@@ -14,16 +14,13 @@
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
     <link rel="stylesheet" href="/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}4">
+    <link rel="stylesheet" href="/vipsubscribe/css/vip_update.css?v={{Msg "seo" "version"}}7">
 	{{include "/common/weixin.html"}}
 </head>
 <style type="text/css">
 	body,html {
 		height: 100%;
 	}
-	::-webkit-input-placeholder { /* Chrome/Opera/Safari */
-	  	color: #686868;
-	}
 	.weixin_pay{
 		padding-right: 3px;
 	}
@@ -37,12 +34,12 @@
 	    -webkit-overflow-scrolling: touch;
 	    height: 100%;
 	}
+	::-webkit-input-placeholder{
+		color: #000;
+	}
 	
 </style>
 <body class="no-touch">
-	<script type="text/javascript">
-		initShare({{.T.signature}},{{.T.openid}},2,"jy_extend",{{.T.nickname}},{{.T.avatar}});
-	</script>
     <div class="vip_update">
         <div class="choose_condition">
             <p class="update_tip">提示:订阅升级可在已购买的服务基础上,增加区域、行业、以及延长订阅周期!</p>
@@ -50,7 +47,7 @@
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseAreaUpgrade">
                         <span class="label">区域</span>
-                        <input type="text" id="area" value="" onfocus="this.blur();" placeholder="选择全国、省份、地市" class="info">
+                        <input type="text" id="area" value="" disabled placeholder="选择全国、省份、地市" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <p class="add_tips area-list" style="display: none;">已新增 1 个省级区域、4 个地市</p>
@@ -58,7 +55,7 @@
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseIndustryUpgrade">
                         <span class="label">行业</span>
-                        <input type="text" id="buyerclass" onfocus="this.blur();" value="" placeholder="选择采购单位行业" class="info">
+                        <input type="text" id="buyerclass" disabled value="" placeholder="选择采购单位行业" class="info">
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <p class="add_tips industry-list" style="display: none;">已新增 2 个行业</p>
@@ -932,7 +929,7 @@
 					if(checkObj(area)){
 						areaHtml = "全国";
 					}
-			    	$('#area').val(areaHtml);
+			    	$('#area').attr("placeholder",areaHtml);
 			    }
 			    if(buyerclass !== "" && buyerclass !== undefined){
 			    	for(var i in buyerclass){
@@ -944,7 +941,7 @@
 					if(checkObj(buyerclass)){
 						buyerclassHtml = "全行业";
 					}
-					$('#buyerclass').val(buyerclassHtml);
+					$('#buyerclass').attr("placeholder",buyerclassHtml);
 			    }
 			    //
 			    var nowDate = data.now.replace(/-/g, ".");

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

@@ -496,7 +496,7 @@ pre {
 }
 
 .time_label{
-	margin-top:5px;
+	margin-top:10px;
 	display: flex;
 	align-items: center;
 	justify-content: space-between;

+ 104 - 0
src/web/templates/weixin/wxinfocontent_rec.html

@@ -406,6 +406,51 @@ pre {
 	left: 90%;
 	top: 20px;
 }
+
+.buyerclass{
+    background: #CFAD89;
+    padding: 1px 3px;
+    color: #fff;
+    border-radius: 3px;
+    margin-right: 3px;
+    float: left;
+}
+.timebefore_vip{
+	color: #888888;
+    font-size: 14px;
+	
+}
+.timebefore_vip i{
+	color: #7a7a7a;
+	font-size: 16px;
+	top: 3px;
+}
+.toolbar{
+	font-size: 13px;
+	margin:10px 10px 25px;
+}
+.toolbar i{
+	margin-right: 2px;
+}
+.toolbar .follow{
+	float: right;
+	color: #ffba00;
+	position: relative;
+	top: 2px;
+}
+.toolbar .follow_vip{
+	float: right;
+	color: #ffba00;
+}
+.toolbar .follow i,.toolbar .follow_vip i{
+	top: 2px;
+}
+.time_label {
+    margin-top: 10px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+}
 </style>
 </head>
 <body>
@@ -427,6 +472,64 @@ pre {
 <div class="info">
 	<div class="title myfollow" id="title">{{.T.obj.title}}</div>
 	<div class="toolbar">
+	{{if .T.isVip}}
+	<!--VIP-->
+		<div class="type_label clearfix">
+			<script>var area="{{.T.obj.area}}"; if(area!="A" && area.replace(/\s+/g,"")!=""){document.write('<span class="area">'+area+'</span>');}</script>
+			<script>
+				var type = "";
+				if ({{.T.obj.subtype}} !=""){
+					type = {{.T.obj.subtype}};
+				}else if({{.T.obj.toptype}} !=""){
+					type = {{.T.obj.toptype}};
+				}else{
+					type = {{.T.obj.type}};
+					if(type == "bid"){
+						type = "中标";
+					}else if(type == "tender"){
+						type = "招标";
+					}else{
+						type = "";
+					}
+				}
+				if(type != ""){
+					document.write("<span class='type'>"+type+"</span>");
+				}
+	
+				var industry = {{.T.obj.industry}};
+				var subscopeclass = {{.T.obj.s_subscopeclass}};
+				//vip用户显示与普通用户不同
+				var buyerclass={{.T.obj.buyerclass}};
+				if(industry){
+	                document.write("<span class='industry'>"+industry+"</span>");
+				}else if(subscopeclass){
+					var suclass = subscopeclass.split(",")[0];
+					document.write("<span class='industry'>"+ suclass.split("_")[0]+"</span>");
+				}
+				if(buyerclass){
+					document.write("<span class='buyerclass'>"+ buyerclass+"</span>");
+				}
+				//项目匹配
+				projectMatch=getParam("projectMatch");
+				if (projectMatch){
+					document.write("<span class='projectMatch'>"+projectMatch+"</span>")
+				}
+				
+			</script>
+		</div>
+		<div class="time_label">
+			<script>
+				var l_publishtime = {{.T.obj.l_publishtime}};
+					if(l_publishtime != ""){
+						var tdf = timeDiff(new Date(Number(l_publishtime+"000")))
+						if(tdf != null){
+							document.write("<div class='timebefore_vip'><i class='glyphicon bofangjilu'></i>"+tdf+"</div>");
+						}
+					}
+			</script>
+		{{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<div class="follow" style="top:0px !important">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</div>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+		</div>
+	{{else}}<!--非VIP-->
 		<script>var area="{{.T.obj.area}}"; if(area!="A" && area.replace(/\s+/g,"")!=""){document.write('<span class="area">'+area+'</span>');}</script>
 		<script>
 			var type = "";
@@ -465,6 +568,7 @@ pre {
 			}
 		</script>
 		{{if .T.obj.hasSession}}{{if or .T.obj.projectname .T.obj.projectcode}}<span class="follow">{{if .T.obj.followFlag}}<i class="glyphicon yiguanzhu"></i>已关注{{else}}<i class="glyphicon weiguanzhu"></i>关注项目{{end}}</span>{{end}}{{else}}<!--<a href="/swordfish/share/-1" style="text-decoration: none;color:#24C0D7;"><span class="follow"><i class="glyphicon weiguanzhu"></i></span>关注项目</a>-->{{end}}
+	{{end}}
 	</div>
 	
 	<div class="newuser hidden">

+ 5 - 0
src/web/templates/weixin/wxkeyset/index.html

@@ -209,6 +209,11 @@ $(function(){
 		if(myArray.length>=10){
 			$("#ten").css("margin-bottom","1rem");
 		}
+		if (myArray.length>0){
+			sessionStorage.haskey = true;
+		}else{
+			sessionStorage.haskey = false;
+		}
 		isfocusing = false;
 		var thisClass = $(this);
 		$(".keyword").attr("readonly",false);