소스 검색

分支合并

lianbingjie 6 년 전
부모
커밋
7f558f89ad
63개의 변경된 파일3651개의 추가작업 그리고 1158개의 파일을 삭제
  1. 22 14
      src/config.json
  2. 0 0
      src/dataexport.json
  3. 1 0
      src/jfw/filter/filter.go
  4. 26 9
      src/jfw/front/dataExport.go
  5. 14 2
      src/jfw/front/front.go
  6. 17 5
      src/jfw/front/swordfish.go
  7. 1 1
      src/jfw/front/ws_dataExport.go
  8. 5 5
      src/jfw/front/wxMyOrder.go
  9. 11 0
      src/jfw/jyutil/rsa_test.go
  10. 199 0
      src/jfw/jyutil/sessionEncryption.go
  11. 55 18
      src/jfw/jyutil/sessionkeep.go
  12. 2 1
      src/jfw/modules/app/src/app/front/login.go
  13. 10 5
      src/jfw/modules/app/src/app/front/swordfish.go
  14. 2 0
      src/jfw/modules/app/src/app/jyutil/pushId.go
  15. 0 2
      src/jfw/modules/app/src/main.go
  16. BIN
      src/jfw/modules/app/src/src
  17. BIN
      src/jfw/modules/app/src/web.zip
  18. 22 0
      src/jfw/modules/app/src/web/staticres/jyapp/css/wxsearch.css
  19. 4 2
      src/jfw/modules/app/src/web/staticres/jyapp/js/common.js
  20. 78 30
      src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js
  21. 9 0
      src/jfw/modules/app/src/web/templates/weixin/search/mainSearch.html
  22. BIN
      src/jfw/modules/crawler/src/src
  23. BIN
      src/jfw/modules/ttfMapping/src/src
  24. 48 0
      src/jfw/modules/weixin/src/jrpc/jrpc.go
  25. BIN
      src/jfw/modules/weixin/src/src
  26. 333 0
      src/jfw/pay/aliPay.go
  27. 450 0
      src/jfw/pay/dataExportPay.go
  28. 4 323
      src/jfw/pay/weixin.go
  29. 54 12
      src/jfw/public/dataexport.go
  30. 7 0
      src/jfw/public/db.go
  31. 2 2
      src/main.go
  32. BIN
      src/src
  33. 25 0
      src/web/staticres/css/dev2/superSearch.css
  34. 22 0
      src/web/staticres/css/wxsearch.css
  35. 183 1
      src/web/staticres/dataExport/css/drder_details.css
  36. 19 14
      src/web/staticres/dataExport/css/payment_order.css
  37. BIN
      src/web/staticres/dataExport/image/alipay.png
  38. BIN
      src/web/staticres/dataExport/image/alipay_b.png
  39. BIN
      src/web/staticres/dataExport/image/close.png
  40. BIN
      src/web/staticres/dataExport/image/phone_wx.png
  41. BIN
      src/web/staticres/dataExport/image/phone_zfb.png
  42. 8 0
      src/web/staticres/dataExport/jquery-confirm/jquery-confirm.min.css
  43. 1075 0
      src/web/staticres/dataExport/jquery-confirm/jquery-confirm.min.js
  44. 1 1
      src/web/staticres/dataExport/js/conditions_order.js
  45. 17 11
      src/web/staticres/dataExport/js/mapJSON.js
  46. 23 11
      src/web/staticres/dataExport/js/pageination.ie.js
  47. 26 13
      src/web/staticres/js/biddingSearch.js
  48. 0 56
      src/web/staticres/js/popup/tap.js
  49. 1 1
      src/web/staticres/js/proproject.js
  50. 86 93
      src/web/staticres/js/superSearch.js
  51. 76 27
      src/web/staticres/js/wxSupersearch.js
  52. 1 1
      src/web/staticres/pccss/index.css
  53. 0 1
      src/web/templates/common/pnc.html
  54. 13 4
      src/web/templates/pc/biddetail.html
  55. 13 4
      src/web/templates/pc/biddetail_rec.html
  56. 37 10
      src/web/templates/pc/createOrderPage.html
  57. 1 0
      src/web/templates/pc/landingpage.html
  58. 608 469
      src/web/templates/pc/myOrder.html
  59. 1 2
      src/web/templates/pc/orderDetail.html
  60. 15 1
      src/web/templates/pc/supsearch.html
  61. 16 5
      src/web/templates/pc/waitpay.html
  62. 1 0
      src/web/templates/weixin/landingpage/index.html
  63. 7 2
      src/web/templates/weixin/search/mainSearch.html

+ 22 - 14
src/config.json

@@ -214,23 +214,30 @@
 			"sjdc_detailmsg": "剑鱼标讯-历史数据"
 		}
 	},
+	"aliPay": {
+		"appid": "2016092900620854",
+		"reqUrl": "https://openapi.alipaydev.com/gateway.do",
+		"Subject": "剑鱼数据导出",
+		"privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAtO7CU4hpdcMmV43MEA8bqQJYYx+f6yvYkP0nFc/oCvU24bU6zAdK/H2H56quEwD8Dh5YtVTfUCcKqpcG9HXY11TXWKCEUQiK1tkb0o7oSSURwk6h1DdDbg8m1+H8s+k+mvMvcqVCYKYi03PIPQyJCuHmzx/vcaALXRr2HOrEFaFFA8WYST1rywiKeyrC9PCNX1aJjGADhCs3cGrdZEJc4k+2tIHTYJccx+mJ96QiEkzFhJTqEmSFPcNqNUX9uCPgeVhfHW2pRNyffvrhoEyeSr1QoOpaYyn0I5JD2axnypBFCbk6P69LY3eGNKtOe81lp9hiZbMYpXPqb6KwPXTVQQIDAQABAoIBAEbJQm276MaR2uZWK4f84S12JW5iaQZw2QGgiTIXbQkcdqRHawF3uPafhhQ0ynXU5MgBR2NqGRQasimbfLUXhgZ4wueBpUKuvOLhfekaz/YN8qy6ZsXH+TGN6/x6BYu9rSiiC+YmkZmOZgGkQqrfxJ3lU4+lRuCFZOzAJ5mYn652CHRJXy6eDgZfyFLP2ol4/ioJEhwnGFXV345DlsVgmXTEe+IfjTyuvzxBtjod4lfu3dj/f2PhPrcgvN0ZQf1ldZbS+6FkMWInMOQt/WsJ/ANfiKgQ4sPzlxIhmVjrvDlnYTc1lbFekyInzZumV0pDyId+1Y6LAjxJTAhnjFAlBSECgYEAwsQdxOiZNLtxZ8J8JCQHKERYIo7euArW0iAurF+3Q9VNeGj0voFrmfHPju5OF5BHtuc7D3lkwZG4Ac+pyQtxF5dsEMl4vBoNc6onRQFsSDVEEIpl7OBghGlg1as23tvPSMh7DKnILM9OzVfFQ9WLvwHJwLRGsM7LOtmNovq4UFsCgYEA7dE/9Avr5YtCUjij8Y2zkAxN6qb8+ggqFoPiCr91JNGaKNKV9D2K7D3Zk49TXFJm7SX2zgYFuqR2Pa9vAWh9jtmwsc8L0qpIym4J1MM5ud/Xiu9c8O/prQOr7JlICNdk8WfqGbUC83BYfWa5SDonlXFYi6x3LlXdZnvEfZF645MCgYAC2ZnR6tFrGx8StJ7abIiKR02+27ZYnRf9pSjprtDgtjtW+royG3S2oPo3jjcoUx0piQKtPEqEJpy5sg86+ObjwHx9VmVk40C1I5VFhjrOZ7EiSNQq/jGLXntjRQkdg7vpxb0/NzDNrw7pJFKnpnVQCzenkTvDlJMWvl47N04BJwKBgHnpVtuIcPlPFkSH/KMLfQ1PAXJVAEI8hTbdjLbtxuOE/34F1hFKqzjHzA2034roQxM27vpWZAF15Zdho4oZQqREPCwqc2kfGgmLt0Z2fdUnRptWcVKh6ixjQXMccKz3niuSlZNwE38wDGzciAbaqQgW/sk7NC1wnvq2X9fvCAw5AoGANG2usqWYF4x+LvbhcdrKpJsjtvkLa2u9g2/wNXdoj+tBrv310O22/YM5LOcq9MrKPlx1S1C1KLoQO9TWFZiYuQ9C/sk7/ZTNmKQxCxVV0FVPaBYp+meD6sjgoRVJvaqY0UxnJwlHWMrusPTFua7Mtogqx9cvzlQolWh5VX7N1DM=\n-----END RSA PRIVATE KEY-----",
+		"callbackPublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqkZY9RWrX1cZi/AWuBn7u6bjoT2RMBaq4Gdc87CgrIZm89wa28mYzbnuOrzxGtEMP82lU/KoVAbzY46j7s+bR0qUyUwQyFDFHYzDNSjhngeokzcZ+8rU6a8IOyXOHU0V2BLuvzKb44P4ctzZpmgtDZfxMbAt0ULumz9ma3elYa3pEYgQCoWm5i9eiN8DwhY2uBKZ94vW8+c2iCSwoNntZt6S608TYNOICl7nNWIR+zu3f3HnEE+7mQR37XC1aJWmtH5hKrHF8W5PVzEGhOWETcEdpUmaLhXOfN9nCBKNgFbYUmH+r6s93kfdHAqm6MEuFE6m42nmk6lqoDhEeHKteQIDAQAB"
+	},
 	"industry": "分类综合测试",
 	"recommendEntLimit": "50",
 	"jyapp": {
-		"domain":"http://web-jydev-wky.jianyu360.cn",
+		"domain": "http://web-jydev-wky.jianyu360.cn",
 		"apkurl": "/jyapp/res/%s/jianyu360.apk",
 		"appstoreurl": "https://itunes.apple.com/cn/app/id1354897149",
-		"channelDir":{
-			"s001":"baiduSem",
-			"s003":"shenmaSem",
-			"huawei":"huawei",
-			"xiaomi":"xiaomi",
-			"yingyongbao":"yingyongbao",
-			"douyin":"douyin",
-			"wx01":"jywx",
-			"topnet":"topnet",
-			"duanxin":"duanxin",
-			"default":"topnet"
+		"channelDir": {
+			"s001": "baiduSem",
+			"s003": "shenmaSem",
+			"huawei": "huawei",
+			"xiaomi": "xiaomi",
+			"yingyongbao": "yingyongbao",
+			"douyin": "douyin",
+			"wx01": "jywx",
+			"topnet": "topnet",
+			"duanxin": "duanxin",
+			"default": "topnet"
 		}
 	},
 	"limitSearchText": {
@@ -257,7 +264,7 @@
 		"shareTimesUpperLimitR": 4000,
 		"shareTimesUpperLimitIrr": 1000
 	},
-	"cookiedomain": ".qmx.top",
+	"cookiedomain": "web-jydev-wky.jianyu360.cn",
 	"pcHelper": {
 		"subscribeTokenTimeout": 15,
 		"version": "V2.5.1"
@@ -306,5 +313,6 @@
 	"appPushServiceRpc": "127.0.0.1:5566",
 	"pushTimeout": 300,
 	"ninePushTimeout": 172800,
-	"openPlatformUrl": "https://open-jytest.jianyu360.cn/"
+	"openPlatformUrl": "https://open-jytest.jianyu360.cn/",
+	"sessionEnctryFlushCorn": "0 0/10 * * * ?"
 }

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/dataexport.json


+ 1 - 0
src/jfw/filter/filter.go

@@ -13,6 +13,7 @@ func init() {
 		SKCookieName:      "userid_secure",
 		App:               xweb.RootApp(),
 		LoginedSessionVar: "userId",
+		Encryption:        jyutil.InitEncryptionStruct(),
 	}
 	xweb.AddFilter(sessionkeeper)
 

+ 26 - 9
src/jfw/front/dataExport.go

@@ -1,6 +1,7 @@
 package front
 
 import (
+	"encoding/base64"
 	"encoding/json"
 	"errors"
 	"fmt"
@@ -14,6 +15,7 @@ import (
 	"strings"
 	"time"
 
+	"github.com/SKatiyar/qr"
 	"github.com/go-xweb/xweb"
 )
 
@@ -213,10 +215,17 @@ func (d *DataExport) QueryOrder() error {
 				v["order_money"] = float64(orderMoney.(int64)) / 100
 			}
 			if v["id"] != nil && orderMoney != nil && v["order_code"] != nil {
-				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), query["user_id"].(string))
+				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), util.ObjToString(v["pay_way"]), query["user_id"].(string))
 			}
 		}
 	}
+	for _, v := range *list {
+		if v["pay_way"] == "微信" && util.IntAll(v["order_status"]) == 0 {
+			r, _ := qr.Encode(util.ObjToString(v["code_url"]), qr.M)
+			pngdat := r.PNG()
+			v["code_url"] = base64.StdEncoding.EncodeToString(pngdat)
+		}
+	}
 	d.ServeJson(map[string]interface{}{
 		"list":     list,
 		"count":    count,
@@ -237,6 +246,7 @@ func (d *DataExport) DeleteOrder() error {
 			"user_id": userId.(string),
 		}
 		boo := public.Mysql.Update(tableName_order, queryMap, map[string]interface{}{"order_status": -1})
+		//撤销订单
 		d.ServeJson(map[string]interface{}{"success": boo})
 	}
 	return nil
@@ -302,12 +312,21 @@ func (d *DataExport) ToOrderDetail(orderCode string) error {
 		orderDetail["applybill_status"] = "F" //未申请
 	}
 	orderStatus := util.IntAll((orderDetail)["order_status"])
-	if orderStatus == 1 && util.ObjToString(orderDetail["pay_way"]) == "微信" {
-		//微信订单编号
-		wxPayMap := map[string]interface{}{}
-		wxPayMap["out_trade_no"] = orderDetail["out_trade_no"]
-		wxpay := public.Mysql.FindOne("weixin_pay", wxPayMap, "", "")
-		orderDetail["transaction_id"] = (*wxpay)["transaction_id"]
+	if orderStatus == 1 {
+		orderDetail["transaction_id"] = func() string {
+			table := ""
+			if util.ObjToString(orderDetail["pay_way"]) == "微信" {
+				table = "weixin_pay"
+			} else if util.ObjToString(orderDetail["pay_way"]) == "支付宝" {
+				table = "ali_pay"
+			} else {
+				return ""
+			}
+			wxPayMap := map[string]interface{}{}
+			wxPayMap["out_trade_no"] = orderDetail["out_trade_no"]
+			wxpay := public.Mysql.FindOne(table, wxPayMap, "", "")
+			return util.ObjToString((*wxpay)["transaction_id"])
+		}()
 	}
 	d.T["o"] = orderDetail
 	d.T["logid"] = config.Seoconfig["dataexport"].(string)
@@ -483,8 +502,6 @@ func (d *DataExport) ToCreateOrderPage(_id string) error {
 		"data_count": msgCount, //匹配到的数据总数 int
 	})
 	//邮箱验证
-	//	d.DelSession("DataExportVerifyEmail_val")
-	//	d.DelSession("DataExportVerifyPhone_val")
 	email := d.GetSession("DataExportVerifyEmail_val")
 	resPhone := d.GetSession("DataExportVerifyPhone_val")
 	if email != nil {

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

@@ -606,6 +606,8 @@ func (f *Front) SignOut() error {
 	f.DelSession("openid")
 	f.DelSession("s_m_openid")
 	f.DelSession("userId")
+	f.DelSession("DataExportVerifyEmail_val")
+	f.DelSession("DataExportVerifyPhone_val")
 	f.ServeJson("ok")
 	//sess := f.GetSession("user")
 	//if user, ok := sess.(map[string]interface{}); ok {
@@ -1127,15 +1129,25 @@ func (f *Front) DownloadJyApp() error {
 	}
 	domain, _ := jyapp["domain"].(string)
 	apkurl, _ := jyapp["apkurl"].(string)
-	return f.Redirect(getDownloadUri(code, domain+apkurl))
+	return f.Redirect(getDownloadUri(code, source, domain+apkurl))
 }
 
-func getDownloadUri(code, download string) string {
+//获取app下载地址,不通code对应不通渠道的app包
+func getDownloadUri(code, source, download string) string {
 	jyapp := config.Sysconfig["jyapp"].(map[string]interface{})
 	channelMap := jyapp["channelDir"].(map[string]interface{})
 	if dir, ok := channelMap[code]; ok {
 		return fmt.Sprintf(download, dir)
 	}
+	//渠道信息未匹配上 根据source判断微信
+	if source == "wx_othershare" || source == "wx_infocontentshare" || source == "weixinAutoRpl" || source == "weixinAapplySub" {
+		//微信下载地址
+		wxdir, ok := jyapp["wx01"]
+		if ok {
+			return fmt.Sprintf(download, wxdir)
+		}
+	}
+	//全部未匹配上 取默认
 	return fmt.Sprintf(download, channelMap["default"])
 }
 

+ 17 - 5
src/jfw/front/swordfish.go

@@ -493,6 +493,11 @@ func (m *Front) PcAjaxReq() {
 	minprice := m.GetString("minprice") //最低价格
 	maxprice := m.GetString("maxprice") //最高价格
 	m.SetSession("selectType", selectType)
+	//只有前20条 有全字段,
+	if subtype != "拟建" && currentPage != 1 {
+		tabularflag = ""
+	}
+
 	if selectType == "" {
 		selectType = "all"
 	}
@@ -617,6 +622,7 @@ func (m *Front) PcAjaxReq() {
 			}
 		}
 	}
+	//只有前20条
 	m.ServeJson(map[string]interface{}{
 		"limitFlag":     limitFlag,
 		"status":        isLimit,
@@ -880,6 +886,12 @@ func (m *Front) WxsearchlistPaging() {
 		secondFlag := ""
 		var secondList []map[string]interface{}
 		if searchvalue != "" {
+			filed := ""
+			if pageNum == 1 {
+				filed = bidSearch_field
+			} else {
+				filed = bidSearch_field_1
+			}
 			selectType := m.GetString("selectType")
 			subtype := m.GetString("subtype")
 			scope := m.GetString("scope")
@@ -900,16 +912,16 @@ func (m *Front) WxsearchlistPaging() {
 				if limitFlag {
 					if pageNum == 1 {
 						if open_supersearch {
-							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, public.Lst.TotalPage*wx_pageSize, selectType, bidSearch_field)
+							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, public.Lst.TotalPage*wx_pageSize, selectType, filed)
 						} else {
-							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, public.Lst.TotalPage*wx_pageSize, selectType, bidSearch_field)
+							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, public.Lst.TotalPage*wx_pageSize, selectType, filed)
 						}
 					}
 				} else {
 					if open_supersearch {
-						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, selectType, bidSearch_field)
+						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, selectType, filed)
 					} else {
-						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, selectType, bidSearch_field)
+						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, selectType, filed)
 					}
 				}
 				listSize := 0
@@ -925,7 +937,7 @@ func (m *Front) WxsearchlistPaging() {
 					//						secondCount = elastic.Count(INDEX, TYPE, qstr)
 					//					}
 					secondLimit := 2*pc_pageSize - listSize
-					secRel = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, 0, secondLimit, 0, false)
+					secRel = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, filed, 0, secondLimit, 0, false)
 					if secRel != nil {
 						public.BidListConvert(industry, secRel)
 						for _, v := range *secRel {

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

@@ -73,7 +73,7 @@ func (w *WsDataExport) GetPayParm() error {
 	orderid := util.Int64All((*Order)["id"])
 	orderMoney := util.IntAll((*Order)["order_money"])
 
-	realToken := public.GetWaitPayToken(orderid, orderMoney, code, userid)
+	realToken := public.GetWaitPayToken(orderid, orderMoney, code, "微信", userid)
 	if realToken != token {
 		log.Println("token错误!", userid, realToken, token, code, orderMoney, orderid)
 		return nil

+ 5 - 5
src/jfw/front/wxMyOrder.go

@@ -82,7 +82,7 @@ func (w *WxMyOrder) GetOneMore() error {
 				v["order_money"] = float64(orderMoney.(int64)) / 100
 			}
 			if v["id"] != nil && orderMoney != nil && v["order_code"] != nil {
-				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), queryM["user_id"].(string))
+				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), "微信", queryM["user_id"].(string))
 			}
 		}
 	}
@@ -170,7 +170,7 @@ func (w *WxMyOrder) MyOrder() error {
 				v["order_money"] = float64(orderMoney.(int64)) / 100
 			}
 			if v["id"] != nil && orderMoney != nil && v["order_code"] != nil {
-				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), queryM["user_id"].(string))
+				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), "微信", queryM["user_id"].(string))
 			}
 		}
 	}
@@ -226,7 +226,7 @@ func (w *WxMyOrder) MyOrderPaging() error {
 				v["order_money"] = float64(orderMoney.(int64)) / 100
 			}
 			if v["id"] != nil && orderMoney != nil && v["order_code"] != nil {
-				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), queryM["user_id"].(string))
+				v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), "微信", queryM["user_id"].(string))
 			}
 		}
 	}
@@ -304,7 +304,7 @@ func (w *WxMyOrder) WxToOrderDetail() error {
 		orderDetail["order_money"] = float64(orderMoney.(int64)) / 100
 	}
 	if orderDetail["id"] != nil && orderMoney != nil && orderDetail["order_code"] != nil {
-		orderDetail["token"] = public.GetWaitPayToken(orderDetail["id"].(int64), int(orderMoney.(int64)), orderDetail["order_code"].(string), userid)
+		orderDetail["token"] = public.GetWaitPayToken(orderDetail["id"].(int64), int(orderMoney.(int64)), orderDetail["order_code"].(string), "微信", userid)
 	}
 	//加密
 	orderDetail["filter_id"] = util.SE.Encode2Hex(orderDetail["filter_id"].(string))
@@ -453,7 +453,7 @@ func (w *WxMyOrder) WxDeleteOrder() error {
 					v["order_money"] = float64(orderMoney.(int64)) / 100
 				}
 				if v["id"] != nil && orderMoney != nil && v["order_code"] != nil {
-					v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), queryM["user_id"].(string))
+					v["token"] = public.GetWaitPayToken(v["id"].(int64), int(orderMoney.(int64)), v["order_code"].(string), "微信", queryM["user_id"].(string))
 				}
 			}
 		}

+ 11 - 0
src/jfw/jyutil/rsa_test.go

@@ -0,0 +1,11 @@
+package jyutil
+
+import (
+	"fmt"
+	"testing"
+)
+
+func Test_run(*testing.T) {
+	a := getNewRsaStruct()
+	fmt.Printf("%+v", a)
+}

+ 199 - 0
src/jfw/jyutil/sessionEncryption.go

@@ -0,0 +1,199 @@
+package jyutil
+
+import (
+	"bytes"
+	"crypto/rand"
+	"crypto/rsa"
+	"crypto/x509"
+	"encoding/json"
+	"encoding/pem"
+	"jfw/config"
+	"log"
+	"qfw/util"
+	"qfw/util/redis"
+	"time"
+
+	"github.com/cron"
+)
+
+//
+type RsaStruct struct {
+	Sign       string
+	PrivateKey *rsa.PrivateKey
+	PublicKey  *rsa.PublicKey
+	RsaConfig  *RsaConfig
+}
+
+type RsaConfig struct {
+	RsaSignflag   string
+	PrivateKeyStr string
+	PublicKeyStr  string
+}
+
+type MyWrite struct {
+	Byte *bytes.Buffer
+}
+
+func (m MyWrite) Write(p []byte) (n int, err error) {
+	n, err = m.Byte.Write(p)
+	return
+}
+
+func getNewRsaConfig() *RsaConfig {
+	//私钥-----
+	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
+	if err != nil {
+		log.Println(err)
+	}
+	X509PrivateKey := x509.MarshalPKCS1PrivateKey(privateKey)
+	privateBlock := pem.Block{Type: "RSA Private Key", Bytes: X509PrivateKey}
+	privateWrite := MyWrite{Byte: bytes.NewBuffer([]byte(""))}
+	pem.Encode(privateWrite, &privateBlock)
+	privateKeyByte := privateWrite.Byte.Bytes()
+
+	//公钥----
+	publicKey := privateKey.PublicKey
+	X509PublicKey, err := x509.MarshalPKIXPublicKey(&publicKey)
+	if err != nil {
+		log.Println(err)
+	}
+	publicBlock := pem.Block{Type: "RSA Public Key", Bytes: X509PublicKey}
+	publicWrite := MyWrite{Byte: bytes.NewBuffer([]byte(""))}
+	pem.Encode(publicWrite, &publicBlock)
+	publicKeyByte := publicWrite.Byte.Bytes()
+
+	return &RsaConfig{
+		RsaSignflag:   time.Now().Format(util.Date_Full_Layout),
+		PrivateKeyStr: string(privateKeyByte),
+		PublicKeyStr:  string(publicKeyByte),
+	}
+}
+
+func initRsa(config *RsaConfig) *RsaStruct {
+	//初始化私钥
+	private_block, _ := pem.Decode([]byte(config.PrivateKeyStr))
+	private, err := x509.ParsePKCS1PrivateKey(private_block.Bytes)
+	if err != nil {
+		log.Println(err)
+	}
+	//初始化公钥
+	public_block, _ := pem.Decode([]byte(config.PublicKeyStr))
+	publicKeyInterface, err := x509.ParsePKIXPublicKey(public_block.Bytes)
+	if err != nil {
+		log.Println(err)
+	}
+	public := publicKeyInterface.(*rsa.PublicKey)
+	return &RsaStruct{
+		Sign:       config.RsaSignflag,
+		RsaConfig:  config,
+		PrivateKey: private,
+		PublicKey:  public,
+	}
+}
+
+//加密
+func (r *RsaStruct) Encrypt(str string) string {
+	enStrByte, err := rsa.EncryptPKCS1v15(rand.Reader, r.PublicKey, []byte(str))
+	if err != nil {
+		log.Printf("%s加密失败%v", str, err)
+	}
+	return string(enStrByte)
+}
+
+//解密
+func (r *RsaStruct) Decrypt(enStr string) string {
+	deStrByte, err := rsa.DecryptPKCS1v15(rand.Reader, r.PrivateKey, []byte(enStr))
+	if err != nil {
+		log.Printf("%s解密失败%v", enStr, err)
+	}
+	return string(deStrByte)
+}
+
+type EncryptionStruct struct {
+	RsaStruct_Now  *RsaStruct
+	MapRsa         map[string]*RsaStruct
+	EncryptionConf *EncryptionConf
+}
+
+type EncryptionConf struct {
+	Now        string
+	MapRsaConf map[string]*RsaConfig
+}
+
+func InitEncryptionStruct() *EncryptionStruct {
+	encryStruct := EncryptionStruct{EncryptionConf: &EncryptionConf{}}
+	go func() {
+		cn := cron.New()
+		str := util.ObjToString(config.Sysconfig["sessionEnctryFlushCorn"])
+		cn.AddFunc(str, encryStruct.Flush)
+		cn.Start()
+	}()
+	//从redis获取rsa公钥秘钥
+	redis_obj := util.ObjToString(redis.Get("session", "sessionEncryption"))
+	if redis_obj != "" {
+		encryconf := EncryptionConf{}
+		err := json.Unmarshal([]byte(redis_obj), &encryconf)
+		if err != nil {
+			log.Println("InitEncryptionStruct Unmarshal redis err", err)
+		} else {
+			encryStruct.EncryptionConf = &encryconf
+			encryStruct.initAllRsa()
+			log.Println("从redis中加载EncryptionStruct")
+			return &encryStruct
+		}
+	}
+
+	log.Println("首次创建EncryptionStruct")
+	newRsaConf := getNewRsaConfig()
+	encryStruct.EncryptionConf.Now = newRsaConf.RsaSignflag
+	encryStruct.EncryptionConf.MapRsaConf = map[string]*RsaConfig{newRsaConf.RsaSignflag: newRsaConf}
+	encryStruct.initAllRsa()
+	go func() {
+		//存入redis
+		byteArr, err := json.Marshal(encryStruct.EncryptionConf)
+		log.Println(string(byteArr))
+		if err != nil {
+			log.Printf("InitEncryptionStruct save %s redis err %:v\n", byteArr, err)
+			return
+		}
+		redis.Put("other", "sessionEncryption", string(byteArr), -1)
+	}()
+	return &encryStruct
+}
+
+func (e *EncryptionStruct) initAllRsa() {
+	e.MapRsa = map[string]*RsaStruct{}
+	for k, v := range e.EncryptionConf.MapRsaConf {
+		thisRsa := initRsa(v)
+		e.MapRsa[k] = thisRsa
+		if k == e.EncryptionConf.Now {
+			e.RsaStruct_Now = thisRsa
+		}
+	}
+}
+
+//更新加密文件RsaStruct_Now
+func (e *EncryptionStruct) Flush() {
+	log.Printf("before  %+v", e.MapRsa)
+	last := e.RsaStruct_Now
+
+	newRsa := initRsa(getNewRsaConfig())
+	//更新map
+	e.MapRsa = map[string]*RsaStruct{newRsa.Sign: newRsa, last.Sign: last}
+	//更新默认加密
+	e.RsaStruct_Now = newRsa
+	log.Printf("after  %+v", e.MapRsa)
+
+	//更新redis
+	func() {
+		e.EncryptionConf.Now = e.RsaStruct_Now.Sign
+		e.EncryptionConf.MapRsaConf = map[string]*RsaConfig{newRsa.Sign: newRsa.RsaConfig, last.Sign: last.RsaConfig}
+		byteArr, err := json.Marshal(e.EncryptionConf)
+		log.Println(string(byteArr))
+		if err != nil {
+			log.Printf("InitEncryptionStruct save %s redis err %:v\n", byteArr, err)
+			return
+		}
+		redis.Put("other", "sessionEncryption", string(byteArr), -1)
+	}()
+}

+ 55 - 18
src/jfw/jyutil/sessionkeep.go

@@ -1,6 +1,7 @@
 package jyutil
 
 import (
+	"encoding/base64"
 	"fmt"
 	"net/http"
 	"qfw/util/redis"
@@ -18,6 +19,7 @@ type SessionKeep struct {
 	SKCookieName      string //session保持,浏览器端的cookie变量名称
 	LoginedSessionVar string //服务器端的session变量名称
 	App               *xweb.App
+	Encryption        *EncryptionStruct
 }
 
 //过滤器
@@ -51,7 +53,8 @@ func (sk *SessionKeep) Do(w http.ResponseWriter, r *http.Request) bool {
 		flag := 0
 		if userid != nil && userid != "" { //只有有session,就更新cookie失效时间
 			deuserid, _ = userid.(string)
-			enuserid = se.EncodeString(deuserid)
+			//enuserid = se.EncodeString(deuserid)
+			enuserid = sk.EncodeString(deuserid)
 			if strings.HasPrefix(deuserid, "oHwE_") {
 				user, ok := mongodb.FindOneByField("user", map[string]interface{}{
 					"s_m_openid": deuserid,
@@ -63,23 +66,9 @@ func (sk *SessionKeep) Do(w http.ResponseWriter, r *http.Request) bool {
 			flag = 1
 		} else if err == nil {
 			enuserid = ck.Value //"解密的userid"
-			deuserid = se.DecodeString(enuserid)
+			//deuserid = se.DecodeString(enuserid) //修改加密方式
+			deuserid = sk.DecodeString(enuserid)
 			flag = 2
-		} else {
-			if strings.HasPrefix(rqu, "/article/") {
-				if strings.HasPrefix(rqu, "/article/mailprivate") || strings.HasPrefix(rqu, "/article/bdprivate") || reg.MatchString(rhdua) {
-					return true
-				} else { //只处理pc
-					session.Set("referer", r.RequestURI)
-					http.Redirect(w, r, "/notin/page", 302)
-					return false
-				}
-			} else if strings.HasPrefix(rqu, "/front/dataExport") {
-				//数据预览图片导出,需要去掉session拦截
-				session.Set("referer", r.RequestURI)
-				http.Redirect(w, r, "/notin/page", 302)
-				return false
-			}
 		}
 
 		if deuserid != "" {
@@ -128,8 +117,22 @@ func (sk *SessionKeep) Do(w http.ResponseWriter, r *http.Request) bool {
 				}
 				http.SetCookie(w, sk.cookie(enuserid))
 			}
+		} else {
+			if strings.HasPrefix(rqu, "/article/") {
+				if strings.HasPrefix(rqu, "/article/mailprivate") || strings.HasPrefix(rqu, "/article/bdprivate") || reg.MatchString(rhdua) {
+					return true
+				} else { //只处理pc
+					session.Set("referer", r.RequestURI)
+					http.Redirect(w, r, "/notin/page", 302)
+					return false
+				}
+			} else if strings.HasPrefix(rqu, "/front/dataExport") {
+				//数据预览图片导出,需要去掉session拦截
+				session.Set("referer", r.RequestURI)
+				http.Redirect(w, r, "/notin/page", 302)
+				return false
+			}
 		}
-
 	}
 	return true
 }
@@ -149,3 +152,37 @@ func (sk *SessionKeep) cookie(userid string) *http.Cookie {
 	}
 	return cookie
 }
+
+var count int = 0
+
+//解密
+func (sk *SessionKeep) DecodeString(encodeStr string) string {
+	byte, err := base64.StdEncoding.DecodeString(encodeStr)
+	if err != nil {
+		fmt.Println("base64解密出错", encodeStr)
+		return ""
+	}
+	//获取加密字段和加密标识
+	ctxArr := strings.Split(string(byte), "***")
+	if len(ctxArr) != 2 {
+		return ""
+	}
+
+	enuserid := ctxArr[0]
+	signFlsg := ctxArr[1]
+	rs := sk.Encryption.MapRsa[signFlsg]
+	if rs == nil {
+		fmt.Printf("sign %s不存在\n", signFlsg)
+		return ""
+	}
+	str := sk.Encryption.MapRsa[signFlsg].Decrypt(enuserid)
+	//fmt.Println(enuserid, "\n解密", signFlsg, str)
+	return str
+}
+
+//加密
+func (sk *SessionKeep) EncodeString(userid string) string {
+	str := sk.Encryption.RsaStruct_Now.Encrypt(userid) + "***" + sk.Encryption.RsaStruct_Now.Sign
+	//fmt.Println(userid, sk.Encryption.RsaStruct_Now.Sign, "加密", base64.StdEncoding.EncodeToString([]byte(str)))
+	return base64.StdEncoding.EncodeToString([]byte(str))
+}

+ 2 - 1
src/jfw/modules/app/src/app/front/login.go

@@ -1236,8 +1236,9 @@ func (l *Login) SavePushIdMsg() {
 	phoneType := l.GetString("phoneType")
 	rid := l.GetString("rid")
 	oid := l.GetString("oid")
+	channel := l.GetString("channel")
 	if rid != "" && (deviceId != "" || phoneType == "ios") {
-		pd := &jyutil.PushDetail{Rid: rid, Oid: oid, DeviceId: deviceId, PhoneType: phoneType, Createtime: time.Now().Unix()}
+		pd := &jyutil.PushDetail{Rid: rid, Oid: oid, DeviceId: deviceId, PhoneType: phoneType, Channel: channel, Createtime: time.Now().Unix()}
 		log.Printf("%+v", pd)
 		result = jyutil.UnLoginPush.SaveBuff(pd)
 	}

+ 10 - 5
src/jfw/modules/app/src/app/front/swordfish.go

@@ -499,20 +499,25 @@ func (m *Front) WxsearchlistPaging() {
 					defer public.Lst.Limit()
 				}
 			}
+			//第一页数据展示多字段(table表格需要)
+			feld := bidSearch_field_1
+			if pageNum == 1 {
+				feld = bidSearch_field
+			}
 			if isLimit == 1 {
 				if limitFlag {
 					if pageNum == 1 {
 						if open_supersearch {
-							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, public.Lst.TotalPage*wx_pageSize, selectType, bidSearch_field)
+							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, public.Lst.TotalPage*wx_pageSize, selectType, feld)
 						} else {
-							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, public.Lst.TotalPage*wx_pageSize, selectType, bidSearch_field)
+							list, b_word, a_word, _ = getWxsearchlistData_new(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, public.Lst.TotalPage*wx_pageSize, selectType, feld)
 						}
 					}
 				} else {
 					if open_supersearch {
-						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, selectType, bidSearch_field)
+						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, industry, minprice, maxprice, pageNum, selectType, feld)
 					} else {
-						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, selectType, bidSearch_field)
+						list, b_word, a_word, _ = getWxsearchlistData(searchvalue, scope, publishtime, subtype, "", "", "", pageNum, selectType, feld)
 					}
 				}
 				listSize := 0
@@ -524,7 +529,7 @@ func (m *Front) WxsearchlistPaging() {
 					findfields := `"title"`
 					qstr := getSearchQuery(secondKWS, industry, minprice, maxprice, findfields, getBidSearchQuery(scope, publishtime, subtype))
 					secondLimit := 2*wx_pageSize - listSize
-					secRel = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, bidSearch_field, 0, secondLimit, 0, false)
+					secRel = elastic.GetAllByNgram(INDEX, TYPE, qstr, findfields, bidSearch_sort, feld, 0, secondLimit, 0, false)
 					if secRel != nil {
 						public.BidListConvert(industry, secRel)
 						for _, v := range *secRel {

+ 2 - 0
src/jfw/modules/app/src/app/jyutil/pushId.go

@@ -15,6 +15,7 @@ type PushDetail struct {
 	DeviceId   string `json:"deviceId"`
 	PhoneType  string `json:"phoneType"`
 	Createtime int64  `json:"createtime"`
+	Channel    string `json:"channel"`
 }
 
 type UnLoginPushManager struct {
@@ -55,6 +56,7 @@ func (u *UnLoginPushManager) savePushId(p *PushDetail) {
 		data["phoneType"] = p.PhoneType
 		data["s_deviceId"] = p.DeviceId
 		data["i_lastTime"] = p.Createtime
+		data["s_channel"] = p.Channel
 		mongodb.Save("jyapp_pushId", data)
 	} else {
 		log.Println("update", p.Rid)

+ 0 - 2
src/jfw/modules/app/src/main.go

@@ -10,7 +10,6 @@ import (
 	"net/http"
 	"qfw/util"
 	"qfw/util/elastic"
-	"qfw/util/redis"
 	"strings"
 	"time"
 
@@ -20,7 +19,6 @@ import (
 
 func init() {
 	initXweb()
-	redis.InitRedisBySize(Sysconfig["redisaddrs"].(string), 100, 30, 300)
 	elastic.InitElasticSize(Sysconfig["elasticsearch"].(string), util.IntAllDef(Sysconfig["elasticPoolSize"], 30))
 }
 

BIN
src/jfw/modules/entsesearch/src/src → src/jfw/modules/app/src/src


BIN
src/jfw/modules/app/src/web.zip


+ 22 - 0
src/jfw/modules/app/src/web/staticres/jyapp/css/wxsearch.css

@@ -2246,4 +2246,26 @@ body{
 }
 #supersearchPage #nijianTip .easypopup-content{
 	text-align: left;
+}
+.shade_table{
+	width: 100%;
+    position: absolute;
+    z-index: 999;
+    margin-top: -88px;
+    height: 120px;
+	background: linear-gradient(to bottom, rgba(255,255,255,0),rgba(255,255,255,0.8),rgba(255,255,255,1),rgba(255,255,255,1));
+}
+.shade_table .more{
+	position: absolute;
+    height: 35px;
+    width: 100px;
+    left: 50%;
+    margin-left: -50px;
+    bottom: 0px;
+    color: #2cb7ca;
+    border-radius: 5px;
+    border: 1px solid #2cb7ca;
+    line-height: 35px;
+    text-align: center;
+    cursor: pointer;
 }

+ 4 - 2
src/jfw/modules/app/src/web/staticres/jyapp/js/common.js

@@ -617,13 +617,15 @@ function savePushIdMsg(){
 			var phoneType=getPhoneType();
 			var rid = JyObj.getPushRid();
 			var oid = getOtherPushId();
+			var channel = getChannel();
 			if(mySysIsIos()){
-				phoneType="ios"
+				phoneType="ios";
+				channel="ios";
 			}
 			if(rid==""||rid==undefined){
 				return
 			}	
-			$.post("/jyapp/free/savePushIdMsg",{"id":id,"phoneType":phoneType,"rid":rid,"oid":oid},function(data){
+			$.post("/jyapp/free/savePushIdMsg",{"id":id,"phoneType":phoneType,"rid":rid,"oid":oid,"channel":channel},function(data){
 				if(data.success){
 					clearInterval(interval);				
 				}

+ 78 - 30
src/jfw/modules/app/src/web/staticres/jyapp/js/wxSupersearch.js

@@ -62,9 +62,9 @@ var SuperSearch = {
 		}catch(e){}
         $("body").css("background-color","#fff");
 		if(SuperSearch.dyDiv){   //首次进来是否显示订阅
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false);
 		}else{
-			$("#supersearchPage .resbm").removeClass("hidden");
+			SuperSearch.showToOrder(true);
 		}
 		SuperSearch.canSearch();
 		if(isReload){
@@ -179,7 +179,7 @@ var SuperSearch = {
 		//是否开通超级搜索服务
 		//关闭搜索后订阅================================================================
 		$("#supersearchPage .dy_close").on("tap",function(){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false);
 			SuperSearch.dyDiv=true;
 		});
 		
@@ -490,6 +490,12 @@ var SuperSearch = {
 	        $("#supersearchPage #endtime").mobiscroll('show');
 		});
 		SuperSearch.initMobiscroll();
+		//返回时 是否显示table的查看更多
+		if($(".showlist").hasClass("on")){
+			SuperSearch.isTable(false);
+		}else{
+			SuperSearch.isTable(true);
+		}
 	},
 	recoveryPage: function(){
 		$("#supersearchPage .inputDiv").addClass("hidden")
@@ -642,10 +648,18 @@ var SuperSearch = {
 				});
 			}
 		});
+		//判断是否是table  (2.7.5table只显示20条数据)
+		if(!sessionStorage.superSearch_showType){
+			if($(".showlist").hasClass("on")){
+				SuperSearch.isTable(false);
+			}else{
+				SuperSearch.isTable(true);
+			}
+		}
 		if(!hasNextPage){
 			SuperSearch.noMoreData();
 			return;
-		}
+		}	
 	},
 	clearSessionStorage: function(){
 		if(!sessionStorage){
@@ -846,12 +860,13 @@ var SuperSearch = {
 		if(!SuperSearch.beforeSubmit()){
 			return;
 		}
+		$("#wrapper .shade_table").css("display","none"); //隐藏table 查看更多
 		$("#supersearchPage #working").removeClass("hidden");
 		$("#supersearchPage #intercept").addClass("hidden");
 		$("#supersearchPage #table").addClass("hidden");
 		$("#supersearchPage #list").addClass("hidden");
 		if(SuperSearch.showNull){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false);
 		}
 		$("#supersearchPage .nullcontent").addClass("hidden");
 		$("#supersearchPage .selLable").removeClass("hidden");
@@ -1107,30 +1122,33 @@ var SuperSearch = {
 						+'<div style="clear:both;"></div>'
 						+detail
 						+'</div>';
+			if(i>=20||pageNum!=1){
+				continue
+			}			
 			//拟建项目
 			if(SuperSearch.subtype_proposed==SuperSearch.reqParam.subtype){
 				var projectinfo = list[i].projectinfo;
-				if(projectinfo){
+				//if(projectinfo){
 					var approvecode = "";
-					if(projectinfo.approvecode){
+					if(projectinfo&&projectinfo.approvecode){
 					   approvecode = projectinfo.approvecode;
 					}
 					var approvecontent = "";
-					if(projectinfo.approvecontent){
+					if(projectinfo&&projectinfo.approvecontent){
 					   approvecontent = projectinfo.approvecontent;
 					}
 					var approvestatus = "";
-					if(projectinfo.approvestatus){
+					if(projectinfo&&projectinfo.approvestatus){
 					   approvestatus = projectinfo.approvestatus;
 					}
 					var approvetime = "";
 					var diff = "";
-					if(projectinfo.approvetime){
+					if(projectinfo&&projectinfo.approvetime){
 					   	approvetime = projectinfo.approvetime.replace(/-/g,"/");
 					   	diff = timeDiff(new Date(approvetime));
 					}
 					var industry = "";
-					if(projectinfo.industry){
+					if(projectinfo&&projectinfo.industry){
 						industry = projectinfo.industry;
 					}
 					TableHtml +='<tr s="'+href+'"  sid="'+list[i]._id+'" i="'+industry+'">'+
@@ -1142,7 +1160,7 @@ var SuperSearch = {
 					   '<td><div style="width: 75px;text-align: center;">'+approvetime+'</div></td>'+
 					   '<td><div style="width: 75px;text-align: center;">'+diff+'</div></td>'+
 					   '</tr>';
-				}
+				//}
 			}else{
 				TableHtml +='<tr s="'+href+'"  sid="'+list[i]._id+'" i="'+(list[i].industry?list[i].industry:"")+'">'+
 							'<td><div>'+index+'</div></td>'+
@@ -1174,9 +1192,9 @@ var SuperSearch = {
 		$("#supersearchPage .nullcontent").addClass("hidden");
 		$("#supersearchPage #wrapper").removeClass("hidden");
 		if(SuperSearch.dyDiv){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false);
 		}else{
-			$("#supersearchPage .resbm").removeClass("hidden");
+			SuperSearch.showToOrder(true);
 		}
 	},
 	appendListHtml: function (html){  //下拉时展示信息
@@ -1189,17 +1207,16 @@ var SuperSearch = {
 			var industry = $(this).find(".industry").text();
 	        SuperSearch.myredirect(h,sid,sds,industry);
 	    });
-	    $('#supersearchPage #list').append(ListHtmlObj);
-	
-	    var TableHtmlobj=$(html.TableHtml);
-	    TableHtmlobj.on("tap",function(event){
-	        var h = $(this).attr("s");
-	        var sid = $(this).attr("sid");
-	        var sds = SuperSearch.s_words.replace(/\+/g,"+");
-			var industry = $(this).attr("i");
-	        SuperSearch.myredirect(h,sid,sds,industry);
-	    });
-	    $("#supersearchPage #table .content").append(TableHtmlobj);
+	    $('#supersearchPage #list').append(ListHtmlObj);	
+//	    var TableHtmlobj=$(html.TableHtml);
+//	    TableHtmlobj.on("tap",function(event){
+//	        var h = $(this).attr("s");
+//	        var sid = $(this).attr("sid");
+//	        var sds = SuperSearch.s_words.replace(/\+/g,"+");
+//			var industry = $(this).attr("i");
+//	        SuperSearch.myredirect(h,sid,sds,industry);
+//	    });
+//	    $("#supersearchPage #table .content").append(TableHtmlobj);
 	},
 	replayListHtml: function (html){ //搜索时替换信息
 	   	// 替换
@@ -1403,6 +1420,7 @@ var SuperSearch = {
 	    $("#supersearchPage #wrapper #list").removeClass("hidden");
 		if(SuperSearch.dropload != null){
 			SuperSearch.dropload.resetload();
+			SuperSearch.isTable(false);
 		}
 	},
 	//2.表格展示数据
@@ -1431,15 +1449,36 @@ var SuperSearch = {
 		  	$("#supersearchPage .showtable").addClass("on").siblings().removeClass("on");
 		  	$("#supersearchPage #wrapper #table").removeClass("hidden");
 		  	$("#supersearchPage #wrapper #list").addClass("hidden");
-			if(SuperSearch.dropload != null){
-				SuperSearch.dropload.resetload();
-			}
+//			if(SuperSearch.dropload != null){
+//				SuperSearch.dropload.resetload();
+//			}
 		  	SuperSearch.behaviorCollect(2);
+			SuperSearch.isTable(true);
 		}else{
 			SuperSearch.toOpenSupersearch();
 		}
 		
 	},
+	isTable:function(flag){
+		if(flag){ //table
+			if(SuperSearch.dropload){
+				SuperSearch.dropload.lock(); //表格只展示20条数据
+			}
+			if($("#table .content tr").length>20){
+				$(".dropload-down").css("display","none");
+				$("#wrapper .shade_table").css("display","");
+			}else{
+				$(".dropload-down").css("display","");
+				$("#wrapper .shade_table").css("display","none");
+			}
+		}else{ //list
+			if(SuperSearch.dropload){
+				SuperSearch.dropload.unlock();
+			}
+			$(".dropload-down").css("display","");
+			$("#wrapper .shade_table").css("display","none");
+		}
+	},
 	goToFeedbackPage: function(){
 		SuperSearch.setSessionStorage();
 		if(userId == ""){
@@ -1526,13 +1565,13 @@ var SuperSearch = {
 				if(sessionStorage.superSearch_dyDiv == "false"){
 					SuperSearch.dyDiv = false;
 					$("#supersearchPage .resbm").css("position","absolute");
-					$("#supersearchPage .resbm").removeClass("hidden");
+					SuperSearch.showToOrder(true);
 					setTimeout(function(){
 						$("#supersearchPage .resbm").css("position","fixed");
 					},200);
 				}else{
 					SuperSearch.dyDiv = true;
-					$("#supersearchPage .resbm").addClass("hidden");
+					SuperSearch.showToOrder(false);
 				}
 				SuperSearch.noMoreCache = sessionStorage.superSearch_noMoreCache;
 				SuperSearch.showNull = false;
@@ -1952,5 +1991,14 @@ var SuperSearch = {
 		$("#supersearchPage input[name=super_searchinput]").blur();
 		$("#supersearchPage .maxMrice").blur();
 	    $("#supersearchPage .minMrice").blur();
+	},
+	showToOrder:function(flag){
+		if(flag){
+			$("#wrapper").css("margin-bottom","91px");
+			$("#supersearchPage .resbm").removeClass("hidden");
+		}else{
+			$("#wrapper").css("margin-bottom","52px");
+			$("#supersearchPage .resbm").addClass("hidden");
+		}
 	}
 };

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

@@ -489,6 +489,11 @@
 	                </div>
 					<div class="TableTip" id="TableTip" style="display:none;"><img class="tableclose" src="/jyapp/images/table_close.png"><div class="TableText">推荐使用电脑浏览器访问剑鱼标讯网站<br>jianyu360.com查看数据表格,体验更佳。</div></div>
 				</div>
+        <div class="shade_table">
+        <div class="more">
+          查看更多
+        </div>
+      </div>
 				<div class="resbm hidden">
 					<div class="rests">如果您对以上结果满意可</div>
 					<div class="resdy" id="zjdy">直接订阅<img src="/jyapp/images/wx/jydyyou.png"></div>
@@ -892,6 +897,10 @@
 		EntSearch.inputBlur();
 		JyObj.hiddenBottom("1");
 	}
+  $("#wrapper .more").on("click",function(){
+    	var href=window.location.protocol+"//"+window.location.host+"/sjdc/index.html"
+	    JyObj.openExternalLink(href,"");
+  })
 </script>
 </body>
 </html>

BIN
src/jfw/modules/crawler/src/src


BIN
src/jfw/modules/ttfMapping/src/src


+ 48 - 0
src/jfw/modules/weixin/src/jrpc/jrpc.go

@@ -400,3 +400,51 @@ func (w *WeiXinRpc) SendCustomMsg(p *[]byte, ret *string) error {
 	}
 	return nil
 }
+
+//支付订单关闭
+func (w *WeiXinRpc) CloseOrder(param map[string]string, res *bool) error {
+	defer util.Catch()
+	appid := param["appid"]
+	mchid := param["mchid"]
+	tradeno := param["tradeno"]
+	key := param["key"]
+	//匿名结构体
+	data := struct {
+		XMLName    xml.Name `xml:"xml"`
+		Appid      string   `xml:"appid"`
+		MchId      string   `xml:"mch_id"`       //商家ID
+		NonceStr   string   `xml:"nonce_str"`    //随机码
+		OutTradeNo string   `xml:"out_trade_no"` //商家订单编号
+		Sign       string   `xml:"sign"`         //签名
+	}{
+		Appid:      appid,
+		MchId:      mchid,
+		NonceStr:   util.GetRandom(16) + util.GetLetterRandom(16),
+		OutTradeNo: tradeno, //"qmx201611290018",
+	}
+	data.Sign = util.CreateWxSign(fmt.Sprintf("&key=%s", key), data)
+	//生成预订单
+	bs, err := w.Wwx.PostXmlCustom("https://api.mch.weixin.qq.com/pay/closeorder?token=", data)
+	if err != nil {
+		log.Println(tradeno, err.Error(), string(bs))
+		return err
+	}
+	ret := util.XmlToMap(string(bs))
+	respSign := util.CreateWxSign(fmt.Sprintf("&key=%s", key), ret, "sign")
+	if respSign == ret["sign"] {
+		if ret["return_code"] == "SUCCESS" { //订单关闭完成
+			if ret["result_code"] == "SUCCESS" {
+				*res = true
+			} else {
+				if ret["result_code"] == "ORDERPAID" {
+					log.Println(tradeno, "订单已支付")
+				} else if ret["result_code"] == "" {
+					log.Println(tradeno, "订单已关闭")
+				}
+			}
+		}
+	} else {
+		log.Println(tradeno, "签名错误!", respSign, ret["sign"])
+	}
+	return nil
+}

BIN
src/jfw/modules/weixin/src/src


+ 333 - 0
src/jfw/pay/aliPay.go

@@ -0,0 +1,333 @@
+package pay
+
+import (
+	"crypto"
+	"crypto/rand"
+	"crypto/rsa"
+	"crypto/sha256"
+	"crypto/x509"
+	"encoding/base64"
+	"encoding/json"
+	"encoding/pem"
+	"errors"
+	"fmt"
+	"hash"
+	"io/ioutil"
+	"jfw/config"
+	"jfw/public"
+	"log"
+	"net/http"
+	"net/url"
+	"qfw/util"
+	"strings"
+	"time"
+
+	"github.com/go-xweb/xweb"
+)
+
+type AliPayStruct struct {
+	Appid        string
+	PrivateKey   *rsa.PrivateKey //请求接口秘钥
+	AliPublicKey *rsa.PublicKey  //支付完成回调,校验使用(取支付宝后台)
+	Qr_width     int             //二维码宽度
+	CallBackUrl  string          //支付完成回调地址
+	ReturnUrl    string          //支付完成页面跳转地址
+	Requseturl   string          //接口请求地址
+	Subject      string          //支付小标题
+}
+
+//支付订单生成请求参数
+type BizContent struct {
+	Subject      string  `json:"subject"`
+	OutTradeNo   string  `json:"out_trade_no"`
+	TotalAmount  float64 `json:"total_amount"`
+	ProductCode  string  `json:"product_code"`
+	Qr_pay_mode  string  `json:"qr_pay_mode"`
+	Qrcode_width int     `json:"qrcode_width"`
+	Time_expire  string  `json:"time_expire"` //支付超时时间yyyy-MM-dd HH:mm:ss
+}
+
+//支付订单关闭请求参数
+type CloseContent struct {
+	OutTradeNo string `json:"out_trade_no"`
+}
+type AliPayAction struct {
+	*xweb.Action
+	payCallback xweb.Mapper `xweb:"/alipay/pay/callback"` //微信支付回调
+}
+
+var Alipay *AliPayStruct
+var alipayConf map[string]interface{}
+
+func init() {
+	alipayConf = config.Sysconfig["aliPay"].(map[string]interface{})
+	//加载本地私钥
+	privateKey, err := parsePrivateKey(util.ObjToString(alipayConf["privateKey"]))
+	if err != nil {
+		panic(err)
+	}
+	//加载支付宝后台公钥
+	aliPublicKey, err := parseAliPayPublicKey(util.ObjToString(alipayConf["callbackPublicKey"]))
+	if err != nil {
+		panic(err)
+	}
+	Alipay = &AliPayStruct{
+		Appid:        util.ObjToString(alipayConf["appid"]),
+		PrivateKey:   privateKey,
+		AliPublicKey: aliPublicKey,
+		CallBackUrl:  util.ObjToString(config.Sysconfig["webdomain"]) + "/alipay/pay/callback",
+		Qr_width:     250,
+		ReturnUrl:    "", //不配置
+		Requseturl:   util.ObjToString(alipayConf["reqUrl"]),
+		Subject:      util.ObjToString(alipayConf["Subject"]),
+	}
+	xweb.AddAction(&AliPayAction{})
+}
+
+func (w *AliPayStruct) GetTradeno() string {
+	return fmt.Sprintf("%s_%d%s%s", "z", time.Now().UnixNano(), util.GetRandom(5), util.GetLetterRandom(6))
+}
+
+//获取支付连接
+func (a *AliPayStruct) GetPayUrl(order_money float64, time_expire string) (string, string, error) {
+	tradeno := a.GetTradeno()
+	bizContent := BizContent{
+		Subject:      a.Subject,
+		OutTradeNo:   tradeno,
+		TotalAmount:  order_money / 100,
+		ProductCode:  "FAST_INSTANT_TRADE_PAY",
+		Qr_pay_mode:  "4",
+		Qrcode_width: a.Qr_width,
+		Time_expire:  time_expire,
+	}
+	bizbyte, err := json.Marshal(bizContent)
+	if err != nil {
+		return "", "", err
+	}
+	var data = url.Values{}
+	data.Add("app_id", Alipay.Appid)
+	data.Add("method", "alipay.trade.page.pay")
+	if a.CallBackUrl != "" {
+		data.Add("notify_url", a.CallBackUrl) //支付完成回调地址
+	}
+	if a.ReturnUrl != "" {
+		data.Add("return_url", a.ReturnUrl)
+	}
+	data.Add("format", "json")
+	data.Add("charset", "UTF-8")
+	data.Add("sign_type", "RSA2")
+	data.Add("timestamp", time.Now().Format("2006-01-02 15:04:05"))
+	data.Add("version", "1.0")
+	data.Add("biz_content", string(bizbyte))
+
+	signContentBytes, _ := url.QueryUnescape(data.Encode())
+	signature, err := a.getSign([]byte(signContentBytes))
+	if err != nil {
+		return "", "", err
+	}
+	data.Add("sign", signature)
+	return a.Requseturl + "?" + data.Encode(), tradeno, nil
+}
+
+//加载秘钥
+func parsePrivateKey(key string) (*rsa.PrivateKey, error) {
+	block, _ := pem.Decode([]byte(key))
+	if block == nil {
+		return nil, errors.New("私钥格式不正确")
+	}
+	if strings.ToUpper(block.Type) != "RSA PRIVATE KEY" {
+		return nil, errors.New("私钥类型不正确" + block.Type)
+	}
+	rsaPrivateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
+	if err != nil {
+		return nil, err
+	}
+	return rsaPrivateKey, nil
+}
+
+//加载支付宝后台公钥
+func parseAliPayPublicKey(key string) (*rsa.PublicKey, error) {
+	publicKeyDecoded, err := base64.StdEncoding.DecodeString(key)
+	if err != nil {
+		return nil, err
+	}
+	pub, err := x509.ParsePKIXPublicKey(publicKeyDecoded)
+	if err != nil {
+		return nil, err
+	}
+	if pub, ok := pub.(*rsa.PublicKey); ok {
+		return pub, nil
+	}
+	return nil, errors.New("rsa.PublicKey 断言出错")
+}
+
+//生成加密token
+func (a *AliPayStruct) getSign(data []byte) (signature string, err error) {
+	var h hash.Hash
+	var hType crypto.Hash
+	h = sha256.New()
+	hType = crypto.SHA256
+	//}
+	h.Write(data)
+	d := h.Sum(nil)
+	bs, err := rsa.SignPKCS1v15(rand.Reader, a.PrivateKey, hType, d)
+
+	if err != nil {
+		return "", err
+	}
+	signature = base64.StdEncoding.EncodeToString(bs)
+	return
+}
+
+//校验回调sign
+func (a *AliPayStruct) checkCallBackSign(param, sign string) bool {
+	newHash := sha256.New()
+	newHash.Write([]byte(param))
+	hashed := newHash.Sum(nil)
+	cryptoHash := crypto.SHA256
+
+	signDecoded, err := base64.StdEncoding.DecodeString(sign)
+	if err != nil {
+		fmt.Println("checkCallBackSign DecodeString err:", err)
+		return false
+	}
+	if err := rsa.VerifyPKCS1v15(Alipay.AliPublicKey, cryptoHash, hashed, signDecoded); err != nil {
+		if err != rsa.ErrVerification {
+			log.Println("VerifyPKCS1v15 err:", err)
+		}
+		return false
+	}
+	return true
+}
+
+//支付宝支付回调
+func (a *AliPayAction) PayCallback() {
+	checkSign := a.GetForm()
+	sign := checkSign.Get("sign") //待验证签名
+	checkSign.Del("sign")
+	checkSign.Del("sign_type")
+	signContentBytes, _ := url.QueryUnescape(checkSign.Encode())
+	if !Alipay.checkCallBackSign(signContentBytes, sign) { //验签
+		log.Println("支付宝签名验证失败")
+		return
+	}
+	//校验
+	if checkSign.Get("app_id") != util.ObjToString(alipayConf["appid"]) {
+		return
+	}
+	out_trade_no := checkSign.Get("out_trade_no")
+	trade_no := checkSign.Get("trade_no")                              //支付宝交易号
+	receipt_amount := util.Float64All(checkSign.Get("receipt_amount")) //实收金额
+	total_amount := util.Float64All(checkSign.Get("total_amount"))     //订单金额
+	//seller_id := checkSign.Get("seller_id")                        //卖家支付宝号
+	gmt_payment := checkSign.Get("gmt_payment") //付款时间
+
+	//支付完成插入
+	now := time.Now()
+	log.Printf("支付宝支付完成-回调  订单号%s\n", out_trade_no)
+	orderdata := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+		"out_trade_no": out_trade_no,
+		"order_money":  total_amount * 100,
+	}, "id,filter,user_mail,product_type,data_spec,user_phone,filter_id,order_code,data_count,order_status,order_money,out_trade_no,create_time,pay_way", "")
+	changeOrderStatus, insertAliPay := false, false
+	if orderdata != nil {
+		pay_time := util.FormatDate(&now, util.Date_Full_Layout)
+		filename := fmt.Sprintf("%s.xlsx", fmt.Sprintf("%s_%s_%s", time.Now().Format("20060102150405"), util.ObjToString((*orderdata)["order_code"]), util.GetLetterRandom(5)))
+		download_url := fmt.Sprintf("/res/dataexport/%s", filename)
+		order_status := util.IntAll((*orderdata)["order_status"])
+		if order_status == 0 {
+			changeOrderStatus = public.Mysql.Update("dataexport_order", map[string]interface{}{
+				"order_status": 0,
+				"out_trade_no": out_trade_no,
+				"order_money":  total_amount * 100,
+			}, map[string]interface{}{
+				"pay_money":    receipt_amount * 100,
+				"pay_time":     pay_time,
+				"order_status": 1,
+				"pay_way":      "支付宝",
+				"download_url": download_url,
+			})
+			if changeOrderStatus {
+				log.Println("pay_way----------------", (*orderdata)["pay_way"])
+				//先发个通知
+				go public.SendNotice(orderdata, total_amount, pay_time, download_url, config.GmailAuth)
+				go public.SendMailToPayUser(orderdata, total_amount, pay_time, filename, download_url, config.GmailAuth)
+				go public.SendMailToBJFinance(orderdata, pay_time, trade_no, 1, config.GmailAuth) //订单号
+			}
+		} else {
+			changeOrderStatus = true
+		}
+	}
+
+	pay_count := public.Mysql.Count("ali_pay", map[string]interface{}{
+		"transaction_id": trade_no,
+		"out_trade_no":   out_trade_no,
+	})
+	if pay_count == 0 {
+		insertAliPay = public.Mysql.Insert("ali_pay", map[string]interface{}{
+			"transaction_id": trade_no,
+			"out_trade_no":   out_trade_no,
+			"create_time":    util.FormatDate(&now, util.Date_Full_Layout),
+			"total_fee":      total_amount * 100,
+			"cash_fee":       receipt_amount * 100,
+			"time_end":       gmt_payment,
+		}) > 0
+		log.Println("insertAliPay", insertAliPay)
+	}
+}
+
+//支付宝关闭订单(生成的订单二维码,未扫码无法关闭订单)
+func (a *AliPayStruct) CloseOrder(tradeno string) bool {
+	toClose := CloseContent{
+		OutTradeNo: tradeno,
+	}
+	bizbyte, err := json.Marshal(toClose)
+	if err != nil {
+		log.Println()
+		return false
+	}
+	var data = url.Values{}
+	data.Add("app_id", Alipay.Appid)
+	data.Add("method", "alipay.trade.close")
+	data.Add("format", "json")
+	data.Add("charset", "UTF-8")
+	data.Add("sign_type", "RSA2")
+	data.Add("timestamp", time.Now().Format("2006-01-02 15:04:05"))
+	data.Add("version", "1.0")
+	data.Add("biz_content", string(bizbyte))
+	signContentBytes, _ := url.QueryUnescape(data.Encode())
+	log.Println(signContentBytes)
+	signature, err := a.getSign([]byte(signContentBytes))
+	if err != nil {
+		log.Println(tradeno, "获取签名出错", err)
+		return false
+	}
+	data.Add("sign", signature)
+
+	url := a.Requseturl + "?" + data.Encode()
+	//clien 优化
+	client := http.Client{Jar: nil}
+	req, _ := http.NewRequest("POST", url, nil)
+	res, err := client.Do(req)
+	if err != nil {
+		log.Printf("%s支付宝关闭订单  请求出错%v\n", tradeno, err)
+		return false
+	}
+	bArr, err := ioutil.ReadAll(res.Body)
+	if err != nil {
+		log.Printf("%s支付宝关闭订单  读取相应出错%v\n", tradeno, err)
+		return false
+	}
+	m := map[string]interface{}{}
+	err = json.Unmarshal(bArr, &m)
+	if err != nil {
+		log.Println(string(bArr))
+		log.Println("%s支付宝关闭订单   解析相应参数出错%v\n", tradeno, err)
+	}
+	msg := (*util.ObjToMap(m["alipay_trade_close_response"]))["sub_msg"]
+	log.Printf("%s msg:%s 订单关闭相应参数  %+v", tradeno, msg, m)
+	if msg == "交易状态不合法" || msg == "REASON_ILLEGAL_STATUS" { //已支付
+		return false
+	}
+	return true
+}

+ 450 - 0
src/jfw/pay/dataExportPay.go

@@ -0,0 +1,450 @@
+package pay
+
+import (
+	"bytes"
+	"encoding/base64"
+	"encoding/json"
+	"fmt"
+	"jfw/config"
+	"jfw/public"
+	"log"
+	"qfw/util"
+	"time"
+
+	"github.com/SKatiyar/qr"
+	"github.com/go-xweb/xweb"
+)
+
+type DataExportPayAction struct {
+	*xweb.Action
+	sacnPay_WaitPay     xweb.Mapper `xweb:"/dataExport/sacnPay/waitPay"`     //生成支付二维码
+	sacnPay_CreateOrder xweb.Mapper `xweb:"/dataExport/sacnPay/createOrder"` //创建订单
+	isPaySuccess        xweb.Mapper `xweb:"/dataExport/pay/isPaySuccess"`    //是否支付成功
+	getOrderPayMsg      xweb.Mapper `xweb:"/dataexport/getOrderPayMsg"`      //我的订单页面获取支付二维码
+}
+
+func init() {
+	xweb.AddAction(&DataExportPayAction{})
+}
+
+func (p *DataExportPayAction) SacnPay_CreateOrder() {
+	defer util.Catch()
+	openId, _ := p.GetSession("s_m_openid").(string)
+	userId, _ := p.GetSession("userId").(string)
+	id := util.SE.Decode4Hex(p.GetString("id"))
+	if userId == "" || id == "" {
+		log.Println("userId,id错误", userId, id)
+		p.ServeJson(map[string]interface{}{
+			"status": "n",
+		})
+		return
+	}
+	//根据来源判断,pc端微信支付生成订单 tradeclass:b,微信端支付tradeclass:c
+	sourcePage := p.GetString("sourcePage")
+	tradeclass := "b"
+	if sourcePage == "weixin" {
+		tradeclass = "c"
+	}
+	//
+	data_spec := p.GetString("data_spec")
+	if data_spec == "standard" {
+		data_spec = "标准字段包"
+	} else if data_spec == "senior" {
+		data_spec = "高级字段包"
+	}
+	user_mail_status := util.ObjToString(p.GetSession("DataExportVerifyEmail_val")) != ""
+	pay_way := p.GetString("pay_way")
+	if pay_way == "weixin" {
+		pay_way = "微信"
+	} else if pay_way == "alipay" {
+		pay_way = "支付宝"
+	}
+	user_mail, _ := p.GetSession("DataExportVerifyEmail_val").(string)
+	user_phone, _ := p.GetSession("DataExportVerifyPhone").(string)
+	if user_phone != "" {
+		p.SetSession("DataExportVerifyPhone_val", user_phone) //提交后下次默认带出手机号
+	} else {
+		user_phone, _ = p.GetSession("DataExportVerifyPhone_val").(string)
+	}
+	//先看有没有创建过预支付订单
+	oldOrder := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+		"user_id":   userId,
+		"filter_id": id,
+	}, "id,order_status,order_code,order_money,user_mail,user_phone,data_spec,prepay_time,prepay_id", "")
+	if oldOrder != nil {
+		if user_mail != "" && user_mail != util.ObjToString((*oldOrder)["user_mail"]) {
+			public.Mysql.Update("dataexport_order", map[string]interface{}{
+				"user_id":   userId,
+				"filter_id": id,
+			}, map[string]interface{}{
+				"user_mail": user_mail,
+			})
+		}
+		if user_phone != "" && user_phone != util.ObjToString((*oldOrder)["user_phone"]) {
+			public.Mysql.Update("dataexport_order", map[string]interface{}{
+				"user_id":   userId,
+				"filter_id": id,
+			}, map[string]interface{}{
+				"user_phone": user_phone,
+			})
+		}
+		//如果已支付,则返回
+		if util.IntAll((*oldOrder)["order_status"]) != 0 {
+			log.Println("该订单已存在,订单状态不允许支付!", openId)
+			p.ServeJson(map[string]interface{}{
+				"status": "n",
+			})
+			return
+		}
+		//价格支付方式变动需要重新生成订单二维码(关闭之前的订单)
+		if (data_spec != "" && data_spec != util.ObjToString((*oldOrder)["data_spec"])) || pay_way != util.ObjToString((*oldOrder)["pay_way"]) {
+			//在此关闭之前的订单
+			if !CloseDataExportOrder(util.ObjToString((*oldOrder)["pay_way"]), util.ObjToString((*oldOrder)["out_trade_no"]), util.ObjToString((*oldOrder)["prepay_time"])) {
+				p.ServeJson(map[string]interface{}{
+					"status": "n",
+				})
+				return
+			}
+			data_count := public.GetDataExportSearchCountUseId(id)
+			if data_count > public.ExConf.MsgMaxCount {
+				data_count = public.ExConf.MsgMaxCount
+			}
+			order_money_, original_price_ := float64(0), float64(0)
+			if data_spec == "标准字段包" {
+				original_price_ = float64(data_count) * public.ExConf.UnitPrice_normal
+			} else if data_spec == "高级字段包" {
+				original_price_ = float64(data_count) * public.ExConf.UnitPrice_senior
+			}
+			order_money_ = float64(original_price_) * public.ExConf.Discount
+			if order_money_ < public.ExConf.OrderMinPrice {
+				order_money_ = public.ExConf.OrderMinPrice
+			}
+			if original_price_ < public.ExConf.OrderMinPrice {
+				original_price_ = public.ExConf.OrderMinPrice
+			}
+			order_money := int(order_money_ * 100)
+			original_price := int(original_price_ * 100)
+			prepayTime, _ := time.ParseInLocation(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]), time.Local)
+			surplus_second := prepayTime.Unix() - 7200 //价格变动  支付二维码更新成超时状态--重新生订单二维码
+			public.Mysql.Update("dataexport_order", map[string]interface{}{
+				"user_id":   userId,
+				"filter_id": id,
+			}, map[string]interface{}{
+				"data_spec":      data_spec,
+				"order_money":    order_money,
+				"original_price": original_price,
+				"prepay_time":    util.FormatDateByInt64(&surplus_second, util.Date_Full_Layout),
+				"pay_way":        pay_way,
+			})
+			(*oldOrder)["order_money"] = order_money
+		}
+		if util.IntAll((*oldOrder)["order_status"]) == 0 {
+			var res map[string]interface{}
+			if sourcePage == "weixin" {
+				nonceStr := util.GetRandom(16) + util.GetLetterRandom(16)
+				timestamp := time.Now().Unix()
+				sign := util.WxSign(fmt.Sprintf("appId=%s&nonceStr=%s&package=%s&signType=%s&timeStamp=%d&key=%s", public.WxStruct.Appid, nonceStr, "prepay_id="+util.ObjToString((*oldOrder)["prepay_id"]), "MD5", timestamp, public.WxStruct.Key))
+				res = map[string]interface{}{
+					"appId":     public.WxStruct.Appid,
+					"timestamp": fmt.Sprint(timestamp),
+					"signType":  "MD5",
+					"sign":      sign,
+					"nonceStr":  nonceStr,
+					"prepayId":  "prepay_id=" + util.ObjToString((*oldOrder)["prepay_id"]),
+				}
+			}
+			p.ServeJson(map[string]interface{}{
+				"status": "y",
+				"code":   util.ObjToString((*oldOrder)["order_code"]),
+				"token":  public.GetWaitPayToken(util.Int64All((*oldOrder)["id"]), util.IntAll((*oldOrder)["order_money"]), util.ObjToString((*oldOrder)["order_code"]), "微信", userId),
+				"res":    res,
+			})
+			return
+		} else {
+			log.Println("该订单已存在,订单状态不允许支付!", userId)
+			p.ServeJson(map[string]interface{}{
+				"status": "n",
+			})
+			return
+		}
+	}
+	//
+	data_count := public.GetDataExportSearchCountUseId(id)
+	if data_count > public.ExConf.MsgMaxCount {
+		data_count = public.ExConf.MsgMaxCount
+	}
+	order_money_, original_price_ := float64(0), float64(0)
+	if data_spec == "标准字段包" {
+		original_price_ = float64(data_count) * public.ExConf.UnitPrice_normal
+	} else if data_spec == "高级字段包" {
+		original_price_ = float64(data_count) * public.ExConf.UnitPrice_senior
+	}
+	order_money_ = float64(original_price_) * public.ExConf.Discount
+	if order_money_ < public.ExConf.OrderMinPrice {
+		order_money_ = public.ExConf.OrderMinPrice
+	}
+	if original_price_ < public.ExConf.OrderMinPrice {
+		original_price_ = public.ExConf.OrderMinPrice
+	}
+	order_money := int(order_money_ * 100)
+	original_price := int(original_price_ * 100)
+	//order_money = 1
+	//original_price = 1
+	filter_keys, filter_publishtime, filter := "", "", ""
+	//
+	isPass := func() bool {
+		if pay_way == "" || user_mail == "" || user_phone == "" || !user_mail_status || data_spec == "" || order_money <= 0 || data_count <= 0 || original_price <= 0 {
+			log.Println("参数不合法! pay_way, user_mail,user_phone, user_mail_status, data_spec, order_money, data_count, original_price", pay_way, user_mail, user_phone, user_mail_status, data_spec, order_money, data_count, original_price)
+			return false
+		}
+		userfilter, ok := public.MQFW.FindById("export_search", id, nil)
+		if ok && userfilter != nil {
+			keywords, _ := (*userfilter)["keywords"].([]interface{})
+			var buffer bytes.Buffer
+			for _, v := range keywords {
+				vm, _ := v.(map[string]interface{})
+				if buffer.Len() > 0 {
+					buffer.WriteString(",")
+				}
+				buffer.WriteString(util.ObjToString(vm["keyword"]))
+			}
+			filter_keys = buffer.String()
+			filter_publishtime = util.ObjToString((*userfilter)["publishtime"])
+			filterByte, _ := json.Marshal(userfilter)
+			filter = string(filterByte)
+		} else {
+			log.Println("id is not find in mongodb", userId, id)
+			return false
+		}
+		return true
+	}()
+	nickname, _ := p.GetSession("s_nickname").(string)
+	result := map[string]interface{}{
+		"status": "n",
+	}
+	if isPass {
+		//创建微信预支付订单
+		if pay_way == "微信" {
+			tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), tradeclass, p.IP(), openId, "", order_money)
+			log.Println("支付交易单", openId, ret)
+			if ret != nil && (*ret)["status"] == "1" {
+				now := time.Now()
+				ordercode := public.GetOrderCode(openId)
+				orderid := public.Mysql.Insert("dataexport_order", map[string]interface{}{
+					"order_money":        order_money,
+					"order_status":       0,
+					"service_status":     0,
+					"user_nickname":      nickname,
+					"user_openid":        openId,
+					"filter":             filter,
+					"prepay_id":          (*ret)["prepayid"],
+					"code_url":           (*ret)["codeurl"],
+					"out_trade_no":       tradeno,
+					"order_code":         ordercode,
+					"product_type":       "历史数据",
+					"create_time":        util.FormatDate(&now, util.Date_Full_Layout),
+					"prepay_time":        util.FormatDate(&now, util.Date_Full_Layout),
+					"original_price":     original_price,
+					"data_spec":          data_spec,
+					"user_mail":          user_mail,
+					"user_phone":         user_phone,
+					"data_count":         data_count,
+					"filter_publishtime": filter_publishtime,
+					"filter_keys":        filter_keys,
+					"filter_id":          id,
+					"pay_way":            pay_way,
+					"user_id":            userId, //20190719 移动端数据导出 生订单添加用户id
+				})
+				if orderid > 0 {
+					var res map[string]interface{}
+					if sourcePage == "weixin" {
+						nonceStr := util.GetRandom(16) + util.GetLetterRandom(16)
+						timestamp := time.Now().Unix()
+						sign := util.WxSign(fmt.Sprintf("appId=%s&nonceStr=%s&package=%s&signType=%s&timeStamp=%d&key=%s", public.WxStruct.Appid, nonceStr, "prepay_id="+util.ObjToString((*ret)["prepayid"]), "MD5", timestamp, public.WxStruct.Key))
+						res = map[string]interface{}{
+							"appId":     public.WxStruct.Appid,
+							"timestamp": fmt.Sprint(timestamp),
+							"signType":  "MD5",
+							"sign":      sign,
+							"nonceStr":  nonceStr,
+							"prepayId":  "prepay_id=" + util.ObjToString((*ret)["prepayid"]),
+						}
+					}
+					p.SetSession("DataExportVerifyPhone_val", user_phone)
+					result["status"] = "y"
+					result["code"] = ordercode
+					result["token"] = public.GetWaitPayToken(orderid, order_money, ordercode, pay_way, userId)
+					result["res"] = res
+				}
+			} else {
+				log.Println("生成微信预支付交易单失败", ret)
+			}
+		} else if pay_way == "支付宝" {
+			now := time.Now()
+			payOutTime := now.Add(time.Hour * 2)
+			if qr_url, tradeno, err := Alipay.GetPayUrl(util.Float64All(order_money), util.FormatDate(&payOutTime, util.Date_Full_Layout)); err == nil {
+				ordercode := public.GetOrderCode(openId)
+				orderid := public.Mysql.Insert("dataexport_order", map[string]interface{}{
+					"order_money":        order_money,
+					"order_status":       0,
+					"service_status":     0,
+					"user_nickname":      nickname,
+					"user_openid":        openId,
+					"filter":             filter,
+					"prepay_id":          "",
+					"code_url":           qr_url,
+					"out_trade_no":       tradeno,
+					"order_code":         ordercode,
+					"product_type":       "历史数据",
+					"create_time":        util.FormatDate(&now, util.Date_Full_Layout),
+					"prepay_time":        util.FormatDate(&now, util.Date_Full_Layout),
+					"original_price":     original_price,
+					"data_spec":          data_spec,
+					"user_mail":          user_mail,
+					"user_phone":         user_phone,
+					"data_count":         data_count,
+					"filter_publishtime": filter_publishtime,
+					"filter_keys":        filter_keys,
+					"filter_id":          id,
+					"pay_way":            pay_way,
+				})
+				if orderid > 0 {
+					p.SetSession("DataExportVerifyPhone_val", user_phone)
+					result["status"] = "y"
+					result["code"] = ordercode
+					result["token"] = public.GetWaitPayToken(orderid, order_money, ordercode, pay_way, openId)
+				}
+			} else {
+				log.Println("生成支付宝预支付交易单失败")
+			}
+		}
+	}
+	p.ServeJson(result)
+}
+
+func (p *DataExportPayAction) IsPaySuccess() {
+	defer util.Catch()
+	code := p.GetString("code")
+	//openid, _ := p.GetSession("s_m_openid").(string)
+	userId, _ := p.GetSession("userId").(string)
+	status := "n"
+	if code != "" || userId != "" {
+		data := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+			"order_code": code,
+			"user_id":    userId,
+		}, "order_status", "")
+		if data != nil && util.IntAll((*data)["order_status"]) == 1 {
+			status = "y"
+		} else if util.IntAll((*data)["order_status"]) == -1 {
+			status = "-1"
+		}
+	}
+	p.ServeJson(map[string]interface{}{
+		"status": status,
+	})
+}
+
+func (p *DataExportPayAction) GetOrderPayMsg() {
+	openid := util.ObjToString(p.GetSession("s_m_openid"))
+	code := p.GetString("orderCode")
+	pay_way := p.GetString("payway")
+	prepay_time := p.GetString("prepaytime")
+	payUrl, errMsg, ok := func() (string, string, bool) {
+		if openid == "" {
+			return "", "用户异常", false
+		}
+		if code == "" || pay_way == "" {
+			return "", "参数异常", false
+		}
+		queryOrder := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+			"user_openid": openid,
+			"order_code":  code,
+		}, "id,order_status,order_money,out_trade_no,pay_way,prepay_time", "")
+
+		if queryOrder == nil {
+			return "", "订单异常", false
+		}
+		if util.IntAll((*queryOrder)["order_status"]) != 0 {
+			return "", "订单状态异常", false
+		}
+		//在此关闭没有超时之前的订单
+		if !CloseDataExportOrder(util.ObjToString((*queryOrder)["pay_way"]), util.ObjToString((*queryOrder)["out_trade_no"]), util.ObjToString((*queryOrder)["prepay_time"])) {
+			return "", "订单关闭异常", false
+		}
+		//修改支付方式
+		orderid := util.Int64All((*queryOrder)["id"])
+		orderMoney := util.IntAll((*queryOrder)["order_money"])
+		codeUrl := ""
+		now := time.Now()
+		prepay_time = util.FormatDate(&now, util.Date_Full_Layout)
+		if pay_way == "微信" {
+			tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "b", p.IP(), openid, "", orderMoney)
+			if ret != nil {
+				if public.Mysql.Update("dataexport_order", map[string]interface{}{
+					"id": orderid,
+				}, map[string]interface{}{
+					"prepay_time":  prepay_time,
+					"prepay_id":    (*ret)["prepayid"],
+					"code_url":     (*ret)["codeurl"],
+					"out_trade_no": tradeno,
+					"pay_way":      pay_way,
+				}) {
+					r, _ := qr.Encode(util.ObjToString((*ret)["codeurl"]), qr.M)
+					pngdat := r.PNG()
+					codeUrl = base64.StdEncoding.EncodeToString(pngdat)
+				} else {
+					return "", "创建微信订单出错", false
+				}
+			}
+		} else if pay_way == "支付宝" {
+			payOutTime := now.Add(time.Hour * 2)
+			if qr_url, tradeno, err := Alipay.GetPayUrl(util.Float64All(orderMoney), util.FormatDate(&payOutTime, util.Date_Full_Layout)); err == nil {
+				if public.Mysql.Update("dataexport_order", map[string]interface{}{
+					"id": orderid,
+				}, map[string]interface{}{
+					"prepay_time":  prepay_time,
+					"prepay_id":    "",
+					"code_url":     qr_url,
+					"out_trade_no": tradeno,
+					"pay_way":      pay_way,
+				}) {
+					//surplus_second = 7200
+				}
+				codeUrl = qr_url
+			} else {
+				return "", "创建支付宝订单出错", false
+			}
+		}
+		return codeUrl, "", true
+	}()
+	if errMsg != "" {
+		log.Printf("用户%s 订单号%s 出错%s", openid, code, errMsg)
+	}
+	p.ServeJson(map[string]interface{}{
+		"success":     ok,
+		"payUrl":      payUrl,
+		"errMsg":      errMsg,
+		"prepay_time": prepay_time,
+	})
+
+}
+func CloseDataExportOrder(payWay, tradeno, prepayTime string) (status bool) {
+	//如果订单超时 则不用关闭订单
+	t, err := time.Parse(util.Date_Full_Layout, prepayTime)
+	if err == nil {
+		if t.Add(time.Hour * 2).Before(time.Now()) {
+			return true
+		}
+	}
+	log.Printf("%s取消订单,订单号%s\n", payWay, tradeno)
+	if payWay == "支付宝" {
+		status = Alipay.CloseOrder(tradeno)
+	}
+	if payWay == "微信" {
+		status = public.WxStruct.CloseOrder(config.Sysconfig["weixinrpc"].(string), tradeno)
+	}
+	if !status {
+		log.Printf("%s订单关闭失败:%s\n", payWay, tradeno)
+	}
+	return status
+}

+ 4 - 323
src/jfw/pay/weixin.go

@@ -1,9 +1,6 @@
 package pay
 
 import (
-	"bytes"
-	"encoding/base64"
-	"encoding/json"
 	"fmt"
 	"jfw/config"
 	"jfw/jyutil"
@@ -29,11 +26,10 @@ type WxPayAction struct {
 	payIndex      xweb.Mapper `xweb:"/weixin/pay/index"`      //微信支付页面
 	wxPay         xweb.Mapper `xweb:"/weixin/pay/pay"`        //微信支付
 	//pc端扫码支付
-	sacnPay_WaitPay     xweb.Mapper `xweb:"/weixin/sacnPay/waitPay"`     //生成支付二维码
-	sacnPay_CreateOrder xweb.Mapper `xweb:"/weixin/sacnPay/createOrder"` //创建订单
+	//sacnPay_WaitPay     xweb.Mapper `xweb:"/weixin/sacnPay/waitPay"`     //生成支付二维码
+	//sacnPay_CreateOrder xweb.Mapper `xweb:"/weixin/sacnPay/createOrder"` //创建订单
 	//统一回调函数
-	payCallback  xweb.Mapper `xweb:"/weixin/pay/callback"`     //微信支付回调
-	isPaySuccess xweb.Mapper `xweb:"/weixin/pay/isPaySuccess"` //是否支付成功
+	payCallback xweb.Mapper `xweb:"/weixin/pay/callback"` //微信支付回调
 }
 
 func init() {
@@ -213,7 +209,7 @@ func (p *WxPayAction) PayCallback() {
 				orderdata := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
 					"out_trade_no": ret["out_trade_no"],
 					"order_money":  util.IntAll(ret["total_fee"]),
-				}, "id,filter,user_mail,product_type,data_spec,user_phone,filter_id,order_code,data_count,order_status,order_money,out_trade_no,create_time", "")
+				}, "id,filter,user_mail,product_type,data_spec,user_phone,filter_id,order_code,data_count,order_status,order_money,out_trade_no,create_time,pay_way", "")
 				order_money := util.IntAll(ret["total_fee"])
 				pay_time := util.FormatDate(&now, util.Date_Full_Layout)
 				filename := fmt.Sprintf("%s.xlsx", fmt.Sprintf("%s_%s_%s", time.Now().Format("20060102150405"), util.ObjToString((*orderdata)["order_code"]), util.GetLetterRandom(5)))
@@ -299,318 +295,3 @@ func (c *WxPayAction) Qr(code string) error {
 	_, err := w.Write(pngdat)
 	return err
 }
-
-//20190719移动端数据导出 openid改成userid
-func (p *WxPayAction) SacnPay_CreateOrder() {
-	defer util.Catch()
-	openId, _ := p.GetSession("s_m_openid").(string)
-	userId, _ := p.GetSession("userId").(string)
-	id := util.SE.Decode4Hex(p.GetString("id"))
-	if userId == "" || id == "" {
-		log.Println("userId,id错误", userId, id)
-		p.ServeJson(map[string]interface{}{
-			"status": "n",
-		})
-		return
-	}
-	//根据来源判断,pc端微信支付生成订单 tradeclass:b,微信端支付tradeclass:c
-	sourcePage := p.GetString("sourcePage")
-	tradeclass := "b"
-	if sourcePage == "weixin" {
-		tradeclass = "c"
-	}
-	//
-	data_spec := p.GetString("data_spec")
-	if data_spec == "standard" {
-		data_spec = "标准字段包"
-	} else if data_spec == "senior" {
-		data_spec = "高级字段包"
-	}
-	user_mail, _ := p.GetSession("DataExportVerifyEmail_val").(string)
-	user_phone, _ := p.GetSession("DataExportVerifyPhone").(string)
-	if user_phone != "" {
-		p.SetSession("DataExportVerifyPhone_val", user_phone) //提交后下次默认带出手机号
-	} else {
-		user_phone, _ = p.GetSession("DataExportVerifyPhone_val").(string)
-	}
-	//先看有没有创建过预支付订单
-	oldOrder := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
-		"user_id":   userId,
-		"filter_id": id,
-	}, "id,order_status,order_code,order_money,user_mail,user_phone,data_spec,prepay_time,prepay_id", "")
-	if oldOrder != nil {
-		if user_mail != "" && user_mail != util.ObjToString((*oldOrder)["user_mail"]) {
-			public.Mysql.Update("dataexport_order", map[string]interface{}{
-				"user_id":   userId,
-				"filter_id": id,
-			}, map[string]interface{}{
-				"user_mail": user_mail,
-			})
-		}
-		if user_phone != "" && user_phone != util.ObjToString((*oldOrder)["user_phone"]) {
-			public.Mysql.Update("dataexport_order", map[string]interface{}{
-				"user_id":   userId,
-				"filter_id": id,
-			}, map[string]interface{}{
-				"user_phone": user_phone,
-			})
-		}
-		if data_spec != "" && data_spec != util.ObjToString((*oldOrder)["data_spec"]) {
-			//
-			data_count := public.GetDataExportSearchCountUseId(id)
-			if data_count > public.ExConf.MsgMaxCount {
-				data_count = public.ExConf.MsgMaxCount
-			}
-			order_money_, original_price_ := float64(0), float64(0)
-			if data_spec == "标准字段包" {
-				original_price_ = float64(data_count) * public.ExConf.UnitPrice_normal
-			} else if data_spec == "高级字段包" {
-				original_price_ = float64(data_count) * public.ExConf.UnitPrice_senior
-			}
-			order_money_ = float64(original_price_) * public.ExConf.Discount
-			if order_money_ < public.ExConf.OrderMinPrice {
-				order_money_ = public.ExConf.OrderMinPrice
-			}
-			if original_price_ < public.ExConf.OrderMinPrice {
-				original_price_ = public.ExConf.OrderMinPrice
-			}
-			order_money := int(order_money_ * 100)
-			original_price := int(original_price_ * 100)
-			prepayTime, _ := time.ParseInLocation(util.Date_Full_Layout, util.ObjToString((*oldOrder)["prepay_time"]), time.Local)
-			surplus_second := prepayTime.Unix() - 7200 //价格变动  支付二维码更新成超时状态--重新生订单二维码
-			public.Mysql.Update("dataexport_order", map[string]interface{}{
-				"user_id":   userId,
-				"filter_id": id,
-			}, map[string]interface{}{
-				"data_spec":      data_spec,
-				"order_money":    order_money,
-				"original_price": original_price,
-				"prepay_time":    util.FormatDateByInt64(&surplus_second, util.Date_Full_Layout),
-			})
-			(*oldOrder)["order_money"] = order_money
-		}
-		if util.IntAll((*oldOrder)["order_status"]) == 0 {
-			var res map[string]interface{}
-			if sourcePage == "weixin" {
-				nonceStr := util.GetRandom(16) + util.GetLetterRandom(16)
-				timestamp := time.Now().Unix()
-				sign := util.WxSign(fmt.Sprintf("appId=%s&nonceStr=%s&package=%s&signType=%s&timeStamp=%d&key=%s", public.WxStruct.Appid, nonceStr, "prepay_id="+util.ObjToString((*oldOrder)["prepay_id"]), "MD5", timestamp, public.WxStruct.Key))
-				res = map[string]interface{}{
-					"appId":     public.WxStruct.Appid,
-					"timestamp": fmt.Sprint(timestamp),
-					"signType":  "MD5",
-					"sign":      sign,
-					"nonceStr":  nonceStr,
-					"prepayId":  "prepay_id=" + util.ObjToString((*oldOrder)["prepay_id"]),
-				}
-			}
-			p.ServeJson(map[string]interface{}{
-				"status": "y",
-				"code":   util.ObjToString((*oldOrder)["order_code"]),
-				"token":  public.GetWaitPayToken(util.Int64All((*oldOrder)["id"]), util.IntAll((*oldOrder)["order_money"]), util.ObjToString((*oldOrder)["order_code"]), userId),
-				"res":    res,
-			})
-			return
-		} else {
-			log.Println("该订单已存在,订单状态不允许支付!", userId)
-			p.ServeJson(map[string]interface{}{
-				"status": "n",
-			})
-			return
-		}
-	}
-	user_mail_status := p.GetSession("EMVerifySucess").(bool)
-	pay_way := p.GetString("pay_way")
-	//
-	data_count := public.GetDataExportSearchCountUseId(id)
-	if data_count > public.ExConf.MsgMaxCount {
-		data_count = public.ExConf.MsgMaxCount
-	}
-
-	order_money_, original_price_ := float64(0), float64(0)
-	if data_spec == "标准字段包" {
-		original_price_ = float64(data_count) * public.ExConf.UnitPrice_normal
-	} else if data_spec == "高级字段包" {
-		original_price_ = float64(data_count) * public.ExConf.UnitPrice_senior
-	}
-	order_money_ = float64(original_price_) * public.ExConf.Discount
-	if order_money_ < public.ExConf.OrderMinPrice {
-		order_money_ = public.ExConf.OrderMinPrice
-	}
-	if original_price_ < public.ExConf.OrderMinPrice {
-		original_price_ = public.ExConf.OrderMinPrice
-	}
-	order_money := int(order_money_ * 100)
-	original_price := int(original_price_ * 100)
-	//order_money = 1
-	//original_price = 1
-	filter_keys, filter_publishtime, filter := "", "", ""
-	//
-	isPass := func() bool {
-		if pay_way == "" || user_mail == "" || user_phone == "" || !user_mail_status || data_spec == "" || order_money <= 0 || data_count <= 0 || original_price <= 0 {
-			log.Println("参数不合法! pay_way, user_mail,user_phone, user_mail_status, data_spec, order_money, data_count, original_price", pay_way, user_mail, user_phone, user_mail_status, data_spec, order_money, data_count, original_price)
-			return false
-		}
-		userfilter, ok := public.MQFW.FindById("export_search", id, nil)
-		if ok && userfilter != nil {
-			keywords, _ := (*userfilter)["keywords"].([]interface{})
-			var buffer bytes.Buffer
-			for _, v := range keywords {
-				vm, _ := v.(map[string]interface{})
-				if buffer.Len() > 0 {
-					buffer.WriteString(",")
-				}
-				buffer.WriteString(util.ObjToString(vm["keyword"]))
-			}
-			filter_keys = buffer.String()
-			filter_publishtime = util.ObjToString((*userfilter)["publishtime"])
-			filterByte, _ := json.Marshal(userfilter)
-			filter = string(filterByte)
-		} else {
-			log.Println("id is not find in mongodb", userId, id)
-			return false
-		}
-		return true
-	}()
-	nickname, _ := p.GetSession("s_nickname").(string)
-	result := map[string]interface{}{
-		"status": "n",
-	}
-	if isPass {
-		//创建微信预支付订单
-		if pay_way == "weixin" {
-			tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), tradeclass, p.IP(), openId, "", order_money)
-			log.Println("支付交易单", openId, ret)
-			if ret != nil && (*ret)["status"] == "1" {
-				now := time.Now()
-				ordercode := public.GetOrderCode(openId)
-				orderid := public.Mysql.Insert("dataexport_order", map[string]interface{}{
-					"order_money":        order_money,
-					"order_status":       0,
-					"service_status":     0,
-					"user_nickname":      nickname,
-					"user_openid":        openId,
-					"filter":             filter,
-					"prepay_id":          (*ret)["prepayid"],
-					"code_url":           (*ret)["codeurl"],
-					"out_trade_no":       tradeno,
-					"order_code":         ordercode,
-					"product_type":       "历史数据",
-					"create_time":        util.FormatDate(&now, util.Date_Full_Layout),
-					"prepay_time":        util.FormatDate(&now, util.Date_Full_Layout),
-					"original_price":     original_price,
-					"data_spec":          data_spec,
-					"user_mail":          user_mail,
-					"user_phone":         user_phone,
-					"data_count":         data_count,
-					"filter_publishtime": filter_publishtime,
-					"filter_keys":        filter_keys,
-					"filter_id":          id,
-					"user_id":            userId, //20190719 移动端数据导出 生订单添加用户id
-				})
-				if orderid > 0 {
-					var res map[string]interface{}
-					if sourcePage == "weixin" {
-						nonceStr := util.GetRandom(16) + util.GetLetterRandom(16)
-						timestamp := time.Now().Unix()
-						sign := util.WxSign(fmt.Sprintf("appId=%s&nonceStr=%s&package=%s&signType=%s&timeStamp=%d&key=%s", public.WxStruct.Appid, nonceStr, "prepay_id="+util.ObjToString((*ret)["prepayid"]), "MD5", timestamp, public.WxStruct.Key))
-						res = map[string]interface{}{
-							"appId":     public.WxStruct.Appid,
-							"timestamp": fmt.Sprint(timestamp),
-							"signType":  "MD5",
-							"sign":      sign,
-							"nonceStr":  nonceStr,
-							"prepayId":  "prepay_id=" + util.ObjToString((*ret)["prepayid"]),
-						}
-					}
-					p.SetSession("DataExportVerifyPhone_val", user_phone)
-					result["status"] = "y"
-					result["code"] = ordercode
-					result["token"] = public.GetWaitPayToken(orderid, order_money, ordercode, userId)
-					result["res"] = res
-				}
-			} else {
-				log.Println("生成预支付交易单失败", ret)
-			}
-		}
-	}
-	p.ServeJson(result)
-}
-func (p *WxPayAction) SacnPay_WaitPay() error {
-	defer util.Catch()
-	openid, _ := p.GetSession("s_m_openid").(string)
-	userid, _ := p.GetSession("userId").(string)
-	code := p.GetString("code")
-	token := p.GetString("token")
-	surplus, money, qrcode := func() (int64, int, string) {
-		if userid == "" || code == "" || token == "" {
-			return 0, 0, ""
-		}
-		data := public.Mysql.FindOne("dataexport_order", map[string]interface{}{"order_code": code, "user_id": userid}, "id,code_url,prepay_time,order_money,order_status", "")
-		if data == nil {
-			log.Println("订单号不存在!", userid)
-			return 0, 0, ""
-		}
-		if util.IntAll((*data)["order_status"]) != 0 {
-			log.Println("订单状态不允许支付!", userid)
-			return 0, 0, ""
-		}
-		orderid := util.Int64All((*data)["id"])
-		orderMoney := util.IntAll((*data)["order_money"])
-		realToken := public.GetWaitPayToken(orderid, orderMoney, code, userid)
-		if realToken != token {
-			log.Println("token错误!", userid, realToken, token)
-			return 0, 0, ""
-		}
-		prepayTime, err := time.ParseInLocation(util.Date_Full_Layout, util.ObjToString((*data)["prepay_time"]), time.Local)
-		surplus_second := prepayTime.Unix() + 7200 - time.Now().Unix()
-		codeUrl := util.ObjToString((*data)["code_url"])
-		if err == nil && surplus_second <= 0 {
-			log.Println("二维码已失效,重新生成预订单!", userid)
-			surplus_second = 0
-			//pc端微信支付重新生成预订单
-			tradeno, ret := public.WxStruct.CreatePrepayOrder(config.Sysconfig["weixinrpc"].(string), "b", p.IP(), openid, "", orderMoney)
-			if ret != nil {
-				now := time.Now()
-				if public.Mysql.Update("dataexport_order", map[string]interface{}{
-					"id": orderid,
-				}, map[string]interface{}{
-					"prepay_time":  util.FormatDate(&now, util.Date_Full_Layout),
-					"prepay_id":    (*ret)["prepayid"],
-					"code_url":     (*ret)["codeurl"],
-					"out_trade_no": tradeno,
-				}) {
-					surplus_second = 7200
-					codeUrl = (*ret)["codeurl"]
-				}
-			}
-		}
-		r, _ := qr.Encode(codeUrl, qr.M)
-		pngdat := r.PNG()
-		return surplus_second, orderMoney, base64.StdEncoding.EncodeToString(pngdat)
-	}()
-	p.T["money"] = float64(money) / 100
-	p.T["surplus_second"] = surplus
-	p.T["qrcode"] = qrcode
-	p.T["ordercode"] = code
-	return p.Render("/pc/waitpay.html")
-}
-func (p *WxPayAction) IsPaySuccess() {
-	defer util.Catch()
-	code := p.GetString("code")
-	//	openid, _ := p.GetSession("s_m_openid").(string)
-	userId, _ := p.GetSession("userId").(string)
-	status := "n"
-	if code != "" || userId != "" {
-		data := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
-			"order_code": code,
-			"user_id":    userId,
-		}, "order_status", "")
-		if data != nil && util.IntAll((*data)["order_status"]) == 1 {
-			status = "y"
-		}
-	}
-	p.ServeJson(map[string]interface{}{
-		"status": status,
-	})
-}

+ 54 - 12
src/jfw/public/dataexport.go

@@ -132,6 +132,7 @@ func (w *WeixinStruct) GetPrepayId(weixinrpc string, param map[string]string) (r
 	}, func(e interface{}) {})
 	return
 }
+
 func init() {
 	util.ReadConfig("./dataexport.json", &ExConf)
 }
@@ -217,6 +218,7 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 	user_phone := util.ObjToString((*order)["user_phone"])
 	data_spec := util.ObjToString((*order)["data_spec"])
 	data_count := util.IntAll((*order)["data_count"])
+	pay_way := util.ObjToString((*order)["pay_way"])
 	//
 	create_time := util.ObjToString((*order)["create_time"])
 	if create_time != "" {
@@ -227,14 +229,30 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 	product_type := util.ObjToString((*order)["product_type"]) + "导出"
 	//
 	order_money := float64(util.IntAll((*order)["order_money"])) / 100
-	if transaction_id == "" && util.ObjToString((*order)["pay_way"]) == "微信" { //线下支付没有微信订单编号
-		out_trade_no := util.ObjToString((*order)["out_trade_no"])
-		wxpaydata := Mysql.FindOne("weixin_pay", map[string]interface{}{
-			"out_trade_no": out_trade_no,
-		}, "transaction_id", "")
-		if wxpaydata != nil && len(*wxpaydata) > 0 {
-			transaction_id = util.ObjToString((*wxpaydata)["transaction_id"])
-		}
+
+	if transaction_id == "" {
+		transaction_id = func() string {
+			table := ""
+			if util.ObjToString((*order)["pay_way"]) == "微信" {
+				table = "weixin_pay"
+			} else if util.ObjToString((*order)["pay_way"]) == "支付宝" {
+				table = "ali_pay"
+			} else {
+				return ""
+			}
+			out_trade_no := util.ObjToString((*order)["out_trade_no"])
+			wxpaydata := Mysql.FindOne(table, map[string]interface{}{
+				"out_trade_no": out_trade_no,
+			}, "transaction_id", "")
+			if wxpaydata != nil && len(*wxpaydata) > 0 { //线下支付没有微信订单编号
+				return util.ObjToString((*wxpaydata)["transaction_id"])
+			}
+			return ""
+		}()
+	}
+	isShowTransaction := "" //支付订单号为空,邮件不显示此字段
+	if transaction_id == "" {
+		isShowTransaction = "none"
 	}
 	mailcontent := ""
 	var mail_title = ""
@@ -283,7 +301,7 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 			log.Println("用户筛选条件错误", err, sc)
 		}
 		mail_title = "剑鱼标讯历史数据订单【" + order_code + "】,请查收"
-		mailcontent = fmt.Sprintf(ExConf.Mail_order_finance_content, order_code, create_time, pay_time, product_type, transaction_id, data_spec, data_count, order_money, user_mail, user_phone, publishtime, region, industry, keys, sc_money, subtype, buyer, winner)
+		mailcontent = fmt.Sprintf(ExConf.Mail_order_finance_content, order_code, create_time, pay_time, product_type, isShowTransaction, pay_way, transaction_id, data_spec, data_count, order_money, user_mail, user_phone, publishtime, region, industry, keys, sc_money, subtype, buyer, winner)
 	} else {
 		//申请发票
 		pay_time = util.ObjToString((*order)["pay_time"])
@@ -324,7 +342,7 @@ func SendMailToBJFinance(order *map[string]interface{}, pay_time, transaction_id
 			}
 		}
 		mail_title = "电子发票申请,剑鱼标讯历史数据订单【" + order_code + "】,请查收"
-		mailcontent = fmt.Sprintf(ExConf.Mail_invoice_finance_content, bill_title, company_flag, bill_company, taxnum_flag, bill_taxnum, order_code, create_time, pay_time, product_type, transaction_id, offlineImgSrc, data_spec, data_count, order_money, user_mail, user_phone)
+		mailcontent = fmt.Sprintf(ExConf.Mail_invoice_finance_content, bill_title, company_flag, bill_company, taxnum_flag, bill_taxnum, order_code, create_time, pay_time, product_type, isShowTransaction, pay_way, transaction_id, offlineImgSrc, data_spec, data_count, order_money, user_mail, user_phone)
 	}
 	//发送邮件
 	for _, finance_mail := range ExConf.Finance_emails {
@@ -530,8 +548,9 @@ func SendMailToPayUser(order *map[string]interface{}, order_money float64, pay_t
 		}
 	}
 }
-func GetWaitPayToken(orderid int64, order_money int, ordercode, userid string) string {
-	return util.GetMd5String(fmt.Sprintf("%d_%d_%s_%s", orderid, order_money, ordercode, userid))
+
+func GetWaitPayToken(orderid int64, order_money int, ordercode, payway, userid string) string {
+	return util.GetMd5String(fmt.Sprintf("%d_%d_%s_%s_%s", orderid, order_money, ordercode, payway, userid))
 }
 func GetOrderCode(id string) string {
 	return fmt.Sprintf("%s%s", time.Now().Format("150405"), util.GetRandom(6))
@@ -568,3 +587,26 @@ func GetPriceDes_SieveCondition(minPrice, maxPrice string) string {
 	}
 	return des
 }
+
+//微信支付订单关闭
+func (w *WeixinStruct) CloseOrder(weixinrpc, tradeno string) (r bool) {
+	util.Try(func() {
+		client, err := rpc.DialHTTP("tcp", weixinrpc)
+		defer client.Close()
+		if err != nil {
+			return
+		}
+		err = client.Call("WeiXinRpc.CloseOrder",
+			map[string]string{
+				"tradeno": tradeno,
+				"key":     w.Key,
+				"mchid":   w.Mchid,
+				"appid":   w.Appid,
+			}, &r)
+		if err != nil {
+			log.Println(err.Error())
+			return
+		}
+	}, func(e interface{}) {})
+	return r
+}

+ 7 - 0
src/jfw/public/db.go

@@ -5,6 +5,7 @@ import (
 	"qfw/util"
 	mg "qfw/util/mongodb"
 	"qfw/util/mysql"
+	"qfw/util/redis"
 	ca "ucbsutil/cassandra"
 )
 
@@ -36,6 +37,11 @@ func init() {
 			},
 		)
 	}
+	//初始化redis
+	redisConfig, _ := Sysconfig["redisaddrs"].(string)
+	if redisConfig != "" {
+		redis.InitRedisBySize(Sysconfig["redisaddrs"].(string), 100, 30, 300)
+	}
 	//
 	MQFW = mg.MongodbSim{
 		MongodbAddr: Sysconfig["mongodbServers"].(string),
@@ -45,6 +51,7 @@ func init() {
 	MQFW.InitPool()
 	//
 	mysqlConfig, _ := Sysconfig["mysql"].(map[string]interface{})
+
 	if mysqlConfig != nil {
 		Mysql = &mysql.Mysql{
 			Address:  util.ObjToString(mysqlConfig["address"]),

+ 2 - 2
src/main.go

@@ -18,7 +18,7 @@ import (
 	"qfw/util/elastic"
 	"qfw/util/endless"
 	_ "qfw/util/mysql"
-	"qfw/util/redis"
+
 	"strings"
 	"time"
 
@@ -29,7 +29,7 @@ import (
 
 func init() {
 	initXweb()
-	redis.InitRedisBySize(Sysconfig["redisaddrs"].(string), 100, 30, 300)
+	//redis.InitRedisBySize(Sysconfig["redisaddrs"].(string), 100, 30, 300)
 	elastic.InitElasticSize(Sysconfig["elasticsearch"].(string), util.IntAllDef(Sysconfig["elasticPoolSize"], 30))
 	//定时任务
 	timetask.TaskService()

BIN
src/src


+ 25 - 0
src/web/staticres/css/dev2/superSearch.css

@@ -85,4 +85,29 @@
 }
 .public-nav .iner .logo img{
 	width:74px;
+}
+.shade_table{
+	width: 1199px;
+	position: absolute;
+	z-index: 999; 
+	margin-top: -110px; 
+	height: 150px;
+	background: linear-gradient(to bottom, rgba(255,255,255,0),rgba(255,255,255,0.8),rgba(255,255,255,1));
+}
+.shade_table .more{
+	position: absolute;
+	height: 35px;
+	width: 120px;
+	left: 50%;
+	margin-left: -60px;
+	bottom: 0px;
+	color: #2cb7ca; 
+	border-radius: 5px;
+	border: 1px solid #2cb7ca;
+	line-height: 35px;
+	text-align: center;
+	cursor: pointer;
+}
+.shade_table_blank{
+	height:50px;
 }

+ 22 - 0
src/web/staticres/css/wxsearch.css

@@ -2224,4 +2224,26 @@ body{
 }
 #supersearchPage #nijianTip .easypopup-content{
 	text-align: left;
+}
+.shade_table{
+	width: 100%;
+    position: absolute;
+    z-index: 999;
+    margin-top: -88px;
+    height: 120px;
+	background: linear-gradient(to bottom, rgba(255,255,255,0),rgba(255,255,255,0.8),rgba(255,255,255,1),rgba(255,255,255,1));
+}
+.shade_table .more{
+	position: absolute;
+    height: 35px;
+    width: 100px;
+    left: 50%;
+    margin-left: -50px;
+    bottom: 0px;
+    color: #2cb7ca;
+    border-radius: 5px;
+    border: 1px solid #2cb7ca;
+    line-height: 35px;
+    text-align: center;
+    cursor: pointer;
 }

+ 183 - 1
src/web/staticres/dataExport/css/drder_details.css

@@ -78,4 +78,186 @@
 
 #drder .list ul li .iner ul li:nth-of-type(6) .wcxq:hover { color: #2CB7CA; }
 
-/*# sourceMappingURL=drder_details.css.map */
+/*# sourceMappingURL=drder_details.css.map */
+
+/* 微信支付样式 */
+.clearfix:after {
+  content: '.';
+  visibility: hidden;
+  display: block;
+  height: 0;
+  clear: both;
+}
+.ks-clear, .clear {
+  *zoom: 1;
+}
+.modal:after{
+	content:"";
+	overflow:hidden;
+	display:block;
+	visibility:hidden;
+	height:0;
+	clear:both;
+}
+.modal{
+    width: 440px;
+    height: 520px;
+    background: #ffffff;
+    left: 50% !important;
+    margin-left:-220px;
+    margin-top:-270px;
+    top:50% !important;
+    padding-right: 0px !important;
+    border-radius: 10px;
+    overflow-x:unset !important;
+    overflow-y:unset !important;
+}
+.modal .nav{
+    width: 100%;
+    height: 72px;
+}
+.modal .nav .list{
+    width: 100%;
+    height: 100%;
+    border-bottom: 1px solid #E0E0E0;
+    display: flex;
+}
+.modal .nav .list li{
+    width: 220px;
+    height: 100%;
+}
+.modal .nav .list li a{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    color: #999;
+    font-size: 16px;
+}
+.modal .nav .list .underline{
+    border-bottom: 4px solid #2CB7CA;
+    font-size: 20px;
+    font-weight: bold;
+    color: #1D1D1D
+}
+.modal .nav .pay{
+    width: 100%;
+    height: 448px;
+    overflow: hidden;
+    position: relative;
+}
+.modal .nav .pay .price{
+    width: 100%;
+    height: 42px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    margin-top: 16px;
+    font-size: 32px;
+    color: #FF3A20;
+}
+.modal .nav .qr_code{
+    width: 100%;
+    height: 240px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    margin-top: 16px;
+}
+.modal .nav .qr_code img{
+    width: 240px;
+    height: 240px;
+    border: 1px solid #707070;
+}
+.modal .nav .scanning{
+    width: 100%;
+    height: 26px;
+    margin-top: 18px;
+    display: flex;
+}
+.modal .nav .scanning img{
+    width: 30px;
+    height: 26px;
+    margin-left: 96px;
+}
+.modal .nav .scanning .scan_text{
+    width: 225px;
+    height: 21px;
+    margin-left: 10px;
+    font-size: 16px;
+    line-height: 26px;
+    color: #1D1D1D;
+}
+.modal .nav .footer{
+    width: 100%;
+    height: 60px;
+    background: #2CB7CA;
+    margin-top: 30px;
+    border-radius: 0 0 6px 6px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+.modal .nav .footer .tips{
+    font-size: 14px;
+    color: #ffffff;
+}
+.modal .nav .footer .tips .times{
+    font-size: 16px;
+    color: #ffffff;
+}
+/* 支付宝支付样式 */
+.modal .nav .pay .Alipay{
+    width: 100%;
+    height: 42px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    margin-top: 16px;
+    font-size: 32px;
+    color: #FF3A20;
+}
+.modal .nav .pay .alipay_scan{
+    width: 100%;
+    height: 26px;
+    margin-top: 18px;
+    display: flex;
+}
+.modal .nav .pay .alipay_scan img{
+    width: 30px;
+    height: 26px;
+    margin-left: 96px;
+}
+.modal .nav .pay .alipay_scan .alipay_text{
+    width: 225px;
+    height: 21px;
+    margin-left: 10px;
+    font-size: 16px;
+    color: #1D1D1D;
+}
+.modal .nav .pay .alipay_footer{
+    width: 100%;
+    height: 60px;
+    background: #2CB7CA;
+    margin-top: 30px;
+    border-radius: 0 0 6px 6px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+.modal .nav .pay .alipay_footer .alipay_tips{
+    font-size: 14px;
+    color: #ffffff;
+}
+.modal .nav .pay .alipay_footer .alipay_tips .times{
+    font-size: 16px;
+    color: #ffffff;
+}
+.modal .nav .close{
+    position: fixed;
+    left: 50%;
+    margin-top: 15px;
+    margin-left: -20px;
+    opacity:1;
+}

+ 19 - 14
src/web/staticres/dataExport/css/payment_order.css

@@ -58,33 +58,38 @@ body { background-color: #F5F5FB !important; }
 
 #pay .inner .email .input .status .err i { color: #FE737A; font-size: 18px; }
 
-#pay .inner .guige, #pay .inner .wxpay { padding-bottom: 18px; border-bottom: 1px solid #ccc; margin-bottom: 15px; }
+#pay .inner .guige, #pay .inner .pay { padding-bottom: 18px; border-bottom: 1px solid #ccc; margin-bottom: 15px; }
 
-#pay .inner .guige .title, #pay .inner .wxpay .title { font-size: 16px; color: #1d1d1d; margin-bottom: 16px; }
+#pay .inner .guige .title, #pay .inner .pay .title { font-size: 16px; color: #1d1d1d; margin-bottom: 16px; }
 
-#pay .inner .guige .title i, #pay .inner .wxpay .title i { color: #2CB7CA; font-size: 20px; margin-left: 10px; cursor: pointer; }
+#pay .inner .guige .title i, #pay .inner .pay .title i { color: #2CB7CA; font-size: 20px; margin-left: 10px; cursor: pointer; }
 
-#pay .inner .guige .inner div, #pay .inner .wxpay .inner div { width: 140px; height: 58px; padding: 8px 0; box-sizing: border-box; border: 1px solid #ccc; float: left; margin-right: 16px; border-radius: 4px; cursor: pointer; }
+#pay .inner .guige .inner div, #pay .inner .pay .inner div { width: 140px; height: 58px; padding: 8px 0; box-sizing: border-box; border: 1px solid #ccc; float: left; margin-right: 16px; border-radius: 4px; cursor: pointer; }
 
-#pay .inner .guige .inner div.bz p, #pay .inner .guige .inner div.gj p, #pay .inner .wxpay .inner div.bz p, #pay .inner .wxpay .inner div.gj p { width: 100%; text-align: center; }
+#pay .inner .guige .inner div.bz p, #pay .inner .guige .inner div.gj p, #pay .inner .pay .inner div.bz p, #pay .inner .pay .inner div.gj p { width: 100%; text-align: center; }
 
-#pay .inner .guige .inner div.bz p:nth-of-type(1), #pay .inner .guige .inner div.gj p:nth-of-type(1), #pay .inner .wxpay .inner div.bz p:nth-of-type(1), #pay .inner .wxpay .inner div.gj p:nth-of-type(1) { font-size: 14px; color: #1D1D1D; margin-bottom: 1px; }
+#pay .inner .guige .inner div.bz p:nth-of-type(1), #pay .inner .guige .inner div.gj p:nth-of-type(1), #pay .inner .pay .inner div.bz p:nth-of-type(1), #pay .inner .pay .inner div.gj p:nth-of-type(1) { font-size: 14px; color: #1D1D1D; margin-bottom: 1px; }
 
-#pay .inner .guige .inner div.bz p:nth-of-type(2), #pay .inner .guige .inner div.gj p:nth-of-type(2), #pay .inner .wxpay .inner div.bz p:nth-of-type(2), #pay .inner .wxpay .inner div.gj p:nth-of-type(2) { font-size: 12px; color: #888; }
+#pay .inner .guige .inner div.bz p:nth-of-type(2), #pay .inner .guige .inner div.gj p:nth-of-type(2), #pay .inner .pay .inner div.bz p:nth-of-type(2), #pay .inner .pay .inner div.gj p:nth-of-type(2) { font-size: 12px; color: #888; }
 
-#pay .inner .guige .inner div.bz.active, #pay .inner .guige .inner div.gj.active, #pay .inner .wxpay .inner div.bz.active, #pay .inner .wxpay .inner div.gj.active { border: 1.5px solid #2CB7CA; background: #fff url(../image/bgsanjiao.png) 118px 36px no-repeat; background-size: 19px 19px; }
+#pay .inner .guige .inner div.bz.active, #pay .inner .guige .inner div.gj.active, #pay .inner .pay .inner div.bz.active, #pay .inner .pay .inner div.gj.active { border: 1.5px solid #2CB7CA; background: #fff url(../image/bgsanjiao.png) 118px 36px no-repeat; background-size: 19px 19px; }
 
-#pay .inner .guige .inner div.gj p:nth-of-type(1) i, #pay .inner .wxpay .inner div.gj p:nth-of-type(1) i { color: #FFBA00; font-size: 12px; margin-right: 6px; }
+#pay .inner .guige .inner div.gj p:nth-of-type(1) i, #pay .inner .pay .inner div.gj p:nth-of-type(1) i { color: #FFBA00; font-size: 12px; margin-right: 6px; }
 
-#pay .inner .wxpay { border: 0; padding-bottom: 0; }
+#pay .inner .pay { border: 0; padding-bottom: 0; }
 
-#pay .inner .wxpay .inner .wx { vertical-align: middle; box-sizing: border-box; height: 40px; line-height: 40px; padding: 0; padding-left: 55px; background: #fff url(../image/wxpay.png) 25px center no-repeat; background-size: 22px 20px; }
+#pay .inner .pay .inner .wx { vertical-align: middle; box-sizing: border-box; height: 40px; font-size: 14px; line-height: 40px; padding: 0; padding-left: 55px; background: #fff url(../image/wxpay.png) 25px center no-repeat; background-size: 22px 20px; }
 
-#pay .inner .wxpay .inner .wx img { width: 22px; height: 20px; display: inline-block; }
+#pay .inner .pay .inner .wx img { width: 22px; height: 20px; display: inline-block; }
 
-#pay .inner .wxpay .inner .wx span { display: inline-block; }
+#pay .inner .pay .inner  span { display: inline-block; }
+
+#pay .inner .pay .inner .wx.active { border: 1.5px solid #2CB7CA; background-image: url(../image/wxpay.png), url(../image/bgsanjiao.png); background-position: 25px center, 118px 18px; background-repeat: no-repeat, no-repeat; background-size: 22px 20px,19px 19px;font-size: 14px;}
+
+#pay .inner .pay .inner .alipay { vertical-align: middle; box-sizing: border-box; font-size: 14px; height: 40px; line-height: 40px; padding: 0; padding-left: 55px; background: #fff url(../image/alipay.png) 25px center no-repeat; background-size: 22px 20px;}
+
+#pay .inner .pay .inner .alipay.active { border: 1.5px solid #2CB7CA; background-image: url(../image/alipay.png), url(../image/bgsanjiao.png); background-position: 25px center, 118px 18px; background-repeat: no-repeat, no-repeat; background-size: 22px 20px,19px 19px;font-size: 14px;}
 
-#pay .inner .wxpay .inner .wx.active { border: 1.5px solid #2CB7CA; background-image: url(../image/wxpay.png), url(../image/bgsanjiao.png); background-position: 25px center, 118px 18px; background-repeat: no-repeat, no-repeat; background-size: 22px 20px,19px 19px;font-size: 14px;}
 
 #pay .inner .money { width: 100%; height: 80px; background: #F5F5FB; border-top: 1px solid #ccc; padding-right: 20px; margin-bottom: 15px; }
 

BIN
src/web/staticres/dataExport/image/alipay.png


BIN
src/web/staticres/dataExport/image/alipay_b.png


BIN
src/web/staticres/dataExport/image/close.png


BIN
src/web/staticres/dataExport/image/phone_wx.png


BIN
src/web/staticres/dataExport/image/phone_zfb.png


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 8 - 0
src/web/staticres/dataExport/jquery-confirm/jquery-confirm.min.css


+ 1075 - 0
src/web/staticres/dataExport/jquery-confirm/jquery-confirm.min.js

@@ -0,0 +1,1075 @@
+/*!
+ * jquery-confirm v3.1.0 (http://craftpip.github.io/jquery-confirm/)
+ * Author: Boniface Pereira
+ * Website: www.craftpip.com
+ * Contact: hey@craftpip.com
+ *
+ * Copyright 2013-2017 jquery-confirm
+ * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)
+ */
+if (typeof jQuery === "undefined") {
+	throw new Error("jquery-confirm requires jQuery");
+}
+var jconfirm, Jconfirm;
+(function($, window) {
+	$.fn.confirm = function(options, option2) {
+		if (typeof options === "undefined") {
+			options = {};
+		}
+		if (typeof options === "string") {
+			options = {
+				content: options,
+				title: (option2) ? option2 : false
+			};
+		}
+		$(this).each(function() {
+			var $this = $(this);
+			$this.on("click", function(e) {
+				e.preventDefault();
+				var jcOption = $.extend({}, options);
+				if ($this.attr("data-title")) {
+					jcOption.title = $this.attr("data-title");
+				}
+				if ($this.attr("data-content")) {
+					jcOption.content = $this.attr("data-content");
+				}
+				if (typeof jcOption.buttons == "undefined") {
+					jcOption.buttons = {};
+				}
+				jcOption["$target"] = $this;
+				if ($this.attr("href") && Object.keys(jcOption.buttons).length == 0) {
+					var buttons = $.extend(true, {}, jconfirm.pluginDefaults.defaultButtons, (jconfirm.defaults || {}).defaultButtons ||
+						{});
+					var firstBtn = Object.keys(buttons)[0];
+					jcOption.buttons = buttons;
+					jcOption.buttons[firstBtn].action = function() {
+						location.href = $this.attr("href");
+					};
+				}
+				jcOption.closeIcon = false;
+				$.confirm(jcOption);
+			});
+		});
+		return $(this);
+	};
+	$.confirm = function(options, option2) {
+		if (typeof options === "undefined") {
+			options = {};
+		}
+		if (typeof options === "string") {
+			options = {
+				content: options,
+				title: (option2) ? option2 : false,
+			};
+		}
+		if (typeof options.buttons != "object") {
+			options.buttons = {};
+		}
+		if (Object.keys(options.buttons).length == 0) {
+			var buttons = $.extend(true, {}, jconfirm.pluginDefaults.defaultButtons, (jconfirm.defaults || {}).defaultButtons ||
+				{});
+			options.buttons = buttons;
+		}
+		return jconfirm(options);
+	};
+	$.alert = function(options, option2) {
+		if (typeof options === "undefined") {
+			options = {};
+		}
+		if (typeof options === "string") {
+			options = {
+				content: options,
+				title: (option2) ? option2 : false,
+			};
+		}
+		if (typeof options.buttons != "object") {
+			options.buttons = {};
+		}
+		if (Object.keys(options.buttons).length == 0) {
+			var buttons = $.extend(true, {}, jconfirm.pluginDefaults.defaultButtons, (jconfirm.defaults || {}).defaultButtons ||
+				{});
+			var firstBtn = Object.keys(buttons)[0];
+			options.buttons[firstBtn] = buttons[firstBtn];
+		}
+		return jconfirm(options);
+	};
+	$.dialog = function(options, option2) {
+		if (typeof options === "undefined") {
+			options = {};
+		}
+		if (typeof options === "string") {
+			options = {
+				content: options,
+				title: (option2) ? option2 : false,
+				closeIcon: function() {}
+			};
+		}
+		options.buttons = {};
+		if (typeof options.closeIcon == "undefined") {
+			options.closeIcon = function() {};
+		}
+		options.confirmKeys = [13];
+		return jconfirm(options);
+	};
+	jconfirm = function(options) {
+		if (typeof options === "undefined") {
+			options = {};
+		}
+		var pluginOptions = $.extend(true, {}, jconfirm.pluginDefaults);
+		if (jconfirm.defaults) {
+			pluginOptions = $.extend(true, pluginOptions, jconfirm.defaults);
+		}
+		pluginOptions = $.extend(true, {}, pluginOptions, options);
+		var instance = new Jconfirm(pluginOptions);
+		jconfirm.instances.push(instance);
+		return instance;
+	};
+	Jconfirm = function(options) {
+		$.extend(this, options);
+		this._init();
+	};
+	Jconfirm.prototype = {
+		_init: function() {
+			var that = this;
+			this._lastFocused = $("body").find(":focus");
+			this._id = Math.round(Math.random() * 99999);
+			setTimeout(function() {
+				that.open();
+			}, 0);
+		},
+		_buildHTML: function() {
+			var that = this;
+			this._parseAnimation(this.animation, "o");
+			this._parseAnimation(this.closeAnimation, "c");
+			this._parseBgDismissAnimation(this.backgroundDismissAnimation);
+			this._parseColumnClass(this.columnClass);
+			this._parseTheme(this.theme);
+			this._parseType(this.type);
+			var template = $(this.template);
+			template.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(
+				this.typeParsed);
+			if (this.typeAnimated) {
+				template.find(".jconfirm-box").addClass("jconfirm-type-animated");
+			}
+			if (this.useBootstrap) {
+				template.find(".jc-bs3-row").addClass(this.bootstrapClasses.row);
+				template.find(".jc-bs3-row").addClass(
+					"justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center");
+				template.find(".jconfirm-box-container").addClass(this.columnClassParsed);
+				if (this.containerFluid) {
+					template.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid);
+				} else {
+					template.find(".jc-bs3-container").addClass(this.bootstrapClasses.container);
+				}
+			} else {
+				template.find(".jconfirm-box").css("width", this.boxWidth);
+			}
+			if (this.titleClass) {
+				template.find(".jconfirm-title-c").addClass(this.titleClass);
+			}
+			template.addClass(this.themeParsed);
+			var ariaLabel = "jconfirm-box" + this._id;
+			template.find(".jconfirm-box").attr("aria-labelledby", ariaLabel).attr("tabindex", -1);
+			template.find(".jconfirm-content").attr("id", ariaLabel);
+			if (this.bgOpacity != null) {
+				template.find(".jconfirm-bg").css("opacity", this.bgOpacity);
+			}
+			if (this.rtl) {
+				template.addClass("jconfirm-rtl");
+			}
+			this.$el = template.appendTo(this.container);
+			this.$jconfirmBoxContainer = this.$el.find(".jconfirm-box-container");
+			this.$jconfirmBox = this.$body = this.$el.find(".jconfirm-box");
+			this.$jconfirmBg = this.$el.find(".jconfirm-bg");
+			this.$title = this.$el.find(".jconfirm-title");
+			this.$titleContainer = this.$el.find(".jconfirm-title-c");
+			this.$content = this.$el.find("div.jconfirm-content");
+			this.$contentPane = this.$el.find(".jconfirm-content-pane");
+			this.$icon = this.$el.find(".jconfirm-icon-c");
+			this.$closeIcon = this.$el.find(".jconfirm-closeIcon");
+			this.$btnc = this.$el.find(".jconfirm-buttons");
+			this.$scrollPane = this.$el.find(".jconfirm-scrollpane");
+			this._contentReady = $.Deferred();
+			this._modalReady = $.Deferred();
+			this.setTitle();
+			this.setIcon();
+			this._setButtons();
+			this._parseContent();
+			this.initDraggable();
+			if (this.isAjax) {
+				this.showLoading(false);
+			}
+			$.when(this._contentReady, this._modalReady).then(function() {
+				if (that.isAjaxLoading) {
+					setTimeout(function() {
+						that.isAjaxLoading = false;
+						that.setContent();
+						that.setTitle();
+						that.setIcon();
+						setTimeout(function() {
+							that.hideLoading(false);
+						}, 100);
+						if (typeof that.onContentReady == "function") {
+							that.onContentReady();
+						}
+					}, 50);
+				} else {
+					that.setContent();
+					that.setTitle();
+					that.setIcon();
+					if (typeof that.onContentReady == "function") {
+						that.onContentReady();
+					}
+				}
+				if (that.autoClose) {
+					that._startCountDown();
+				}
+			});
+			that._contentHash = this._hash(that.$content.html());
+			that._contentHeight = this.$content.height();
+			this._watchContent();
+			this.setDialogCenter();
+			if (this.animation == "none") {
+				this.animationSpeed = 1;
+				this.animationBounce = 1;
+			}
+			this.$body.css(this._getCSS(this.animationSpeed, this.animationBounce));
+			this.$contentPane.css(this._getCSS(this.animationSpeed, 1));
+			this.$jconfirmBg.css(this._getCSS(this.animationSpeed, 1));
+		},
+		_typePrefix: "jconfirm-type-",
+		typeParsed: "",
+		_parseType: function(type) {
+			this.typeParsed = this._typePrefix + type;
+		},
+		setType: function(type) {
+			var oldClass = this.typeParsed;
+			this._parseType(type);
+			this.$jconfirmBox.removeClass(oldClass).addClass(this.typeParsed);
+		},
+		themeParsed: "",
+		_themePrefix: "jconfirm-",
+		setTheme: function(theme) {
+			var previous = this.theme;
+			this.theme = theme || this.theme;
+			this._parseTheme(this.theme);
+			if (previous) {
+				this.$el.removeClass(previous);
+			}
+			this.$el.addClass(this.themeParsed);
+			this.theme = theme;
+		},
+		_parseTheme: function(theme) {
+			var that = this;
+			theme = theme.split(",");
+			$.each(theme, function(k, a) {
+				if (a.indexOf(that._themePrefix) == -1) {
+					theme[k] = that._themePrefix + $.trim(a);
+				}
+			});
+			this.themeParsed = theme.join(" ").toLowerCase();
+		},
+		backgroundDismissAnimationParsed: "",
+		_bgDismissPrefix: "jconfirm-hilight-",
+		_parseBgDismissAnimation: function(bgDismissAnimation) {
+			var animation = bgDismissAnimation.split(",");
+			var that = this;
+			$.each(animation, function(k, a) {
+				if (a.indexOf(that._bgDismissPrefix) == -1) {
+					animation[k] = that._bgDismissPrefix + $.trim(a);
+				}
+			});
+			this.backgroundDismissAnimationParsed = animation.join(" ").toLowerCase();
+		},
+		animationParsed: "",
+		closeAnimationParsed: "",
+		_animationPrefix: "jconfirm-animation-",
+		setAnimation: function(animation) {
+			this.animation = animation || this.animation;
+			this._parseAnimation(this.animation, "o");
+		},
+		_parseAnimation: function(animation, which) {
+			which = which || "o";
+			var animations = animation.split(",");
+			var that = this;
+			$.each(animations, function(k, a) {
+				if (a.indexOf(that._animationPrefix) == -1) {
+					animations[k] = that._animationPrefix + $.trim(a);
+				}
+			});
+			var a_string = animations.join(" ").toLowerCase();
+			if (which == "o") {
+				this.animationParsed = a_string;
+			} else {
+				this.closeAnimationParsed = a_string;
+			}
+			return a_string;
+		},
+		setCloseAnimation: function(closeAnimation) {
+			this.closeAnimation = closeAnimation || this.closeAnimation;
+			this._parseAnimation(this.closeAnimation, "c");
+		},
+		setAnimationSpeed: function(speed) {
+			this.animationSpeed = speed || this.animationSpeed;
+		},
+		columnClassParsed: "",
+		setColumnClass: function(colClass) {
+			this.columnClass = colClass || this.columnClass;
+			this._parseColumnClass(this.columnClass);
+			this.$jconfirmBoxContainer.addClass(this.columnClassParsed);
+		},
+		_parseColumnClass: function(colClass) {
+			colClass = colClass.toLowerCase();
+			var p;
+			switch (colClass) {
+				case "xl":
+				case "xlarge":
+					p = "col-md-12";
+					break;
+				case "l":
+				case "large":
+					p = "col-md-8 col-md-offset-2";
+					break;
+				case "m":
+				case "medium":
+					p = "col-md-6 col-md-offset-3";
+					break;
+				case "s":
+				case "small":
+					p = "col-md-4 col-md-offset-4";
+					break;
+				case "xs":
+				case "xsmall":
+					p = "col-md-2 col-md-offset-5";
+					break;
+				default:
+					p = colClass;
+			}
+			this.columnClassParsed = p;
+		},
+		initDraggable: function() {
+			var that = this;
+			var $t = this.$titleContainer;
+			this.resetDrag();
+			if (this.draggable) {
+				$t.addClass("jconfirm-hand");
+				$t.on("mousedown", function(e) {
+					that.mouseX = e.clientX;
+					that.mouseY = e.clientY;
+					that.isDrag = true;
+				});
+				$(window).on("mousemove." + this._id, function(e) {
+					if (that.isDrag) {
+						that.movingX = e.clientX - that.mouseX + that.initialX;
+						that.movingY = e.clientY - that.mouseY + that.initialY;
+						that.setDrag();
+					}
+				});
+				$(window).on("mouseup." + this._id, function() {
+					if (that.isDrag) {
+						that.isDrag = false;
+						that.initialX = that.movingX;
+						that.initialY = that.movingY;
+					}
+				});
+			}
+		},
+		resetDrag: function() {
+			this.isDrag = false;
+			this.initialX = 0;
+			this.initialY = 0;
+			this.movingX = 0;
+			this.movingY = 0;
+			this.movingXCurrent = 0;
+			this.movingYCurrent = 0;
+			this.mouseX = 0;
+			this.mouseY = 0;
+			this.$jconfirmBoxContainer.css("transform", "translate(" + 0 + "px, " + 0 + "px)");
+		},
+		setDrag: function() {
+			if (!this.draggable) {
+				return;
+			}
+			this.alignMiddle = false;
+			this._boxWidth = this.$jconfirmBox.outerWidth();
+			var ww = $(window).width();
+			var that = this;
+			if (that.movingX % 2 == 0 || that.movingY % 2 == 0) {
+				var tb = that._boxTopMargin - that.dragWindowGap;
+				console.log("mouse move", that.movingX, that.movingY);
+				if (tb + that.movingY < 0) {
+					that.movingY = -tb;
+				} else {
+					that.movingYCurrent = that.movingY;
+				}
+				var lb = (ww / 2) - that._boxWidth / 2;
+				var rb = (ww / 2) + (that._boxWidth / 2) - that._boxWidth;
+				rb -= that.dragWindowGap;
+				lb -= that.dragWindowGap;
+				if (lb + that.movingX < 0) {
+					that.movingX = -lb;
+				} else {
+					if (rb - that.movingX < 0) {
+						that.movingX = rb;
+					} else {
+						that.movingXCurrent = that.movingX;
+					}
+				}
+				that.$jconfirmBoxContainer.css("transform", "translate(" + that.movingX + "px, " + that.movingY + "px)");
+			}
+		},
+		_hash: function(a) {
+			return btoa((encodeURIComponent(a)));
+		},
+		_watchContent: function() {
+			var that = this;
+			if (this._timer) {
+				clearInterval(this._timer);
+			}
+			this._timer = setInterval(function() {
+				var now = that._hash(that.$content.html());
+				var nowHeight = that.$content.height();
+				if (that._contentHash != now || that._contentHeight != nowHeight) {
+					that._contentHash = now;
+					that._contentHeight = nowHeight;
+					that.setDialogCenter();
+					that._imagesLoaded();
+				}
+			}, this.watchInterval);
+		},
+		_hilightAnimating: false,
+		_hiLightModal: function() {
+			var that = this;
+			if (this._hilightAnimating) {
+				return;
+			}
+			that.$body.addClass("hilight");
+			var duration = 2;
+			this._hilightAnimating = true;
+			setTimeout(function() {
+				that._hilightAnimating = false;
+				that.$body.removeClass("hilight");
+			}, duration * 1000);
+		},
+		_bindEvents: function() {
+			var that = this;
+			this.boxClicked = false;
+			this.$scrollPane.click(function(e) {
+				if (!that.boxClicked) {
+					var buttonName = false;
+					var shouldClose = false;
+					var str;
+					if (typeof that.backgroundDismiss == "function") {
+						str = that.backgroundDismiss();
+					} else {
+						str = that.backgroundDismiss;
+					}
+					if (typeof str == "string" && typeof that.buttons[str] != "undefined") {
+						buttonName = str;
+						shouldClose = false;
+					} else {
+						if (typeof str == "undefined" || !!(str) == true) {
+							shouldClose = true;
+						} else {
+							shouldClose = false;
+						}
+					}
+					if (buttonName) {
+						var btnResponse = that.buttons[buttonName].action.apply(that);
+						shouldClose = (typeof btnResponse == "undefined") || !!(btnResponse);
+					}
+					if (shouldClose) {
+						that.close();
+					} else {
+						that._hiLightModal();
+					}
+				}
+				that.boxClicked = false;
+			});
+			this.$jconfirmBox.click(function(e) {
+				that.boxClicked = true;
+			});
+			setTimeout(function() {
+				$(window).on("keyup." + that._id, function(e) {
+					that.reactOnKey(e);
+				});
+			}, 10);
+			$(window).on("resize." + this._id, function() {
+				that.setDialogCenter(true);
+				setTimeout(function() {
+					that.resetDrag();
+				}, 100);
+			});
+		},
+		_cubic_bezier: "0.36, 0.55, 0.19",
+		_getCSS: function(speed, bounce) {
+			return {
+				"-webkit-transition-duration": speed / 1000 + "s",
+				"transition-duration": speed / 1000 + "s",
+				"-webkit-transition-timing-function": "cubic-bezier(" + this._cubic_bezier + ", " + bounce + ")",
+				"transition-timing-function": "cubic-bezier(" + this._cubic_bezier + ", " + bounce + ")"
+			};
+		},
+		_imagesLoaded: function() {
+			var that = this;
+			if (that.imageLoadInterval) {
+				clearInterval(that.imageLoadInterval);
+			}
+			$.each(this.$content.find("img:not(.loaded)"), function(i, a) {
+				that.imageLoadInterval = setInterval(function() {
+					var h = $(a).css("height");
+					if (h !== "0px") {
+						$(a).addClass("loaded");
+						clearInterval(that.imageLoadInterval);
+						that.setDialogCenter();
+					}
+				}, 40);
+			});
+		},
+		_setButtons: function() {
+			var that = this;
+			var total_buttons = 0;
+			if (typeof this.buttons !== "object") {
+				this.buttons = {};
+			}
+			$.each(this.buttons, function(key, button) {
+				total_buttons += 1;
+				if (typeof button === "function") {
+					that.buttons[key] = button = {
+						action: button
+					};
+				}
+				that.buttons[key].text = button.text || key;
+				that.buttons[key].btnClass = button.btnClass || "btn-default";
+				that.buttons[key].action = button.action || function() {};
+				that.buttons[key].keys = button.keys || [];
+				$.each(that.buttons[key].keys, function(i, a) {
+					that.buttons[key].keys[i] = a.toLowerCase();
+				});
+				var button_element = $('<button type="button" class="btn ' + that.buttons[key].btnClass + '">' + that.buttons[
+					key].text + "</button>").click(function(e) {
+					e.preventDefault();
+					var res = that.buttons[key].action.apply(that);
+					that.onAction(key);
+					that._stopCountDown();
+					if (typeof res === "undefined" || res) {
+						that.close();
+					}
+				});
+				that.buttons[key].el = button_element;
+				that.buttons[key].setText = function(text) {
+					button_element.html(text);
+				};
+				that.buttons[key].addClass = function(className) {
+					button_element.addClass(className);
+				};
+				that.buttons[key].removeClass = function(className) {
+					button_element.removeClass(className);
+				};
+				that.buttons[key].disable = function() {
+					button_element.prop("disabled", true);
+				};
+				that.buttons[key].enable = function() {
+					button_element.prop("disabled", false);
+				};
+				that.buttons[key].show = function() {
+					button_element.css("display", "");
+					that.setDialogCenter();
+				};
+				that.buttons[key].hide = function() {
+					button_element.css("display", "none");
+					that.setDialogCenter();
+				};
+				that["$_" + key] = that["$$" + key] = button_element;
+				that.$btnc.append(button_element);
+			});
+			if (total_buttons === 0) {
+				this.$btnc.hide();
+			}
+			if (this.closeIcon === null && total_buttons === 0) {
+				this.closeIcon = true;
+			}
+			if (this.closeIcon) {
+				if (this.closeIconClass) {
+					var closeHtml = '<i class="' + this.closeIconClass + '"></i>';
+					this.$closeIcon.html(closeHtml);
+				}
+				this.$closeIcon.click(function(e) {
+					e.preventDefault();
+					var buttonName = false;
+					var shouldClose = false;
+					var str;
+					if (typeof that.closeIcon == "function") {
+						str = that.closeIcon();
+					} else {
+						str = that.closeIcon;
+					}
+					if (typeof str == "string" && typeof that.buttons[str] != "undefined") {
+						buttonName = str;
+						shouldClose = false;
+					} else {
+						if (typeof str == "undefined" || !!(str) == true) {
+							shouldClose = true;
+						} else {
+							shouldClose = false;
+						}
+					}
+					if (buttonName) {
+						var btnResponse = that.buttons[buttonName].action.apply(that);
+						shouldClose = (typeof btnResponse == "undefined") || !!(btnResponse);
+					}
+					if (shouldClose) {
+						that.close();
+					}
+				});
+				this.$closeIcon.show();
+			} else {
+				this.$closeIcon.hide();
+			}
+		},
+		setTitle: function(string, force) {
+			force = force || false;
+			if (typeof string !== "undefined") {
+				if (typeof string == "string") {
+					this.title = string;
+				} else {
+					if (typeof string == "function") {
+						if (typeof string.promise == "function") {
+							console.error("Promise was returned from title function, this is not supported.");
+						}
+						var response = string();
+						if (typeof response == "string") {
+							this.title = response;
+						} else {
+							this.title = false;
+						}
+					} else {
+						this.title = false;
+					}
+				}
+			}
+			if (this.isAjaxLoading && !force) {
+				return;
+			}
+			this.$title.html(this.title || "");
+		},
+		setIcon: function(iconClass, force) {
+			force = force || false;
+			if (typeof iconClass !== "undefined") {
+				if (typeof iconClass == "string") {
+					this.icon = iconClass;
+				} else {
+					if (typeof iconClass === "function") {
+						var response = iconClass();
+						if (typeof response == "string") {
+							this.icon = response;
+						} else {
+							this.icon = false;
+						}
+					} else {
+						this.icon = false;
+					}
+				}
+			}
+			if (this.isAjaxLoading && !force) {
+				return;
+			}
+			this.$icon.html(this.icon ? '<i class="' + this.icon + '"></i>' : "");
+		},
+		setContentPrepend: function(string, force) {
+			this.contentParsed = string + this.contentParsed;
+			if (this.isAjaxLoading && !force) {
+				return;
+			}
+			this.$content.prepend(string);
+		},
+		setContentAppend: function(string, force) {
+			this.contentParsed = this.contentParsed + string;
+			if (this.isAjaxLoading && !force) {
+				return;
+			}
+			this.$content.append(string);
+		},
+		setContent: function(string, force) {
+			force = force || false;
+			var that = this;
+			this.contentParsed = (typeof string == "undefined") ? this.contentParsed : string;
+			if (this.isAjaxLoading && !force) {
+				return;
+			}
+			this.$content.html(this.contentParsed);
+			this.setDialogCenter();
+			setTimeout(function() {
+				that.$body.find("input[autofocus]:visible:first").focus();
+			}, 100);
+		},
+		loadingSpinner: false,
+		showLoading: function(disableButtons) {
+			this.loadingSpinner = true;
+			this.$jconfirmBox.addClass("loading");
+			if (disableButtons) {
+				this.$btnc.find("button").prop("disabled", true);
+			}
+			this.setDialogCenter();
+		},
+		hideLoading: function(enableButtons) {
+			this.loadingSpinner = false;
+			this.$jconfirmBox.removeClass("loading");
+			if (enableButtons) {
+				this.$btnc.find("button").prop("disabled", false);
+			}
+			this.setDialogCenter();
+		},
+		ajaxResponse: false,
+		contentParsed: "",
+		isAjax: false,
+		isAjaxLoading: false,
+		_parseContent: function() {
+			var that = this;
+			var e = "&nbsp;";
+			if (typeof this.content == "function") {
+				var res = this.content.apply(this);
+				if (typeof res == "string") {
+					this.content = res;
+				} else {
+					if (typeof res == "object" && typeof res.always == "function") {
+						this.isAjax = true;
+						this.isAjaxLoading = true;
+						res.always(function(data, status, xhr) {
+							that.ajaxResponse = {
+								data: data,
+								status: status,
+								xhr: xhr
+							};
+							that._contentReady.resolve(data, status, xhr);
+							if (typeof that.contentLoaded == "function") {
+								that.contentLoaded(data, status, xhr);
+							}
+						});
+						this.content = e;
+					} else {
+						this.content = e;
+					}
+				}
+			}
+			if (typeof this.content == "string" && this.content.substr(0, 4).toLowerCase() === "url:") {
+				this.isAjax = true;
+				this.isAjaxLoading = true;
+				var u = this.content.substring(4, this.content.length);
+				$.get(u).done(function(html) {
+					that.contentParsed = html;
+				}).always(function(data, status, xhr) {
+					that.ajaxResponse = {
+						data: data,
+						status: status,
+						xhr: xhr
+					};
+					that._contentReady.resolve(data, status, xhr);
+					if (typeof that.contentLoaded == "function") {
+						that.contentLoaded(data, status, xhr);
+					}
+				});
+			}
+			if (!this.content) {
+				this.content = e;
+			}
+			if (!this.isAjax) {
+				this.contentParsed = this.content;
+				this.setContent(this.contentParsed);
+				that._contentReady.resolve();
+			}
+		},
+		_stopCountDown: function() {
+			clearInterval(this.autoCloseInterval);
+			if (this.$cd) {
+				this.$cd.remove();
+			}
+		},
+		_startCountDown: function() {
+			var that = this;
+			var opt = this.autoClose.split("|");
+			if (opt.length !== 2) {
+				console.error("Invalid option for autoClose. example 'close|10000'");
+				return false;
+			}
+			var button_key = opt[0];
+			var time = parseInt(opt[1]);
+			if (typeof this.buttons[button_key] === "undefined") {
+				console.error("Invalid button key '" + button_key + "' for autoClose");
+				return false;
+			}
+			var seconds = time / 1000;
+			this.$cd = $('<span class="countdown"> (' + seconds + ")</span>").appendTo(this["$_" + button_key]);
+			this.autoCloseInterval = setInterval(function() {
+				that.$cd.html(" (" + (seconds -= 1) + ") ");
+				if (seconds === 0) {
+					that["$$" + button_key].trigger("click");
+					that._stopCountDown();
+				}
+			}, 1000);
+		},
+		_getKey: function(key) {
+			switch (key) {
+				case 192:
+					return "tilde";
+				case 13:
+					return "enter";
+				case 16:
+					return "shift";
+				case 9:
+					return "tab";
+				case 20:
+					return "capslock";
+				case 17:
+					return "ctrl";
+				case 91:
+					return "win";
+				case 18:
+					return "alt";
+				case 27:
+					return "esc";
+				case 32:
+					return "space";
+			}
+			var initial = String.fromCharCode(key);
+			if (/^[A-z0-9]+$/.test(initial)) {
+				return initial.toLowerCase();
+			} else {
+				return false;
+			}
+		},
+		reactOnKey: function(e) {
+			var that = this;
+			var a = $(".jconfirm");
+			if (a.eq(a.length - 1)[0] !== this.$el[0]) {
+				return false;
+			}
+			var key = e.which;
+			if (this.$content.find(":input").is(":focus") && /13|32/.test(key)) {
+				return false;
+			}
+			var keyChar = this._getKey(key);
+			if (keyChar === "esc" && this.escapeKey) {
+				if (this.escapeKey === true) {
+					this.$scrollPane.trigger("click");
+				} else {
+					if (typeof this.escapeKey === "string" || typeof this.escapeKey === "function") {
+						var buttonKey;
+						if (typeof this.escapeKey === "function") {
+							buttonKey = this.escapeKey();
+						} else {
+							buttonKey = this.escapeKey;
+						}
+						if (buttonKey) {
+							if (typeof this.buttons[buttonKey] === "undefined") {
+								console.warn("Invalid escapeKey, no buttons found with key " + buttonKey);
+							} else {
+								this["$_" + buttonKey].trigger("click");
+							}
+						}
+					}
+				}
+			}
+			$.each(this.buttons, function(key, button) {
+				if (button.keys.indexOf(keyChar) != -1) {
+					that["$_" + key].trigger("click");
+				}
+			});
+		},
+		_boxTopMargin: 0,
+		_boxBottomMargin: 0,
+		_boxWidth: 0,
+		setDialogCenter: function() {
+			var contentHeight;
+			var paneHeight;
+			var style;
+			contentHeight = 0;
+			paneHeight = 0;
+			if (this.$contentPane.css("display") != "none") {
+				contentHeight = this.$content.outerHeight() || 0;
+				paneHeight = this.$contentPane.height() || 0;
+			}
+			var children = this.$content.children();
+			if (children.length != 0) {
+				var marginTopChild = parseInt(children.eq(0).css("margin-top"));
+				if (marginTopChild) {
+					contentHeight += marginTopChild;
+				}
+			}
+			if (paneHeight == 0) {
+				paneHeight = contentHeight;
+			}
+			var windowHeight = window.innerHeight;
+			var boxHeight;
+			boxHeight = (this.$body.outerHeight() - paneHeight) + contentHeight;
+			var topMargin = (windowHeight - boxHeight) / 2;
+			if (boxHeight > (windowHeight - (this.offsetTop + this.offsetBottom)) || !this.alignMiddle) {
+				style = {
+					"margin-top": this.offsetTop,
+					"margin-bottom": this.offsetBottom
+				};
+				this._boxTopMargin = this.offsetTop;
+				this._boxBottomMargin = this.offsetBottom;
+				$("body").addClass("jconfirm-no-scroll-" + this._id);
+			} else {
+				style = {
+					"margin-top": topMargin,
+					"margin-bottom": this.offsetBottom,
+				};
+				this._boxTopMargin = topMargin;
+				this._boxBottomMargin = this.offsetBottom;
+				$("body").removeClass("jconfirm-no-scroll-" + this._id);
+			}
+			this.$contentPane.css({
+				height: contentHeight
+			}).scrollTop(0);
+			this.$body.css(style);
+			this.setDrag();
+		},
+		_unwatchContent: function() {
+			clearInterval(this._timer);
+		},
+		close: function() {
+			var that = this;
+			if (typeof this.onClose === "function") {
+				this.onClose();
+			}
+			this._unwatchContent();
+			clearInterval(this.imageLoadInterval);
+			$(window).unbind("resize." + this._id);
+			$(window).unbind("keyup." + this._id);
+			if (this.draggable) {
+				$(window).unbind("mousemove." + this._id);
+				$(window).unbind("mouseup." + this._id);
+				this.$titleContainer.unbind("mousedown");
+			}
+			$("body").removeClass("jconfirm-no-scroll-" + this._id);
+			this.$body.addClass(this.closeAnimationParsed);
+			this.$jconfirmBg.addClass("jconfirm-bg-h");
+			var closeTimer = (this.closeAnimation == "none") ? 1 : this.animationSpeed;
+			setTimeout(function() {
+				that.$el.remove();
+				if (that._lastFocused.length && $.contains(document, that._lastFocused[0])) {
+					var st = $(window).scrollTop();
+					var ot = that._lastFocused.offset().top;
+					var wh = $(window).height();
+					if (!(ot > st && ot < (st + wh))) {
+						var scrollTo = (ot - Math.round((wh / 3)));
+						if (that.scrollToPreviousElement && that.scrollToPreviousElementAnimate) {
+							$("html, body").animate({
+								scrollTop: scrollTo,
+							}, that.animationSpeed, "swing", function() {
+								that._lastFocused.focus();
+							});
+						} else {
+							if (that.scrollToPreviousElement) {
+								$("html, body").scrollTop(scrollTo);
+							} else {}
+						}
+					} else {
+						that._lastFocused.focus();
+					}
+				}
+				if (typeof that.onDestroy == "function") {
+					that.onDestroy();
+				}
+			}, closeTimer * 0.4);
+			return true;
+		},
+		open: function() {
+			this._buildHTML();
+			this._bindEvents();
+			this._open();
+			return true;
+		},
+		_open: function() {
+			var that = this;
+			if (typeof that.onOpenBefore == "function") {
+				that.onOpenBefore();
+			}
+			this.$body.removeClass(this.animationParsed);
+			this.$jconfirmBg.removeClass("jconfirm-bg-h");
+			this.$body.focus();
+			setTimeout(function() {
+				that.$body.css(that._getCSS(that.animationSpeed, 1));
+				that.$body.css({
+					"transition-property": that.$body.css("transition-property") + ", margin"
+				});
+				that._modalReady.resolve();
+				if (typeof that.onOpen === "function") {
+					that.onOpen();
+				}
+			}, this.animationSpeed);
+		},
+		isClosed: function() {
+			return this.$el.css("display") === "";
+		},
+		isOpen: function() {
+			return !this.isClosed();
+		},
+		toggle: function() {
+			if (!this.isOpen()) {
+				this.open();
+			} else {
+				this.close();
+			}
+		}
+	};
+	jconfirm.instances = [];
+	jconfirm.pluginDefaults = {
+		template: '<div class="jconfirm"><div class="jconfirm-bg jconfirm-bg-h"></div><div class="jconfirm-scrollpane"><div class="jc-bs3-container"><div class="jc-bs3-row"><div class="jconfirm-box-container"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="jconfirm-closeIcon">&times;</div><div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title"></span></div><div class="jconfirm-content-pane"><div class="jconfirm-content"></div></div><div class="jconfirm-buttons"></div><div class="jconfirm-clear"></div></div></div></div></div></div></div>',
+		title: "Hello",
+		titleClass: "",
+		type: "default",
+		typeAnimated: true,
+		draggable: false,
+		alignMiddle: true,
+		content: "Are you sure to continue?",
+		buttons: {},
+		defaultButtons: {
+			ok: {
+				action: function() {}
+			},
+			close: {
+				action: function() {}
+			},
+		},
+		contentLoaded: function() {},
+		icon: "",
+		bgOpacity: null,
+		theme: "light",
+		animation: "zoom",
+		closeAnimation: "scale",
+		animationSpeed: 400,
+		animationBounce: 1.2,
+		escapeKey: true,
+		rtl: false,
+		container: "body",
+		containerFluid: false,
+		backgroundDismiss: false,
+		backgroundDismissAnimation: "shake",
+		autoClose: false,
+		closeIcon: null,
+		closeIconClass: false,
+		watchInterval: 100,
+		columnClass: "col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",
+		boxWidth: "50%",
+		scrollToPreviousElement: true,
+		scrollToPreviousElementAnimate: true,
+		useBootstrap: true,
+		offsetTop: 50,
+		offsetBottom: 50,
+		dragWindowGap: 15,
+		bootstrapClasses: {
+			container: "container",
+			containerFluid: "container-fluid",
+			row: "row",
+		},
+		onContentReady: function() {},
+		onOpenBefore: function() {},
+		onOpen: function() {},
+		onClose: function() {},
+		onDestroy: function() {},
+		onAction: function() {}
+	};
+})(jQuery, window);

+ 1 - 1
src/web/staticres/dataExport/js/conditions_order.js

@@ -24,7 +24,7 @@ function showMoreCity (arr) {
   // console.log('--arr--', arr)
   arr.forEach(function (value) {
     // console.log('--value--', value.name)
-      var are = value.name.replace(/市$/g,'');
+      var are = value.name;
       //已选地区,展开省市时需选中
       var clazz = "";
       if(selectArea.length>0){

+ 17 - 11
src/web/staticres/dataExport/js/mapJSON.js

@@ -1125,7 +1125,7 @@ var chinaMapJSON = [{
     "area": ["江岸区", "江汉区", "硚口区", "汉阳区", "武昌区", "青山区", "洪山区", "东西湖区", "汉南区", "蔡甸区", "江夏区", "黄陂区", "新洲区"]
   }, {
     "CityID": 160,
-    "name": "襄市",
+    "name": "襄市",
     "ProID": 17,
     "CitySort": 160,
     "area": ["襄城区", "樊城区", "襄阳区", "南漳县", "谷城县", "保康县", "老河口市", "枣阳市", "宜城市"]
@@ -1555,6 +1555,12 @@ var chinaMapJSON = [{
     "ProID": 20,
     "CitySort": 272,
     "area": ['其他']
+  },{
+    "CityID": 272,
+    "name": "三沙市",
+    "ProID": 20,
+    "CitySort": 272,
+    "area": ['其他']
   }]
 }, {
   "ProID": 21,
@@ -1875,7 +1881,7 @@ var chinaMapJSON = [{
     "area": ['其他']
   }, {
     "CityID": 344,
-    "name": "吐鲁番地区",
+    "name": "吐鲁番",
     "ProID": 24,
     "CitySort": 344,
     "area": ["吐鲁番市", "鄯善县", "托克逊县"]
@@ -1935,7 +1941,7 @@ var chinaMapJSON = [{
     "area": ["城东区", "城中区", "城西区", "城北区", "大通回族土族自治县", "湟中县", "湟源县"]
   }, {
     "CityID": 291,
-    "name": "海东地区",
+    "name": "海东",
     "ProID": 25,
     "CitySort": 291,
     "area": ["平安县", "民和回族土族自治县", "乐都县", "互助土族自治县", "化隆回族自治县", "循化撒拉族自治县"]
@@ -2187,13 +2193,13 @@ var chinaMapJSON = [{
     "area": ["凯里市", "黄平县", "施秉县", "三穗县", "镇远县", "岑巩县", "天柱县", "锦屏县", "剑河县", "台江县", "黎平县", "榕江县", "从江县", "雷山县", "麻江县", "丹寨县"]
   }, {
     "CityID": 251,
-    "name": "铜仁地区",
+    "name": "铜仁",
     "ProID": 29,
     "CitySort": 251,
     "area": ["铜仁市", "江口县", "玉屏侗族自治县", "石阡县", "思南县", "印江土家族苗族自治县", "德江县", "沿河土家族自治县", "松桃苗族自治县", "万山特区"]
   }, {
     "CityID": 252,
-    "name": "毕节地区",
+    "name": "毕节",
     "ProID": 29,
     "CitySort": 252,
     "area": ["毕节市", "大方县", "黔西县", "金沙县", "织金县", "纳雍县", "威宁彝族回族苗族自治县", "赫章县"]
@@ -2295,7 +2301,7 @@ var chinaMapJSON = [{
     "area": ["临翔区", "凤庆县", "云县", "永德县", "镇康县", "双江拉祜族佤族布朗族傣族自治县", "耿马傣族佤族自治县", "沧源佤族自治县"]
   }, {
     "CityID": 286,
-    "name": "怒江傈族自治州",
+    "name": "怒江傈族自治州",
     "ProID": 30,
     "CitySort": 286,
     "area": ["泸水县", "福贡县", "贡山独龙族怒族自治县", "兰坪白族普米族自治县"]
@@ -2325,25 +2331,25 @@ var chinaMapJSON = [{
     "area": ["城关区", "林周县", "当雄县", "尼木县", "曲水县", "堆龙德庆县", "达孜县", "墨竹工卡县"]
   }, {
     "CityID": 322,
-    "name": "日喀则地区",
+    "name": "日喀则",
     "ProID": 31,
     "CitySort": 322,
     "area": ["日喀则市", "南木林县", "江孜县", "定日县", "萨迦县", "拉孜县", "昂仁县", "谢通门县", "白朗县", "仁布县", "康马县", "定结县", "仲巴县", "亚东县", "吉隆县", "聂拉木县", "萨嘎县", "岗巴县"]
   }, {
     "CityID": 323,
-    "name": "山南地区",
+    "name": "山南",
     "ProID": 31,
     "CitySort": 323,
     "area": ["乃东县", "扎囊县", "贡嘎县", "桑日县", "琼结县", "曲松县", "措美县", "洛扎县", "加查县", "隆子县", "错那县", "浪卡子县"]
   }, {
     "CityID": 324,
-    "name": "林芝地区",
+    "name": "林芝",
     "ProID": 31,
     "CitySort": 324,
     "area": ["林芝县", "工布江达县", "米林县", "墨脱县", "波密县", "察隅县", "朗县"]
   }, {
     "CityID": 325,
-    "name": "昌都地区",
+    "name": "昌都",
     "ProID": 31,
     "CitySort": 325,
     "area": ["昌都县", "江达县", "贡觉县", "类乌齐县", "丁青县", "察雅县", "八宿县", "左贡县", "芒康县", "洛隆县", "边坝县"]
@@ -2367,7 +2373,7 @@ var chinaMapJSON = [{
   "ProRemark": "省份",
   "city": [{
     "CityID": 327,
-    "name": "台湾",
+    "name": "台湾",
     "ProID": 31,
     "CitySort": 327,
     "area": ["台北市","高雄市","台北县","桃园县","新竹县","苗栗县","台中县","彰化县","南投县","云林县","嘉义县","台南县","高雄县","屏东县","宜兰县","花莲县","台东县","澎湖县","基隆市","新竹市","台中市","嘉义市","台南市","其他"]

+ 23 - 11
src/web/staticres/dataExport/js/pageination.ie.js

@@ -212,35 +212,47 @@ var Page =
             return n - step;
           }; // min
 
-          if (n <= size - this.min) {
-            mapF = function mapF(v, i) {
-              return _this3.min + 1 + i;
-            };
 
-            show[0] = false;
-          } // max
-
-          if (this.max - size < n) {
+		  if (this.max - size < n) {
             mapF = function mapF(v, i) {
               return _this3.max - size + i;
             };
 
             show[1] = false;
           }
-
+        
+          if(n+(size-1)/2<this.max-1){
+        	show[1] = true;
+          }	
+        
+          if (n <= size - this.min) {
+            mapF = function mapF(v, i) {
+              return _this3.min + 1 + i;
+            };
+            show[0] = false;
+          } // max
+          
+        
           if (this.max - this.min <= this.show) {
             show = [false, false];
           }
-
           this.contentArr = arr.map(mapF).filter(function(v) {
             return v > _this3.min && v < _this3.max;
           });
+        
+          if(this.min+1==this.contentArr[0]){
+        	show[0] = false;
+          }
+          
+          if(this.max-1==this.contentArr[this.contentArr.length-1]){
+        	show[1] = false;
+          }
           show.forEach(function(v, i) {
             _this3.otherDom[i + 1].style.display = v ? "inline-block" : "none";
+            _this3.otherDom[i + 1].style.pointerEvents = "none";
           });
         }
       }
     ]);
-
     return Page;
   })();

+ 26 - 13
src/web/staticres/js/biddingSearch.js

@@ -367,27 +367,25 @@ $(function() {
 						$("#labModal").modal("show");
 					}
 				}
+				//隐藏翻页(仅超级搜索页面、拟建项目不隐藏)
+				if(window.location.href.indexOf("supsearch/index.html")>-1){
+					$(".pagination.clearfix.w").css("display","none");			
+				}
 			}else if($(this).attr("id")=="right-list"){
 				$(this).addClass("active").siblings().removeClass("active");
 				$controlDiv.eq($(this).index()).show().siblings().hide();
 				$controlDiv_2.eq($(this).index()).show().siblings().hide();
+				//显示翻页
+				if(window.location.href.indexOf("supsearch/index.html")>-1){
+					$(".pagination.clearfix.w").css("display","");
+				}
 			}else if($(this).attr("id")=="right-export"){
 				//数据导出
-				if(!loginflag){
-					unseatflag = true;
-					$(".code-text").html('<span style="font-size:22px;margin-top:10px;display:inline-block;color:#252627;font-weight:normal;"><img id="wxpng" src="/images/wx1.png">请先微信扫码登录</span>')
-					$("#bidLogin").modal("show");
-				}else{
-					//已登录跳转订单支付页面
-					window.history.replaceState(null, null, "/jylab/supsearch/index.html?goback"+new Date().getTime());
-					$("#zbSeatchT").attr("action","/front/dataExport/superSearchExport");
-					$("#zbSeatchT").removeAttr("onsubmit");
-					$("#zbSeatchT").submit();
-				}
+				toPaydataExport();
 			}
 		})
 	}
-
+		
 	/*全文搜索 标题搜索 添加类名*/
 	luceneTab();
 
@@ -404,4 +402,19 @@ $(function() {
 		})
 	}
 
-})
+})
+
+//携带当前检索跳转数据导出支付页面
+function toPaydataExport(){
+	if(!loginflag){
+		unseatflag = true;
+		$(".code-text").html('<span style="font-size:22px;margin-top:10px;display:inline-block;color:#252627;font-weight:normal;"><img id="wxpng" src="/images/wx1.png">请先微信扫码登录</span>')
+		$("#bidLogin").modal("show");
+	}else{
+		//已登录跳转订单支付页面
+		window.history.replaceState(null, null, "/jylab/supsearch/index.html?goback"+new Date().getTime());
+		$("#zbSeatchT").attr("action","/front/dataExport/superSearchExport");
+		$("#zbSeatchT").removeAttr("onsubmit");
+		$("#zbSeatchT").submit();
+	}
+}

+ 0 - 56
src/web/staticres/js/popup/tap.js

@@ -1,56 +0,0 @@
-$(function () {
-	var timestamp_pop = Date.parse( new Date())/1000;
-	var change_pop = 1557158400;//十五天后弹出框让位给飘窗
-	if (localStorage.getItem("popup_bx") != "A"){
-		if (change_pop>timestamp_pop){
-			var tapHtml = '<div class="modal fade" id="myModal-tap" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="true">'
-			+'<div class="modal-dialog">'
-			+'<div class="pop-new" style="width: 515px;height: 320px;background: url(/images/pc/tan.png);background-size: cover;border-radius: 8px;position: relative;top: 90px;left: 50%;margin-left: -258px;">'
-			+'<div style="position: absolute;color: #fff;font-size: 24px;top: 50px;left: 50px;font-family: 微软雅黑;"><span style="font-weight: bold;">剑鱼标讯招标订阅</span>现已升级</div>'
-			+'<div style="position: absolute;color: #fff;font-size: 24px;top: 100px;left: 50px;font-family: 微软雅黑;">为<span style="font-weight: bold;">剑鱼标讯</span></div>'
-			+'<div style="position: absolute;color: #0687DB;font-size: 14px;bottom: 75px;left: 50px;font-family: 微软雅黑;width: 100px;border: 1px solid #fff;border-radius: 16px;text-align: center;padding: 5px 20px;background-color: #fff;   cursor: pointer;" onclick="details()">查看详情</div>'
-			+'<img class="popClose" style="width: 35px;height: 35px;position: absolute;left: 240px;top: 335px;cursor: pointer" src="/images/j-wx-code-close.png" onclick="popClose()">'
-			+'</div>'
-			+'</div>'
-			+'</div>'
-			$("body").append(tapHtml)
-			$("#myModal-tap").modal("show");
-			addStorge();
-		}else{
-			var newTapHtml = '<div id="pop_last" style="height:42px;background:#f6b20e;color: #fff;text-align: center;line-height: 42px;">'
-					+'<div style="font-size:18px;letter-spacing: .8px">'
-					+'<span style="font-weight: bold;">剑鱼标讯招标订阅</span>现已升级为<span style="font-weight: bold;">剑鱼标讯</span>'
-					+'<a onclick="details(2)" style="color:#fff;font-size: 14px;position: relative;left: 130px;text-decoration: underline;">查看详情</a>'
-					+'<img  onclick="popClose(2)" src="/images/pc/close.png" style="float: right;margin-right: 30px;width: 14px;cursor: pointer;position: relative; top: 14px;"></div>'
-		    $(newTapHtml).insertBefore($("#public-nav"));
-			$("#public-nav").css({"top":"42px"});
-		}
-	}
-});
-
-function popClose(n){
-	addStorge();
-	if(n==2){
-		var setC = 42;
-		var myVar = setInterval(function(){
-			setC = setC - 1;
-			if (setC==0){
-				clearInterval(myVar);
-				$("#pop_last").remove();
-			}
-			$("#pop_last").css({"height":setC});
-			$("#public-nav").css({"top":setC});
-		}, 30);
-	}else{
-		$("#myModal-tap").modal("hide");
-	}
-}
-
-function details(n){
-	popClose(n);
-	window.open("https://www.jianyu360.com/jyblog/QQwSCldMBwcBA0xfEVpSEQAGAg1CDUhY.html")
-}
-
-function addStorge(){
-	localStorage.setItem("popup_bx", "A")
-}

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

@@ -348,7 +348,7 @@ function appendDatas(datas,isNew){
 				tableHtml += '<td width="155"><div></div></td>';
 			}
 			
-			if(proinfo!=undefined && typeof(proinfo.approvetime) != "undefined" && proinfo.approvetime != null && proinfo.approvetime != ""){
+			if(proinfo!=undefined && typeof(proinfo.approvetime) != "undefined" && proinfo.approvetime != null && proinfo.approvetime != "" && proinfo.approvetime !=0 ){
 				tableHtml += '<td width="115"><div>'+proinfo.approvetime.substring(0,16)+'</div></td>';
 			}else{
 				tableHtml += '<td width="115"><div></div></td>';

+ 86 - 93
src/web/staticres/js/superSearch.js

@@ -214,16 +214,7 @@ function next(){
 	if($("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='industry']").val()==""){
 		getNewBids(currentPage);
 	}else{
-		if($("#right-table").hasClass("active")){
-			if(secondFlag=="T"){
-				$(".tabContainer").show();
-				$(".hasNoData").hide();
-				$(".nbnext").addClass("disabled");
-				appendDatas(secondList,true,false);
-			}else{
-				getVIPData(true);
-			}
-		}else{
+		if(!$("#right-table").hasClass("active")){
 			if(secondFlag=="T"){
 				$(".tabContainer").show();
 				$(".hasNoData").hide();
@@ -234,6 +225,16 @@ function next(){
 			}else{
 				searchOnsubmit(true);
 			}
+		}else{
+//表格点击下一页			
+//			if(secondFlag=="T"){
+//				$(".tabContainer").show();
+//				$(".hasNoData").hide();
+//				$(".nbnext").addClass("disabled");
+//				appendDatas(secondList,true,false);
+//			}else{
+//				getVIPData(true);
+//			}
 		}
 	}
 }
@@ -255,10 +256,7 @@ function prev(){
 	if($("#zbSeatchT [name='keywords']").val()==""&&$("#zbSeatchT [name='industry']").val()==""){
 		getNewBids(currentPage);
 	}else{
-		
-		if($("#right-table").hasClass("active")){
-			getVIPData(true);
-		}else{
+		if(!$("#right-table").hasClass("active")){
 			if(secondFlag=="T"){
 				$(".tabContainer").show();
 				$(".hasNoData").hide();
@@ -269,6 +267,9 @@ function prev(){
 			}else{
 				searchOnsubmit(true);
 			}
+		}else{
+//表格点击上一页
+//			getVIPData(true);
 		}
 	}
 }
@@ -347,7 +348,7 @@ function getNewBiddings(){
 }
 //
 
-function appendDatas(datas,flag,isNew){
+function appendDatas(datas,flag,isNew,onlyUpdateTable){
 	var listHtml = '';
 	var tableHtml = '';
 	$(".working").hide();
@@ -364,6 +365,12 @@ function appendDatas(datas,flag,isNew){
 			$(".nbnext").removeClass("disabled");
 		}
 	}
+	//(数据够20条显示查看更多遮罩层)
+	if(datas.length>=20){
+		$(".shade_table").css("display","");
+	}else{
+		$(".shade_table").css("display","none");
+	}
 	for(var i=0;i<datas.length;i++){
 		var index = (currentPage - 1) * pageSize + i + 1;
 		var title = datas[i].title;
@@ -395,47 +402,55 @@ function appendDatas(datas,flag,isNew){
 				type = "";
 			}
 		}
-		listHtml += '<li>'
-		//if(datas.length==(i+1)){
-		//	listHtml +='<div class="liLuceneList">'
-		//}else{
-			listHtml +='<div class="liLuceneList" style="border-bottom: 1px solid #EBEBEB;">'
-		//}
-		listHtml +='<div class="luce-left"><em>'+index+'.</em>'
-					+'<div class="left-title">'
-					+'<a onclick="noIn(this)" dataid="'+datas[i]._id+'" dataindustry="'+datas[i].industry+'" target="_blank"> '+title+'</a>'
-					+'</div>'
-		if(flag&&selectType == "all"&&detail!=""){
-			listHtml += '<div class="left-content">'
-					+'<a href="javascript:volid(0);">'+detail+'...</a>'
-					+'</div>'
-		}
-		listHtml += '</div><div class="luce-right">'
-		if($.trim(datas[i].area) != "" && datas[i].area != "A"){
-			listHtml += '<a href="/list/area/'+datas[i].areaadd+'.html">'+datas[i].area+'</a>';
-		}else{
-			listHtml += '<a href="#" style="display:none;"></a>';
-		}
-		if(typeof(type) != "undefined" && type != null && type != ""){
-			listHtml += '<a href="/list/stype/'+datas[i].stypeadd+'.html">'+type+'</a>';
-		}else{
-			listHtml += '<a href="#" style="display:none;"></a>';
-		}
-		//
-		if(typeof(datas[i].industry) != "undefined" && datas[i].industry != null && datas[i].industry != ""){
-			listHtml += '<a href="/list/industry/'+datas[i].indadd+'.html">'+datas[i].industry+'</a>';
-		}else{
-			listHtml += '<a href="javascript:volid(0);" style="display:none;"></a>';
+	
+		if (!onlyUpdateTable){ //是否仅更新table
+			listHtml += '<li>'
+			//if(datas.length==(i+1)){
+			//	listHtml +='<div class="liLuceneList">'
+			//}else{
+				listHtml +='<div class="liLuceneList" style="border-bottom: 1px solid #EBEBEB;">'
+			//}
+			listHtml +='<div class="luce-left"><em>'+index+'.</em>'
+						+'<div class="left-title">'
+						+'<a onclick="noIn(this)" dataid="'+datas[i]._id+'" dataindustry="'+datas[i].industry+'" target="_blank"> '+title+'</a>'
+						+'</div>'
+			if(flag&&selectType == "all"&&detail!=""){
+				listHtml += '<div class="left-content">'
+						+'<a href="javascript:volid(0);">'+detail+'...</a>'
+						+'</div>'
+			}
+			listHtml += '</div><div class="luce-right">'
+			if($.trim(datas[i].area) != "" && datas[i].area != "A"){
+				listHtml += '<a href="/list/area/'+datas[i].areaadd+'.html">'+datas[i].area+'</a>';
+			}else{
+				listHtml += '<a href="#" style="display:none;"></a>';
+			}
+			if(typeof(type) != "undefined" && type != null && type != ""){
+				listHtml += '<a href="/list/stype/'+datas[i].stypeadd+'.html">'+type+'</a>';
+			}else{
+				listHtml += '<a href="#" style="display:none;"></a>';
+			}
+			//
+			if(typeof(datas[i].industry) != "undefined" && datas[i].industry != null && datas[i].industry != ""){
+				listHtml += '<a href="/list/industry/'+datas[i].indadd+'.html">'+datas[i].industry+'</a>';
+			}else{
+				listHtml += '<a href="javascript:volid(0);" style="display:none;"></a>';
+			}
+			
+			//
+			if(typeof(datas[i].publishtime) != "undefined" && datas[i].publishtime != null && datas[i].publishtime != ""){
+				var diff = timeDiff(new Date(Number(datas[i].publishtime+"000")));
+				if(diff != null){
+					listHtml += '<span class="com-time">'+diff+'</span>';
+				}
+			}
+			listHtml += '</div></li>';
 		}
 		
-		//
-		if(typeof(datas[i].publishtime) != "undefined" && datas[i].publishtime != null && datas[i].publishtime != ""){
-			var diff = timeDiff(new Date(Number(datas[i].publishtime+"000")));
-			if(diff != null){
-				listHtml += '<span class="com-time">'+diff+'</span>';
-			}
+		//表格仅显示前20条信息
+		if (i >= 20||currentPage!=1){
+			continue
 		}
-		listHtml += '</div></li>';
 		tableHtml +='<tr onclick="noIn(this)" dataid="'+datas[i]._id+'" dataindustry="'+datas[i].industry+'" target="_blank">'
 				+'<td width="48"><div>'+index+'</div></td>'
 		if(typeof(datas[i].projectname) != "undefined" && datas[i].projectname != null && datas[i].projectname != ""){
@@ -512,12 +527,23 @@ function appendDatas(datas,flag,isNew){
 		$("#allnews").hide();
 		$(".tabContainer-2").show();
 	}
+	
+	if (currentPage!=1){
+		tableHtml = sessionStorage.getItem("table_first_context")
+	}else{
+		sessionStorage.setItem("table_first_context",tableHtml)
+	}
+	
 	if(!flag||selectType=="title"){
-		$(".tabContainer-2 .lucene ul").html(listHtml);
+		if (!onlyUpdateTable){
+			$(".tabContainer-2 .lucene ul").html(listHtml);	
+		}
 		$(".tabContainer-2 .lucene-table table tbody").html(tableHtml);
 	}else{
 		if(selectType=="all"){
-			$("#allnews .lucene ul").html(listHtml);
+			if (!onlyUpdateTable){
+				$("#allnews .lucene ul").html(listHtml);
+			}
 			$("#allnews .lucene-table table tbody").html(tableHtml);
 		}
 	}
@@ -587,12 +613,6 @@ function getInputTime(){
 
 //---取VIP数据---
 function getVIPData(clickpaging){
-	if(secondFlag=="T"&&currentPage==2){						
-		$(".hasNoData").hide();
-		$(".nbnext").addClass("disabled");
-		appendDatas(secondList,true,true);
-		return true;
-	}
 	var this_selectType = $("#zbSeatchT [name='selectType']").val();
 	if(this_selectType != "all"){
 		LimitClass.limitFlag = false;
@@ -637,7 +657,7 @@ function getVIPData(clickpaging){
 		reqType="lastNews";
 	}
 	var param = {
-				pageNumber: currentPage,
+				pageNumber: 1,
 				reqType: reqType,
 				searchvalue: $("#zbSeatchT [name='keywords']").val(),
 				area: $("#zbSeatchT [name='area']").val(),
@@ -648,7 +668,7 @@ function getVIPData(clickpaging){
 				maxprice : $("#zbSeatchT [name='maxprice']").val(),
 				industry : $("#zbSeatchT [name='industry']").val(),
 				tabularflag : tabularflag,
-			};
+			};		
 	$.ajax({
        type:'post',
        url:'/front/pcAjaxReq',
@@ -658,43 +678,16 @@ function getVIPData(clickpaging){
        success:function(r){
 			afterAjaxReq(r);
 			if(r&&r.list!=null&&r.list.length>0){
-				//$(".tabContainer").show();
-				//$(".pagination").show();
 				$(".hasNoData").hide();
-				//$(".pagination-inner").find("span").text(currentPage);
 				if(r.list.length<pageSize||currentPage==10){
 					$(".nbnext").addClass("disabled");
 				}else{
 					$(".nbnext").removeClass("disabled");
 				}
-				if(secondFlag=="T"){
-					if(secondList.length>0){
-						$(".nbnext").removeClass("disabled");
-					}
-					list = list.slice(r.list.length,list.length);
-					list = r.list.concat(list);
-					appendDatas(list,true,true);
-				}else{
-					appendDatas(r.list,tlflag,true);
-				}
+				appendDatas(r.list,tlflag,true,true);
 			}else{
-				if(secondFlag=="T"&&list.length>0){
-					appendDatas(list,true,true);
-				}else{
-					if(currentPage>1){
-						$(".nbnext").addClass("disabled");
-						if(currentPage==2){
-							$(".nbprev").addClass("disabled");
-						}
-						currentPage = currentPage-1;
-						return false
-					}
-					submitflag=true;
-					$(".tabContainer").hide();
-					$(".pagination").hide();
-					$(".working").hide();
-					$(".hasNoData").show();
-				}
+				$(".working").hide();
+				$(".hasNoData").show();
 			}
 			tabflag = true;
 		}

+ 76 - 27
src/web/staticres/js/wxSupersearch.js

@@ -45,9 +45,9 @@ var SuperSearch = {
 		$("#supersearchPage").removeClass("hidden");
         $("body").css("background-color","#fff");
 		if(SuperSearch.dyDiv){   //首次进来是否显示订阅
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false)
 		}else{
-			$("#supersearchPage .resbm").removeClass("hidden");
+			SuperSearch.showToOrder(true)
 		}
 		SuperSearch.canSearch();
 		if(isReload){
@@ -167,7 +167,7 @@ var SuperSearch = {
 		//是否开通超级搜索服务
 		//关闭搜索后订阅================================================================
 		$("#supersearchPage .dy_close").on("tap",function(){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false)
 			SuperSearch.dyDiv=true;
 		});
 		
@@ -465,6 +465,12 @@ var SuperSearch = {
 	        $("#supersearchPage #endtime").mobiscroll('show');
 		});
 		SuperSearch.initMobiscroll();
+		//返回时 是否显示table的查看更多
+		if($(".showlist").hasClass("on")){
+			SuperSearch.isTable(false);
+		}else{
+			SuperSearch.isTable(true);
+		}
 	},
 	recoveryPage: function(){
 		$("#supersearchPage .inputDiv").addClass("hidden")
@@ -619,6 +625,15 @@ var SuperSearch = {
 				});
 			}
 		});
+		//判断是否是table  (2.7.5table只显示20条数据)
+		if(!sessionStorage.superSearch_showType){
+			if($(".showlist").hasClass("on")){
+				SuperSearch.isTable(false);
+			}else{
+				SuperSearch.isTable(true);
+			}
+		}
+		
 		if(!hasNextPage){
 			SuperSearch.noMoreData();
 			return;
@@ -830,12 +845,13 @@ var SuperSearch = {
 		if(!SuperSearch.beforeSubmit()){
 			return;
 		}
+		$("#wrapper .shade_table").css("display","none"); //隐藏table 查看更多
 		$("#supersearchPage #working").removeClass("hidden");
 		$("#supersearchPage #intercept").addClass("hidden");
 		$("#supersearchPage #table").addClass("hidden");
 		$("#supersearchPage #list").addClass("hidden");
 		if(SuperSearch.showNull){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false)
 		}
 		$("#supersearchPage .nullcontent").addClass("hidden");
 		$("#supersearchPage .selLable").removeClass("hidden");
@@ -871,6 +887,7 @@ var SuperSearch = {
 				$("#supersearchPage .selLable").removeClass("hidden");
 				//铺查询信息
 				$("#supersearchPage #wrapper .dropload-down").remove();
+				
 				if(data["list"] == null || data["list"].length == 0){
 					$("#supersearchPage #hasNoData_tiptext>font").hide();
 					if(data.status==-1){
@@ -1059,30 +1076,33 @@ var SuperSearch = {
 						+'<div style="clear:both;"></div>'
 						+detail
 						+'</div>';
+			if(i>=20||pageNum!=1){
+				continue
+			}			
 			//拟建项目
 			if(SuperSearch.subtype_proposed==SuperSearch.reqParam.subtype){
 				var projectinfo = list[i].projectinfo;
-				if(projectinfo){
+				//if(projectinfo){
 					var approvecode = "";
-					if(projectinfo.approvecode){
+					if(projectinfo&&projectinfo.approvecode){
 					   approvecode = projectinfo.approvecode;
 					}
 					var approvecontent = "";
-					if(projectinfo.approvecontent){
+					if(projectinfo&&projectinfo.approvecontent){
 					   approvecontent = projectinfo.approvecontent;
 					}
 					var approvestatus = "";
-					if(projectinfo.approvestatus){
+					if(projectinfo&&projectinfo.approvestatus){
 					   approvestatus = projectinfo.approvestatus;
 					}
 					var approvetime = "";
 					var diff = "";
-					if(projectinfo.approvetime){
+					if(projectinfo&&projectinfo.approvetime){
 					   	approvetime = projectinfo.approvetime.replace(/-/g,"/");
 					   	diff = timeDiff(new Date(approvetime));
 					}
 					var industry = "";
-					if(projectinfo.industry){
+					if(projectinfo&&projectinfo.industry){
 						industry = projectinfo.industry;
 					}
 					TableHtml +='<tr s="'+href+'"  sid="'+list[i]._id+'" i="'+industry+'">'+
@@ -1094,7 +1114,7 @@ var SuperSearch = {
 					   '<td><div style="width: 75px;text-align: center;">'+approvetime+'</div></td>'+
 					   '<td><div style="width: 75px;text-align: center;">'+diff+'</div></td>'+
 					   '</tr>';
-				}
+				//}
 			}else{
 				TableHtml +='<tr s="'+href+'"  sid="'+list[i]._id+'" i="'+(list[i].industry?list[i].industry:"")+'">'+
 							'<td><div>'+index+'</div></td>'+
@@ -1126,9 +1146,9 @@ var SuperSearch = {
 		$("#supersearchPage .nullcontent").addClass("hidden");
 		$("#supersearchPage #wrapper").removeClass("hidden");
 		if(SuperSearch.dyDiv){
-			$("#supersearchPage .resbm").addClass("hidden");
+			SuperSearch.showToOrder(false)
 		}else{
-			$("#supersearchPage .resbm").removeClass("hidden");
+			SuperSearch.showToOrder(true)
 		}
 	},
 	appendListHtml: function (html){  //下拉时展示信息
@@ -1142,17 +1162,15 @@ var SuperSearch = {
 	        SuperSearch.myredirect(h,sid,sds,industry);
 	    });
 	    $('#supersearchPage #list').append(ListHtmlObj);
-	
-	    var TableHtmlobj=$(html.TableHtml);
-	    TableHtmlobj.on("tap",function(event){
-	        var h = $(this).attr("s");
-	        var sid = $(this).attr("sid");
-	        var sds = SuperSearch.s_words.replace(/\+/g,"+");
-			var industry = $(this).attr("i");
-	        SuperSearch.myredirect(h,sid,sds,industry);
-	    });
-	    $("#supersearchPage #table .content").append(TableHtmlobj);
-		
+//	    var TableHtmlobj=$(html.TableHtml);
+//	    TableHtmlobj.on("tap",function(event){
+//	        var h = $(this).attr("s");
+//	        var sid = $(this).attr("sid");
+//	        var sds = SuperSearch.s_words.replace(/\+/g,"+");
+//			var industry = $(this).attr("i");
+//	        SuperSearch.myredirect(h,sid,sds,industry);
+//	    });
+//	    $("#supersearchPage #table .content").append(TableHtmlobj);
 		$(".loading_").hide();
 	},
 	replayListHtml: function(html){ //搜索时替换信息
@@ -1335,6 +1353,7 @@ var SuperSearch = {
 	    $("#supersearchPage #wrapper #list").removeClass("hidden");
 		if(SuperSearch.dropload != null){
 			SuperSearch.dropload.resetload();
+			SuperSearch.isTable(false);
 		}
 	},
 	//2.表格展示数据
@@ -1367,15 +1386,36 @@ var SuperSearch = {
 			  	$("#supersearchPage .showtable").addClass("on").siblings().removeClass("on");
 			  	$("#supersearchPage #wrapper #table").removeClass("hidden");
 			  	$("#supersearchPage #wrapper #list").addClass("hidden");
-				if(SuperSearch.dropload != null){
-					SuperSearch.dropload.resetload();
-				}
+				//if(SuperSearch.dropload != null){
+				//	SuperSearch.dropload.resetload();
+				//}
+				SuperSearch.isTable(true);
 			}else{
 				SuperSearch.toOpenSupersearch();
 			}
 		},300)
 		
 	},
+	isTable:function(flag){
+		if(flag){ //table
+			if(SuperSearch.dropload){//表格只展示20条数据
+				SuperSearch.dropload.lock();
+			} 
+			if($("#table .content tr").length>20){
+				$(".dropload-down").css("display","none");
+				$("#wrapper .shade_table").css("display","");
+			}else{
+				$(".dropload-down").css("display","");
+				$("#wrapper .shade_table").css("display","none");
+			}
+		}else{ //list
+			if(SuperSearch.dropload){
+				SuperSearch.dropload.unlock();
+			}
+			$(".dropload-down").css("display","");
+			$("#wrapper .shade_table").css("display","none");
+		}
+	},
 	goToFeedbackPage: function(){
 		SuperSearch.setSessionStorage();
 		window.location.href = '/swordfish/feedback';
@@ -1862,5 +1902,14 @@ var SuperSearch = {
 		$("#supersearchPage input[name=super_searchinput]").blur();
 		$("#supersearchPage .maxMrice").blur();
 	    $("#supersearchPage .minMrice").blur();
+	},
+	showToOrder:function(flag){
+		if(flag){
+			$("#wrapper").css("margin-bottom","91px");
+			$("#supersearchPage .resbm").removeClass("hidden");
+		}else{
+			$("#wrapper").css("margin-bottom","52px");
+			$("#supersearchPage .resbm").addClass("hidden");
+		}
 	}
 };

+ 1 - 1
src/web/staticres/pccss/index.css

@@ -179,7 +179,7 @@ text-decoration:none;
 #index .links .linkul .linksitem .linkdiv {
   display: none;
   position: absolute;
-  left: -.2rem;
+  left: -.5rem;
   top: -1.8rem;
   width: 1.46rem;
   height: 1.78rem;

+ 0 - 1
src/web/templates/common/pnc.html

@@ -20,4 +20,3 @@
 <script src="{{Msg "seo" "cdn"}}/js/login.js?v={{Msg "seo" "version"}}"></script>
 <script src="{{Msg "seo" "cdn"}}/js/common.js?v={{Msg "seo" "version"}}"></script>
 {{Html `<!--[if lt IE 9]><script src="{{Msg "seo" "cdn"}}/js/html5shiv.min.js"></script><script src="{{Msg "seo" "cdn"}}/js/respond.min.js"></script><![endif]-->`}}
-<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/popup/tap.js?v={{Msg "seo" "version"}}"></script>

+ 13 - 4
src/web/templates/pc/biddetail.html

@@ -14,6 +14,9 @@
 <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 <style>
+body{
+  font-family: "Microsoft YaHei",sans-serif;
+}
 .public-nav .iner .logo img{
 	width: 130px;
 }
@@ -289,7 +292,9 @@ function isWechat() {
 						<td class="preb-exam">审批结果</td>
 						{{end}}
 						{{if .T.obj.projectinfo.approvetime}}
+              {{if ne .T.obj.projectinfo.approvetime "0"}}
 						<td class="preb-exam">审批时间</td>
+              {{end}}
 						{{end}}
 						{{if .T.obj.projectinfo.approvenumber}}
 						<td class="preb-exam">审批文号</td>
@@ -312,9 +317,11 @@ function isWechat() {
 						</td>
 						{{end}}
 						{{if .T.obj.projectinfo.approvetime}}
-						<td class="preb-examcont">
-						<div class="spsj" id="spsj">{{.T.obj.projectinfo.approvetime}}</div>
-						</td>
+              {{if ne .T.obj.projectinfo.approvetime "0"}}
+  						<td class="preb-examcont">
+  						<div class="spsj" id="spsj">{{.T.obj.projectinfo.approvetime}}</div>
+  						</td>
+              {{end}}
 						{{end}}
 						{{if .T.obj.projectinfo.approvenumber}}
 						<td class="preb-examcont">
@@ -590,7 +597,9 @@ $(function(){
 		$(".preb-enno").html('<img src="{{Msg "seo" "cdn"}}/images/wx/enclosure.png"/>附件('+j+'个)')
 		//for(var i in arr){
 		if(arr["url"]&&arr["filename"]&&arr["filename"].slice(-3).toLowerCase()=="pdf"){
-			if(arr["url"].indexOf("9889")>-1){
+			if(arr["url"].indexOf("fj1.jianyu360.com:9888")>-1){
+				arr["url"]="/fj1"+arr["url"].substring(arr["url"].lastIndexOf("/"));
+			}else if(arr["url"].indexOf("9889")>-1){
 				arr["url"]="/fs1"+arr["url"].substring(arr["url"].lastIndexOf("/"));
 			}else{
 				arr["url"]="/fs"+arr["url"].substring(arr["url"].lastIndexOf("/"));

+ 13 - 4
src/web/templates/pc/biddetail_rec.html

@@ -14,6 +14,9 @@
 <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
 <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
 <style>
+body{
+  font-family: "Microsoft YaHei",sans-serif;
+}
 a{
 	color:#000;
 }
@@ -279,7 +282,9 @@ function isWechat() {
 						<td class="preb-exam">审批结果</td>
 						{{end}}
 						{{if .T.obj.projectinfo.approvetime}}
+              {{if ne .T.obj.projectinfo.approvetime "0"}}
 						<td class="preb-exam">审批时间</td>
+              {{end}}
 						{{end}}
 						{{if .T.obj.projectinfo.approvenumber}}
 						<td class="preb-exam">审批文号</td>
@@ -302,9 +307,11 @@ function isWechat() {
 						</td>
 						{{end}}
 						{{if .T.obj.projectinfo.approvetime}}
-						<td class="preb-examcont">
-						<div class="spsj" id="spsj">{{.T.obj.projectinfo.approvetime}}</div>
-						</td>
+              {{if ne .T.obj.projectinfo.approvetime "0"}}
+  						<td class="preb-examcont">
+  						<div class="spsj" id="spsj">{{.T.obj.projectinfo.approvetime}}</div>
+  						</td>
+              {{end}}
 						{{end}}
 						{{if .T.obj.projectinfo.approvenumber}}
 						<td class="preb-examcont">
@@ -1158,7 +1165,9 @@ $(function(){
 		//for(var i in arr){
 		if(arr["url"]&&arr["filename"]&&arr["filename"].slice(-3).toLowerCase()=="pdf"){
 			attaflag = true;
-			if(arr["url"].indexOf("9889")>-1){
+			if(arr["url"].indexOf("fj1.jianyu360.com:9888")>-1){
+				arr["url"]="/fj1"+arr["url"].substring(arr["url"].lastIndexOf("/"));
+			}else if(arr["url"].indexOf("9889")>-1){
 				arr["url"]="/fs1"+arr["url"].substring(arr["url"].lastIndexOf("/"));
 			}else{
 				arr["url"]="/fs"+arr["url"].substring(arr["url"].lastIndexOf("/"));

+ 37 - 10
src/web/templates/pc/createOrderPage.html

@@ -100,12 +100,15 @@
                 <div>公告标题、公告内容、公告地址、剑鱼标讯地址、省份、城市、发布时间、项目名称、项目编号、采购单位、采购单位联系人、采购单位联系电话、预算、开标日期、中标单位、中标价、招标机构、项目范围、币种、公告类别</div>
             </span>
         </span>
-        <div class="wxpay">
+        <div class="pay">
             <div class="title">支付方式</div>
-            <div class="inner clearfix">
-                <div class="wx active no-select">
+            <div class="inner clearfix payway">
+                <div class="wx no-select">
                     <span>微信支付</span>
                 </div>
+                <div class="alipay no-select">
+                    <span>支付宝</span>
+                </div>
             </div>
         </div>
         <div class="money ">
@@ -154,6 +157,7 @@
 	var finishEmailVerity=false;
 	var readClause=false;
 	var dataType=1;
+  var pay_way="weixin";
 	var finishPhoneVerity=false;
 	
 	var email_lastInput={{.T.email}}
@@ -186,9 +190,9 @@
 			$(".email_input").val(sessionStorage.getItem("order_email"+{{.T._id}}));
 			finishEmailVerity=true;
 		}else if(email_lastInput!=""){
-			$(".email_check_ok").show();
-			$(".email_input").val(email_lastInput);
-			finishEmailVerity=true;
+      $(".email_check_ok").show();
+		  $(".email_input").val(email_lastInput);
+		  finishEmailVerity=true;	
 		}
 		if(email_lastVerity>0){
 			sendemailTimer(email_lastVerity);
@@ -234,9 +238,13 @@
 				$(".email_check_ok").hide();
 			}
 		}).blur(function(){
+      console.log("xxx")
 			var email=$(".email_input").val().replace(/\s*/g,"");
 			if(!/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(email)){
 				showEmailErr("邮箱格式不正确");
+        finishEmailVerity=false;
+        $(".toPay").css("background-color","#ddd")
+				$(".toPay").attr("disabled","disabled");
 				return
 			}
 			$(".email_check_ok").show();
@@ -372,6 +380,25 @@
 			$(".infotitle em").css("display","");
 		} 
 		
+    //支付方式
+    if(sessionStorage.getItem("order_payway"+{{.T._id}})!=null){
+      pay_way=sessionStorage.getItem("order_payway"+{{.T._id}})  
+    }
+    if(pay_way=="weixin"){
+      $(".payway .wx").addClass("active");
+    }else if(pay_way=="alipay"){
+      $(".payway .alipay").addClass("active");
+    }
+    //支付方式切换
+    $(".payway>div").on("click",function(){
+      $(this).addClass("active").siblings().removeClass("active");
+      if($(this).hasClass("wx")){
+        pay_way="weixin"
+      }else if($(this).hasClass("alipay")){
+        pay_way="alipay"
+      }
+    })
+    
 		//点击阅读条款
 		$('#checkBoxjy').on('click', function () {
 			$(this).toggleClass('hideBf');
@@ -405,18 +432,18 @@
 				return	
 			}
 			canpay=false;
-			
 			var param={};
-			param.pay_way="weixin";
+      param.pay_way=pay_way;
 			param.data_spec=dataType==2?"senior":"standard";
 			param.id={{.T._id}}
 			
-			$.post("/weixin/sacnPay/createOrder",param,function(data){
+			$.post("/dataExport/sacnPay/createOrder",param,function(data){
 				if(data.status=="y"){
 					sessionStorage.setItem("order_spec"+{{.T._id}}, dataType);
 					sessionStorage.setItem("order_email"+{{.T._id}}, $(".email_input").val().replace(/\s*/g,""));
 					sessionStorage.setItem("order_phone"+{{.T._id}}, $(".phone_input").val().replace(/\s*/g,""));
-					window.location.href="/weixin/sacnPay/waitPay?code="+data.code+"&token="+data.token;
+          sessionStorage.setItem("order_payway"+{{.T._id}},pay_way);
+					window.location.href="/dataExport/sacnPay/waitPay?code="+data.code+"&token="+data.token;
 				}else{
 					canpay=true;
 					$.confirm({

+ 1 - 0
src/web/templates/pc/landingpage.html

@@ -308,5 +308,6 @@
     		$("#cnzz_stat_icon_1261815924 a").text("");
     	},1000)
 		</script>
+    {{include "/common/baiducc.html"}}
 	</body>
 </html>

+ 608 - 469
src/web/templates/pc/myOrder.html

@@ -1,159 +1,173 @@
-<!doctype html>
 <html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport"
-          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-    <meta http-equiv="X-UA-Compatible" content="ie=edge">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/font_624651_bjdvktmum68.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/reset_pc.css?v={{Msg "seo" "version"}}">
-    <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/drder_details.css?v={{Msg "seo" "version"}}">
-
-    {{include "/common/pnc.html"}}
-    <link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-    <link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
-    <link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}"/>
-    <script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
-
-    <link href="//cdn.bootcss.com/jquery-confirm/3.1.0/jquery-confirm.min.css" rel="stylesheet">
-    <script src="//cdn.bootcss.com/jquery-confirm/3.1.0/jquery-confirm.min.js"></script>
-
-    <title>我的订单</title>
-    <style type="text/css">
-        a{
-            text-decoration:none !important;
-        }
-        .glyphicon-question-sign:before {
-             content: "";
-         }
-
-        .inner > .err-box{
-            box-sizing: border-box;
-            padding: 67px 0 97px 0;
-            font-size: 16px;
-        }
-        .inner > .err-box > img{
-            width: 211px;
-            height: 169px;
-            display: block;
-            margin: 0 auto;
-        }
-        .inner > .err-box > span{
-            display: block;
-            text-align: center;
-            margin-top: 30px;
-        }
-	.pagination a {
-	    float: left;
-	    padding: 10px 9px;
-	    border: 1px solid #EBEBEB;
-	    margin-left: 0;
-	    text-decoration: none;
-	    /* border-bottom-left-radius: 4px; */
-	    border-radius: 4px;
-	}
-	.pagination span {
-	    float: left;
-	    width: 36px;
-	    height: 36px;
-	    line-height: 36px;
-	    text-align: center;
-	    color: #ffffff;
-	    background-color: #2cb7ca;
-	    margin: 0 10px;
-	    border-radius: 4px;
-	}
-	.disabled {
-	    cursor: not-allowed;
-	    color: #aea79f !important;
-	}
-	.nbprev i{
-		margin-right: 5px;
-	}
-	.nbnext i{
-		margin-left: 5px;
-	}
-	/**/
-	.pagination-box{
-		float: right;
-    	margin-top: 20px;
-        user-select: none;
-    }
-    .pagination-box button {
-        padding: 0 4px;
-        vertical-align: top;
-        display: inline-block;
-        font-size: 14px;
-        height: 36px;
-        line-height: 36px;
-        cursor: pointer;
-        box-sizing: border-box;
-        text-align: center;
-        margin: 0 5px;
-        background-color: #fff;
-        color: #606266;
-        min-width: 36px;
-        border-radius: 4px;
-        border:none;
-        outline: none;    
-		border: 1px solid #EBEBEB;
-    }
-    .pagination-box button.now {
-        background-color: #2cb7ca;
-        color: #fff;
-		border: 1px solid #2cb7ca !important;
-    }
-    .pagination-box button.stop {
-        background-color: #fff;
-        color: #aea79f;
-        cursor: not-allowed;
-    }
-	.pagination-box #prev{
-		    width: 78px;
-    		border: 1px solid #EBEBEB;
-	}
-	.pagination-box #prev i{
-		margin-right: 8px;
-	}
-	.pagination-box #next{
-		    width: 78px;
-    		border: 1px solid #EBEBEB;
-	}
-	.pagination-box #next i{
-		margin-left: 8px;
-	}
-</style>
-</head>
-<body style="background-color: #fff !important;">
-{{include "/common/pchead.html"}}
-<section id="drder" class="w">
-    <div class="tab-bar">
-        <ul class="tab clearfix">
-            <li class="active">全部</li>
-            <li>待付款</li>
-            <li>已完成</li>
-        </ul>
-    </div>
-    <div class="title-bar">
-        <ul class="clearfix">
-            <li>日期</li>
-            <li>关键词</li>
-            <li>数据量</li>
-            <li>数据规格</li>
-            <li>金额</li>
-            <li>状态</li>
-        </ul>
-    </div>
-    <div class="list">
-        <ul class="item clearfix">
-        </ul>
-        <ul class="item clearfix">
-        </ul>
-        <ul class="item clearfix">
-        </ul>
-    </div>
-	
-<!--分页
+	<head>
+		<meta charset="UTF-8">
+		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+		<meta http-equiv="X-UA-Compatible" content="ie=edge">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/font_624651_bjdvktmum68.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/reset_pc.css?v={{Msg "seo" "version"}}">
+		<link rel="stylesheet" href="{{Msg "seo" "cdn"}}/dataExport/css/drder_details.css?v={{Msg "seo" "version"}}">
+
+		{{include "/common/pnc.html"}}
+		<link href="{{Msg "seo" "cdn"}}/css/pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+		<link href="{{Msg "seo" "cdn"}}/css/dev2/reset_pc.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+		<link rel="stylesheet" type="text/css" href="{{Msg "seo" "cdn"}}/pccss/public-nav-1200.css?v={{Msg "seo" "version"}}" />
+		<script type="text/javascript" src="{{Msg "seo" "cdn"}}/js/public-nav.js?v={{Msg "seo" "version"}}"></script>
+
+		<link href="{{Msg "seo" "cdn"}}/dataExport/jquery-confirm/jquery-confirm.min.css?v={{Msg "seo" "version"}}" rel="stylesheet">
+		<script src="{{Msg "seo" "cdn"}}/dataExport/jquery-confirm/jquery-confirm.min.js?v={{Msg "seo" "version"}}"></script>
+
+		<title>我的订单</title>
+		<style type="text/css">
+			a {
+				text-decoration: none !important;
+			}
+
+			.glyphicon-question-sign:before {
+				content: "";
+			}
+
+			.inner>.err-box {
+				box-sizing: border-box;
+				padding: 67px 0 97px 0;
+				font-size: 16px;
+			}
+
+			.inner>.err-box>img {
+				width: 211px;
+				height: 169px;
+				display: block;
+				margin: 0 auto;
+			}
+
+			.inner>.err-box>span {
+				display: block;
+				text-align: center;
+				margin-top: 30px;
+			}
+
+			.pagination a {
+				float: left;
+				padding: 10px 9px;
+				border: 1px solid #EBEBEB;
+				margin-left: 0;
+				text-decoration: none;
+				/* border-bottom-left-radius: 4px; */
+				border-radius: 4px;
+			}
+
+			.pagination span {
+				float: left;
+				width: 36px;
+				height: 36px;
+				line-height: 36px;
+				text-align: center;
+				color: #ffffff;
+				background-color: #2cb7ca;
+				margin: 0 10px;
+				border-radius: 4px;
+			}
+
+			.disabled {
+				cursor: not-allowed;
+				color: #aea79f !important;
+			}
+
+			.nbprev i {
+				margin-right: 5px;
+			}
+
+			.nbnext i {
+				margin-left: 5px;
+			}
+
+			/**/
+			.pagination-box {
+				float: right;
+				margin-top: 20px;
+				user-select: none;
+			}
+
+			.pagination-box button {
+				padding: 0 4px;
+				vertical-align: top;
+				display: inline-block;
+				font-size: 14px;
+				height: 36px;
+				line-height: 36px;
+				cursor: pointer;
+				box-sizing: border-box;
+				text-align: center;
+				margin: 0 5px;
+				background-color: #fff;
+				color: #606266;
+				min-width: 36px;
+				border-radius: 4px;
+				border: none;
+				outline: none;
+				border: 1px solid #EBEBEB;
+			}
+
+			.pagination-box button.now {
+				background-color: #2cb7ca;
+				color: #fff;
+				border: 1px solid #2cb7ca !important;
+			}
+
+			.pagination-box button.stop {
+				background-color: #fff;
+				color: #aea79f;
+				cursor: not-allowed;
+			}
+
+			.pagination-box #prev {
+				width: 78px;
+				border: 1px solid #EBEBEB;
+			}
+
+			.pagination-box #prev i {
+				margin-right: 8px;
+			}
+
+			.pagination-box #next {
+				width: 78px;
+				border: 1px solid #EBEBEB;
+			}
+
+			.pagination-box #next i {
+				margin-left: 8px;
+			}
+		</style>
+	</head>
+	<body style="background-color: #fff !important;">
+		{{include "/common/pchead.html"}}
+		<section id="drder" class="w">
+			<div class="tab-bar">
+				<ul class="tab clearfix">
+					<li class="active">全部</li>
+					<li>待付款</li>
+					<li>已完成</li>
+				</ul>
+			</div>
+			<div class="title-bar">
+				<ul class="clearfix">
+					<li>日期</li>
+					<li>关键词</li>
+					<li>数据量</li>
+					<li>数据规格</li>
+					<li>金额</li>
+					<li>状态</li>
+				</ul>
+			</div>
+			<div class="list">
+				<ul class="item clearfix">
+				</ul>
+				<ul class="item clearfix">
+				</ul>
+				<ul class="item clearfix">
+				</ul>
+			</div>
+
+			<!--分页
 	<div class="pagination clearfix w">
 		<div class="pagination-inner fr" style="margin-right:3px;">
 			<a class="nbprev disabled"  id="previousPage"><i><</i>上一页</a>
@@ -161,325 +175,450 @@
 			<a class="nbnext"  id="nextPage">下一页<i>></i></a>
 		</div>
 	</div>-->
-	<div class="pagination clearfix w">
-		<div class="pagination-box">
-		    
+			<div class="pagination clearfix w">
+				<div class="pagination-box">
+
+				</div>
+			</div>
+		</section>
+		<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+			<div class="nav">
+				<ul class="list">
+					<li><a class="active wx" href="javascript:;">微信支付</a></li>
+					<li><a class="active ali" href="javascript:;">支付宝</a></li>
+				</ul>
+				<div class="pay">
+					<div class="price">
+						¥1208
+					</div>
+					<div class="qr_code">
+						<img src="/dataExport/image/code.png" alt="">
+					</div>
+					<div class="scanning">
+						<img src="/dataExport/image/wx_cm.jpg" alt="">
+						<p class="scan_text" id="paywaytip">使用手机微信扫描二维码支付</p>
+					</div>
+					<div class="footer">
+						<div class="tips" id="timein">二维码过期倒计时:<span class="times">00:00:00 </span> | 如过期,请刷新页面重试</div>
+            <div class="tips" id="timeout" style="display:none">二维码已过期,请刷新页面重试</div>
+					</div>
+				</div>
+				<div class="close">
+					<img src="/dataExport/image/close.png" alt="">
+				</div>
+			</div>
 		</div>
-	</div>
-</section>
-<script type="text/javascript" src="{{Msg "seo" "cdn"}}/dataExport/js/pageination.ie.js?v={{Msg "seo" "version"}}"></script>
-{{include "/common/pcbottom.html"}}
-{{include "/common/baiducc.html"}}
-<script>
-	var totalPage = 1;
-	var pageNum =1;
-	/*
-	* el Dom节点
-	* show 索引数量
-	* total 数据总数
-	* size 每页条数
-	* now 当前索引
-	* click 点击事件
-	* */
-	var pageHtml = "<button name=\"back\" id=\"prev\"><i><</i>上一页</button><button name=\"min\">1</button><button name=\"prev\">...</button><button name=\"next\">...</button><button name=\"max\">100</button><button name=\"cont\" id=\"next\">下一页<i>></i></button>";
-	var show = 5;
-	var total = 20;
-	var size = 2;
-	var clickF = function clickF(number, type) {
-		var $Index = $(".tab-bar .tab li.active").index();
-		var $list = $(".list .item");
-        queryOrder($Index,$list,number);
-	};
-	var pageFlag = true;
-	var p = null; 
-    $(function () {
-        selcetIndexNav(4);
-        haslogin({{.T.logid}});
-
-        $("body").css("line-height","1");
-        $(".logo img").attr("src", "/images/swordfish/sf_01_new.png");
-        $(".public-nav").css("border-bottom", "1px solid #e0e0e0");
-        $("section[id='drder']").css("padding-top","107px");
-
-        /*设置关键词css*/
-        var $gjccss =  $(".list .gjc");
-        $gjccss.each(function (v,i) {
-            var $l = i.children.length;
-            var $h = 66;
-            i.style.height = ($h/$l)+'px';
-            i.style.lineHeight = ($h/$l)+'px';
-        });
-        //获取全部订单
-        queryOrder(0,$(".list .item").eq(0),pageNum);
-
-        $(".tab-bar .tab li").on("click",function () {
-            var $Index = $(this).index();
-            $(this).addClass("active").siblings().removeClass("active");
-            var $list = $(".list .item");
-            $list.eq($Index).show().siblings().hide();
-			pageNum = 1;
-			pageFlag= true;
-			p = null; 
-			$("#previousPage").addClass("disabled");
-			$("#nextPage").removeClass("disabled");
-            queryOrder($Index,$list,pageNum);
-        });
-		/*
-		//点击上下页
-		$("#previousPage").on("click",function () {
-			if($(this).hasClass("disabled")){
-				return;
+		<script type="text/javascript" src="{{Msg "seo" "cdn"}}/dataExport/js/pageination.ie.js?v={{Msg "seo" "version"}}"></script>
+		{{include "/common/pcbottom.html"}}
+		{{include "/common/baiducc.html"}}
+		<script>
+			var totalPage = 1;
+			var pageNum = 1;
+			/*
+			 * el Dom节点
+			 * show 索引数量
+			 * total 数据总数
+			 * size 每页条数
+			 * now 当前索引
+			 * click 点击事件
+			 * */
+			var pageHtml =
+				"<button name=\"back\" id=\"prev\"><i><</i>上一页</button><button name=\"min\">1</button><button name=\"prev\">...</button><button name=\"next\">...</button><button name=\"max\">100</button><button name=\"cont\" id=\"next\">下一页<i>></i></button>";
+			var show = 5;
+			var total = 20;
+			var size = 2;
+			var clickF = function clickF(number, type) {
+				var $Index = $(".tab-bar .tab li.active").index();
+				var $list = $(".list .item");
+        pageNum=number;
+				queryOrder($Index, $list, number);
+			};
+			var pageFlag = true;
+			var p = null;
+			$(function() {
+				selcetIndexNav(4);
+				haslogin({{.T.logid}});
+
+				$("body").css("line-height", "1");
+				$(".logo img").attr("src", "/images/swordfish/sf_01_new.png");
+				$(".public-nav").css("border-bottom", "1px solid #e0e0e0");
+				$("section[id='drder']").css("padding-top", "107px");
+
+				/*设置关键词css*/
+				var $gjccss = $(".list .gjc");
+				$gjccss.each(function(v, i) {
+					var $l = i.children.length;
+					var $h = 66;
+					i.style.height = ($h / $l) + 'px';
+					i.style.lineHeight = ($h / $l) + 'px';
+				});
+				//获取全部订单
+				queryOrder(0, $(".list .item").eq(0), pageNum);
+
+				$(".tab-bar .tab li").on("click", function() {
+					var $Index = $(this).index();
+					$(this).addClass("active").siblings().removeClass("active");
+					var $list = $(".list .item");
+					$list.eq($Index).show().siblings().hide();
+					pageNum = 1;
+					pageFlag = true;
+					p = null;
+					$("#previousPage").addClass("disabled");
+					$("#nextPage").removeClass("disabled");
+					queryOrder($Index, $list, pageNum);
+				});
+			})
+
+			var noDataHtml =
+				"<div class=\"inner\">" +
+				"<div class=\"err-box\">" +
+				"<img src=\"/images/pc_12.png\" alt=\"暂无数据\">" +
+				"<span>暂无数据</span>" +
+				"</div>" +
+				"</div>";
+
+			//ind 0-全部 1-待支付 2-已支付
+			function queryOrder(ind, objD, pageNum) {
+				$.ajax({
+					type: "post",
+					url: "/front/dataExport/queryOrder",
+					data: {
+						"type": ind,
+						"pageNum": pageNum
+					},
+					dataType: 'json',
+					success: function(data) {
+						var temp = "";
+						if (data.list && data.list.length > 0) {
+							if (pageFlag) {
+                if(p){
+                  p.click = null;
+                }
+								$(".pagination-box").html(pageHtml);
+								p = new Page({
+									show: show,
+									total: data.count,
+									size: data.pageSize,
+									click: clickF
+								});
+								p.init();
+								pageFlag = false;
+							}
+							$(".backTop").click();
+							for (var i = 0; i < data.list.length; i++) {
+								var obj = data.list[i];
+								var id = obj.id;
+								var orderCode = obj.order_code;
+								var publishTime = obj.filter_publishtime;
+								var spec = obj.data_spec;
+								var orderStatus = obj.order_status;
+								var orderMoney = obj.order_money;
+								var token = obj.token;
+								var payway = obj.pay_way;
+								var code = obj.code_url;
+								var publishTimeHtml = "";
+								var orderStatusHtml = "";
+								var cla = "";
+								var deleteOrderHtml = "";
+								var keysHtml = "";
+								var prepaytime = obj.prepay_time;
+								if (!publishTime) {
+									publishTime = "全部";
+									publishTimeHtml = "<span style=\"margin-left: 118px;\">" + publishTime + "</span>";
+								} else {
+									publishTimeHtml = "<span>" + publishTime + "</span>";
+								}
+								if (!orderMoney) {
+									orderMoney = 0;
+								}
+								if (!spec) {
+									spec = "";
+								}
+								if (orderStatus == 0) {
+									orderStatusHtml +=
+										"<p>待付款</p>" +
+										"<a class=\"xq\" onclick=\"toDetail('" + orderCode + "');\" target=\"_blank\">查看详情</a>" +
+										"<a class=\"pay\" orderCode='" + orderCode + "' money='" + orderMoney + "' payway='" + payway + "' code='" +
+										code + "' time='" + prepaytime + "' onclick=toPay(this)>去支付</a>";
+									cla = "nopay";
+									deleteOrderHtml = "<a class=\"fr iconfont  icon-shanchu\" title=\"删除订单\" onclick=\"deleteOrder(" + id +
+										",this)\"></a>";
+								} else if (orderStatus == 1) {
+									orderStatusHtml +=
+										"<p class=\"wc\">已完成</p>" +
+										"<a class=\"wcxq\" onclick=\"toDetail('" + orderCode + "');\" target=\"_blank\">查看详情</a>";
+									cla = "pay";
+									deleteOrderHtml = "<a class=\"fr iconfont  icon-shanchu\" title=\"删除订单\" onclick=\"deleteOrder(" + id +
+										",this)\"></a>";
+
+								}
+								if (obj.filter_keys && obj.filter_keys.split(",").length > 0) {
+									var height = 66;
+									var keysArr = obj.filter_keys.split(",");
+									var keysLen = keysArr.length;
+
+									if (keysLen > 2) {
+										keysLen = 2;
+										height = height / 3;
+									} else {
+										height = height / keysLen;
+									}
+									keysHtml += "<li class=\"gjc\" style=\"height: " + height + "px; line-height: " + height + "px;\">";
+									for (var j = 0; j < keysLen; j++) {
+										keysHtml += "<span>" + keysArr[j] + "</span>";
+									}
+									if (keysArr.length > 2) {
+										keysHtml += "<span>......</span>";
+									}
+									keysHtml += "</li>";
+								} else {
+									keysHtml += "<li class=\"gjc\" style=\"height: 66px; line-height: 66px;\">";
+									keysHtml += "</li>";
+								}
+
+								temp += "<li>" +
+									"<div class=\"info " + cla + "\">" +
+									"<span>" + obj.create_time + "</span>" +
+									"<span>订单号:" + orderCode + "</span>" +
+									"" + deleteOrderHtml + "" +
+									"</div>" +
+									"<div class=\"iner\">" +
+									"<ul class=\"clearfix\">" +
+									"<li class=\"clearfix\">" +
+									"<img src=\"/dataExport/image/historical_data.png\" alt=\"\">" +
+									"" + publishTimeHtml + "" +
+									"</li>" +
+									"" + keysHtml + "" +
+									"<li>" + obj.data_count + "条</li>" +
+									"<li>" + spec + "</li>" +
+									"<li>¥" + FormatNum(orderMoney) + "</li>" +
+									"<li>" + orderStatusHtml + "</li>" +
+									"</ul>" +
+									"</div>" +
+									"</li>";
+							}
+						} else {
+							temp = noDataHtml;
+						}
+						objD.eq(ind).html(temp);
+					},
+					error: function(xhr, type) {
+						console.log("query err");
+					}
+				});
 			}
-			var $Index = $(".tab-bar .tab li.active").index();
-			var $list = $(".list .item");
-			pageNum--;
-			if (pageNum<=0){
-				pageNum=1;
+
+			function deleteOrder(id, obj) {
+				$.confirm({
+					title: '订单删除',
+					content: '您确定要删除该订单吗?',
+					buttons: {
+						ok: {
+							text: '确认',
+							btnClass: 'btn-primary-0',
+							action: function() {
+								$.ajax({
+									type: "post",
+									url: "/front/dataExport/deleteOrder",
+									data: {
+										"id": id
+									},
+									dataType: 'json',
+									success: function(data) {
+										if (data && data["success"]) {
+											var self = $(obj).parent().parent();
+											var parent = self.parent();
+											self.remove();
+											$.alert({
+												title: "",
+												content: "删除成功!",
+												buttons: {
+													ok: {
+														text: '确认',
+														btnClass: 'btn-primary-0',
+														action: function() {
+                              var $Index = $(".tab-bar .tab li.active").index();
+                      				var $list = $(".list .item");
+                              pageFlag=true;
+                      				queryOrder($Index, $list, 1);
+														}
+													}
+												}
+											});
+										} else {
+											alertS("删除失败,请联系管理员!");
+										}
+									},
+									error: function(xhr, type) {
+										console.log("delete err");
+									}
+								});
+							}
+						},
+						cancel: {
+							text: '取消',
+							btnClass: 'btn-primary-0'
+						}
+					}
+				});
 			}
-			if(pageNum==1){
-				$("#previousPage").addClass("disabled");
+
+			function alertS(content) {
+				$.alert({
+					title: "",
+					content: content,
+					buttons: {
+						ok: {
+							text: '确认',
+							btnClass: 'btn-primary-0'
+						}
+					}
+				});
 			}
-			$("#nextPage").removeClass("disabled");
-            queryOrder($Index,$list,pageNum);
-        });
-		
-		$("#nextPage").on("click",function () {
-			if($(this).hasClass("disabled")){
-				return;
+
+			function toDetail(orderCode) {
+				window.open("/front/dataExport/toOrderDetail/" + orderCode);
 			}
-			var $Index = $(".tab-bar .tab li.active").index();
-			var $list = $(".list .item");
-			pageNum++;
-			if(pageNum>=totalPage){
-				pageNum=totalPage;
-				$("#nextPage").addClass("disabled");
+
+			function FormatNum(n) {
+				var isF = /^-?\d*\.\d+$/.test(n);
+				var n2 = "";
+				if (isF) {
+					var t = n + "";
+					n2 = t.substr(t.indexOf("."));
+					n = parseInt(n);
+				}
+				if (n >= 1000) {
+					n = Math.floor(n / 1000) + "," + ("0000" + n % 1000).slice(-3);
+				}
+				return n + n2;
 			}
-			$("#previousPage").removeClass("disabled");
-            queryOrder($Index,$list,pageNum);
-        });
-		*/
-
-    })
-
-    var noDataHtml =
-                    "<div class=\"inner\">" +
-                    "<div class=\"err-box\">" +
-                    "<img src=\"/images/pc_12.png\" alt=\"暂无数据\">" +
-                    "<span>暂无数据</span>" +
-                    "</div>" +
-                    "</div>";
-
-    //ind 0-全部 1-待支付 2-已支付
-    function queryOrder(ind,objD,pageNum) {
-        $.ajax({
-            type: "post",
-            url: "/front/dataExport/queryOrder",
-            data: {"type":ind,
-				   "pageNum":pageNum
-			},
-            dataType: 'json',
-            success: function(data){
-                var temp = "";
-                if (data.list && data.list.length>0){
-					if (pageFlag){
-						$(".pagination-box").html(pageHtml);
-					 	p = new Page({
-						  	show: show,
-						  	total: data.count,
-						  	size: data.pageSize,
-						  	click: clickF
-						});
-						p.init();
-						pageFlag= false;
-					}
-					$(".backTop").click();
-                    for (var i=0;i<data.list.length;i++){
-                        var obj = data.list[i];
-                        var id = obj.id;
-                        var orderCode = obj.order_code;
-                        var publishTime = obj.filter_publishtime;
-                        var spec = obj.data_spec;
-                        var orderStatus = obj.order_status;
-                        var orderMoney = obj.order_money;
-                        var token = obj.token;
-                        var publishTimeHtml = "";
-                        var orderStatusHtml =  "";
-                        var cla = "";
-                        var deleteOrderHtml = "";
-                        var keysHtml = "";
-
-                        if(!publishTime){
-                            publishTime = "全部";
-                            publishTimeHtml = "<span style=\"margin-left: 118px;\">" + publishTime + "</span>";
-                        }else{
-                            publishTimeHtml = "<span>" + publishTime + "</span>";
-                        }
-                        if(!orderMoney){
-                            orderMoney = 0;
-                        }
-                        if(!spec){
-                            spec = "";
-                        }
-                        if(orderStatus==0){
-                            orderStatusHtml +=
-                                    "<p>待付款</p>" +
-                                    "<a class=\"xq\" onclick=\"toDetail('" + orderCode + "');\" target=\"_blank\">查看详情</a>" +
-                                    "<a class=\"pay\" onclick=\"toPay('" + orderCode + "','" + token + "');\">去支付</a>";
-                            cla = "nopay";
-                            deleteOrderHtml = "<a class=\"fr iconfont  icon-shanchu\" title=\"删除订单\" onclick=\"deleteOrder(" + id + ",this)\"></a>";
-                        }else if(orderStatus==1){
-                            orderStatusHtml +=
-                                    "<p class=\"wc\">已完成</p>" +
-                                    "<a class=\"wcxq\" onclick=\"toDetail('" + orderCode + "');\" target=\"_blank\">查看详情</a>";
-                            cla = "pay";
-							deleteOrderHtml = "<a class=\"fr iconfont  icon-shanchu\" title=\"删除订单\" onclick=\"deleteOrder(" + id + ",this)\"></a>";
-
-                        }
-                        if(obj.filter_keys && obj.filter_keys.split(",").length>0){
-                            var height = 66;
-                            var keysArr = obj.filter_keys.split(",");
-                            var keysLen = keysArr.length;
-
-                            if (keysLen>2){
-                                keysLen = 2;
-                                height = height/3;
-                            }else{
-                                height = height/keysLen;
-                            }
-                            keysHtml += "<li class=\"gjc\" style=\"height: " + height + "px; line-height: " + height + "px;\">";
-                            for(var j=0;j<keysLen;j++){
-                                keysHtml += "<span>" + keysArr[j] + "</span>";
-                            }
-                            if(keysArr.length>2){
-                                keysHtml += "<span>......</span>";
-                            }
-                            keysHtml += "</li>";
-                        }else{
-                            keysHtml += "<li class=\"gjc\" style=\"height: 66px; line-height: 66px;\">";
-                            keysHtml += "</li>";
-                        }
-
-                        temp += "<li>" +
-                                "<div class=\"info " + cla + "\">" +
-                                "<span>" + obj.create_time + "</span>" +
-                                "<span>订单号:" + orderCode + "</span>" +
-                                "" + deleteOrderHtml + "" +
-                                "</div>" +
-                                "<div class=\"iner\">" +
-                                "<ul class=\"clearfix\">" +
-                                "<li class=\"clearfix\">" +
-                                "<img src=\"/dataExport/image/historical_data.png\" alt=\"\">" +
-                                "" + publishTimeHtml + "" +
-                                "</li>" +
-                                "" + keysHtml + "" +
-                                "<li>" + obj.data_count + "条</li>" +
-                                "<li>" + spec + "</li>" +
-                                "<li>¥" + FormatNum(orderMoney) + "</li>" +
-                                "<li>" + orderStatusHtml + "</li>" +
-                                "</ul>" +
-                                "</div>" +
-                                "</li>";
-                    }
-                }else{
-                      temp = noDataHtml;
-                }
-                objD.eq(ind).html(temp);
-            },
-            error: function(xhr, type){
-                console.log("query err");
-            }
-        });
-    }
-
-    function deleteOrder(id,obj) {
-        $.confirm({
-            title: '订单删除',
-            content: '您确定要删除该订单吗?',
-            buttons: {
-                ok: {
-                    text: '确认',
-                    btnClass: 'btn-primary-0',
-                    action: function() {
-                        $.ajax({
-                            type: "post",
-                            url: "/front/dataExport/deleteOrder",
-                            data: {"id":id},
-                            dataType: 'json',
-                            success: function(data){
-                                if(data && data["success"]){
-                                    var self = $(obj).parent().parent();
-                                    var parent = self.parent();
-                                    self.remove();
-                                    $.alert({
-                                        title:"",
-                                        content:"删除成功!",
-                                        buttons: {
-                                            ok: {
-                                                text: '确认',
-                                                btnClass: 'btn-primary-0',
-                                                action: function() {
-                                                    if(parent.children("li").length==0){
-                                                        parent.html(noDataHtml);
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    });
-                                }else{
-                                    alertS("删除失败,请联系管理员!");
-                                }
-                            },
-                            error: function(xhr, type){
-                                console.log("delete err");
-                            }
-                        });
-                    }
-                },
-                cancel: {
-                    text: '取消',
-                    btnClass: 'btn-primary-0'
-                }
-            }
-        });
-    }
-
-    function alertS(content) {
-        $.alert({
-            title:"",
-            content:content,
-            buttons: {
-                ok: {
-                    text: '确认',
-                    btnClass: 'btn-primary-0'
-                }
-            }
-        });
-    }
-
-    function toDetail(orderCode) {
-        window.open("/front/dataExport/toOrderDetail/"+orderCode);
-    }
-
-    function toPay(orderCode,token) {
-        window.location.href = "/weixin/sacnPay/waitPay?code="+orderCode+"&token="+token;
-    }
-
-    function FormatNum(n){
-        var isF = /^-?\d*\.\d+$/.test(n);
-        var n2 = "";
-        if(isF){
-            var t = n+"";
-            n2 = t.substr(t.indexOf("."));
-            n = parseInt(n);
+
+			function nextPage() {
+				queryOrder()
+			}
+			var listIndex;
+			var orderCode = "";
+			var price = "";
+			var payway = "";
+			var code = "";
+			var prepaytime = "";
+
+			var interval //计时
+			var interval_t = 0;
+
+			//获取支付二维码
+			function toPay(obj) {
+				orderCode = $(obj).attr("orderCode");
+				price = $(obj).attr("money");
+				payway = $(obj).attr("payway");
+				code = $(obj).attr("code");
+				prepaytime = $(obj).attr("time");
+				listIndex = $(obj).parents(".iner").parents("li").index()
+				if (!orderCode || !payway || !code || !price || !prepaytime) {
+					return
+				}
+				var t = new Date(prepaytime).getTime() + 2 * 60 * 60 * 1000 - new Date().getTime()
+				if (t < 0) { //二维码超时
+					$.post("/dataexport/getOrderPayMsg", {
+						payway: payway,
+						orderCode: orderCode,
+						prepaytime: prepaytime
+					}, function(r) {
+						if (r.success) {
+							showCode(payway, price, r.payUrl, r.prepay_time);
+							$(obj).attr("time", r.prepay_time).attr("code", r.payUrl);
+						}
+					})
+				}else{
+  				showCode(payway, price, code, prepaytime)
         }
-        if(n>=1000){
-            n = Math.floor(n/1000)+","+("0000"+n%1000).slice(-3);
+			}
+
+			//支付方式切换
+			$("#myModal .active").on("click", function() {
+				if ($(this).hasClass("underline")) {
+					return
+				}
+				payway = "微信"
+				if ($(this).text() == "支付宝") {
+					payway = "支付宝"
+				}
+				$.post("/dataexport/getOrderPayMsg", {
+					payway: payway,
+					orderCode: orderCode,
+					prepaytime: prepaytime
+				}, function(r) {
+					if (r.success) {
+            $(this).addClass("underline").parent('li').siblings().children().removeClass("underline");
+						showCode(payway, price, r.payUrl, r.prepay_time);
+						$(".item.clearfix>li:eq(" + listIndex + ")").find(".pay").attr("time", r.prepay_time).attr("payway", payway).attr(
+							"code", r.payUrl);
+					}
+				})
+			})
+      var limit=2 * 60 * 60 * 1000;
+			//展示支付码
+			function showCode(payway, price, code, prepaytime) {
+        if(interval){
+            clearInterval(interval);
         }
-        return n+n2;
-    }
-	function nextPage(){
-		queryOrder()
-	}
-</script>
-</body>
-</html>
+        
+				var t = new Date(prepaytime).getTime() + limit - new Date().getTime();
+        t=t>limit?limit:t;
+        
+				$("#myModal .price").text("¥" + price);
+				interval_t = parseInt(t / 1000);
+				if (payway == "微信") {
+					$("#myModal .active:eq(0)").addClass("underline").parent('li').siblings().children().removeClass("underline");
+					$("#myModal .qr_code").html("<img src='data:image/png;base64," + code + "'>");
+					$("#paywaytip").text("使用手机微信扫描二维码支付");
+				} else {
+					$("#myModal .active:eq(1)").addClass("underline").parent('li').siblings().children().removeClass("underline");
+					$("#myModal .qr_code").html("<iframe id='alicode' src='" + code +
+						"' style='width: 300px;height:280px;border:none;padding-left: 34px;padding-top: 11px;'></iframe>");
+					$("#paywaytip").text("使用手机支付宝扫描二维码支付");
+				}
+        $("#timeout").css("display","none");
+        $("#timein").css("display","");
+				interval = setInterval(function() {
+					var h = Math.floor(interval_t / 60 / 60 % 24);
+					var m = Math.floor(interval_t / 60 % 60);
+					var s = Math.floor(interval_t % 60);
+					var text = "";
+					
+					text += PrefixInteger(h, 2) + ":";
+					text += PrefixInteger(m, 2) + ":";
+					text += PrefixInteger(s, 2);
+					$("#myModal .times").text(text);
+					if (interval_t <= 0) {
+            $("#timeout").css("display","");
+            $("#timein").css("display","none");
+						clearInterval(interval);
+					}
+					interval_t--;
+					//查询支付知否完成
+					if (interval_t % 3 == 0) {
+						$.post("/dataExport/pay/isPaySuccess", {
+							code: orderCode
+						}, function(r) {
+							if (r.status == "y") {
+								window.location.href = "/front/dataExport/paysuccess?code=" + orderCode;
+							}
+						})
+					}
+				}, 1000);
+				$("#myModal").modal("show");
+			}
+
+			function PrefixInteger(num, length) {
+				return ("00" + num).substr(-length);
+			}
+
+			$("#myModal .close").on("click", function() {
+				$("#myModal").modal("hide");
+				clearInterval(interval);
+			});
+		</script>
+	</body>
+</html>

+ 1 - 2
src/web/templates/pc/orderDetail.html

@@ -1,4 +1,3 @@
-<!doctype html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
@@ -89,7 +88,7 @@
                 <p>支付时间:{{.T.o.pay_time}}</p>
                 <p>产品类型:{{.T.o.product_type}}导出</p>
         {{if .T.o.transaction_id}}        
-				<p>微信支付单号:{{.T.o.transaction_id}}</p>
+				<p>{{.T.o.pay_way}}支付单号:{{.T.o.transaction_id}}</p>
         {{end}}
             </div>
             <div class="item">

+ 15 - 1
src/web/templates/pc/supsearch.html

@@ -300,7 +300,7 @@ $(function(){
 			$(".tabContainer").show();
 			$(".pagination").show();
 			$(".hasNoData").hide();
-			appendDatas(list,true);
+			appendDatas(list,true,undefined);
 		}
 	}else{
 		if(list!=null&&list.length>0){
@@ -888,6 +888,13 @@ $(function(){
 							
 						</tbody>
 					</table>
+          <div class="shade_table" style="display:none">
+            <div class="more" onclick="toPaydataExport()">
+              查看更多&gt;
+            </div>
+          </div>
+          <div class="shade_table_blank">
+          </div>
 				</div>
 			</div>
 			<!--tab切换内容-->
@@ -920,6 +927,13 @@ $(function(){
 							
 						</tbody>
 					</table>
+           <div class="shade_table" style="display:none">
+            <div class="more" onclick="toPaydataExport()">
+              查看更多&gt;
+            </div>
+          </div>
+          <div class="shade_table_blank">
+          </div>
 				</div>
 			</div>
 			<div class="hasNoData" style="display: none;">

+ 16 - 5
src/web/templates/pc/waitpay.html

@@ -130,16 +130,27 @@
             <p>距离二维码过期还有<span id="surplus_second"></span>,过期后请重新刷新页面获取二维码</p>
             <div class="center clearfix">
                 <div class="fl">
-					<div style="position:relative;width: 300px;height: 300px;">
-						{{if .T.qrcode}}<img src="data:image/png;base64,{{.T.qrcode}}" style="width: 330px;position:relative;left:-15px;top:-15px;">{{end}}
+					<div style="position:relative;width: 300px;height: 300px;user-select: none;">
+            {{if eq .T.pay_way "微信"}}
+						  {{if .T.qrcode}}<img src="data:image/png;base64,{{.T.qrcode}}" style="width: 330px;position:relative;left:-15px;top:-15px;">{{end}}
+            {{end}}
+            {{if eq .T.pay_way "支付宝"}}
+              <iframe src={{.T.qrcode}} style="width: 330px;height:330px;border:none;padding-left: 25px;padding-top: 25px;">
+              </iframe>
+            {{end}}
 						<a style="border-radius:3px;position:absolute;left: 0;top:0px;border: 1px solid #ccc;width: 300px;height:300px;"></a>
 					</div>
                     <div style="text-align:left;font-size: 16px; color: #1d1d1d;padding-left: 30px;margin-top: 30px;">
-						<img src="{{Msg "seo" "cdn"}}/dataExport/image/wx_cm.jpg" style="vertical-align: middle;margin-right:10px;position: relative;top: -2px;"><span>使用手机微信扫描二维码支付</span>
+						<img src="{{Msg "seo" "cdn"}}/dataExport/image/wx_cm.jpg" style="vertical-align: middle;margin-right:10px;position: relative;top: -2px;"><span>使用手机{{.T.pay_way}}扫描二维码支付</span>
 					</div>
                 </div>
                 <div class="fr">
-                    <img src="{{Msg "seo" "cdn"}}/dataExport/image/phone_.png" alt="">
+                {{if eq .T.pay_way "微信"}}
+                    <img src="{{Msg "seo" "cdn"}}/dataExport/image/phone_wx.png" alt="">
+                {{end}}
+                {{if eq .T.pay_way "支付宝"}}
+                     <img src="{{Msg "seo" "cdn"}}/dataExport/image/phone_zfb.png" alt="">
+                {{end}}
                 </div>
             </div>
         </div>
@@ -179,7 +190,7 @@
 		}
 	}
 	setInterval(function(){
-		$.post("/weixin/pay/isPaySuccess",{code:{{.T.ordercode}}},function(r){
+		$.post("/dataExport/pay/isPaySuccess",{code:{{.T.ordercode}}},function(r){
 			if(r.status == "y"){
 				window.location.href = "/front/dataExport/paysuccess?code="+{{.T.ordercode}};
 			}

+ 1 - 0
src/web/templates/weixin/landingpage/index.html

@@ -120,5 +120,6 @@ $("#toload").on("click",function(){
   window.location.href='/front/downloadJyApp?source=mobile_landingpage&page=mobile_landingpage&code={{.T.code}}'
 })
 </script>
+{{include "/common/baiducc.html"}}
 </body>
 </html>

+ 7 - 2
src/web/templates/weixin/search/mainSearch.html

@@ -554,13 +554,18 @@
                 </div>
 				<div class="TableTip" id="TableTip" style="display:none;"><img class="tableclose" src="{{Msg "seo" "cdn"}}/images/table_close.png"><div class="TableText">推荐使用电脑浏览器访问剑鱼标讯网站<br>jianyu360.com查看数据表格,体验更佳。</div></div>
 			</div>
-			<!--<div class="resbm hidden">
+      <div class="shade_table">
+        <div class="more" onclick="SuperSearch.setSessionStorage();location.href='http://res.jianyu360.com/sjdc/index.html'">
+          查看更多
+        </div>
+      </div>
+			<div class="resbm hidden">
 				<div class="rests">如果您对以上结果满意可</div>
 				<div class="resdy" id="zjdy">直接订阅<img src="{{Msg "seo" "cdn"}}/images/wx/jydyyou.png"></div>
 				<div class="dy_close"><img src="{{Msg "seo" "cdn"}}/images/search/dy_close.png"/></div>
 				<div style="clear:both"></div>
 			</div>
-			<div onclick="window.location.href='/supportJy'" style="font-size:15px;background-color: #FFB900;line-height: 50px;z-index: 2000;color: #fff;bottom: 0px;right: 0px;left:0px;position: fixed;"><img src="{{Msg "seo" "cdn"}}/images/search/laba.png" style="width: 23px;margin:0px 10px;">好几天没有推送消息了,真相是......</div>-->
+			<!--<div onclick="window.location.href='/supportJy'" style="font-size:15px;background-color: #FFB900;line-height: 50px;z-index: 2000;color: #fff;bottom: 0px;right: 0px;left:0px;position: fixed;"><img src="{{Msg "seo" "cdn"}}/images/search/laba.png" style="width: 23px;margin:0px 10px;">好几天没有推送消息了,真相是......</div>-->
 		</div>
 	</div>
 	<div id="working" class="hidden" style="text-align: center;position: absolute;top: 50%;left: 50%;margin-left: -81px;margin-top: -50px;"><img style="width:163px;" src="/images/wx/working.gif"><div style="font-size:16px;">剑鱼标讯正在努力工作中···</div></div>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.