// pages/integral/integral.js
import Integralinfo from '../../api/integralinfo'
import {getMobileCache, getPhoneNumberNew as getPhoneNumberSync} from '../../utils/user'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    lock: false,
    noResult: false,
    noMore: false,
    bannerList: [],
    couponList: [],
    channelid: '',
    shopid: '',
    storeid: '',
    bodyHidden: true,
    bgStatus: false,
    scorePhone: false,
    animationData: {},
    integralIngo:{},
    loading: false,
    setPhone: '',
    current: '',
    integralNum: 0,
    isQuery: false,
    phone: '********',
    // phone: '15888282621',
    mobile: '********',
    paymentStatus: false,
    paymentBgStatus: false,
    activeNum: 0,
    listTrue: [],
    listStatus: false,
    total: 0,
    row: {},
    codeName: '60s后重新获取',
    codeTime: '',
    active1obj: {
        orderId: '',
        order_no: '',
        step: ''
    },
    active1code: '',
    active2code: '',
    tgid: '',
    scene: '',
    noClick: true,
    showToastObj: {
        icon: '',
        title: '',
        status: false
    },
    isIphoneX:false,
    codeNum: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var reg = /^(\d{3})\d{4}(\d{4})$/;
    this.setData({
        isLogin: getMobileCache() != '',
        phone: getMobileCache() == ''?'********':getMobileCache().replace(reg, "$1****$2"),
        setPhone: getMobileCache(),
        mobile: getMobileCache(),
        channelid: options.channelid === undefined ? '' : options.channelid,
		shopid: options.shopid === undefined ? '' : options.shopid,
		storeid: options.storeid === undefined ? '' : options.storeid,
		tgid: options.tgid === undefined ? '' : options.tgid,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
      let _self = this;
      this.setData({
        isIphoneX:_self.isIphone()
      })
    this.getBannerList()
    // 获取优惠券列表
    this.getCouponList()
    if(getMobileCache() != ''){
        // this.findIntegral()
        this.getphoneClick()
    }  
  },

  /** 积分查询 */
  findIntegral: function(){
    Integralinfo.getBalance({
        mobile: getMobileCache(), 
        callbackUrl: '../integral/integral.wxml',
        fingerprint: '',
        sessionid: '',
        shopid: this.data.shopid,
        type: 'wx',
    }).then(arr => {
        if (arr.code === '0000') {
            var reg = /^(\d{3})\d{4}(\d{4})$/;
            this.setData({
                isLogin: getMobileCache() != '',
                phone: getMobileCache() == ''?'********':getMobileCache().replace(reg, "$1****$2"),
                setPhone: getMobileCache(),
                mobile: getMobileCache(),
                integralNum: arr.data,
                isQuery:true,
                codeNum: arr.code,
            })
            this.getCouponList()
           
        }
    }).catch(error=>{
        console.log(error);
        if (error.data.code === '2000') {
            this.setData({
                codeNum: error.data.code,
            })
            this.scoreClick()
        }
    })
  },

  /**
   * 判断是否是iphone
   */
  isIphone() {
    let isIphone = false
    wx.getSystemInfo({
      success: function(res) {
        if (res.model.indexOf('iPhone') >= 0) {
          isIphone = true;
        }
      }
    })
    return isIphone
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  getBannerList: function() {
    Integralinfo.getBannerList({
      channelid: this.data.channelid,
      shopid: this.data.shopid,
      storeid: this.data.storeid
    }).then(res => {
        console.log(res.data)
        this.setData({
            bannerList: res.data
        })
    }).catch(err => {
        console.log(err)
    })
},

 getCouponList: function() {
    Integralinfo.getList({
        channelid: this.data.channelid,
		shopid: this.data.shopid,
		storeid: this.data.storeid
    }).then(res => {
        this.couponListView(res.data)
        this.data.lock = false
    }).catch(_ => {
        console.log(_)
        this.data.lock = false
    })
},

couponListView: function(data) {
    if (!Array.isArray(data) || data.length == 0) {
        console.log("优惠券列表数据为空");
    }
    data.forEach((v) => {
        v.quantity = 0
        v.integral = v.price * v.ratio
    })
    if (this.data.mobile != '********') {
        let num = this.data.integralNum > 20000 ? 19999 : this.data.integralNum
        const arr = []
        this.setData({
            total: 0,
        })
        for (let i = 0; i < data.length; i++) {
            data[i].quantity = parseInt(num / data[i].integral)
            if (data[i].quantity > 0) {
                num -= (data[i].quantity * data[i].price) * data[i].ratio
                this.data.total += (data[i].quantity * data[i].price) * data[i].ratio
                this.setData({
                    total:this.data.total
                })
                arr.push(data[i])
                data.splice(i, 1)
                i--
            }
        }
        this.setData({
            couponList: [...arr, ...data]
        })
    } else {
        this.setData({
            couponList: data
        })
    }
    console.log(this.data.total)
 },
// 点击标识点触发
detailsClick(row) {
    this.hideModal();
    this.row = row.currentTarget.dataset.info
    console.log(this.row)
    if (this.row.detail_type === 0) {
        this.row.detailArr = this.row.detail.split('\n')
    } else {
        this.row.detailArr = row.detail
    }
    this.setData({
        integralIngo: this.row,
    })
    console.log(this.data.integralIngo)
    setTimeout(() => {
        this.showDodal();
    }, 100)
},

showDodal() {
    var that = this;
    // 显示遮罩层
    var animation = wx.createAnimation({
        duration: 150,
        timingFunction: "linear",
        delay: 0
    })
    this.setData({
        bgStatus: true,
        bodyHidden: false
    })
    
    that.animation = animation
    animation.translateY(-500).step()
    that.setData({
        animationData: animation.export()
    })
},

//隐藏对话框
hideModal() {
    var that = this;
    console.log(that.data)
    // 隐藏遮罩层
    var animation = wx.createAnimation({
        duration: 150,
        timingFunction: "linear",
        delay: 0
    })
    this.setData({
        bodyHidden: true,
        bgStatus: false,
        scorePhone: false,
    })
    
    that.animation = animation
    animation.translateY(0).step()
    that.setData({
        animationData: animation.export()
    })
},

// //隐藏对话框
// paymenHideModal() {
//     var that = this;
//     console.log(that.data)
//     this.setData({
//         bodyHidden: true,
//         paymentBgStatus: false,
//         paymentStatus: false,
//     })
    
// },

/**授权手机号 */
getPhoneNumber(e) {
    let that = this;
    getPhoneNumberSync(e, async () => {
        console.log(e)
        if (getMobileCache() == '') {
        wx.showToast({
            icon:'error',
            title:'先查询移动积分'
        })
        setTimeout(()=>{
            that.data.setPhone = ''
            that.scoreClick()
            // wx.hideLoading()
        },500)
    } else {
        var reg = /^(\d{3})\d{4}(\d{4})$/;
        this.setData({
            isLogin: true,
            setPhone: getMobileCache(),
            mobile:  getMobileCache(),
            phone: getMobileCache().replace(reg, "$1****$2")
        })     
        // console.log(this.data.setPhone)
        // console.log(this.data.mobile)
        // console.log(this.data.phone)
        this.getphoneClick()
    }
         
    })
  },

// 查询积分
scoreClick() {
    this.setData({
        bgStatus: true,
        scorePhone: true,
    })
},

// 查询积分
getphoneClick() {
    console.log(getMobileCache())
    if (!(/^1[3456789]\d{9}$/.test(getMobileCache()))) {
        wx.showToast({
            title: '填写正确手机号',
            icon: 'error',
            duration: 2000
        });
    } else if (getMobileCache() != '') {
        // wx.showLoading({
        //     title: '加载中'
        // });
        Integralinfo.getBalance({
            mobile: getMobileCache(), 
            callbackUrl: '../integral/integral.wxml',
            fingerprint: '',
            sessionid: '',
            shopid: this.data.shopid,
            type: 'wx',
        }).then(arr => {
            console.log(arr)
            // wx.hideLoading();
            if (arr.code === '0000') {
                var reg = /^(\d{3})\d{4}(\d{4})$/;
                this.setData({
                   integralNum: arr.data,
                   isQuery:true,
                   setPhone: getMobileCache(),
                   phone: getMobileCache().replace(reg, "$1****$2"),
                   codeNum: arr.code,
                })
                // this.data.integralNum = arr.data
                // var reg = /^(\d{3})\d{4}(\d{4})$/;
                // this.data.mobile = this.data.setPhone
                // this.data.setPhone = this.data.setPhone.replace(reg, "$1****$2");
                let response = {
                    points: arr.data,
                    outTokenId: this.data.setPhone + '_out'
                }
                // App.globalData.AppShow = response
                this.hideModal()
                this.getCouponList()
                wx.pageScrollTo({
                    scrollTop: 0
                });
                let dateNum = Math.round(new Date().getTime() / 1000).toString();
                const data = JSON.parse(wx.getStorageSync('orderDetails'))
                if (wx.getStorageSync('orderDetails') != '' && this.data.mobile == data.mobile) {
                            console.log(dateNum - data.date)
                    if (dateNum - data.date <= 120) {
                        let codeName = "重新获取验证码"
                        if (dateNum - data.date < 60) {
                            let time = dateNum - data.date
                            codeName = 60 - time + 's后重新获取'
                            this.codeSetInterval(60 - time)
                        }
                        this.setData({
                            paymentStatus: true,
                            paymentBgStatus: true,
                            active1code: '',
                            active2code: '',
                            active1obj: data,
                            codeName:codeName
                        })
                       
                        if (data.step === 1) {
                            this.setData({
                                activeNum: 1,
                            })
                        } else if (data.step === 2) {
                            this.setData({
                                activeNum: 0,
                            })
                        }
                    }else{
                        wx.setStorageSync('orderDetails', null)
                    }
                }
            } 
        }).catch(error => {
           console.log(error)
           let arr = error.data
           console.log(arr)
           if(arr.code ==='2000'){
            this.setData({
                scorePhone: false,
                loading: true,
                bgStatus: true,
                codeNum: arr.code,
            })
            
            setTimeout(() => {
                // #ifdef H5
                // window.location.href = arr.message;
                // #endif

                // #ifdef MP-WEIXIN
                const version = wx.getSystemInfoSync().SDKVersion

                if (this.compareVersion(version, '2.20.1') >= 0) {
                    wx.openEmbeddedMiniProgram({
                        appId: arr.data.appId,
                        path: arr.data.path,
                        extraData: arr.data.extraData,
                        success(res) {
                            // 打开成功
                        },
                        fail() {}
                    })
                } else {
                    // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
                    wx.navigateToMiniProgram({
                        appId: arr.data.appId,
                        path: arr.data.path,
                        extraData: arr.data.extraData,
                        success(res) {
                            // 打开成功
                        },
                        fail() {

                        }
                    })
                }
                // #endif
                this.hideModal()
                this.setData({
                    loading: false
                })
            }, 4000)
           }
        })
    }
},

// 商品数量减少按钮
reduceClick(e) {
    console.log(e.currentTarget.dataset.index)
    let index = e.currentTarget.dataset.index
    this.data.couponList[index].quantity--
    this.data.total -= parseInt(this.data.couponList[index].integral)
    this.setData({
        total: this.data.total,
        couponList: this.data.couponList
    })
},
// 商品数量添加按钮
addClick(e) {
   let index = e.currentTarget.dataset.index
   this.findIntegral()
    if (this.data.phone !== '********' && this.data.codeNum === '0000') {
        if (this.data.total + parseInt(this.data.couponList[index].integral) > 20000) {
            wx.showToast({
                title: '单笔限额两万分',
                icon: 'error',
                duration: 2000
            });
        } else if ((this.data.integralNum - this.data.total) >= this.data.couponList[index].integral) {
            this.data.couponList[index].quantity++
            this.data.total += parseInt(this.data.couponList[index].integral)
            this.setData({
                total: this.data.total,
                couponList:this.data.couponList
            })
        } else {
            wx.showToast({
                title: '积分不足',
                icon: 'error',
                duration: 2000
            });
        }

    } else {
        // wx.showToast({
        //     title: '先查询移动积分',
        //     icon: 'error',
        //     duration: 1000
        // });
        // setTimeout(() => {
        //     this.scoreClick()
        // }, 1000)
        this.scoreClick()
    }
},
/** 刷新 */
shuaxinClick() {
    Integralinfo.getBalance({
        mobile:  getMobileCache(), 
        callbackUrl: '../integral/integral.wxml',
        fingerprint: '',
        sessionid: '',
        shopid: this.data.shopid,
        type: 'wx',
    }).then(arr => {
        if (arr.code === '0000') {
            // wx.hideLoading();
            wx.showToast({
                title: '查询成功!',
                icon: 'success',
                duration: 1000
            });
            
            var reg = /^(\d{3})\d{4}(\d{4})$/;
            this.setData({
               integralNum: arr.data,
               isQuery:true,
               setPhone:  getMobileCache(),
               phone: getMobileCache().replace(reg, "$1****$2"),
            })
           
        }
    }).catch(error=>{
        console.log(222222)
        console.log(error)
    })
},

// 支付按钮
paymentClick() {
    console.log(this.data.mobile)
    if (this.data.mobile === '********') {
        setTimeout(() => {
            this.scoreClick()
        }, 1000)
        wx.showToast({
            title: '先查询移动积分',
            icon: 'error',
            duration: 1000
        });
    } else if (this.data.total === 0) {
        wx.showToast({
            title: '请选择商品数量',
            icon: 'error',
            duration: 2000
        });
    } else {
        const data = []
        this.data.couponList.forEach(v => {
            if (v.quantity > 0) {
                data.push({
                    couponid: v.id,
                    num: v.quantity,
                })
            }
        })

        // let fingerprint = ''
        // let sessionid = ''

        // // #ifndef MP-WEIXIN
        // fingerprint = window.fmOpt
        // sessionid = window.sessionId
        // // #endif

        Integralinfo.getOrder({
            fingerprint:'',
            list: data,
            mobile: getMobileCache(), 
            tgid: this.data.tgid,
            sessionid:'',
            shopid: this.data.shopid
        }).then(res => {
                if (res.code === '0000') {
                    this.codeSetInterval(60)
                    this.setData({
                        codeName: '60s后重新获取',
                        paymentStatus: true,
                        paymentBgStatus: true,
                        active1code: '',
                        active2code: '',
                        active1obj:{
                            orderId: res.data.orderId,
                            order_no: res.data.order_no,
                            step: res.data.step,
                            date: Math.round(new Date().getTime() / 1000).toString(),
                            mobile: getMobileCache()
                        },
                       
                    })
                    wx.setStorageSync('orderDetails', JSON.stringify(this.data.active1obj))
                    if (res.data.step === 1) {
                        this.setData({
                            activeNum: 1,
                        })
                    } else if (res.data.step === 2) {
                        this.setData({
                            activeNum: 0,
                        })
                    }
                    console.log(res.data.step,this.data.activeNum)
                    // this.getPaySend()
                } else {
                    console.log(res.message)
                    console.log(this.data.integralNum,this.data.mobile,JSON.stringify(data))
                    // log.error(`${res.data.message}`)
                    // log.error(`${this.data.integralNum},${this.data.mobile},${JSON.stringify(data)}`)
                   
                    wx.showToast({
                        icon: 'none',
                        title: res.message
                    })
                }

            }).catch(error=>{
                console.log('zhifu')
                console.log(error.data.message)
                wx.showToast({
                    icon: 'none',
                    title: error.data.message
                })
            })
        }
    },
    // 步骤按钮
    nextCodeClick() {
        console.log(this.data.activeNum,this.data.active2code)
        if (this.data.activeNum === 1 && this.data.active2code !== '') {
            // wx.showLoading({
            //     title: '兑换中'
            // });
            // let fingerprint = ''
            // let sessionid = ''

            // // #ifndef MP-WEIXIN
            // fingerprint = window.fmOpt
            // sessionid = window.sessionId
            // #endif
            Integralinfo.getPayOnce({
                fingerprint: '',
                mobile: getMobileCache(),
                optCode: this.data.active2code,
                order_no: this.data.active1obj.order_no,
                orderId: this.data.active1obj.orderId,
                sessionid: '',
                shopid: this.data.shopid
            }).then(res => {
                    if (res.code === '0000') {
                        const obj = {
                            mobile: this.data.mobile,
                            channelid: this.data.channelid,
                            shopid: this.data.shopid,
                            storeid: this.data.storeid
                        }
                        this.data.integralNum -= this.data.total
                        this.setData({
                            integralNum: this.data.integralNum,
                            isQuery:true,
                            total: 0,
                            listStatus: false,
                            listTrue: [],
                        })
                        this.data.couponList.forEach((v)=>{
                            v.quantity = 0
                        })
                        this.setData({
                            couponList: this.data.couponList,
                            paymentStatus: false,
                            paymentBgStatus: false,
                        })
                        wx.setStorageSync('orderDetails', null)
                        // wx.hideLoading();
                        wx.navigateTo({
                            url: '../integral/success?row=' + JSON.stringify(obj)
                        })
                    } else {
                        // wx.hideLoading();
                        wx.showToast({
                            icon: 'none',
                            title: res.message
                        })
                    }
            }).catch(error => {
                let res = error.data;
                wx.showToast({
                    icon: 'none',
                    title: res.message
                })
            });
        } else if (this.data.activeNum === 0 && this.data.active1code !== '') {
            Integralinfo.getExchange({
                fingerprint: '',
                mobile: getMobileCache(),
                optCode: this.data.active1code,
                orderId: this.data.active1obj.orderId,
                order_no: this.data.active1obj.order_no,
                sessionid: '',
                shopid: this.data.shopid
            }).then(res => {
                if (res.code === '0000') {
                    clearInterval(this.data.codeTime)
                    this.setData({
                        active2code: '',
                        activeNum: this.activeNum++,
                        codeName: '60s后重新获取',
                    })
                    this.codeSetInterval(60)
                } else {
                    wx.showToast({
                        icon: 'none',
                        title: res.message
                    })
                }
            }).catch(error => {
               let res = error.data;
               wx.showToast({
                icon: 'none',
                title: res.message
               })
           
            })
        } else {
            wx.showToast({
                icon: 'error',
                title: '请填写验证码'
            })
        }
    },
    // 短信定时器
    codeSetInterval(num) {
        console.log(num)
        let time = num
        this.data.codeTime = setInterval(() => {
            if (time <= 1) {
                this.setData({
                    codeName: '重新获取验证码',
                })
                clearInterval(this.data.codeTime)
            } else {
                time--
                this.setData({
                    codeName:`${time}s后重新获取`
                })
            }
        }, 1000)
    },

    getPaySend(){
        if (this.data.activeNum === 1) {
            console.log('发送短信')
            Integralinfo.getPaySend({
                order_no: this.data.active1obj.order_no,
                mobile: getMobileCache(),
                shopid: this.data.shopid,
            }).then(res => {
                        if (res.code === '0000') {
                            this.setData({
                                codeName: '60s后重新获取',
                            })
                            this.codeSetInterval(60)
                        } else {
                            wx.showToast({
                                icon: 'none',
                                title: res.message
                            })
                        }
                }).catch(error=>{
                    console.log('duanxin')
                    console.log(error)
                })
        }
    },

    // 重新获取短信
    getCodeClick() {
        console.log(this.data.activeNum,this.data.codeName,this.data.active1obj.step)
        if ((this.data.activeNum === 1 && this.data.codeName === '重新获取验证码') && this.data.active1obj.step === 1) {
            Integralinfo.getSendCmccSms({
                orderId: this.data.active1obj.orderId,
                mobile: getMobileCache(),
                shopid: this.data.shopid
            }).then(res => {
                    if (res.code === '0000') {
                        this.setData({
                            codeName: '60s后重新获取',
                        })
                        this.codeSetInterval(60)
                        const obj = this.data.active1obj
                        obj.date = Math.round(new Date().getTime() / 1000).toString()
                        wx.setStorageSync('orderDetails', JSON.stringify(obj))
                    } else {
                        wx.showToast({
                            icon: 'none',
                            title: res.message
                        })
                    }
            }).catch(error=>{
                console.log('chongxin')
                console.log(error)
                wx.showToast({
                    icon: 'none',
                    title: error.data.message
                })
            });
        } else {
            if (this.data.activeNum === 0 && this.data.codeName === '重新获取验证码') {
                Integralinfo.getSendCmccSms({
                    orderId: this.data.active1obj.orderId,
                    mobile: getMobileCache(),
                    shopid: this.data.shopid
                }).then(res => {
                        if (res.code === '0000') {
                            this.codeName = '60s后重新获取'
                            this.codeSetInterval(60)
                        } else {
                            wx.showToast({
                                icon: 'none',
                                title: res.message
                            })
                        }
                }).catch(error=>{
                    console.log('chongxin')
                    console.log(error)
                });
            } else if (this.data.activeNum === 1 && this.data.codeName === '重新获取验证码') {
                console.log('短信')
                Integralinfo.getPaySend({
                    order_no: this.data.active1obj.order_no,
                    mobile: getMobileCache(),
                    shopid: this.data.shopid,
                }).then(res => {
                        if (res.code === '0000') {
                            this.setData({
                                codeName: '60s后重新获取',
                            })
                            this.codeSetInterval(60)
                        } else {
                            wx.showToast({
                                icon: 'none',
                                title: res.message
                            })
                        }
                }).catch(error=>{
                    console.log('chongxin')
                    console.log(error)
                });
            }
        }
    },

    toExchange(){
        const obj = {
            mobile: getMobileCache(),
            channelid: this.data.channelid,
            shopid: this.data.shopid,
            storeid: this.data.storeid
        }
        wx.navigateTo({
            url: '../integral/exchange?obj=' + JSON.stringify(obj)
        })
    },
    compareVersion(v1, v2) {
        v1 = v1.split('.')
        v2 = v2.split('.')
        const len = Math.max(v1.length, v2.length)

        while (v1.length < len) {
            v1.push('0')
        }
        while (v2.length < len) {
            v2.push('0')
        }

        for (let i = 0; i < len; i++) {
            const num1 = parseInt(v1[i])
            const num2 = parseInt(v2[i])

            if (num1 > num2) {
                return 1
            } else if (num1 < num2) {
                return -1
            }
        }

        return 0
    },
       
})