Ver Fonte

修改订阅购买 提交

wangkaiyue há 5 anos atrás
pai
commit
d7aff9e6b8

+ 25 - 15
src/jfw/front/vipsubscribe.go

@@ -8,22 +8,23 @@ import (
 
 type Subscribepay struct {
 	*xweb.Action
-	introduce         xweb.Mapper `xweb:"/front/vipsubscribe/introducePage"`         //订阅收费介绍页
-	tailInfo          xweb.Mapper `xweb:"/front/vipsubscribe/tailInfo"`              //vip订阅服务-用户信息录入页面
-	toPurchasePage    xweb.Mapper `xweb:"/front/vipsubscribe/toPurchasePage"`        //订阅收费购买页面
-	toChooseArea      xweb.Mapper `xweb:"/front/vipsubscribe/toChooseArea/(.*)"`     //订阅收费地区筛选
-	toChooseIndustry  xweb.Mapper `xweb:"/front/vipsubscribe/toChooseIndustry/(.*)"` //订阅收费行业筛选
-	toPaySuccessPage  xweb.Mapper `xweb:"/front/vipsubscribe/toPaySuccessPage"`      //订阅支付完成页面
-	toOrderDetailPage xweb.Mapper `xweb:"/front/vipsubscribe/toOrderDetailPage"`     //订阅收费支付订单详情页面
-	toSetKeyWordPage  xweb.Mapper `xweb:"/front/vipsubscribe/toSetKeyWordPage"`      //订阅收费设置关键词
-	toSetPage         xweb.Mapper `xweb:"/front/vipsubscribe/toSetPage"`             //订阅收费设置
-	toSetInfoTypePage xweb.Mapper `xweb:"/front/vipsubscribe/toSetInfoTypePage"`     //订阅收费设置信息类型
-	toSetPushSetPage  xweb.Mapper `xweb:"/front/vipsubscribe/toSetPushSetPage"`      //订阅收费推送设置
-	toSetOtherKwsPage xweb.Mapper `xweb:"/front/vipsubscribe/toSet(.*)Page"`         //订阅收费附加词和排除词设置
+	introduce         xweb.Mapper `xweb:"/front/vipsubscribe/introducePage"`       //订阅收费介绍页
+	trialInfo         xweb.Mapper `xweb:"/front/vipsubscribe/trialInfo"`           //vip订阅服务-用户信息录入页面
+	toPurchasePage    xweb.Mapper `xweb:"/front/vipsubscribe/toPurchasePage/(.*)"` //订阅收费购买页面(试用用户)
+	toChooseArea      xweb.Mapper `xweb:"/front/vipsubscribe/toChooseArea"`        //订阅收费地区筛选
+	toChooseIndustry  xweb.Mapper `xweb:"/front/vipsubscribe/toChooseIndustry"`    //订阅收费行业筛选
+	toPaySuccessPage  xweb.Mapper `xweb:"/front/vipsubscribe/toPaySuccessPage"`    //订阅支付完成页面
+	toOrderDetailPage xweb.Mapper `xweb:"/front/vipsubscribe/toOrderDetailPage"`   //订阅收费支付订单详情页面
+	toSetKeyWordPage  xweb.Mapper `xweb:"/front/vipsubscribe/toSetKeyWordPage"`    //订阅收费设置关键词
+	toSetPage         xweb.Mapper `xweb:"/front/vipsubscribe/toSetPage"`           //订阅收费设置
+	toSetInfoTypePage xweb.Mapper `xweb:"/front/vipsubscribe/toSetInfoTypePage"`   //订阅收费设置信息类型
+	toSetPushSetPage  xweb.Mapper `xweb:"/front/vipsubscribe/toSetPushSetPage"`    //订阅收费推送设置
+	toSetOtherKwsPage xweb.Mapper `xweb:"/front/vipsubscribe/toSet(.*)Page"`       //订阅收费附加词和排除词设置
 
 	//修改
 	toEditSubPage     xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubPage"`     //订阅收费修改页面
 	toEditSubProvPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubProvPage"` //订阅收费修改省份
+	toEditSubAllArea  xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubAllArea"`  //订阅收费全国修改
 	toEditSubCityPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubCityPage"` //订阅收费修改城市
 	toEditSubInduPage xweb.Mapper `xweb:"/front/vipsubscribe/toEditSubInduPage"` //订阅收费修改行业
 	submitEditSub     xweb.Mapper `xweb:"/front/vipsubscribe/submitEditSub"`     //提交订阅收费
@@ -67,13 +68,17 @@ func (s *Subscribepay) Introduce() {
 }
 
 //试用完善信息
-func (s *Subscribepay) TailInfo() {
+func (s *Subscribepay) TrialInfo() {
 	s.Render("/weixin/vipsubscribe/trial_info.html", &s.T)
 }
 
 //订阅收费购买页面
-func (s *Subscribepay) ToPurchasePage() {
-	s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
+func (s *Subscribepay) ToPurchasePage(flag string) {
+	if flag == "trial" {
+		s.T["isTrial"] = true
+	} else {
+		s.T["signature"] = wx.SignJSSDK(s.Site() + s.Url()) //微信支付准备参数
+	}
 	s.Render("/weixin/vipsubscribe/vip_purchase.html")
 }
 
@@ -118,6 +123,11 @@ func (s *Subscribepay) ToEditSubCityPage() {
 	s.Render("/weixin/vipsubscribe/edit_subscribe_city.html")
 }
 
+//购买全国修改
+func (s *Subscribepay) ToEditSubAllArea() {
+	s.Render("/weixin/vipsubscribe/edit_subscribe_allArea.html")
+}
+
 //修改订阅行业
 func (s *Subscribepay) ToEditSubInduPage() {
 	s.Render("/weixin/vipsubscribe/edit_subscribe_industry.html")

+ 2 - 0
src/jfw/modules/subscribepay/src/a/init.go

@@ -25,4 +25,6 @@ func init() {
 	xweb.AddAction(&service.AfterPay{})
 	xweb.AddAction(&service.Trial{})
 	xweb.AddAction(&service.Order{})
+	xweb.AddAction(&service.EditSub{})
+
 }

+ 30 - 0
src/jfw/modules/subscribepay/src/main_test.go

@@ -0,0 +1,30 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"testing"
+	"time"
+	"util"
+
+	"gopkg.in/mgo.v2/bson"
+)
+
+func Test_asd(t *testing.T) {
+	cc := time.Now().Month()
+	fmt.Println(cc)
+}
+func Test_update(t *testing.T) {
+	if !util.MQFW.UpdateById("user", "5db11594f4e498161c85fcf2", bson.M{"$set": bson.M{"o_vipjy.i_trial": 1}}) {
+		log.Println("更新使用状态出错")
+	}
+}
+
+func Test_CanTrial(t *testing.T) {
+	f := util.CanTrial("5db11594f4e498161c85fcf2")
+	fmt.Println(f)
+}
+
+func Test_SetTrialed(t *testing.T) {
+	util.SetTrialed("5db11594f4e498161c85fcf2")
+}

+ 117 - 0
src/jfw/modules/subscribepay/src/service/editSub.go

@@ -0,0 +1,117 @@
+package service
+
+import (
+	"encoding/json"
+	"errors"
+	"log"
+	qutil "qfw/util"
+	"qfw/util/redis"
+	"time"
+	"util"
+
+	"gopkg.in/mgo.v2/bson"
+
+	"github.com/go-xweb/xweb"
+)
+
+//订阅修改相关接口
+type EditSub struct {
+	*xweb.Action
+	getSubBuyMsg xweb.Mapper `xweb:"/editSub/getSubBuyMsg"` //获取购买订阅相关信息
+	saveSubEdit  xweb.Mapper `xweb:"/editSub/submit"`       //保存修改
+}
+
+type editSubResult struct {
+	Success bool  //是否成功
+	Err     error //错误
+	Data    map[string]interface{}
+}
+
+func (o *editSubResult) Format() *map[string]interface{} {
+	errStr := ""
+	if o.Err != nil {
+		errStr = o.Err.Error()
+	}
+	return &map[string]interface{}{
+		"success": o.Success,
+		"errMsg":  errStr,
+		"data":    o.Data,
+	}
+}
+
+//获取购买订阅相关信息
+func (this *EditSub) GetSubBuyMsg() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	r := func() *editSubResult {
+		mData, ok := util.MQFW.FindById("user", userId, `{"o_vipjy":1}`)
+		if !ok || len(*mData) == 0 || mData == nil {
+			return &editSubResult{false, errors.New("获取信息失败"), nil}
+		}
+		o_vipjy := qutil.ObjToMap((*mData)["o_vipjy"])
+		//地区 城市 数量 修改次数
+		editNum := qutil.IntAll(redis.Get("other", userId+"_SubEdit_"+time.Now().Month().String()))
+		return &editSubResult{true, nil, map[string]interface{}{
+			"area":     (*o_vipjy)["o_area"],
+			"industry": (*o_vipjy)["a_buyerclass"],
+			"buyset":   (*o_vipjy)["a_buyset"],
+			"editNum":  editNum,
+		}}
+	}()
+	if r.Err != nil {
+		log.Printf("%s GetSubBuyMsg err:%v\n", userId, r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}
+
+func (this *EditSub) SaveSubEdit() {
+	doType := qutil.ObjToString(this.GetString("type")) //area 或 industry
+	doValue := qutil.ObjToString(this.GetString("value"))
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	r := func() *editSubResult {
+		//查看是否修改次数已达上限
+		editNum := qutil.IntAll(redis.Get("other", userId+"_SubEdit_"+time.Now().Month().String()))
+		if editNum >= 3 {
+			return &editSubResult{false, errors.New("修改次数已达上限"), nil}
+		}
+		//获取购买数量
+		buyset := util.GetBuySet(userId)
+		switch doType {
+		case "area":
+			areaNew := map[string]interface{}{}
+			log.Println(doValue)
+			err := json.Unmarshal([]byte(doValue), &areaNew)
+			log.Println(err)
+			if err != nil {
+				return &editSubResult{false, errors.New("数据格式错误"), nil}
+			}
+			count := util.GetBuyAreaCount(areaNew)
+			if (count[0] > buyset[0] || count[1] > buyset[1]) && buyset[0] != -1 {
+				return &editSubResult{false, errors.New("非法操作"), nil}
+			}
+			if ok := util.MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.o_area": areaNew}}); !ok {
+				return &editSubResult{false, errors.New("操作异常"), nil}
+			}
+			redis.Incr("other", userId+"_SubEdit_"+time.Now().Month().String())
+			return &editSubResult{true, nil, nil}
+		case "industry":
+			industryNew := []string{}
+			err := json.Unmarshal([]byte(doValue), &industryNew)
+			if err != nil {
+				return &editSubResult{false, errors.New("数据格式错误"), nil}
+			}
+			if len(industryNew) > buyset[2] && buyset[2] != -1 {
+				return &editSubResult{false, errors.New("非法操作"), nil}
+			}
+			if ok := util.MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.a_buyerclass": industryNew}}); !ok {
+				return &editSubResult{false, errors.New("操作异常"), nil}
+			}
+			redis.Incr("other", userId+"_SubEdit_"+time.Now().Month().String())
+			return &editSubResult{true, nil, nil}
+		}
+		return &editSubResult{false, errors.New("未知操作"), nil}
+	}()
+	if r.Err != nil {
+		log.Printf("%s SaveSubEdit err:%v\n", userId, r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}

+ 86 - 2
src/jfw/modules/subscribepay/src/service/order.go

@@ -1,9 +1,13 @@
 package service
 
 import (
+	"encoding/json"
 	"errors"
+
 	"log"
+
 	"strings"
+	"time"
 	"util"
 
 	qutil "qfw/util"
@@ -14,9 +18,9 @@ import (
 //订单结构
 type Order struct {
 	*xweb.Action
-	buyStatus         xweb.Mapper `xweb:"/order/buyStatus"`         //获取用户已购买
 	getOrderPayMsg    xweb.Mapper `xweb:"/order/getOrderPayMsg"`    //订单数据展示(支付成功页面)
 	getOrderPayAllMsg xweb.Mapper `xweb:"/order/getOrderPayAllMsg"` //订单数据展示(订单详情页面)
+	trialPay          xweb.Mapper `xweb:"/order/trialPay"`          //试用用户创建订单
 }
 
 type orderResult struct {
@@ -106,9 +110,13 @@ func getPayTransactionId(payWay, tradeNo string) (transaction_id string) {
 	if payWay == "" || tradeNo == "" {
 		return
 	}
-	table := "ali_pay"
+	table := ""
 	if strings.HasPrefix(payWay, "wx") {
 		table = "weixin_pay"
+	} else if strings.HasPrefix(payWay, "ali") {
+		table = "ali_pay"
+	} else {
+		return
 	}
 	query := map[string]interface{}{
 		"out_trade_no": tradeNo,
@@ -119,3 +127,79 @@ func getPayTransactionId(payWay, tradeNo string) (transaction_id string) {
 	}
 	return
 }
+
+//试用用户 创建订单
+func (this *Order) TrialPay() {
+	area := qutil.ObjToMap(this.GetString("area"))
+	industry := strings.Split(this.GetString("industry"), ",")
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	openId := qutil.ObjToString(this.GetSession("s_m_openid"))
+	r := func() *orderResult {
+		date_count, date_unit := 7, 3
+		now := time.Now()
+		//数据校验
+		if len(industry) == 1 { //去掉[""]
+			industry = []string{}
+		}
+		log.Println(area, industry)
+		//插入订单表
+		mog_id := util.MQFW.Save("subvip_select", map[string]interface{}{
+			"o_area":       area,     //地区(对象)
+			"a_industry":   industry, //行业(数组)
+			"s_userid":     userId,
+			"s_openid":     openId,
+			"i_cyclecount": date_count, //时长
+			"i_cycleunit":  date_unit,  //单位
+			"i_comeintime": now.Unix(),
+		})
+		if mog_id == "" {
+			return &orderResult{false, errors.New("创建订单出错"), nil}
+		}
+		if !util.CanTrial(userId) {
+			return &orderResult{false, errors.New("无试用权限"), nil}
+		}
+		//计算价格
+		totalfee := 0
+		ordercode := util.GetOrderCode(userId)
+		//存入订单表
+		filter := map[string]interface{}{
+			"_id":        mog_id,
+			"area":       area,
+			"industry":   industry,
+			"cyclecount": date_count, //时长
+			"cycleunit":  date_unit,  //单位
+		}
+		filterStr, _ := json.Marshal(filter)
+
+		orderid := util.Mysql.Insert("dataexport_order", map[string]interface{}{
+			"order_money":    totalfee,
+			"order_status":   1,
+			"user_nickname":  qutil.ObjToString(this.GetSession("s_nickname")),
+			"user_openid":    openId,
+			"out_trade_no":   "tradeno",
+			"order_code":     ordercode,
+			"product_type":   "VIP订阅",
+			"create_time":    qutil.FormatDate(&now, qutil.Date_Full_Layout),
+			"prepay_time":    qutil.FormatDate(&now, qutil.Date_Full_Layout),
+			"original_price": totalfee,
+			"filter_id":      mog_id,
+			"pay_way":        "trial", //试用
+			"user_id":        userId,
+			"filter":         string(filterStr), //筛选
+			"pay_time":       qutil.FormatDate(&now, qutil.Date_Full_Layout),
+		})
+		if orderid == -1 {
+			return &orderResult{false, errors.New("数据保存异常"), nil}
+		}
+		if !util.StartTrial(userId, area, industry) { //设置开始试用
+			return &orderResult{false, errors.New("开通试用异常"), nil}
+		}
+		return &orderResult{true, nil, map[string]interface{}{
+			"code": ordercode,
+		}}
+	}()
+	if r.Err != nil {
+		log.Printf("%s CreateOrder err:%v\n", userId, r.Err.Error())
+	}
+	this.ServeJson(r.Format())
+}

+ 5 - 1
src/jfw/modules/subscribepay/src/service/trial.go

@@ -129,8 +129,9 @@ func (t *Trial) SubmitApply() {
 			return false, "手机号已使用"
 		}
 		//储存数据
+		userId := qutil.ObjToString(t.GetSession("userId"))
 		flag := util.MQFW.Save("user_msg", map[string]interface{}{
-			"s_userId":  t.GetSession("userId"),
+			"s_userId":  userId,
 			"s_name":    name,
 			"s_phone":   tel,
 			"s_openid":  t.GetSession("s_m_openid"),
@@ -144,6 +145,9 @@ func (t *Trial) SubmitApply() {
 		}
 		go func() {
 			//更新user表可试用
+			if !util.MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.i_trial": 1}}) {
+				log.Println("更新使用状态出错", userId)
+			}
 		}()
 		clearTrialSession(t.Session())
 		return true, ""

+ 22 - 0
src/jfw/modules/subscribepay/src/util/public.go

@@ -1,8 +1,12 @@
 package util
 
 import (
+	"fmt"
+
+	qutil "qfw/util"
 	"qfw/util/sms"
 	"strings"
+	"time"
 )
 
 //根据模板发送短信,模板是运营商设定的。
@@ -15,3 +19,21 @@ func SendSMS(tplcode /*模板代码*/, mobile /*手机号码*/ string, param map
 	text := strings.Join(tmp, "&")
 	sms.SendSms(mobile, tplcode, text)
 }
+
+//创建订单号
+func GetOrderCode(id string) string {
+	return fmt.Sprintf("%s%s", time.Now().Format("150405"), qutil.GetRandom(6))
+}
+
+//查询是否有试用权限
+func CanTrial(userId string) bool {
+	m, ok := MQFW.FindById("user", userId, `{"o_vipjy":1}`)
+	if m == nil || len(*m) == 0 || !ok {
+		return false
+	}
+	obj := qutil.ObjToMap((*m)["o_vipjy"])
+	if qutil.IntAll((*obj)["i_trial"]) != 1 {
+		return false
+	}
+	return true
+}

+ 69 - 0
src/jfw/modules/subscribepay/src/util/subutil.go

@@ -0,0 +1,69 @@
+package util
+
+import (
+	"log"
+
+	qutil "qfw/util"
+	"time"
+
+	"gopkg.in/mgo.v2/bson"
+)
+
+//设置开始试用
+func StartTrial(userId string, area *map[string]interface{}, industry []string) bool {
+	//计算服务时间
+	startTime := time.Now()
+	endTime := startTime.AddDate(0, 0, 7)
+	if !MQFW.UpdateById("user", userId,
+		bson.M{"$set": bson.M{
+			"o_vipjy.i_trial":      -1,                //已激活试用
+			"o_vipjy.o_area":       area,              //试用设置地区
+			"o_vipjy.a_buyerclass": industry,          //试用设置行业
+			"o_vipjy.a_buyset":     []int{-1, -1, -1}, //购买内容 城市、省份、行业数量
+			"l_vip_starttime":      startTime.Unix(),  //开始时间
+			"l_vip_endtime":        endTime.Unix(),    //结束时间
+			"i_vip_status":         1,                 //1试用 2正式
+		}}) {
+		return false
+	}
+	return true
+}
+
+//设置已试用
+func SetTrialed(userId string) {
+	if !MQFW.UpdateById("user", userId, bson.M{"$set": bson.M{"o_vipjy.i_trial": -1}}) {
+		log.Println(userId, "更新使用状态出错")
+	}
+}
+
+//获取省份,城市,行业购买数量;-1为全部
+//[省份,城市,行业]
+func GetBuySet(userId string) (result [3]int) {
+	mData, ok := MQFW.FindById("user", userId, `{"o_vipjy":1}`)
+	if !ok || len(*mData) == 0 || mData == nil {
+		return
+	}
+	tmp, _ := (*qutil.ObjToMap((*mData)["o_vipjy"]))["a_buyset"].([]interface{})
+	for k, v := range tmp {
+		result[k] = qutil.IntAll(v)
+	}
+	return
+}
+
+//根据区域获取城市和省份数量
+func GetBuyAreaCount(area map[string]interface{}) (result [2]int) {
+	p := []interface{}{} //省份
+	c := []interface{}{} //城市
+	for k, v := range area {
+		tmp := v.([]interface{})
+		if len(tmp) == 0 { //省份
+			result[0]++
+			p = append(p, k)
+		} else { //城市
+			result[1] += len(tmp)
+			c = append(c, tmp...)
+		}
+	}
+	log.Println(p, c)
+	return
+}

+ 1 - 1
src/jfw/pay/vipSubscribePay.go

@@ -113,7 +113,7 @@ func (this *Order) CreateOrder() {
 			"code_url":       jsPayParam,
 			"out_trade_no":   tradeno,
 			"order_code":     ordercode,
-			"product_type":   "vip订阅",
+			"product_type":   "VIP订阅",
 			"create_time":    qutil.FormatDate(&now, qutil.Date_Full_Layout),
 			"prepay_time":    qutil.FormatDate(&now, qutil.Date_Full_Layout),
 			"original_price": totalfee,

+ 48 - 11
src/web/staticres/vipsubscribe/js/common.js

@@ -4,18 +4,25 @@ $(function() {
 });
 
 //请求同意调用
-function $DoPost(url,param,callback){
-	$.post(url+"?t="+new Date().getTime(),param,function(r){
-		if(r.error||r.errMsg){
-			var errTip = r.error||r.errMsg;
-			weui.toast(errTip,{
-	          duration: 2000,
-	          className: 'custom-toast',
-	        });
-		}else{
-			callback(r)
+function $DoPost(url,param={},callback,async=true){
+	$.ajax({
+		url: url+"?t="+new Date().getTime(),
+		type: "POST",
+		data: param,
+		async: async,
+		dataType: "json",
+		success: function(r){
+			if(r.error||r.errMsg){
+				var errTip = r.error||r.errMsg;
+				weui.toast(errTip,{
+		          duration: 2000,
+		          className: 'custom-toast',
+		        });
+			}else{
+				callback(r)
+			}
 		}
-    })
+	})
 }
 
 //获取url参数
@@ -28,4 +35,34 @@ function getParam(name) {
   reg = null;
   r = null;
   return context == null || context == "" || context == "undefined" ? "" : context;
+}
+
+
+//省份 城市 分类
+function getAreaClassArr(area){
+	let cityArr=[];//城市
+    let provinceArr=[];//省份
+    for(var i in area) {
+      let citys=area[i]
+      if(citys.length>0){
+        cityArr = cityArr.concat(citys);
+      }else{
+    	if(i=="全国"){
+			continue
+		}
+        provinceArr.push(i)
+      }
+    }
+    return [provinceArr,cityArr]
+}
+
+//选择行业是否发生改变
+function arrIsChange(arr1,arr2){
+	
+	return false
+}
+
+//选择地区是否发生改变
+function objIsChange(obj1,obj2){
+	
 }

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

@@ -322,7 +322,7 @@
                 }
                 if (selectedArr.length === buttons.length - 1) {
                     // 除全部行业外所有按钮都被选中了
-                    $('#all button').trigger('click')
+                    $('#all button').trigger('click');
                 }
             }
                       

+ 121 - 16
src/web/templates/weixin/vipsubscribe/edit_subscribe.html

@@ -18,28 +18,35 @@
        <div class="edit_content">
            <!-- 购买的全国则不显示可修改区域 -->
            <div class="title">可修改区域</div>
-           <a href="/front/vipsubscribe/toEditSubProvPage" class="edit_item">
+           <a data_href="/front/vipsubscribe/toEditSubAllArea" class="edit_item allArea" style="display:none">
                <div class="item_top">
-                   <span>2个省</span>
+                   <span>全国</span>
                    <i class="iconfont icon-arrow"></i>
                </div>
-               <div class="item_bottom">河南省、安徽省</div>
+               <div class="item_bottom"></div>
            </a>
-           <a href="/front/vipsubscribe/toEditSubCityPage" class="edit_item">
+           <a data_href="/front/vipsubscribe/toEditSubProvPage" class="edit_item province" style="display:none">
+               <div class="item_top">
+                   <span></span>
+                   <i class="iconfont icon-arrow"></i>
+               </div>
+               <div class="item_bottom"></div>
+           </a>
+           <a data_href="/front/vipsubscribe/toEditSubCityPage" class="edit_item city" style="display:none">
                 <div class="item_top">
-                    <span>11个市</span>
+                    <span></span>
                     <i class="iconfont icon-arrow"></i>
                 </div>
-                <div class="item_bottom">郑州市、洛阳市、淮南市、洛阳市、淮南市、洛阳市、淮南市、洛阳市、淮南市、洛阳市、淮南市</div>
+                <div class="item_bottom"></div>
            </a>
            <!-- 购买的全行业则不显示可修改行业 -->
            <div class="title">可修改行业</div>
-           <a href="/front/vipsubscribe/toEditSubInduPage" class="edit_item">
+           <a data_href="/front/vipsubscribe/toEditSubInduPage" class="edit_item industry">
                 <div class="item_top">
-                    <span>2个行业</span>
+                    <span></span>
                     <i class="iconfont icon-arrow"></i>
                 </div>
-                <div class="item_bottom">保监、城管</div>
+                <div class="item_bottom"></div>
            </a>
        </div>
        <div class="edit_tips">
@@ -49,15 +56,113 @@
     <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
-        $(function(){
-            // 如果要用toast提示 语法为
-            // weui.toast('已超过修改次数,不可再做修改',{
-            //     duration: 2000,
-            //     className: 'custom-toast',
-            // })
-        })
+        var EditSub={
+          reqData:{},
+          area:{},
+          industry:[],
+          init:function(){
+            this.getData();
+            this.showData();//初始化页面展示
+            this.initClick();//初始化点击事件
+          },
+          getData:function(){
+            //加载数据
+            //if(sessionStorage.getItem("EditVipSub")){
+            // this.reqData=JSON.parse(sessionStorage.getItem("EditVipSub"));
+            //}else{
+            $DoPost("/subscribepay/editSub/getSubBuyMsg",{},function(r){
+              if(r.success){
+                EditSub.reqData=r.data;
+              }
+            },false)
+            if(this.reqData.industry.length==0&&this.reqData.buyset[2]==-1){
+              this.reqData.industry=["全部行业"];
+            }
+            if($.isEmptyObject(this.reqData.area)&&this.reqData.buyset[0]==-1){
+              this.reqData.area={"全国":[]}
+            }
+            //sessionStorage.setItem("EditVipSub",JSON.stringify(this.reqData));
+            //}
+            console.log(EditSub.reqData);
+            
+            //if(this.reqData.industrySelect){
+            //  this.industry=this.reqData.industrySelect;
+            //}else{
+            this.industry=this.reqData.industry;
+            //}
+            /*
+            if($.isEmptyObject(this.reqData.areaSelect)){
+              this.area=this.reqData.areaSelect;
+            }else{
+              this.area=this.reqData.area;
+            }*/
+          },
+          showData:function(){
+            //判断是否可编辑
+            if(this.reqData.buyset[0]==0) $(".province").css("display","none");
+            if(this.reqData.buyset[1]==0) $(".city").css("display","none");
+            
+            //展示已选择省份 和 城市
+            var area = this.reqData.area;
+            /*if(!$.isEmptyObject(this.reqData.areaSelect)){
+              area= this.reqData.areaSelect;
+            }*/
+            
+            var num=getAreaClassArr(area);
+            
+            if(this.reqData.buyset[0]==-1&&this.reqData.buyset[1]==-1){//购买全国
+              var tmpArr = num[0].concat(num[1]);
+              console.log(tmpArr);
+              $(".edit_item.allArea .item_bottom").text(tmpArr.join("、"));
+              $(".edit_item.allArea").css("display","");
+            }else{//购买非全国
+              //修改省
+              $(".edit_item.province span").text(this.reqData.buyset[0]+"个省");
+              $(".edit_item.province .item_bottom").text(num[0].join("、"));
+              $(".edit_item.province").css("display","");
+              //修改市
+              $(".edit_item.city span").text(this.reqData.buyset[1]+"个市");
+              $(".edit_item.city .item_bottom").text(num[1].join("、"));
+              $(".edit_item.city").css("display","");
+            }
+
+            //行业展示
+                  
+            if(this.reqData.buyset[2]==-1){
+              $(".edit_item.industry span").text("全部行业");
+              if(this.industry[0]!="全部行业"){
+                $(".edit_item.industry .item_bottom").text(this.industry.join("、"));
+              }
+            }else{
+              $(".edit_item.industry span").text(this.reqData.buyset[2]+"个行业");
+              $(".edit_item.industry .item_bottom").text(this.industry.join("、"));
+            }
+            
+            //可修改次数
+            $(".edit_count em").text(this.reqData.editNum);
+          },
+          initClick:function(){
+            $(".edit_item").on("click",function(){
+              if(EditSub.reqData.editNum>=3){
+                EditSub.showTip("已超过修改次数,不可再做修改");
+                return
+              }
+              console.log($(this).attr("data_href"));
+              window.location.href=$(this).attr("data_href");
+            });
+            //提交
+          },
+          showTip:function(msg){
+            weui.toast(msg,{
+              duration: 2000,
+              className: 'custom-toast',
+            });
+          }
+        }
         
+        EditSub.init();  
     </script>
 </body>
 </html>

+ 668 - 0
src/web/templates/weixin/vipsubscribe/edit_subscribe_allArea.html

@@ -0,0 +1,668 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>区域修改</title>
+    <meta name="viewport"
+        content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <script src="/vipsubscribe/js/rem.js?v={{Msg "seo" "version"}}"></script>
+    <link rel="stylesheet" href="/vipsubscribe/css/weui.min.css?v={{Msg "seo" "version"}}">
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/css/base.css?v={{Msg "seo" "version"}}" />
+    <link rel="stylesheet" type="text/css" href="/vipsubscribe/iconfont/iconfont.css?v={{Msg "seo" "version"}}" />
+    <!-- <link rel="stylesheet" href="/vipsubscribe/css/public.css?v={{Msg "seo" "version"}}"> -->
+    <link rel="stylesheet" href="/vipsubscribe/css/choose_area.css?v={{Msg "seo" "version"}}">
+    <style>
+        .checkbox[disabled]{background: none no-repeat center center #eee!important;}
+        .city[disabled]{background: #F4F4F9;color: #1D1D1D;}
+    </style>
+</head>
+
+<body>
+    <div id="choose_area">
+        <!--<p class="optional_count"> 可选择市数量:<em class="count"></em> / <span class="total">11</span></p>-->
+        <div class="result">
+            <!-- 首次购买 显示"已选择" -----  升级订阅显示"已新增" -->
+            <p>已选择:<span class="result_name"></span></p>
+        </div>
+        <div class="form">
+            <div class="select-area-box" style="padding-bottom: 0;">
+                <ul class="area-list">
+                    <li>
+                        <div class="tab whole">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox other">全国
+                            </div>
+                        </div>
+                    </li>
+                    <li class="index" id="A">A</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">安徽
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">澳门
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="B">B</li>
+                     <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">北京
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="C">C</li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">重庆
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="F">F</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">福建
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="G">G</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">广东
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">广西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">贵州
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">甘肃
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="H">H</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">河北
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">湖北
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">黑龙江
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">海南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">河南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">湖南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <p class="index" id="J">J</p>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">吉林
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">江苏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">江西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="L">L</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">辽宁
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="N">N</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">内蒙古
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">宁夏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="Q">Q</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">青海
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="S">S</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">山西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">陕西
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">上海
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">山东
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">四川
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="T">T</li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">天津
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">台湾
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="X">X</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">西藏
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">新疆
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <!-- <li>
+                        <div class="tab municipality">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">香港
+                            </div>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li> -->
+                    <li class="index" id="Y">Y</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">云南
+                            </div>
+                            <span><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                    <li class="index" id="Z">Z</li>
+                    <li>
+                        <div class="tab">
+                            <div class="province">
+                                <input type="checkbox" class="checkbox">浙江
+                            </div>
+                            <span class="down-icon"><i class="icon iconfont">&#xe600;</i></span>
+                        </div>
+                        <div class="tab_content clearfix"></div>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        <div class="tips_btn">
+            <div class="btns">
+                <button class="reset-btn" id="cancel">取消</button>
+                <button disabled class="save-btn" id="enter">确认修改</button>
+            </div>
+        </div>
+        <div class="slide">
+            <a href="javascript:;">#</a>
+            <a href="javascript:;">A</a>
+            <a href="javascript:;">B</a>
+            <a href="javascript:;">C</a>
+            <a href="javascript:;">F</a>
+            <a href="javascript:;">G</a>
+            <a href="javascript:;">H</a>
+            <a href="javascript:;">J</a>
+            <a href="javascript:;">L</a>
+            <a href="javascript:;">N</a>
+            <a href="javascript:;">Q</a>
+            <a href="javascript:;">S</a>
+            <a href="javascript:;">T</a>
+            <a href="javascript:;">X</a>
+            <a href="javascript:;">Y</a>
+            <a href="javascript:;">Z</a>
+        </div>
+    </div>
+    <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/mapJSON.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <script>
+        var EditArea={
+          reqData:{},
+          selectObj:{},
+          init:function(){
+            this.getData();
+            this.showData();//初始化页面展示
+            this.initClick();//初始化点击事件
+          },
+          getData:function(){
+            //加载数据
+            $DoPost("/subscribepay/editSub/getSubBuyMsg",{},function(r){
+              if(r.success){
+                EditArea.reqData=r.data;
+              }
+            },false)
+            if($.isEmptyObject(EditArea.reqData.area)&&this.reqData.buyset[0]==-1){
+              EditArea.reqData.area={"全国":[]};
+            }
+            console.log(EditArea.reqData);
+          },
+          showData:function(){
+            var area= this.reqData.area;
+            if(!$.isEmptyObject(this.reqData.areaSelect)){
+              area=this.reqData.areaSelect;
+            }else{
+              this.reqData.areaSelect= {...this.reqData.area};
+            }
+            
+            // 渲染城市
+            $(".select-area-box ul li:not('.index')").each(function () {
+                var text = $(this).find(".province").text().trim()
+                var data = null
+                chinaMapJSON.some(function (v) {
+                    data = v
+                    return v.name.indexOf(text) !== -1
+                })
+                var box = $(this).find('div.tab_content');
+                var html = EditArea.createMoreCity(data.city);
+                box.html(html)
+            })
+            
+            if(area["全国"]){
+              $('.result_name').html('全国');
+              $(".checkbox.other").prop('checked', true);
+            }else{
+              var num= getAreaClassArr(area);//已选择多少省份
+              // 初次渲染城市选择结果
+              $('.result_name').html(num[0].concat(num[1]).join('、'));
+              
+              // 将上一页带来的城市 选中
+              $('.city').each(function () {  
+                let text = $(this).text().trim();
+                num[1].forEach(v =>{
+                    if(v == text){
+                        $(this).addClass('active').parent().siblings('.tab').find('input').prop('checked',true);
+                    }
+                })
+              })
+              $('.province').each(function(){
+                let text = $(this).text().trim();
+                num[0].forEach(v =>{
+                  if(v == text){
+                    $(this).find('input').prop('checked',true).parents("li").find('.city').addClass('active');
+                  }
+                })
+              })    
+            }
+            //this.getResult();
+          },
+          initClick:function(){
+            // 锚点跳转
+            $("body").on('click', '.slide a', function () {
+                var s = $(this).html()
+                if (s == '#') {
+                    return;
+                }
+                document.querySelector('#' + s).scrollIntoView({
+                    block: 'center'
+                });
+            })
+            // 阻止input checkbox选中取消 触发父元素下拉事件
+            $('.checkbox').click(function (e) {  
+                e.stopPropagation();
+            })
+            //省份点击事件
+            $('.tab .checkbox').on('click',function () {
+                if($(this).hasClass("other")){//点击全国
+                  $(".province input").prop('checked', false);
+                  $(".city").removeClass('active');
+                  $(this).prop('checked', true);
+                } else{
+                  $(".checkbox.other").prop('checked', false);
+                  if($(this).is(':checked') == false){
+                    $(this).parent().parent().siblings('.tab_content').children('.city').removeClass('active');
+                  }else{
+                    $(this).parent().parent().siblings('.tab_content').children('.city').addClass('active');
+                  }
+                } 
+                EditArea.getResult()
+            })
+            // 省下拉市
+            $(".select-area-box .tab:not(.municipality)").on('click', function (event) {
+                if ($(this).next('.tab_content:not(:animated)').css("display") == "block") {
+                    $(this).children().children('i').css({
+                        "display": "inline-block",
+                        "transform": "rotate(0)"
+                    })
+                } else {
+                    $(this).children().children('i').css({
+                        "display": "inline-block",
+                        "transform": "rotate(-180deg)"
+                    })
+                }
+                $(this).toggleClass('selected').next('.tab_content:not(:animated)').slideToggle(500)
+                $(this).parent().siblings().children('.tab').removeClass('selected');
+
+            })
+            //城市点击事件
+            $('.tab_content').on('click', '.city', function () {
+                $(".checkbox.other").prop('checked', false);
+                $(this).toggleClass('active')
+                var isActive = $(this).parent().find('.city.active').length
+                if (isActive) {
+                    var input = $(this).parents('li').find('input.checkbox')
+                    window.input = input
+                    input.prop('checked', true)
+                    EditArea.getResult()
+                } else {
+                    $(this).parent('div').siblings('.tab').children().children('.checkbox').prop(
+                        'checked', false)
+                    EditArea.getResult()
+                }
+            })
+            // 取消按钮事件 返回上一页
+            $('#cancel').click(function(){
+                window.history.go(-1)
+            })
+            // 确定修改事件
+            $('#enter').click(function(){
+              $("#enter").attr("disabled","disabled");
+              //提交修改
+              if(EditArea.reqData.buyset[0]==-1&&EditArea.selectObj["全国"]){
+                EditArea.selectObj={}
+              }
+              console.log("final select ",EditArea.selectObj)
+              $DoPost("/subscribepay/editSub/submit",{"type":"area","value":JSON.stringify(EditArea.selectObj)},function(r){
+                if(r.success){
+                  window.history.go(-1);
+                }
+              },false)
+              $("#enter").removeAttr("disabled");  
+            })
+          },
+          createMoreCity:function(arr){
+            var tempHtml = arr.map(function (v) {
+              return '<button class="city">' + v.name + '</button>'
+            }).join('')
+            return tempHtml
+          },
+          showTip:function(msg){
+            weui.toast(msg,{
+              duration: 2000,
+              className: 'custom-toast',
+            });
+          },
+          noChange:function(arr1,arr2){//选择是否改变
+            return JSON.stringify(arr1.sort()) === JSON.stringify(arr2.sort());
+          },
+          getResult:function(){
+            this.selectObj={};
+            if($('.city.active').length == $('.city').length){//若每个城市都选中 则显示全国
+              $('.province input').prop('checked', false);
+              $('.city').removeClass('active');
+              $('.other').prop('checked', true);
+            }
+            
+            $('.result_name').empty();
+            var data = []; //定义一个总数组
+            var cityArr =[]; //定义一个选中城市数组
+
+            if ($('.other').is(':checked')) {
+              data =[{name:"全国",children:[]}] //全国
+            }
+            $(".tab_content").find(".city.active:not('[disabled]')").each(function () {
+                var length = $(this).parent('.tab_content').find('.city').length; //省份下城市的length
+                var activeLeng = $(this).parent('.tab_content').find('.city.active').length; //省份下选中城市的length
+                let arr =[];
+                // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
+                if (length == activeLeng) {
+                    $('.tips_btn .tips_d_text').hide()
+                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                    data.push({
+                        name:province,
+                        children:[]
+                    })
+                } else { 
+                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                    let city = $(this).html()
+                    arr.push({name:city,parent:province})
+                    for(let i =0;i<arr.length;i++){
+                        let obj ={};
+                        obj.name = arr[i].name;
+                        obj.parent = arr[i].parent;
+                        cityArr.push(obj)
+                    }
+                    data.push({
+                        name:province,
+                        children:cityArr
+                    })
+                }
+            })
+            //数组对象去重
+            let obj = {};
+            data = data.reduce((cur,next) =>{
+                obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
+                return cur
+            },[]) 
+            // 数组筛选
+            let result = data.map(v =>{
+                let filterArr = v.children.filter(s =>{
+                   return s.parent === v.name
+                })
+                return {
+                    name:v.name,
+                    children:filterArr
+                }
+            })
+            var html = '';
+            for (var i = 0; i < result.length; i++) {
+                let children = result[i].children;
+                if( children.length >0){
+                    // 判断每个省份下选中的城市长度,当大于等于4的时候 弹出"选择全省更划算的弹窗"
+                    let childrenArr=[];
+                    if (children.length >= 4) {
+                        $('.tips_btn .tips_d_text').show()
+                    } 
+                    html += `${result[i].name}(`
+                    for(var j = 0;j < children.length;j++){
+                        childrenArr.push(children[j].name)
+                        if (j != children.length - 1) {
+                            html += `${children[j].name}、`
+                        } else {
+                            html += `${children[j].name}`
+                        }
+                    }
+                    if(i !=result.length -1){
+                        html += `)、`
+                    }else{
+                        html += `)`
+                    }
+                    this.selectObj[result[i].name]=childrenArr;//
+                }else{
+                    if(i !=result.length -1){
+                        html += `${result[i].name}、`
+                    }else{
+                        html += `${result[i].name}`
+                    }
+                    this.selectObj[result[i].name]=[];//
+                }
+            }
+            $('.result_name').append(html)
+            if(this.noChange(this.selectObj,this.reqData.area)){
+              $("#enter").attr("disabled","disabled");  
+            }else{
+              $("#enter").removeAttr("disabled");  
+            }
+          },
+          noChange:function(obj1,oj2){
+            var tmp1 = getAreaClassArr(obj1);
+            var tmp2 = getAreaClassArr(oj2);
+            return (JSON.stringify(tmp1[0].sort()) === JSON.stringify(tmp2[0].sort()))&&(JSON.stringify(tmp1[1].sort()) === JSON.stringify(tmp2[1].sort()));
+          }
+        }
+        
+        EditArea.init();
+   
+    </script>
+</body>
+
+</html>

+ 230 - 89
src/web/templates/weixin/vipsubscribe/edit_subscribe_city.html

@@ -365,8 +365,8 @@
         <div class="slide">
             <a href="javascript:;">#</a>
             <a href="javascript:;">A</a>
-            <a href="javascript:;">B</a>
-            <a href="javascript:;">C</a>
+            <!--<a href="javascript:;">B</a>
+            <a href="javascript:;">C</a>-->
             <a href="javascript:;">F</a>
             <a href="javascript:;">G</a>
             <a href="javascript:;">H</a>
@@ -375,7 +375,7 @@
             <a href="javascript:;">N</a>
             <a href="javascript:;">Q</a>
             <a href="javascript:;">S</a>
-            <a href="javascript:;">T</a>
+            <!--<a href="javascript:;">T</a>-->
             <a href="javascript:;">X</a>
             <a href="javascript:;">Y</a>
             <a href="javascript:;">Z</a>
@@ -385,79 +385,52 @@
     <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/mapJSON.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
-        var oldCity = ["合肥市", "商丘市", "郑州市", "安阳市", "平顶山市", "信阳市", "南阳市", "开封市", "洛阳市", "三门峡市"];//模拟上一页传来的城市数组
-        // 渲染城市
-        function createMoreCity(arr) {
-            var tempHtml = arr.map(function (v) {
-                // v.name.replace(/市$/g, '')
-                return '<button class="city">' + v.name + '</button>'
-            }).join('')
-            return tempHtml
-        }
-        function isSelected() { 
-            $('.city:not(.active)').parent('.tab_content').siblings('.tab').find('input').attr('disabled','disabled')
-            $('.city').each(function () {  
-               let isActive = $(this).is('.active');
-                if(isActive){
-                    // console.log($(this).text(),'----')
-                    $(this).parent('.tab_content').siblings('.tab').find('input').removeAttr('disabled')
-                }
-            })
-         }
-        // 选择结果
-        function getResult() {
-            var data = [];
-            $('.result_name').empty()
-            $(".tab_content").find(".city.active").each(function () {
-                data.push($(this).html())
-            })
-            data = Array.from(new Set(data)); //数组去重
-            console.log(data,data.length)
-            $('.count').html(data.length)
-            if (data.length >= oldCity.length) {
-                weui.toast(`<p>只可选择${oldCity.length}个城市<br/><span style="white-space: nowrap;">您只购买了${oldCity.length}个城市,如需更多请升级<span></p>`,{
-                    duration: 2000,
-                    className: 'custom-toast',
-                })
-                $(".tab_content .city:not(.active)").attr('disabled', 'disabled')
-                for(let i in oldCity){
-                    if(oldCity[i] != data[i]){
-                        $('#enter').removeAttr('disabled')
-                    }
-                }
-            }else{
-                $(".tab_content .city:not(.active)").removeAttr('disabled');
-                $('#enter').attr('disabled', 'disabled')
+        var EditCity={
+          reqData:{},
+          selectlast:[],//上次修改的地区
+          init:function(){
+            this.getData();
+            this.showData();//初始化页面展示
+            this.initClick();//初始化点击事件
+          },
+          getData:function(){
+            //加载数据
+            //if(sessionStorage.getItem("EditVipSub")){
+            //  this.reqData=JSON.parse(sessionStorage.getItem("EditVipSub"));
+            //}else{
+            $DoPost("/subscribepay/editSub/getSubBuyMsg",{},function(r){
+              if(r.success){
+                EditCity.reqData=r.data;
+              }
+            },false)
+            /*if(EditCity.reqData.industry.length==0&&this.reqData.buyset[2]==-1){
+              EditCity.reqData.industry=["全部行业"];
+            }*/
+            if($.isEmptyObject(EditCity.reqData.area)&&this.reqData.buyset[0]==-1){
+              EditCity.reqData.area={"全国":[]};
             }
-             // 可选择数量
-            $('.count').html(data.length)
-            var html = '';
-            for (var i = 0; i < data.length; i++) {
-                if (i != data.length - 1) {
-                    html += '<span>' + data[i] + '、' + '</span>'
-                } else {
-                    html += '<span>' + data[i] + '</span>'
-                }
+              //sessionStorage.setItem("EditVipSub",JSON.stringify(this.reqData));
+            //}
+            console.log(EditCity.reqData);
+          },
+          showData:function(){
+            var area= this.reqData.area;
+            if(!$.isEmptyObject(this.reqData.areaSelect)){
+              area=this.reqData.areaSelect;
+            }else{
+              this.reqData.areaSelect= {...this.reqData.area};
             }
-            $('.result_name').append(html)
-        }
-        $(function () {
+            
+            var num= getAreaClassArr(area);//已选择多少省份
             // 渲染可选择城市总数
-            $('.total').html(oldCity.length)
-            $('.count').html(oldCity.length)
+            $('.total').html(this.reqData.buyset[1]);
+            $('.count').html(num[1].length);
             // 初次渲染城市选择结果
-            $('.result_name').html(oldCity.join('、'))
-            // 锚点跳转
-            $("body").on('click', '.slide a', function () {
-                var s = $(this).html()
-                if (s == '#') {
-                    return;
-                }
-                document.querySelector('#' + s).scrollIntoView({
-                    block: 'center'
-                });
-            })
+            $('.result_name').html(num[1].join('、'));
+            this.selectlast=num[1];
+            
             // 渲染城市
             $(".select-area-box ul li:not('.index')").each(function () {
                 var text = $(this).find(".province").text().trim()
@@ -466,24 +439,55 @@
                     data = v
                     return v.name.indexOf(text) !== -1
                 })
-                var box = $(this).find('div.tab_content')
-                var html = createMoreCity(data.city)
+                var box = $(this).find('div.tab_content');
+                var html = EditCity.createMoreCity(data.city);
                 box.html(html)
             })
             
             // 将上一页带来的城市 选中
             $('.city').each(function () {  
                 let text = $(this).text().trim();
-                oldCity.forEach(v =>{
+                num[1].forEach(v =>{
                     if(v == text){
-                        // console.log(v,text)
                         $(this).addClass('active').parent().siblings('.tab').find('input').prop('checked',true);
                     }
                 })
             })
-            $('.city:not(.active)').attr('disabled',true)
-        
-            isSelected()
+            //隐藏选择省份中 已选择的省份
+            $('.province').each(function(){
+              let text = $(this).text().trim();
+              num[0].forEach(v =>{
+                  if(v == text){
+                    if($(this).parents("li").prev().hasClass("index")&&$(this).parents("li").next().hasClass("index")){
+                      var zimu = $(this).parents("li").prev().text().trim();
+                      console.log("删除字母导航",zimu)
+                      $('.slide a').each(function(){
+                        if(zimu == $(this).text().trim()){
+                          $(this).remove();
+                        }
+                      })
+                      $(this).parents("li").prev().remove();
+                    }
+                    $(this).parents("li").remove();
+                  }
+              })
+            })
+            if(num[1].length>=this.reqData.buyset[1]){
+              $('.city:not(.active)').attr('disabled',true)
+            }
+          },
+          initClick:function(){
+            // 锚点跳转
+            $("body").on('click', '.slide a', function () {
+                var s = $(this).html()
+                if (s == '#') {
+                    return;
+                }
+                document.querySelector('#' + s).scrollIntoView({
+                    block: 'center'
+                });
+            })
+            this.isSelected()
             // 阻止input checkbox选中取消 触发父元素下拉事件
             $('.checkbox').click(function (e) {  
                 e.stopPropagation();
@@ -492,12 +496,11 @@
                 if($(this).is(':checked') == false){
                     $(this).attr('disabled',true)
                     $(this).parent().parent().siblings('.tab_content').children('.city').removeClass('active');
-                    getResult()
+                    EditCity.getResult()
                 }
             })
             // 省下拉市
             $(".select-area-box .tab:not(.municipality)").on('click', function (event) {
-                
                 if ($(this).next('.tab_content:not(:animated)').css("display") == "block") {
                     $(this).children().children('i').css({
                         "display": "inline-block",
@@ -520,14 +523,13 @@
                     var input = $(this).parents('li').find('input.checkbox')
                     window.input = input
                     input.prop('checked', true)
-                    getResult()
-                    isSelected()
+                    EditCity.getResult()
+                    EditCity.isSelected()
                 } else {
                     $(this).parent('div').siblings('.tab').children().children('.checkbox').prop(
                         'checked', false)
-                        
-                    getResult()
-                    isSelected()
+                    EditCity.getResult()
+                    EditCity.isSelected()
                 }
             })
             // 取消按钮事件 返回上一页
@@ -536,11 +538,150 @@
             })
             // 确定修改事件
             $('#enter').click(function(){
-                // $.ajax({
-                    window.location.href='/front/vipsubscribe/submitEditSub'
-                // })
+              $("#enter").attr("disabled","disabled");
+              //更新 reqData.areaSelect
+              var selectAreaObj= EditCity.getSelectAreaObj();
+              for(var i in selectAreaObj) {
+                let citys=selectAreaObj[i]
+                EditCity.reqData.areaSelect[i]=citys;
+              }
+              //提交修改
+              console.log("final select ",EditCity.reqData.areaSelect)
+              //sessionStorage.setItem("EditVipSub",JSON.stringify(EditCity.reqData));
+              $DoPost("/subscribepay/editSub/submit",{"type":"area","value":JSON.stringify(EditCity.reqData.areaSelect)},function(r){
+                if(r.success){
+                  window.history.go(-1);
+                }
+              },false)
+              $("#enter").removeAttr("disabled");  
+            })
+          },
+          createMoreCity:function(arr){
+            var tempHtml = arr.map(function (v) {
+              // v.name.replace(/市$/g, '')
+              return '<button class="city">' + v.name + '</button>'
+            }).join('')
+            return tempHtml
+          },
+          isSelected:function(){
+            $('.city:not(.active)').parent('.tab_content').siblings('.tab').find('input').attr('disabled','disabled')
+            $('.city').each(function () {  
+               let isActive = $(this).is('.active');
+                if(isActive){
+                    $(this).parent('.tab_content').siblings('.tab').find('input').removeAttr('disabled')
+                }
+            })  
+          },
+          getResult:function(){
+            var data = [];
+            $('.result_name').empty()
+            $(".tab_content").find(".city.active").each(function () {
+                data.push($(this).html())
+            })
+            data = Array.from(new Set(data)); //数组去重
+            console.log(data,data.length)
+            $('.count').html(data.length)
+            if (data.length >= EditCity.reqData.buyset[1]) {
+                this.showTip(`<p>只可选择${EditCity.reqData.buyset[0]}个城市<br/><span style="white-space: nowrap;">您只购买了${EditCity.reqData.buyset[0]}个城市,如需更多请升级<span></p>`)
+                $(".tab_content .city:not(.active)").attr('disabled', 'disabled')
+            }else{
+                $(".tab_content .city:not(.active)").removeAttr('disabled');
+
+            }
+             // 可选择数量
+            $('.count').html(data.length)
+            var html = '';
+            for (var i = 0; i < data.length; i++) {
+                if (i != data.length - 1) {
+                    html += '<span>' + data[i] + '、' + '</span>'
+                } else {
+                    html += '<span>' + data[i] + '</span>'
+                }
+            }
+            $('.result_name').append(html);
+            
+            if(this.noChange(EditCity.selectlast,data)||data.length==0){
+              $('#enter').attr('disabled','disabled')
+            }else{
+              $('#enter').removeAttr('disabled')
+            }
+            
+          },
+          showTip:function(msg){
+            weui.toast(msg,{
+              duration: 2000,
+              className: 'custom-toast',
+            });
+          },
+          noChange:function(arr1,arr2){//选择是否改变
+            return JSON.stringify(arr1.sort()) === JSON.stringify(arr2.sort());
+          },
+          getSelectAreaObj:function(){
+            var selectObj = {};
+            var data = []; //定义一个总数组
+            var cityArr =[]; //定义一个选中城市数组
+            $(".tab_content").find(".city.active:not('[disabled]')").each(function () {
+                var length = $(this).parent('.tab_content').find('.city').length; //省份下城市的length
+                var activeLeng = $(this).parent('.tab_content').find('.city.active').length; //省份下选中城市的length
+                let arr =[];
+                // 判断省份下的城市是否等于选中的城市长度,相等就是全部选中
+                if (length == activeLeng) {
+                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                    data.push({
+                        name:province,
+                        children:[]
+                    })
+                } else { 
+                    let province = $(this).parent('.tab_content').siblings('.tab:not(.whole)').children('.province').text().trim();
+                    let city = $(this).html()
+                    arr.push({name:city,parent:province})
+                    for(let i =0;i<arr.length;i++){
+                        let obj ={};
+                        obj.name = arr[i].name;
+                        obj.parent = arr[i].parent;
+                        cityArr.push(obj)
+                    }
+                    data.push({
+                        name:province,
+                        children:cityArr
+                    })
+                }
+            })
+            //数组对象去重
+            let obj = {};
+            data = data.reduce((cur,next) =>{
+                obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
+                return cur
+            },[]) 
+            // 数组筛选
+            let result = data.map(v =>{
+                let filterArr = v.children.filter(s =>{
+                   return s.parent === v.name
+                })
+                return {
+                    name:v.name,
+                    children:filterArr
+                }
             })
-        })
+            var html = '';
+            for (var i = 0; i < result.length; i++) {
+                let children = result[i].children;
+                if( children.length >0){
+                  let childrenArr=[]; 
+                  for(var j = 0;j < children.length;j++){
+                    childrenArr.push(children[j].name)
+                  }
+                  selectObj[result[i].name]=childrenArr;//
+                }else{
+                    selectObj[result[i].name]=[];//
+                }
+            }
+            return selectObj
+          }
+        }
+        
+        EditCity.init();
+   
     </script>
 </body>
 

+ 213 - 217
src/web/templates/weixin/vipsubscribe/edit_subscribe_industry.html

@@ -22,12 +22,12 @@
             <div class="form">
                 <div class="select-area-box">
                     <ul class="list">
-                        <!-- <li class="list_item" id="all">
+                        <li class="list_item" id="all" style="display:none">
                             <div class="item_label"></div>
                             <div class="item_industry_list">
                                 <button class="industry_item">全部行业</button>
                             </div>
-                        </li> -->
+                        </li>
                         <li class="list_item" id="A">
                             <div class="item_label">A</div>
                             <div class="item_industry_list">
@@ -44,240 +44,163 @@
                             <div class="item_label">C</div>
                             <div class="item_industry_list">
                                 <button class="industry_item">财政</button>
-                                <button class="industry_item">出版广电</button>
                                 <button class="industry_item">传媒</button>
                                 <button class="industry_item">城管</button>
                                 <button class="industry_item">采矿业</button>
+                                <button class="industry_item">出版广电</button>
                             </div>
                         </li>
                         <li class="list_item" id="D">
                             <div class="item_label">D</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
-                            </div>
-                        </li>
-                        <li class="list_item" id="E">
-                            <div class="item_label">E</div>
-                            <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">档案</button>
+                                <button class="industry_item">地震</button>
+                                <button class="industry_item">党委办</button>
+                                <button class="industry_item">电信行业</button>
                             </div>
                         </li>
                         <li class="list_item" id="F">
                             <div class="item_label">F</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">法院</button>
+                                <button class="industry_item">发改</button>
                             </div>
                         </li>
                         <li class="list_item" id="G">
                             <div class="item_label">G</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">工商</button>
+                                <button class="industry_item">工信</button>
+                                <button class="industry_item">国土</button>
+                                <button class="industry_item">公安</button>
+                                <button class="industry_item">国资委</button>
+                                <button class="industry_item">公共资源交易</button>
                             </div>
                         </li>
                         <li class="list_item" id="H">
                             <div class="item_label">H</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
-                            </div>
-                        </li>
-                        <li class="list_item" id="I">
-                            <div class="item_label">I</div>
-                            <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">环保</button>
+                                <button class="industry_item">海关</button>
                             </div>
                         </li>
                         <li class="list_item" id="J">
                             <div class="item_label">J</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">教育</button>
+                                <button class="industry_item">军队</button>
+                                <button class="industry_item">交通</button>
+                                <button class="industry_item">纪委</button>
+                                <button class="industry_item">金融业</button>
+                                <button class="industry_item">建筑业</button>
+                                <button class="industry_item">检察院</button>
+                                <button class="industry_item">机关事务</button>
                             </div>
                         </li>
                         <li class="list_item"  id="K">
                             <div class="item_label">K</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">科技</button>
                             </div>
                         </li>
                         <li class="list_item" id="L">
                             <div class="item_label">L</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">林业</button>
+                                <button class="industry_item">旅游</button>
                             </div>
                         </li>
                         <li class="list_item" id="M">
                             <div class="item_label">M</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">民政</button>
+                                <button class="industry_item">民宗</button>
                             </div>
                         </li>
                         <li class="list_item" id="N">
                             <div class="item_label">N</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
-                            </div>
-                        </li>
-                        <li class="list_item" id="O">
-                            <div class="item_label">O</div>
-                            <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">农业</button>
+                                <button class="industry_item">能源化工</button>
+                                <button class="industry_item">农林牧渔</button>
                             </div>
                         </li>
                         <li class="list_item" id="P">
                             <div class="item_label">P</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">批发零售</button>
                             </div>
                         </li>
                         <li class="list_item" id="Q">
                             <div class="item_label">Q</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">气象</button>
                             </div>
                         </li>
                         <li class="list_item" id="R">
                             <div class="item_label">R</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">人行</button>
+                                <button class="industry_item">人社</button>
+                                <button class="industry_item">人大</button>
                             </div>
                         </li>
                         <li class="list_item" id="S">
                             <div class="item_label">S</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">食药</button>
+                                <button class="industry_item">税务</button>
+                                <button class="industry_item">水利</button>
+                                <button class="industry_item">市政</button>
+                                <button class="industry_item">审计</button>
+                                <button class="industry_item">商务</button>
+                                <button class="industry_item">司法</button>
+                                <button class="industry_item">社会团体</button>
                             </div>
                         </li>
                         <li class="list_item" id="T">
                             <div class="item_label">T</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
-                            </div>
-                        </li>
-                        <li class="list_item" id="U">
-                            <div class="item_label">U</div>
-                            <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">统计</button>
+                                <button class="industry_item">统战</button>
+                                <button class="industry_item">体育</button>
                             </div>
-                        </li>
-                        <li class="list_item" id="V">
-                            <div class="item_label">V</div>
-                            <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
-                            </div>
-                        </li>
+                        </li>                    
                         <li class="list_item" id="W">
                             <div class="item_label">W</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">文化</button>
+                                <button class="industry_item">卫生</button>
                             </div>
                         </li>
                         <li class="list_item" id="X">
                             <div class="item_label">X</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">学校</button>
+                                <button class="industry_item">宣传</button>
+                                <button class="industry_item">信息技术</button>
                             </div>
                         </li>
                         <li class="list_item" id="Y">
                             <div class="item_label">Y</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">医疗</button>
+                                <button class="industry_item">银监</button>
+                                <button class="industry_item">运输物流</button>
                             </div>
                         </li>
                         <li class="list_item" id="Z">
                             <div class="item_label">Z</div>
                             <div class="item_industry_list">
-                                <button class="industry_item">电力</button>
-                                <button class="industry_item">广电</button>
-                                <button class="industry_item">传媒</button>
-                                <button class="industry_item">城管</button>
-                                <button class="industry_item">采矿业</button>
+                                <button class="industry_item">质监</button>
+                                <button class="industry_item">组织</button>
+                                <button class="industry_item">政协</button>
+                                <button class="industry_item">住建</button>
+                                <button class="industry_item">证监</button>
+                                <button class="industry_item">政府办</button>
+                                <button class="industry_item">制造业</button>
+                                <button class="industry_item">政务中心</button>
+                                <button class="industry_item">住宿餐饮</button>
                             </div>
                         </li>
                     </ul>
@@ -289,24 +212,19 @@
                 <a href="javascript:;">B</a>
                 <a href="javascript:;">C</a>
                 <a href="javascript:;">D</a>
-                <a href="javascript:;">E</a>
                 <a href="javascript:;">F</a>
                 <a href="javascript:;">G</a>
                 <a href="javascript:;">H</a>
-                <a href="javascript:;">I</a>
                 <a href="javascript:;">J</a>
                 <a href="javascript:;">K</a>
                 <a href="javascript:;">L</a>
                 <a href="javascript:;">M</a>
                 <a href="javascript:;">N</a>
-                <a href="javascript:;">O</a>
                 <a href="javascript:;">P</a>
                 <a href="javascript:;">Q</a>
                 <a href="javascript:;">R</a>
                 <a href="javascript:;">S</a>
                 <a href="javascript:;">T</a>
-                <a href="javascript:;">U</a>
-                <a href="javascript:;">V</a>
                 <a href="javascript:;">W</a>
                 <a href="javascript:;">X</a>
                 <a href="javascript:;">Y</a>
@@ -326,81 +244,159 @@
         <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
         <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
         <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
+        <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
         <script>
-            let oldIndustry = ["安监","保监"];
-            $('.total').html(oldIndustry.length)
-            $('.count').html(oldIndustry.length)
-            $('.result .result_name').html(oldIndustry.join('、'))
-            $('.list_item').each(function () {  
-                let text = $(this).find('.industry_item').text();
-                oldIndustry.forEach(v =>{
-                    if(v == text){
-                        $(this).find('.industry_item').addClass('active')
+            //加载数据
+            var EditIndustry={
+              reqData:{},
+              selectlast:[],
+              init:function(){
+                this.getData();
+                this.showData();//初始化页面展示
+                this.initClick();//初始化点击事件
+              },
+              getData:function(){
+                //加载数据
+                //if(sessionStorage.getItem("EditVipSub")){
+                //  this.reqData=JSON.parse(sessionStorage.getItem("EditVipSub"));
+                //}else{
+                  $DoPost("/subscribepay/editSub/getSubBuyMsg",{},function(r){
+                    if(r.success){
+                      EditIndustry.reqData=r.data;
                     }
-                    
-                })
-            })
-            $('.industry_item:not(.active)').attr('disabled',true)
-            // 点击导航跳转
-            $("body").on('click','.slide a',function(){
-                var s = $(this).html()
-                if(s == '#'){
-                    return;
+                  },false)
+                  if(EditIndustry.reqData.industry.length==0&&this.reqData.buyset[2]==-1){
+                    EditIndustry.reqData.industry=["全部行业"];
+                  }
+                  if($.isEmptyObject(EditIndustry.reqData.area)&&this.reqData.buyset[0]==-1){
+                    EditIndustry.reqData.area={"全国":[]};
+                  }
+                  //sessionStorage.setItem("EditVipSub",JSON.stringify(this.reqData));
+                //}
+                //if(!this.reqData.industrySelect){
+                  EditIndustry.reqData.industrySelect=[];
+                //}
+                console.log(EditIndustry.reqData);
+              },
+              showData:function(){
+                
+                var industry =this.reqData.industry;
+                this.selectlast=this.reqData.industry;
+                if(this.reqData.industrySelect.length!=0){
+                  industry=this.reqData.industrySelect;
+                  this.selectlast= [...this.reqData.industrySelect];
                 }
-                document.querySelector('#' + s).scrollIntoView({block:'center'});
-            })
-            // 选中行业在已选择提示中显示
-            var selectedIndustryArr = null
-            function findSelectedIndustry () {
-                var buttons = $('.select-area-box .list button')
-                // 找到已选择的数组(有active类的数组)
-                var selectedArr = []
-                buttons.each(function(){
-                    if ($(this).hasClass('active')) {
-                        selectedArr.push($(this).text())
+                $('.result .result_name').html(industry.join('、'));
+                
+                $('.industry_item').each(function () {  
+                  let text = $(this).text();
+                  industry.forEach(v =>{
+                      if(v.trim() == text.trim()){
+                        $(this).addClass('active')
+                      }
+                    })
+                });
+                
+                if(this.reqData.buyset[2]!=-1){
+                  $('.total').html(this.reqData.buyset[2]);
+                  $('.count').html(industry.length);
+                  if(this.reqData.industrySelect.length>=this.reqData.buyset[2]){
+                    $('.industry_item:not(.active)').attr('disabled',true);
+                  }
+                }else{
+                  $("#all").css("display","");
+                  $(".optional_count").css("display","none");
+                }
+              },
+              initClick:function(){
+                // 点击导航跳转
+                $("body").on('click','.slide a',function(){
+                    var s = $(this).html()
+                    if(s == '#'){
+                        return;
                     }
+                    document.querySelector('#' + s).scrollIntoView({block:'center'});
                 })
-                $('.count').html(selectedArr.length)
-                // 显示隐藏优惠tips
-                if (selectedArr.length >= 2) {
-                    weui.toast(`<p>只可选择${oldIndustry.length}个行业<br/><span style="white-space: nowrap;">您只购买了${oldIndustry.length}个行业,如需更多请升级<span></p>`,{
-                        duration: 1000,
-                        className: 'custom-toast',
-                    })
-                    $('.industry_item:not(.active)').attr('disabled','disabled')
-                    for(let i in oldIndustry){
-                        console.log(oldIndustry[i],selectedArr[i])
-                        if(oldIndustry[i] != selectedArr[i]){
-                            $('#enter').removeAttr('disabled')
-                        }
+                // 每个button的点击事件
+                $('.select-area-box .list').on('click', 'button', function (e) {
+                    if($(this).text()=="全部行业"){
+                      if($(this).hasClass('active')){
+                        return
+                      }
+                      if(EditIndustry.reqData.buyset[2]!=-1){ //购买不是全部行业 不能点击
+                        EditIndustry.showTip(`<p>只可选择${EditIndustry.reqData.buyset[2]}个行业<br/><span style="white-space: nowrap;">您只购买了${EditIndustry.reqData.buyset[2]}个行业,如需更多请升级<span></p>`);
+                        return
+                      }
+                      $('.select-area-box .list button').removeClass('active');
+                      $('#all button').addClass('active');
+                    }else{
+                      $('#all button').removeClass('active');
+                      $(this).toggleClass('active')
                     }
-                } else {
-                    $('.industry_item:not(.active)').removeAttr('disabled')
-                    $('#enter').attr('disabled', 'disabled')
-                }
-
-                selectedIndustryArr = selectedArr
-                
-                var selectedStr = selectedArr.join('、')
-                $('.result .result_name').text(selectedStr)
+                    EditIndustry.findSelectedIndustry();
+                })
+                // 取消按钮事件 返回上一页
+                $('#cancel').click(function(){
+                    window.history.go(-1);
+                })
+                // 确定修改事件
+                $('#enter').click(function(){
+                  $("#enter").attr("disabled","disabled");  
+                  //更新对象
+                  if(EditIndustry.reqData.buyset[2]==-1&&EditIndustry.reqData.industrySelect[0]=="全部行业"){
+                    EditIndustry.reqData.industrySelect=[];
+                  }
+                  console.log("final select ",EditIndustry.reqData)
+                  $DoPost("/subscribepay/editSub/submit",{"type":"industry","value":JSON.stringify(EditIndustry.reqData.industrySelect)},function(r){
+                    if(r.success){
+                      window.history.go(-1);
+                    }
+                  },false)
+                  $("#enter").removeAttr("disabled");  
+                })
+              },
+              showTip:function(msg){
+                weui.toast(msg,{
+                  duration: 2000,
+                  className: 'custom-toast',
+                });
+              },
+              findSelectedIndustry:function() {
+                  var buttons = $('.select-area-box .list button')
+                  // 找到已选择的数组(有active类的数组)
+                  var selectedArr = []
+                  buttons.each(function(){
+                      if ($(this).hasClass('active')) {
+                        selectedArr.push($(this).text())
+                      }
+                  })
+                  if(selectedArr.length==$('.select-area-box .list button').length-1){//选中了全部行业
+                    $('#all button').trigger('click');
+                    return
+                  }
+                  var selectCount= selectedArr.length
+                  $('.count').html(selectCount);
+                  // 显示隐藏优惠tips
+                  if (selectedArr.length >= EditIndustry.reqData.buyset[2]&& EditIndustry.reqData.buyset[2]!=-1) {
+                      EditIndustry.showTip(`<p>只可选择${EditIndustry.reqData.buyset[2]}个行业<br/><span style="white-space: nowrap;">您只购买了${EditIndustry.reqData.buyset[2]}个行业,如需更多请升级<span></p>`);
+                      $('.industry_item:not(.active)').attr('disabled','disabled')
+                  } else {
+                      $('.industry_item:not(.active)').removeAttr('disabled')
+                  }
+                  this.reqData.industrySelect = selectedArr;
+                  var selectedStr = selectedArr.join('、')
+                  $('.result .result_name').text(selectedStr)
+                  if(this.noChange(this.reqData.industrySelect,EditIndustry.selectlast)||this.reqData.industrySelect.length==0){
+                    $('#enter').attr('disabled', 'disabled');
+                  }else{
+                    $('#enter').removeAttr('disabled');
+                  }
+              },
+              noChange:function(arr1,arr2){
+                return JSON.stringify(arr1.sort()) === JSON.stringify(arr2.sort());
+              }
             }
-
-            // 每个button的点击事件
-            $('.select-area-box .list').on('click', 'button', function (e) {
-                $(this).toggleClass('active')
-                findSelectedIndustry()
-            })
-
-            // 取消按钮事件 返回上一页
-            $('#cancel').click(function(){
-                window.history.go(-1)
-            })
-            // 确定修改事件
-            $('#enter').click(function(){
-                // $.ajax({
-                    window.location.href='/front/vipsubscribe/submitEditSub'
-                // })
-            })
+            EditIndustry.init();
         </script>
     </body>
 </html>

+ 145 - 66
src/web/templates/weixin/vipsubscribe/edit_subscribe_province.html

@@ -30,13 +30,13 @@
         <div class="form">
             <div class="select-area-box" style="padding-bottom: 0;">
                 <ul class="area-list">
-                    <!-- <li>
-                        <div class="tab whole">
+                    <!--<li>
+                        <div class="tab whole" style="display:none">
                             <div class="province">
                                 <input type="checkbox" class="checkbox other">全国
                             </div>
                         </div>
-                    </li> -->
+                    </li>-->
                     <li class="index" id="A">A</li>
                     <li>
                         <div class="tab">
@@ -354,77 +354,156 @@
     </div>
     <script src="/vipsubscribe/js/jquery-2.1.4.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
+    <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script>
-        var params = ["安徽","河南"]; //模拟上一页传来的省份数组
-        $(function () { 
-            $('.total').html(params.length)
-            // 锚点跳转 
-            $("body").on('click','.slide a',function(){
-                var s = $(this).html()
-                if(s == '#'){
-                    return;
+        //加载数据
+            var EditProvince={
+              reqData:{},
+              selectlast:[],//上次修改的省份
+              selectedArr:[],//当前选择的省份
+              init:function(){
+                this.getData();
+                this.showData();//初始化页面展示
+                this.initClick();//初始化点击事件
+              },
+              getData:function(){
+                //加载数据
+                //if(sessionStorage.getItem("EditVipSub")){
+                 // this.reqData=JSON.parse(sessionStorage.getItem("EditVipSub"));
+                //}else{
+                $DoPost("/subscribepay/editSub/getSubBuyMsg",{},function(r){
+                  if(r.success){
+                    EditProvince.reqData=r.data;
+                  }
+                },false)
+                /*if(EditProvince.reqData.industry.length==0&&this.reqData.buyset[2]==-1){
+                  EditProvince.reqData.industry=["全部行业"];
+                }*/
+                if($.isEmptyObject(EditProvince.reqData.area)&&this.reqData.buyset[0]==-1){
+                  EditProvince.reqData.area={"全国":[]};
                 }
-                document.querySelector('#' + s).scrollIntoView({block:'center'});
-            })
-            // 可选择省份的总数
-            $('.toatl').html(params.length)
-            // 将上一页选择的省份 选中
-            $(".select-area-box ul li:not('.index')").each(function () {
-                var text = $(this).find(".province").text().trim();
-                params.forEach(v =>{
-                    if(v == text){
-                        $(this).children().children('.province').children('input').prop('checked',true)
+                sessionStorage.setItem("EditVipSub",JSON.stringify(this.reqData));
+                //}
+                console.log(EditProvince.reqData);
+              },
+              showData:function(){
+                var area= this.reqData.area;
+                if(!$.isEmptyObject(this.reqData.areaSelect)){
+                  area=this.reqData.areaSelect;
+                }else{
+                  this.reqData.areaSelect= {...this.reqData.area};
+                }
+
+                $(".total").text(this.reqData.buyset[0]);
+                
+                var num= getAreaClassArr(area);//已选择多少省份
+                $(".select-area-box ul li:not('.index')").each(function () {
+                  var text = $(this).find(".province").text().trim();
+                  num[0].forEach(v =>{
+                      if(v == text){
+                          $(this).children().children('.province').children('input').prop('checked',true);
+                      }
+                  })
+                  
+                })
+                EditProvince.selectlast=num[0];
+                $(".count").text(num[0].length);
+              },
+              initClick:function(){
+                // 锚点跳转 
+                $("body").on('click','.slide a',function(){
+                  var s = $(this).html()
+                  if(s == '#'){
+                      return;
+                  }
+                  document.querySelector('#' + s).scrollIntoView({block:'center'});
+                })
+                
+                $('.province .checkbox').on('change', function () {
+                  EditProvince.getResult();
+                })
+                
+                // 取消按钮事件 返回上一页
+                $('#cancel').click(function(){
+                  window.history.go(-1)
+                })
+                // 确定修改事件
+                $('#enter').click(function(){
+                  $("#enter").attr("disabled","disabled");
+                  //删除所选省份
+                  for(var i in EditProvince.reqData.areaSelect) {
+                    let citys=EditProvince.reqData.areaSelect[i]
+                    if(citys.length==0){
+                    	if(i=="全国"){
+                  			continue
+                  		}
+                      delete EditProvince.reqData.areaSelect[i];
+                    }
+                  }
+                  //添加所选省份
+                  for(var i in EditProvince.selectedArr) {
+                    EditProvince.reqData.areaSelect[EditProvince.selectedArr[i]]=[];
+                  }
+                  
+                  $DoPost("/subscribepay/editSub/submit",{"type":"area","value":JSON.stringify(EditProvince.reqData.areaSelect)},function(r){
+                    if(r.success){
+                      window.history.go(-1);
                     }
+                  },false)
+                  $("#enter").removeAttr("disabled");  
                 })
-            })
-            getResult();
-            // 选中取消事件
-            $('.province .checkbox').on('change', function () {
-                getResult()
-            })
-            // 取消按钮事件 返回上一页
-            $('#cancel').click(function(){
-                window.history.go(-1)
-            })
-            // 确定修改事件
-            $('#enter').click(function(){
-                // $.ajax({
-                    window.location.href='/front/vipsubscribe/submitEditSub'
-                // })
-            })
-        })
-        function  getResult() {
-            var selectedArr = []; //选中的省份数组
-            $('.result_name').empty()  
-            $(".province").find(".checkbox:checked").each(function () {
-                selectedArr.push($(this).parent().text().trim())
-            })
-            // 判断选中省份数组长度是否等于可选择的省份数组长度,等于  则 禁用选择其他省份
-            if(selectedArr.length >= params.length){
-                $(".province .checkbox:not(:checked)").attr('disabled', 'disabled')
-                // 判断重新选择的省份与之前的是否相同,相同的话禁止修改,不同才能修改
-                for(let i in params){
-                    if(params[i] != selectedArr[i]){
-                        $('#enter').removeAttr('disabled')
+                this.getResult();
+                //
+              },
+              getResult:function(){
+                EditProvince.selectedArr = []; //选中的省份数组
+                $('.result_name').empty();
+                $(".province").find(".checkbox:checked").each(function () {
+                  EditProvince.selectedArr.push($(this).parent().text().trim());
+                })
+                
+                if(EditProvince.selectedArr.length==$(".province .checkbox").length-1){//选中了全部省份
+                  $('.checkbox.other').trigger('click');
+                  return
+                }
+                
+                if(EditProvince.selectedArr[0]=="全国"){
+                  $(".count").text("all");
+                }else{
+                  $(".count").text(EditProvince.selectedArr.length);
+                }
+                
+                //是否还能继续选择
+                if(EditProvince.selectedArr.length >= EditProvince.reqData.buyset[0] && EditProvince.reqData.buyset[0]!=-1){
+                    $(".province .checkbox:not(:checked)").attr('disabled', 'disabled');
+                }else{
+                    $(".province .checkbox:not(:checked)").removeAttr('disabled');
+                }
+
+                // 渲染选择结果
+                console.log( EditProvince.selectedArr)
+                var html = '';
+                for (var i = 0; i < EditProvince.selectedArr.length; i++) {
+                    if (i != EditProvince.selectedArr.length - 1) {
+                        html += '<span>' + EditProvince.selectedArr[i] + '、' + '</span>'
+                    } else {
+                        html += '<span>' + EditProvince.selectedArr[i] + '</span>'
                     }
                 }
-            }else{
-                $(".province .checkbox:not(:checked)").removeAttr('disabled')
-                $('#enter').attr('disabled','disabled')
-            }
-            // 可选择数量
-            $('.count').html(selectedArr.length)
-            // 渲染选择结果
-            var html = '';
-            for (var i = 0; i < selectedArr.length; i++) {
-                if (i != selectedArr.length - 1) {
-                    html += '<span>' + selectedArr[i] + '、' + '</span>'
-                } else {
-                    html += '<span>' + selectedArr[i] + '</span>'
+                $('.result_name').append(html)
+                //是否提交
+                if(EditProvince.noChange(EditProvince.selectlast,EditProvince.selectedArr)||EditProvince.selectedArr.length==0){
+                  $('#enter').attr('disabled','disabled')
+                }else{
+                  $('#enter').removeAttr('disabled')
                 }
+              },
+              noChange:function(arr1,arr2){
+                return JSON.stringify(arr1.sort()) === JSON.stringify(arr2.sort());
+              }
             }
-            $('.result_name').append(html)
-        }
+            EditProvince.init(); 
     </script>
 </body>
 

+ 1 - 6
src/web/templates/weixin/vipsubscribe/trial_info.html

@@ -149,12 +149,7 @@
                 // ajax提交成功后跳转至vip购买页
                 $DoPost("/subscribepay/trial/submitApply",post_data,function(r){
                   if(r.success){
-                    alert("ok")
-                  }else{
-                    weui.toast(r.errMsg,{
-                      duration: 2000,
-                      className: 'custom-toast',
-                    });
+                    window.location.replace("/front/vipsubscribe/toPurchasePage/trial");
                   }
                 })
                 return false;	

+ 2 - 2
src/web/templates/weixin/vipsubscribe/vip_introduce.html

@@ -133,8 +133,8 @@
                 </div>
         </div>
         <div class="menu">
-            <a href="vip_purchase.html" class="try_btn">试用7天</a>
-            <a href="/front/vipsubscribe/toPurchasePage" class="subscribe_btn">去订阅</a>
+            <a href="/front/vipsubscribe/trialInfo" class="try_btn">试用7天</a>
+            <a href="/front/vipsubscribe/toPurchasePage/new" class="subscribe_btn">去订阅</a>
         </div>
     </div>
 </body>

+ 4 - 22
src/web/templates/weixin/vipsubscribe/vip_pay_success.html

@@ -43,26 +43,6 @@
   <script src="/vipsubscribe/js/fastclick.js?v={{Msg "seo" "version"}}"></script>
   <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
   <script>
-    /*
-    //此方法支付时间不准
-    $(function(){
-      var orderCode=decodeURIComponent(getParam("orderCode"))
-      var payTimestamp=decodeURIComponent(getParam("payTime"))
-      var payway=decodeURIComponent(getParam("payway"))
-      
-      var d = new Date(payTimestamp * 1000);    //根据时间戳生成的时间对象
-      var payTime = (d.getFullYear()) + "/" + 
-                 (Array(2).join(0)+(d.getMonth() + 1)).slice(-2) + "/" +
-                 (Array(2).join(0)+(d.getDate())).slice(-2)+ " " + 
-                 (Array(2).join(0)+(d.getHours())).slice(-2)+ ":" + 
-                 (Array(2).join(0)+(d.getMinutes())).slice(-2) + ":" + 
-                 (Array(2).join(0)+(d.getSeconds())).slice(-2);
-                
-      $(".paytime").text(payTime);
-      $(".orderCode").text(orderCode);
-      $(".payway").text(payway);
-       
-    })*/
     $(function(){
       //查看订单
       $(".left_btn").on("click",function(){
@@ -83,9 +63,11 @@
           if(r.pay_way){
             var payway
             if(r.pay_way.indexOf("wx")>-1){
-              payway="微信支付"
+              payway="微信支付";
+            }else if(r.pay_way.indexOf("ali")>-1){
+              payway="支付宝支付";
             }else{
-              payway="支付宝支付"
+              $(".pay_mode").css("display","none");
             }
             $(".payway").text(payway);
           }

+ 127 - 101
src/web/templates/weixin/vipsubscribe/vip_purchase.html

@@ -20,8 +20,11 @@
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseArea">
                         <span class="label">区域</span>
-                        <!-- <input type="text" disabled value="" placeholder="选择全国、省份、地市" class="info"> -->
-                        <input type="text" disabled value="" placeholder="1个市" class="info choose_area">
+                        {{if not .T.isTrial }}
+                          <input type="text" disabled value="" placeholder="1个市" class="info choose_area">
+                        {{else}}
+                         <input type="text" disabled value="" placeholder="选择全国、省份、地市" class="info choose_area"> 
+                        {{end}}
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <!-- 无选择时不显示 -->
@@ -30,8 +33,11 @@
                 <li class="choose_item">
                     <a href="/front/vipsubscribe/toChooseIndustry">
                         <span class="label">行业</span>
-                        <!-- <input type="text" disabled value="" placeholder="选择采购单位行业" class="info"> -->
-                        <input type="text" disabled value="" placeholder="1个行业" class="info choose_industry">
+                        {{if not .T.isTrial }}
+                          <input type="text" disabled value="" placeholder="1个行业" class="info choose_industry">
+                        {{else}}
+                          <input type="text" disabled value="" placeholder="选择采购单位行业" class="info choose_industry">
+                        {{end}}
                         <i class="iconfont icon-arrow"></i>
                     </a>
                     <!-- 无选择时不显示 -->
@@ -40,18 +46,23 @@
                 <li class="choose_item select_cycle">
                     <!-- 需要选择订阅周期就用a标签,div.class="free-7day"隐藏 -->
                     <!-- 需要选择试用就用div标签,a标签隐藏 -->
-                    <a href="javascript:;">
+                    {{if not .T.isTrial }}
+                      <a href="javascript:;">
                         <span class="label">订阅周期</span>
                         <input type="text" disabled value="1个月" class="info choose_time">
                         <i class="iconfont icon-arrow choose_time"></i>
-                    </a>
-                    <!-- <div class="free-7day" style="display: none">
-                            <span class="label">订阅周期</span>   
-                            <i class="info">免费试用7天</i>
-                        </div> -->
+                      </a>
+                    {{else}}
+                      <div class="free-7day" >
+                          <span class="label">订阅周期</span>   
+                          <i class="info">免费试用7天</i>
+                      </div>
+                    {{end}}
+                    
                 </li>
             </ul>
             <div class="pay_mode">
+                {{if not .T.isTrial }}
                 <div class="select_payment choose_item">
                     <a href="javascript:;">
                         <span class="label">支付方式</span>
@@ -59,18 +70,21 @@
                         <i class="iconfont icon-arrow choose_way"></i>
                     </a>
                 </div>
+                {{end}}
                 <div class="vip_rules">
-                    <div class="auto_renew weui-cells_checkbox radio-form">
-                        <label class="weui-cell weui-check__label" for="auto-renew">
-                            <div class="weui-cell__hd">
-                                <input type="checkbox" class="weui-check" name="autoRenewService" id="auto-renew" />
-                                <i class="weui-icon-checked"></i>
-                            </div>
-                            <div class="weui-cell__bd read">
-                                <p>开通自动续费,根据当前订阅条件,服务到期时系统将为您自动续费</p>
-                            </div>
-                        </label>
-                    </div>
+                    {{if not .T.isTrial }}
+                      <div class="auto_renew weui-cells_checkbox radio-form">
+                          <label class="weui-cell weui-check__label" for="auto-renew">
+                              <div class="weui-cell__hd">
+                                  <input type="checkbox" class="weui-check" name="autoRenewService" id="auto-renew" />
+                                  <i class="weui-icon-checked"></i>
+                              </div>
+                              <div class="weui-cell__bd read">
+                                  <p>开通自动续费,根据当前订阅条件,服务到期时系统将为您自动续费</p>
+                              </div>
+                          </label>
+                      </div>
+                    {{end}}
                     <div class="vip_prise_table">
                         <table class="monthly">
                             <caption class="table_title">- VIP订阅价格 -</caption>
@@ -207,7 +221,7 @@
                 </div>
             </div>
         </div>
-        <!-- 选择支付方式 -->
+        <!-- 选择支付方式 -->        
         <div class="js_dialog pay_way" id="pay_way" style="display: none;">
             <div class="weui-mask"></div>
             <div class="box">
@@ -246,33 +260,66 @@
     <script src="/vipsubscribe/js/weui.min.js?v={{Msg "seo" "version"}}"></script>
     <script src="/vipsubscribe/js/common.js?v={{Msg "seo" "version"}}"></script>
     <script>
-			var signature = {{.T.signature}};
-			var isConfigSuccess = true;
-			var id = {{.T._id}}
-			if(signature && signature.length == 4){
-				wx.config({
-				    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
-				    appId: signature[0], // 必填,公众号的唯一标识
-				    timestamp:signature[1], // 必填,生成签名的时间戳
-				    nonceStr: signature[2], // 必填,生成签名的随机串
-				    signature: signature[3],// 必填,签名,见附录1
-				    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
-				});
-				wx.ready(function () {
-					if(!isConfigSuccess){
-						return;
-					}
-					wx.hideAllNonBaseMenuItem();
-			    });
-				wx.error(function(res){
-				    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
-					//alert(res);
-					isConfigSuccess = false;
-				});
-			}
-		</script>
-    
-    <script>
+      //微信支付start
+      {{if not .T.isTrial }}
+  			var signature = {{.T.signature}};
+  			var isConfigSuccess = true;
+  			var id = {{.T._id}}
+  			if(signature && signature.length == 4){
+  				wx.config({
+  				    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+  				    appId: signature[0], // 必填,公众号的唯一标识
+  				    timestamp:signature[1], // 必填,生成签名的时间戳
+  				    nonceStr: signature[2], // 必填,生成签名的随机串
+  				    signature: signature[3],// 必填,签名,见附录1
+  				    jsApiList: ['chooseWXPay','hideAllNonBaseMenuItem'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+  				});
+  				wx.ready(function () {
+  					if(!isConfigSuccess){
+  						return;
+  					}
+  					wx.hideAllNonBaseMenuItem();
+  			    });
+  				wx.error(function(res){
+  				    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+  					//alert(res);
+  					isConfigSuccess = false;
+  				});
+  			}
+        //调用微信支付接口
+  			function onBridgeReady(res,ordercode){
+  			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
+  			    		"appId": res["appId"],
+  			          	"timeStamp": res["timestamp"],
+  			          	"nonceStr": res["nonceStr"],
+  			          	"package": res["prepayId"],
+  			          	"signType": res["signType"],
+  			         	"paySign": res["sign"]
+  					},
+  					function(r){
+  				    if(r.err_msg == "get_brand_wcpay_request:ok"){
+  							setTimeout(function(){
+  								window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+  							},500)
+  						}else if(r.err_msg == "get_brand_wcpay_request:cancel"){               
+                alert("开发环境【支付跳转完成】")
+                try{
+  								window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
+                }catch(e){
+                  alert(e)
+                }
+  						}else{
+                weui.toast("系统异常,请稍微再试",{
+                  duration: 2000,
+                  className: 'custom-toast',
+                });
+  					  }
+  				});
+  			}        
+      //微信支付end
+      {{else}}
+      //试用
+      {{end}}
       var purchase = {
         areaSelect:{},//已选择地区
         industrySelect:[],
@@ -500,10 +547,11 @@
             $("input").bind("input propertychange change", function (event) {
               checkOk();  
             });
-            
+            var canpay=true;
             $('#payHandle').click(function () {
                 if(!canpay)return
                 canpay=false
+                setTimeout(function(){canpay=true},1000)
                 //支付请求
                 var area=purchase.areaSelect;
                 var industry=purchase.industrySelect;
@@ -513,14 +561,26 @@
                 if(industry.length==1&&industry[0]=="全部行业"){
                   industry=[];
                 }
-                var payWay=$('input:radio[name="way"]:checked').val();
-                var time=$(".info:eq(2)").val().trim();
-              
-                $DoPost("/front/vipsubscribe/createOrder",{"area":JSON.stringify(area),"industry":industry.join(","),"time":time,"payWay":payWay},function(r){
-                  if(r.success){
-                    onBridgeReady(JSON.parse(r.data.res),r.data.code);
-                  }
-                })
+                {{if not .T.isTrial}}
+                  //付费用户
+                  var payWay=$('input:radio[name="way"]:checked').val();
+                  var time=$(".info:eq(2)").val().trim();
+                  
+                  $DoPost("/front/vipsubscribe/createOrder",{"area":JSON.stringify(area),"industry":industry.join(","),"time":time,"payWay":payWay},function(r){
+                    if(r.success){
+                      clearSessionStorage();
+                      onBridgeReady(JSON.parse(r.data.res),r.data.code);
+                    }                    
+                  })
+                {{else}} 
+                  //试用用户
+                  $DoPost("/subscribepay/order/trialPay",{"area":JSON.stringify(area),"industry":industry.join(",")},function(r){
+                    if(r.success){
+                      clearSessionStorage();
+                      window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+r.data.code);
+                    }
+                  }) 
+                {{end}}
             })
           
         })
@@ -534,57 +594,23 @@
           var area = $(".info:eq(0)").val().trim();
           var industry = $(".info:eq(1)").val().trim();
           var checked = $('#buy').prop('checked');
-          // console.log(area,industry,checked)
           if (area != '' && industry != '' && checked == true) {
-              console.info("所有输入框都有值")
               $(".enter").removeAttr('disabled');
           } else {
               $(".enter").attr({
                   'disabled': 'true'
               });
-              console.info("有输入框没有输入")
           }
           sessionStorage.setItem("vipSub_read",checked)
-        }
-      var canpay=true; 
-      //调用微信支付接口
-			function onBridgeReady(res,ordercode){
-			   	WeixinJSBridge.invoke('getBrandWCPayRequest',{
-			    		"appId": res["appId"],
-			          	"timeStamp": res["timestamp"],
-			          	"nonceStr": res["nonceStr"],
-			          	"package": res["prepayId"],
-			          	"signType": res["signType"],
-			         	"paySign": res["sign"]
-					},
-					function(r){
-				    if(r.err_msg == "get_brand_wcpay_request:ok"){
-							//清除我已阅读缓存
-							sessionStorage.removeItem("vipSubSelectArea");
-							sessionStorage.removeItem("vipSubSelectIndustry");
-							sessionStorage.removeItem("vipSub_read");
-							$(".enter").attr("disabled","disabled");
-							setTimeout(function(){
-								window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-							},500)
-						}else if(r.err_msg == "get_brand_wcpay_request:cancel"){
-							//取消支付 可以再次支付
-              canpay=true;
-              
-              alert("开发环境【支付跳转完成】")
-              try{
-								window.location.replace("/front/vipsubscribe/toPaySuccessPage?orderCode="+ordercode);
-              }catch(e){
-                alert(e)
-              }
-						}else{
-              weui.toast("系统异常,请稍微再试",{
-                duration: 2000,
-                className: 'custom-toast',
-              });
-					  }
-				});
-			}  
+        } 
+        
+        function clearSessionStorage(){
+          sessionStorage.removeItem("vipSubSelectArea");
+					sessionStorage.removeItem("vipSubSelectIndustry");
+					sessionStorage.removeItem("vipSub_read");
+					$(".enter").attr("disabled","disabled");  
+        };
+                   
     </script>
 </body>