var util = require('../../../utils/util.js');
var api = require('../../../config/api.js');

var app = getApp();
var dateArray = [];

Page({
  data: {
    checkedGoodsList: [],
    addressVo: {},
    checkedCoupon: [],
    couponList: [],
    goodsBizTypeList: ['00','02','10','11'],
    goodsTotalPrice: 0.00, //商品总价
    freightPrice00: 0.00,    //备货业务快递费
    freightPrice02: 0.00,    //补货业务快递费
    freightPrice10: 0.00,    //现场发包快递费
    freightPrice11: 0.00,    //普通商品快递费
    couponPrice: 0.00,     //优惠券的价格
    orderTotalPrice: 0.00,  //订单总价
    actualPrice: 0.00,     //实际需要支付的总价
    userCouponId: 0,
    fullCutCouponId: 0,
    fullCutCouponDec: 0, //满减优惠券
    goodsTotalByType00: 0,//备货业务商品总计
    goodsTotalByType02: 0,//补货业务商品总计
    goodsTotalByType10: 0,//现场发包商品总计
    goodsTotalByType11: 0, //普通商品商品总计
    postscript: "",
    postscript00: '',//备货业务备注
    postscript02: '',//补货业务备注
    postscript10: '',//现场发包备注
    postscript11: '',//普通商品备注
    checkStore: false,
    storeVo: {},
    delivery_date: '',
    delivery_remark: '尽快送达',
    multiArray: [],
    multiIndex: [0, 0],
    timeArray: util.getNowTimeArray(),
    idNo: '',
    userName: '',
    idNoM: '',
    idNoDisabled: false
  },
  bindMultiPickerColumnChange: function (e) {
    let that = this;
    console.log('修改的列为', e.detail.column, '，值为', e.detail.value);
    var data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    };
    data.multiIndex[e.detail.column] = e.detail.value
    if (e.detail.column == 0){
      data.multiIndex[1] = 0
    }
    let timeArray = that.data.timeArray;
    if (data.multiIndex[0] == 1){
      timeArray =  util.timeArray.slice(0);
    }else{
      timeArray = util.getNowTimeArray();
    }
    data.timeArray = timeArray;
    data.multiArray[1] = timeArray;
    this.setData(data)
  },
  bindMultiPickerChange: function (e) {
    let that = this;
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value,
      delivery_date: dateArray[e.detail.value[0]],
      delivery_remark: e.detail.value[0] == 0 ? that.data.timeArray[e.detail.value[1]] : that.data.timeArray[e.detail.value[1]]
    })
    console.log('delivery_date', this.data.delivery_date, ',delivery_remark', this.data.delivery_remark)
  },
  initPicker(){
    let that = this;
    let date = new Date();
    let hours = date.getHours();
    let minutes = date.getMinutes();
    let index = 0;
    var today = util.getNowTime();
    var tomorrow = util.getDateStr(new Date(),1);
    dateArray = [today, tomorrow];
    this.setData({
      'multiArray[0]': dateArray,
      'multiArray[1]': that.data.timeArray,
    })
  }, 
  formatidcard(idcard) {
    if (idcard.length == 15) {
      return idcard.replace(/(\d{6})\d{6}(\d{3})/, "$1******$2");
    } else {
      return idcard.replace(/(\d{5})\d{6}(\d{6})/, "$1******$2");
    }
  },
  getCheckoutInfo: function () {
    let that = this;
    util.request(api.CartCheckout, { userCouponId: that.data.userCouponId }).then(function (res) {
      if (res.errno === 0) {
        console.log(res.data);
        that.setData({
          checkedGoodsList: res.data.checkedGoodsList,
          actualPrice: res.data.actualPrice,
          // addressVo: res.data.addressVo,
          checkedCoupon: res.data.checkedCoupon,
          couponList: res.data.couponList,
          fullCutCouponId: res.data.fullCutCouponId,
          couponPrice: res.data.couponPrice,
          freightPrice00: res.data.freightPrice00,
          freightPrice02: res.data.freightPrice02,
          freightPrice10: res.data.freightPrice10,
          freightPrice11: res.data.freightPrice11,
          goodsTotalPrice: res.data.goodsTotalPrice,
          orderTotalPrice: res.data.orderTotalPrice,
          fullCutCouponDec: res.data.fullCutCouponDec,
          userName: res.data.userName,
          idNo: res.data.idNo
        });

        if (that.data.addressVo != null && null == that.data.addressVo.id){
          that.setData({
            addressVo: res.data.addressVo
          });
        } 
        if (that.data.idNo) {
          that.setData({
            idNoM: that.formatidcard(that.data.idNo)
          });
        }
        if(that.data.idNo){
          that.setData({
            idNoDisabled: true
          });
        }
        let num00 = 0;
        let num02 = 0;
        let num10 = 0;
        let num11 = 0;
        
        let goodsTotalPrice00 = 0;
        let goodsTotalPrice02 = 0;
        let goodsTotalPrice10 = 0;
        let goodsTotalPrice11 = 0;
        for (var i = 0; i < that.data.checkedGoodsList.length; i++) {
          if ('00' == that.data.checkedGoodsList[i].goodsBizType) {
            num00 = num00 + that.data.checkedGoodsList[i].number;
            goodsTotalPrice00 = goodsTotalPrice00 + 
              (that.data.checkedGoodsList[i].retail_price * that.data.checkedGoodsList[i].number);
          }
          if ('02' == that.data.checkedGoodsList[i].goodsBizType) {
            num02 = num02 + that.data.checkedGoodsList[i].number;
            goodsTotalPrice02 = goodsTotalPrice02 +
              (that.data.checkedGoodsList[i].retail_price * that.data.checkedGoodsList[i].number);
          }
          if ('10' == that.data.checkedGoodsList[i].goodsBizType) {
            num10 = num10 + that.data.checkedGoodsList[i].number;
            goodsTotalPrice10 = goodsTotalPrice10 +
              (that.data.checkedGoodsList[i].retail_price * that.data.checkedGoodsList[i].number);
          }
          if ('11' == that.data.checkedGoodsList[i].goodsBizType) {
            num11 = num11 + that.data.checkedGoodsList[i].number;
            goodsTotalPrice11 = goodsTotalPrice11 +
              (that.data.checkedGoodsList[i].retail_price * that.data.checkedGoodsList[i].number);
          }
        }
        that.setData({
          goodsTotalByType00: num00,
          goodsTotalByType02: num02,
          goodsTotalByType10: num10,
          goodsTotalByType11: num11,
          goodsTotalPrice00: goodsTotalPrice00 + that.data.freightPrice00,
          goodsTotalPrice02: goodsTotalPrice02 + that.data.freightPrice02,
          goodsTotalPrice10: goodsTotalPrice10 + that.data.freightPrice10,
          goodsTotalPrice11: goodsTotalPrice11 + that.data.freightPrice11
        });
        // console.log(that.data.goodsTotalByType00);
        // console.log(that.data.goodsTotalByType02);
        // console.log(that.data.goodsTotalByType10);
        // console.log(that.data.goodsTotalByType11);

        // 选择优惠券
        if (that.data.userCouponId && that.data.couponList.length > 0) {
          for (var i = 0; i < that.data.couponList.length; i++) {
            if (that.data.userCouponId == that.data.couponList[i].id) {
              that.setData({
                checkedCoupon: that.data.couponList[i],
                couponPrice: that.data.couponList[i].type_money
              });
              break;
            }
          }
        }
      }
      wx.hideLoading();
      that.checkStore();
    });
  },
  selectAddress() {
    this.setData({
      checkStore: false
    });
    wx.navigateTo({
      url: '/pages/shopping/address/address',
    })
  },
  addAddress() {
    wx.navigateTo({
      url: '/pages/shopping/addressAdd/addressAdd',
    })
  },

  selectCoupon() {
    let that = this;
    wx.navigateTo({
      url: '/pages/shopping/coupon/coupon',
    })
  },
  bindPostscriptBlur(e) {
    let goodsType = e.target.dataset.goodsType;
    if (goodsType == '00') {
      this.setData({
        postscript00: e.detail.value
      });
    }
    if (goodsType == '02') {
      this.setData({
        postscript02: e.detail.value
      });
    }
    if (goodsType == '10') {
      this.setData({
        postscript10: e.detail.value
      });
    }
    if (goodsType == '11') {
      this.setData({
        postscript11: e.detail.value
      });
    }
  },
  submitOrder: function (e) {
    // console.log(e.detail.formId);

    if (!this.data.addressVo) {
      util.showErrorToast('请选择收货地址');
      return false;
    }

    if (!e.detail.value.idNo) {
      util.showErrorToast('身份证号不能为空');
      return false;
    }

    if (!e.detail.value.userName) {
      util.showErrorToast('姓名不能为空');
      return false;
    }
    if (this.data.idNoM == '') {
      this.setData({
        idNo: e.detail.value.idNo,
        userName: e.detail.value.userName
      });
    }
    if (!this.checkIdcard(this.data.idNo)){
        wx.showModal({
          title: '提示信息',
          content: '请输入正确的身份证号',
          showCancel: false
        });
      return false;
    }

    // if (!this.data.checkStore || !this.data.checkStore) {
    //   util.showErrorToast('超过门店配送范围');
    //   return false;
    // }

    let that = this;
    // console.log(that.data.postscript00);
    // console.log(that.data.postscript02);
    // console.log(that.data.postscript10);
    // console.log(that.data.postscript11);

    util.request(api.OrderSubmit, {
      checkedAddress: that.data.addressVo,
      userCouponId: that.data.userCouponId,
      fullCutCouponId: that.data.fullCutCouponId,
      postscript00: that.data.postscript00,
      postscript02: that.data.postscript02,
      postscript10: that.data.postscript10,
      postscript11: that.data.postscript11,
      delivery_date: that.data.delivery_date,
      delivery_remark: that.data.delivery_remark,
      idNo: that.data.idNo,
      userName: that.data.userName

    }, 'POST').then(function (res) {
      if (res.errno === 0) {
        let actualPrice = that.data.actualPrice;
        let orderIds = [];
        for (let i = 0; i < res.data.orderInfo.length; i++){
          orderIds[i] = res.data.orderInfo[i].id;
        }
        wx.redirectTo({
          url: '/pages/pay/pay?orderIds=' + orderIds + '&actualPrice=' + actualPrice
        })

      } else {
        wx.showModal({
          title: '提示信息',
          content: res.errmsg,
          showCancel: false
        });
      }
    });
  },
  // 校验门店
  checkStore: function () {
    let that = this;
    util.request(api.CheckStore, {
      checkedAddress: that.data.addressVo,
      storeId: wx.getStorageSync('storeId')
    }, 'POST').then(function (res) {
      if (res.errno === 0) {
        that.setData({
          storeVo: res.data,
          checkStore: true
        });
      } else{
        // console.log(res.errmsg);
        // util.showErrorToast(res.errmsg);
        that.setData({
          checkStore: false
        });
      }
    });
  },
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
  },
  onReady: function () {
    // 页面渲染完成

  },
  onShow: function () {
    // 页面显示
    wx.showLoading({
      title: '加载中...',
    })
    this.getCheckoutInfo();
    this.initPicker()
  },
  onHide: function () {
    // 页面隐藏

  },
  onUnload: function () {
    // 页面关闭

  },
  // 校验身份证号
//校验码校验
checkCode: function (val) {
    var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
    var code = val.substring(17);
    if (p.test(val)) {
      var sum = 0;
      for (var i = 0; i < 17; i++) {
        sum += val[i] * factor[i];
      }
      if (parity[sum % 11] == code.toUpperCase()) {
        return true;
      }
    }
    return false;
  },
  //省份校验
  checkProv: function (val) {
    var pattern = /^[1-9][0-9]/;
    var provs = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门" };
    if (pattern.test(val)) {
      if (provs[val]) {
        return true;
      }
    }
    return false;
  },
  //出生日期码校验
  checkDate: function (val) {
    var pattern = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;
    if (pattern.test(val)) {
      var year = val.substring(0, 4);
      var month = val.substring(4, 6);
      var date = val.substring(6, 8);
      var date2 = new Date(year + "-" + month + "-" + date);
      if (date2 && date2.getMonth() == (parseInt(month) - 1)) {
        return true;
      }
    }
    return false;
  },
  checkIdcard: function (val) {
    if (this.checkCode(val)) {
      var date = val.substring(6, 14);
      if (this.checkDate(date)) {
        if (this.checkProv(val.substring(0, 2))) {
          return true;
        }
      }
    }
    // this.isError("请输入正确身份证号");
    return false;
  },
// 通过身份证号获取出生日期和性别
getBirthAndSex: function (idCard) {
    var that = this;
    var info = {};
    var birth = (idCard.length === 18) ? idCard.slice(6, 14) : idCard.slice(6, 12);
    var order = (idCard.length === 18) ? idCard.slice(-2, -1) : idCard.slice(-1);
    info.birthDay = (idCard.length === 18) ? ([birth.slice(0, 4), birth.slice(4, 6), birth.slice(-2)]).join('-') : (['19' + birth.slice(0, 2), birth.slice(2, 4), birth.slice(-2)]).join('-');
    info.sex = (order % 2 === 0 ? 2 : 0);
    return info;
  }
})