// packageE/others/cloudwarehouse/cloudOrder/cloudOrder.js
import Toast from "../../../../dist/toast/toast";

// var WxParse = require('../../../wxParse/wxParse.js');

var app = getApp();
var location = require("../../../../mybehaviors/location/location");


Page({
  behaviors: [location],

  /**
   * 页面的初始数据
   */
  data: {
    clicktag: 0, // 方式提交订单多次点击
    language: "",
    //不同购买方式
    options: {}, //路由参数购买方式
    _root_tag: "",
    TAG_ACTION_BUY: "-2", //直接购买
    _goodsId: "",
    _optionsId: "",
    _total: 1,
    currentAddId: "",
    currentAddress: {},
    selectedMode: 0,
    selected: 0,
    dispatch: [],
    //优惠券标识
    popupSpecs: false,
    addressData: [],
    defaultAddress: {},
    realname: "", //收件人
    mobile: "",
    address: "",
    order_data: "",
    dispatch_price: 0,
    goods_price: 0,
    price: 0,
    discount_price: 0,
    deduction_price: 0,
    goodsInfo: {},
    //积分抵扣 其他抵扣
    checkDeductionList: [],
    //新增地址v2------------------------------------------------新增地址v2//
    form: {
      username: "",
      mobile: "",
      province: "",
      city: "",
      district: "",
      street: "",
      address: "",
      isDefault: false,
    },
    addressName: "",
    districtVal: "",
    popAddAddress: false,
    strShow: false, //街道显示
    openDateLw: false,
    provinceData: [],
    cityData: [],
    districtData: [],
    pickerValue: [0, 0, 0],
    selectAddressData: [],
    streetShow: false, //街道pop
    //新增地址v2------------------------------------------------新增地址v2//
    //留言
    note: {},
    submit_active: true,
    total_items: [],
    discount_amount_items: [],
    //服务费
    goodsId: "",

    point: {
      lat: "",
      lng: "",
    },
    city: "",
    defaultSelfCarry: {},
    orders_goods: {},

    integral: "",
    is_region: 0,
    TemplateArray: [],

    orderLocationObj: {
      positioning_success: 0,
      province: "",
      city: "",
    },
    getDispatch: false,
    is_selected: "",
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    let userLocationFlag = await this.checkAlbum("scope.userLocation");
    console.log("userLocationFlag", userLocationFlag);
    if (!userLocationFlag) {
      return app.tips("获取位置失败，请重新进入后授权");
    }
    if (options.is_selected) {
      this.setData({
        selected: options.is_selected,
        is_selected: options.is_selected,
      });
    }
    try {
      const value = wx.getStorageSync("integral");
      if (value) {
        this.setData({
          integral: value,
        });
      }
    } catch (e) {
      // Do something when catch error
    }

    this.getCurrentOrderLocation();

    //不同购买方式
    this.setData({
      options: options,
      _root_tag: options.tag,
    });

    if (options.changeSelfCarry) {
      let changeSelfCarry = JSON.parse(options.changeSelfCarry);
      this.setData({
        defaultSelfCarry: changeSelfCarry,
      });
    }

    if (this.data._root_tag == this.data.TAG_ACTION_BUY) {
      this.setData({
        _goodsId: options.goodsId,
        _optionsId: options.optionsId,
        _total: options.total,
      });
      this._getDataActionBuy(); //直接购买
    }
    //加载地址数据初始化
    this._initAddressInfo();

    //如果Storage里有保存自提点的信息则自动获取填写
    let _zdtInfo = wx.getStorageSync("selfCarryInfo");
    if (_zdtInfo) {
      _zdtInfo = JSON.parse(_zdtInfo);
      this.setData({
        "linkinfo.name": _zdtInfo.distributionUserName || "",
        "linkinfo.mobile": _zdtInfo.distributionUserMobile || "",
      });
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    let language = wx.getStorageSync("langIndex");
    this.setData({
      language: language.en,
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.data.submit_active = true;
  },
  goLocation_ro(e) {
    let form = this.data.form;
    let tag = this.data._root_tag;
    let store_id = this.data.store_id;
    let create = this.data.create;
    wx.navigateTo({
      url: "/packageC/o2o/o2oLocation_loc/o2oLocation_loc?tag=" +
        tag +
        "&store_id=" +
        store_id +
        "&form=" +
        JSON.stringify(form) +
        "&create=" +
        create,
    });
  },
  gotochangeSelfCarry() {
    //更换自提点
    let that = this;
    //保存自提点信息到本地，任务编号: 35632
    let _memberInfoes = {
      distributionUserName: this.data.linkinfo.name ?
        this.data.linkinfo.name :
        "",
      distributionUserMobile: this.data.linkinfo.mobile ?
        this.data.linkinfo.mobile :
        "",
    };
    try {
      wx.setStorageSync("selfCarryInfo", JSON.stringify(_memberInfoes));
    } catch (e) {
      console.log(e);
    }

    wx.navigateTo({
      url: "/packageC/selfCarry/selfCarry_info/selfCarry_info?tag=" +
        that.data.options.tag +
        "&goodsId=" +
        that.data.options.goodsId +
        "&optionsId=" +
        that.data.options.optionsId +
        "&total=" +
        that.data.options.total +
        "&iscloud=cloud" +
        "&goods=" +
        JSON.stringify(this._assembleGoods()),
    });
  },

  setDispatch(e) {
    let title = e.detail.title;
    this.data.dispatch.forEach((items) => {
      if (items.name == title) {
        this.setData({
          selected: items.dispatch_type_id,
          selectedMode: items.dispatch_type_id == "1" ? 0 : 1,
        });
      }
    });
    // console.log(this.data.selected)
    this._requestByAddress();
  },
  //显示地址pop
  showAddress() {
    //获取收货地址
    this._getAddress();
  },
  //获取收货地址
  _getAddress() {
    this.addressData = [];
    let that = this;
    let urlStr = app.getNetAddresss("member.member-address.index");
    app._getNetWork({
      url: urlStr,
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1) {
          let defaultAddress = res.data;
          defaultAddress = res.data.filter(function (item) {
            return item.isdefault === 1;
          });

          that.setData({
            popupSpecs: true,
            addressData: res.data,
            defaultAddress: defaultAddress,
          });
        } else {
          Toast(res.msg);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  //设置地址界面
  _setAddressViewData(model) {
    if (model == undefined || model == "" || model == []) {
      return;
    }
    //设置地址id
    this.data.currentAddId = model.id;
    this.data.currentAddress = model;
    this.setData({
      realname: app._isTextEmpty(model.username) ? "" : model.username,
      mobile: app._isTextEmpty(model.mobile) ? "" : model.mobile,
      address: app._isTextEmpty(model.province) ?
        "" :
        model.province +
        " " +
        model.city +
        " " +
        model.district +
        " " +
        (app._isTextEmpty(model.street) ? "" : model.street + " ") +
        model.address,
    });
  },
  isOrderAddress_M(_data) {
    //判断是否有订单需要填写地址，有一单需要填写地址则需要填写地址才可以下单
    //return false 提交订单需要填写地址
    for (let j = 0; j < _data.length; j++) {
      if (!_data[j].need_address) {
        console.log("有订单需要填写地址");
        return false;
      }
    }
    return true;
  },
  //设置界面
  _setViewData(data) {
    console.log("走了_setViewData设置界面方法");
    let _show_address = this.isOrderAddress_M(data.orders);

    this.setData({
      dispatch: [{
        name: "快递",
        dispatch_type_id: "1"
      },
      {
        name: "上门自提",
        dispatch_type_id: "8"
      }
      ],
      selected: this.data.selected,
      selectedMode: this.data.selected == "1" ? 0 : 1,
      order_data: data.orders,
      show_address: _show_address,
      price: data.total_price, //设置总价格（合计）
      total_items: data.amount_items,
      discount_amount_items: data.discount_amount_items,
      none_loc: true,
      clicktag: 0,
    });

    this.data.dispatch.forEach((items) => {
      if (items.dispatch_type_id == 8) {
        console.log("有自提点配送方式，请求定位获取自提点列表");
        this._getLocation(() => {this.getList();});
      }
    });
  },
  //提货人输入
  infonamebtn(e) {
    let infoname = e.detail;
    this.setData({
      "linkinfo.name": infoname,
    });
  },
  infonameclear() {
    this.setData({
      "linkinfo.name": "",
    });
  },
  infomobileclear() {
    this.setData({
      "linkinfo.mobile": "",
    });
  },
  //提货人手机输入
  infomobilebtn(e) {
    let infomobile = e.detail;
    this.setData({
      "linkinfo.mobile": infomobile,
    });
  },
  addresclosebtn: function () {
    this.setData({
      popupSpecs: false,
    });
  },
  //选择地址
  selectAddress(e) {
    let item = e.currentTarget.dataset.addr;
    this._setAddressViewData(item); //更新界面 & ID
    this._requestByAddress(); //选择地址后重新计算
    //关闭 地址栏
    this.setData({
      popupSpecs: false,
    });
  },
  //选择地址后重新计算数据
  _requestByAddress() {
    //重新计算
    this.setData({
      order_data: "",
    });
    this._getDataActionBuy(); //直接购买
  },
  editAddress(e) {
    let loc = e.currentTarget.dataset.item;
    this.setData({
      "form.address_id": this.data.defaultAddress[0].id,
      "form.username": this.data.defaultAddress[0].username,
      "form.mobile": this.data.defaultAddress[0].mobile,
      "form.province": this.data.defaultAddress[0].province,
      "form.city": this.data.defaultAddress[0].city,
      "form.district": this.data.defaultAddress[0].district,
      "form.address": this.data.defaultAddress[0].address,
      "form.street": this.data.defaultAddress[0].street,
      "form.isDefault": this.data.defaultAddress[0].isDefault === 0 ? false : true,
      "is_point.lng": loc.longitude,
      "is_point.lat": loc.latitude,
    });
    this.setData({
      popupSpecs: false,
      create: false,
      popAddAddress: true,
    });
    this._getStreet(this.data.defaultAddress[0].district_id);
    this.setData({
      addressName: this.data.form.province +
        " " +
        this.data.form.city +
        " " +
        this.data.form.district,
    });
  },
  //关闭增加地址
  popAddressClose() {
    this.setData({
      popAddAddress: false,
    });
  },
  //收件人输入绑定
  usernameinp: function (e) {
    let nameval = e.detail.value;
    this.setData({
      "form.username": nameval,
    });
  },
  //联系电话输入绑定
  mobileinp: function (e) {
    let mobileval = e.detail.value;
    this.setData({
      "form.mobile": mobileval,
    });
  },
  //默认地址开关值绑定
  isDefaultChange: function (e) {
    let isDefault = e.detail;
    this.setData({
      "form.isDefault": isDefault,
    });
  },
  //详细地址绑定输入
  addressinp: function (e) {
    let addressval = e.detail.value;
    this.setData({
      "form.address": addressval,
    });
  },
  // 关闭选择收货地址
  _closeDateLw: function () {
    this.setData({
      openDateLw: false,
    });
  },
  //地址选择器数据初始化
  _initAddressInfo: function () {
    var that = this;
    var _keyName = "provinceData";
    wx.getStorage({
      key: _keyName,
      success: function (res) {
        console.log("地址信息准备就绪");
        that._getProvinceData();
      },
      fail: function (res) {
        console.log("省fail");
        app._getNetWork({
          url: app.getNetAddresss("member.member-address.address"),
          success: function (res) {
            var response = res.data;
            var province = response.data.province;
            var city = response.data.city;
            var district = response.data.district;
            wx.setStorage({
              key: "provinceData",
              data: province,
            });
            wx.setStorage({
              key: "cityData",
              data: city,
            });
            wx.setStorage({
              key: "districtData",
              data: district,
            });
            that._initAddressInfo();
          },
          fail: function (res) {},
          state: true,
        });
      },
    });
  },
  // 读取省key
  _getProvinceData: function () {
    var that = this;
    var _keyName = "provinceData";
    wx.getStorage({
      key: _keyName,
      success: function (res) {
        // console.log("省读取成功", res.data);
        that.setData({
          provinceData: res.data,
        });
        that.setData({
          "selectAddressData[0].name": res.data[that.data.pickerValue[0]].areaname,
          "selectAddressData[0].id": res.data[that.data.pickerValue[0]].id,
          "selectAddressData[0].index": that.data.pickerValue[0],
        });
        that._getCityData();
      },
    });
  },
  // 读取城市key，筛选城市data
  _getCityData: function () {
    var _data = this.data.selectAddressData[0];
    // console.log("城市", "_data", _data);
    var that = this;
    var _keyName = "cityData";
    wx.getStorage({
      key: _keyName,
      success: function (res) {
        // console.log("城市读取成功", res);

        var _json = [];
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].parentid == _data.id) {
            _json.push(res.data[i]);
          }
        }
        // console.log("城市数据筛选", _json);
        that.setData({
          cityData: _json,
        });
        that.setData({
          "selectAddressData[1].name": _json[that.data.pickerValue[1]].areaname,
          "selectAddressData[1].id": _json[that.data.pickerValue[1]].id,
          "selectAddressData[1].index": that.data.pickerValue[1],
        });
        that._getDistrictData();
      },
    });
  },
  // 读取地区key，筛选地区data
  _getDistrictData: function () {
    var _data = this.data.selectAddressData[1];
    // console.log("地区", "_data", _data)
    var that = this;
    var _keyName = "districtData";
    wx.getStorage({
      key: _keyName,
      success: function (res) {
        console.log("地区读取成功");
        var _json = [];
        for (var i = 0; i < res.data.length; i++) {
          if (res.data[i].parentid == _data.id) {
            _json.push(res.data[i]);
          }
        }
        // console.log("地区数据筛选", _json);
        that.setData({
          districtData: _json,
        });
        // console.log("districtData", _json);
        that.setData({
          "selectAddressData[2].name": _json[that.data.pickerValue[2]].areaname,
          "selectAddressData[2].id": _json[that.data.pickerValue[2]].id,
          "selectAddressData[2].index": that.data.pickerValue[2],
        });
        // console.log("over", that.data.selectAddressData);
      },
    });
  },
  //打开地址选择器
  openDateLwtbtn: function () {
    this.setData({
      openDateLw: true,
    });
  },
  // 收货地址滚动事件
  bindChange: function (e) {
    var val = e.detail.value;
    if (this.data.pickerValue[0] != val[0]) {
      val[1] = 0;
      val[2] = 0;
    }
    if (this.data.pickerValue[1] != val[1]) {
      val[2] = 0;
    }
    this.setData({
      "pickerValue[0]": val[0],
      "pickerValue[1]": val[1],
      "pickerValue[2]": val[2],
    });
    this._initAddressInfo();
  },
  // 确定选择收货地址
  _okAddress: function () {
    let seleData = this.data.selectAddressData;
    this.setData({
      "form.street": "",
      districtVal: "",
      addressName: seleData[0].name + " " + seleData[1].name + " " + seleData[2].name,
      "form.province": seleData[0].name,
      "form.city": seleData[1].name,
      "form.district": seleData[2].name,
    });
    this._getStreet(seleData[2].id);
    this._closeDateLw();
  },
  //获取街道
  _getStreet(param) {
    let that = this;
    let urlStr = app.getNetAddresss("member.memberAddress.street");
    urlStr += "&district_id=" + param;
    app._getNetWork({
      url: urlStr,
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1 && !app._isTextEmpty(res.data)) {
          if (!app._isTextEmpty(res.data) && res.data.length > 0) {
            that.setData({
              districtVal: res.data,
              strShow: true,
            });
          } else {
            that.setData({
              strShow: false,
            });
          }
        } else {
          that.setData({
            strShow: false,
          });
        }
      },
      fail: function (res) {
        that.setData({
          strShow: false,
        });
        console.log(res);
      },
    });
  },
  streetChoose() {
    if (this.data.is_region == 1 && app._isTextEmpty(this.data.addressName)) {
      wx.showToast({
        icon: "none",
        title: "请先选择所在地区",
        duration: 1500,
      });
    } else {
      this.setData({
        streetShow: true,
      });
    }
  },
  //关闭选择街道弹窗
  streetClose: function () {
    this.setData({
      streetShow: false,
    });
  },
  //选择街道
  streetConfirm(e) {
    let strname = e.target.dataset.strname;
    this.setData({
      "form.street": strname,
      streetShow: false,
    });
  },
  //增加地址
  appendAddress(e) {
    let that = this;
    let apptype = e.currentTarget.dataset.apptype;
    if (app._isTextEmpty(this.data.form.username)) {
      wx.showToast({
        icon: "none",
        title: "请输入收货人姓名",
        duration: 1500,
      });
      return;
    }
    if (app._isTextEmpty(this.data.form.mobile)) {
      wx.showToast({
        icon: "none",
        title: "请输入联系电话",
        duration: 1500,
      });
      return;
    }
    if (!/^[0-9]{1,}$/.test(this.data.form.mobile)) {
      wx.showToast({
        icon: "none",
        title: "请输入联系电话",
        duration: 1500,
      });
      return;
    }
    if (this.data.is_region == 1 && app._isTextEmpty(this.data.addressName)) {
      wx.showToast({
        icon: "none",
        title: "请选择所在区域",
        duration: 1500,
      });
      return;
    }
    if (
      this.data.is_region == 1 &&
      this.data.strShow &&
      app._isTextEmpty(this.data.form.street)
    ) {
      wx.showToast({
        icon: "none",
        title: "请选择所在街道",
        duration: 1500,
      });
      return;
    }
    if (app._isTextEmpty(this.data.form.address)) {
      wx.showToast({
        icon: "none",
        title: "请输入详细地址",
        duration: 1500,
      });
      return;
    }
    let json = {
      username: this.data.form.username,
      mobile: this.data.form.mobile,
      province: this.data.form.province,
      city: this.data.form.city,
      district: this.data.form.district,
      address: this.data.form.address,
      isdefault: this.data.form.isDefault ? 1 : 0,
      address_id: this.data.form.address_id,
    };
    if (this.data.is_point) {
      json.longitude = this.data.is_point.lng;
      json.latitude = this.data.is_point.lat;
    }
    if (this.data.strShow) {
      json.street = this.data.form.street;
    }
    let urlStr = "";
    if (apptype === "update") {
      urlStr = app.getNetAddresss("member.member-address.update");
    } else {
      urlStr = app.getNetAddresss("member.member-address.store");
    }
    app._postNetWork({
      url: urlStr,
      showToastIn: false,
      data: json,
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1) {
          Toast(res.msg);
          that.popAddressClose();
          that._setAddressViewData(res.data);
          that._requestByAddress(); //选择地址后重新计算
          that.setData({
            "form.username": "",
            "form.mobile": "",
            "form.province": "",
            "form.city": "",
            "form.district": "",
            "form.street": "",
            "form.address": "",
            "form.isDefault": false,
            addressName: "",
          });
        } else {
          Toast(res.msg);
        }
      },
      fail: function (res) {},
    });
  },
  //跳转到新增地址
  addAddress() {
    this.getIsOpenAddress();
    //关闭 地址栏
    this.setData({
      popupSpecs: false,
    });
    //新增地址 本地处理
    console.log(this.data.delivery_status, this.data.selected);
    this.showAddAddress();
  },
  getIsOpenAddress() {
    var that = this;
    let urlStr = app.getNetAddresss("member.member-address.is-region");
    app._getNetWork({
      url: urlStr,
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1 && !app._isTextEmpty(res.data)) {
          that.setData({
            is_region: res.data.is_region,
          });
        } else {
          console.log(res.msg);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  //显示增加地址
  showAddAddress() {
    this.setData({
      "form.username": "",
      "form.mobile": "",
      "form.province": "",
      "form.city": "",
      "form.district": "",
      "form.street": "",
      "form.address": "",
      "form.isDefault": false,
      addressName: "",
      popAddAddress: true,
      create: true,
    });
  },
  // 留言
  noteHandle(e) {
    let preid = e.target.dataset.preid;
    let item = e.target.dataset.item;
    let val = e.detail.value;
    this.setData({
      ["note." + preid]: val,
    });
    // 触发抵扣事件
    if (!item.order_deductions[0]) {
      //临时数据
      let isHasNote = false;
      if (this.data.checkDeductionList.length > 0) {
        this.data.checkDeductionList = this.data.checkDeductionList.map((deduction, index) => {
          if (deduction.pre_id == item.pre_id) {
            isHasNote = true;
            deduction.note = this.data.note[item.pre_id];
          }
        });
      }
      if (!isHasNote) {
        this.data.checkDeductionList.push({
          deduction_ids: [],
          pre_id: item.pre_id,
          note: this.data.note[item.pre_id]
        });
      }
      this.setData({
        checkDeductionList: this.data.checkDeductionList,
      });
    } else {
      this._screenDiscount(item, item.order_deductions[0]);
    }
  },
  //筛选抵扣
  _screenDiscount(item, value) {
    //临时数据
    if (this.data.checkDeductionList.length > 0) {
      this.data.checkDeductionList = this.data.checkDeductionList.map((deduction, index) => {
        if (deduction.pre_id == item.pre_id) {
          if (value.checked) {
            // 选中的时候检查是否有对应的code
            if (deduction.deduction_ids && deduction.deduction_ids.indexOf(value.code) == -1) {
              deduction.deduction_ids.push(value.code);
            }
          } else {
            // 取消选中的时候检查去掉对应的code
            if (deduction.deduction_ids && deduction.deduction_ids.indexOf(value.code) > -1) {
              deduction.deduction_ids.splice(deduction.deduction_ids.indexOf(value.code), 1);
            }
          }

          // 留言和安装选项重新赋值
          deduction.note = this.data.note[item.pre_id];
          deduction.service_fee = this.data.service_fee[item.pre_id];
        }
      });
    } else {
      this.data.checkDeductionList.push({
        deduction_ids: [value.code],
        pre_id: item.pre_id,
        note: this.data.note[item.pre_id],
        service_fee: this.data.service_fee[item.pre_id]
      });
    }

    this.setData({
      checkDeductionList: this.data.checkDeductionList,
    });
  },
  //直接购买
  _getDataActionBuy() {
    let that = this;
    let urlStr = "";
    urlStr = app.getNetAddresss("plugin.cloud-warehouse.frontend.goods-buy.index");
    urlStr += "&goods_id=" + this.data._goodsId;
    urlStr += "&total=" + this.data._total;
    urlStr += "&option_id=" + this.data._optionsId;
    urlStr += "&member_coupon_ids=" + [];
    urlStr += "&orders=" + JSON.stringify([]);
    urlStr += "&address=" + encodeURIComponent(JSON.stringify(this.data.currentAddress));
    urlStr += "&dispatch_type_id=" + this.data.selected;
    //自提点开启
    if (this.data.selected == 8) {
      urlStr += "&package_deliver_id=" + this.data.defaultSelfCarry.id;
    }
    urlStr += "&mark=" + (this.data.options.mark ? this.data.options.mark : 0);
    if (this.data.clicktag == 0) {
      this.setData({
        clicktag: 1,
      });
      app._getNetWork({
        url: urlStr,
        success: function (resdata) {
          var res = resdata.data;
          if (res.result == 1) {
            that.setData({
              goodsInfo: res.data,
              cup_notice: true,
            });
            that._setViewData(res.data); //设置界面
            that._setAddressViewData(res.data.dispatch.default_member_address); //设置地址界面
          } else {
            that.setData({
              cup_notice: true,
            });
            Toast(res.msg);
          }
          setTimeout(function () {
            that.setData({
              clicktag: 0,
            });
          }, 1000);
        },
        fail: function (res) {
          console.log(res);
        },
      });
    }
  },
  //获取模板id
  getTemplate() {
    let urlStr = app.getNetAddresss("member.member.getMiniTemplateCorrespond");
    let that = this;
    app._getNetWork({
      url: urlStr,
      data: {
        small_type: 1,
      },
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1) {
          let array = [];
          for (let i = 0; i < res.data.length; i++) {
            array.push(res.data[i].template_id);
          }
          that.setData({
            TemplateArray: array,
          });
          wx.requestSubscribeMessage({
            tmplIds: that.data.TemplateArray,
            success(res) {
              console.log(res, "success");
              that.submitBtn();
            },
            fail(err) {
              console.log(err, "err");
              that.submitBtn();
            },
          });
        } else {
          Toast(res.msg);
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  //提交订单
  submit() {
    this.getTemplate();
  },
  submitBtn() {
    if (this.data.submit_active == true) {
      this.data.submit_active = false;
      if (this.data.selected == 8) {
        if (app._isTextEmpty(this.data.defaultSelfCarry.id)) {
          wx.showModal({
            title: "提示",
            content: "请选择自提点",
            showCancel: false,
            confirmText: "确定",
            confirmColor: "#000000",
            success: (res) => {},
            fail: function (res) {},
            complete: function (res) {},
          });
          this.data.submit_active = true;
          return;
        }
        if (app._isTextEmpty(this.data.linkinfo.name)) {
          wx.showModal({
            title: "提示",
            content: "请填写提货人姓名",
            showCancel: false,
            confirmText: "确定",
            confirmColor: "#000000",
            success: (res) => {},
          });
          this.data.submit_active = true;
          return;
        }
        if (app._isTextEmpty(this.data.linkinfo.mobile)) {
          wx.showModal({
            title: "提示",
            content: "请输入提货人手机",
            showCancel: false,
            confirmText: "确定",
            confirmColor: "#000000",
            success: (res) => {},
          });
          this.data.submit_active = true;
          return;
        }
        //保存自提点信息到本地，任务编号: 35632
        let _memberInfoes = {
          distributionUserName: this.data.linkinfo.name ?
            this.data.linkinfo.name :
            "",
          distributionUserMobile: this.data.linkinfo.mobile ?
            this.data.linkinfo.mobile :
            "",
        };
        try {
          wx.setStorageSync("selfCarryInfo", JSON.stringify(_memberInfoes));
        } catch (e) {
          console.log(e);
        }
      }
      if (
        !this.isOrderAddress_M(this.data.order_data) &&
        (this.data.selected == 1 || this.data.selected == 3)
      ) {
        if (app._isTextEmpty(this.data.currentAddId)) {
          wx.showModal({
            title: "提示",
            content: "请选择收货地址",
            showCancel: false,
            confirmText: "确定",
            confirmColor: "#000000",
            success: (res) => {
              this.showAddress();
            },
            fail: function (res) {},
          });
          this.data.submit_active = true;
          return;
        }
      }

      let that = this;
      let json = this._assembleJson();
      let urlStr;
      urlStr = app.getNetAddresss(
        "plugin.cloud-warehouse.frontend.create.index"
      );
      if (this.data.clicktag == 0) {
        this.setData({
          clicktag: 1,
        });
        app._postNetWork({
          url: urlStr,
          showToastIn: false,
          data: json,
          success: function (resdata) {
            var res = resdata.data;
            if (res.result == 1) {
              wx.showToast({
                title: "下单成功",
                icon: "none",
                duration: 1000,
                success: function () {
                  setTimeout(() => {
                    wx.navigateBack({
                      delta: 2,
                    });
                  }, 900);
                },
              });
            } else {
              Toast(res.msg);
            }
            setTimeout(function () {
              that.setData({
                clicktag: 0,
              });
            }, 1000);
          },
          fail: function (res) {
            console.log(res);
          },
        });
      }
    }
  },
  //组装商品信息
  _assembleGoods() {
    let newGoods = [];
    for (let j = 0; j < this.data.goodsInfo.orders.length; j++) {
      for (
        let i = 0; i < this.data.goodsInfo.orders[j].order_goods.length; i++
      ) {
        let model = {};
        model.goods_id = this.data.goodsInfo.orders[j].order_goods[i].goods_id;
        model.total = this.data.goodsInfo.orders[j].order_goods[i].total;
        model.option_id = this.data.goodsInfo.orders[j].order_goods[
          i
        ].goods_option_id;
        newGoods.push(model);
      }
    }
    return newGoods;
  },
  //组装json数据
  _assembleJson() {
    let json = {};
    if (this.data._root_tag == this.data.TAG_ACTION_BUY) {
      json = {
        dispatch_type_id: this.data.selected,
        address: encodeURIComponent(JSON.stringify(this.data.currentAddress)),
        goods: JSON.stringify(this._assembleGoods()),
        member_coupon_ids: JSON.stringify([]),
        orders: JSON.stringify([]),
        mark: this.data.options.mark ? this.data.options.mark : 0,
        invoice_type: this.data.iscur_c ? 0 : 1, // 发票
        rise_type: this.data.iscur ? 1 : 0,
        call: this.data.invoice_list.call,
        email: this.data.invoice_list.email,
        company_number: this.data.invoice_list.company_number,
      };
    }

    if (this.data.selected == 8) {
      json.dispatch_type_id = this.data.selected;
      json.package_deliver_id = this.data.defaultSelfCarry.id;
      json.realname = this.data.linkinfo.name;
      json.mobile = this.data.linkinfo.mobile;
      delete json.address;
    }
    Object.assign(json, this.data.orderLocationObj);
    return json;
  },


  getList() {
    let that = this;
    let urlStr = app.getNetAddresss(
      "plugin.package-deliver.frontend.deliver.getList"
    );
    let point = app.qqMapTransBMap(
      parseFloat(that.data.point.lng),
      parseFloat(that.data.point.lat)
    );
    app._getNetWork({
      url: urlStr,
      data: {
        city_name: that.data.city,
        lat: point.lat,
        lng: point.lng,
        kwd: "",
        goods: JSON.stringify(this._assembleGoods()),
      },
      success: function (resdata) {
        var res = resdata.data;
        if (res.result == 1) {
          that.setData({
            defaultSelfCarry: JSON.stringify(that.data.defaultSelfCarry) == "{}" ?
              res.data.list.data[0] :
              that.data.defaultSelfCarry,
          });
        } else {
          wx.showToast({
            icon: "none",
            title: "获取自提点失败",
            duration: 1000,
          });
        }
      },
      fail: function (res) {
        console.log(res);
      },
    });
  },
  //获取经纬度
  getCurrentOrderLocation() {
    wx.getLocation({
      type: "gcj02",
      success: (res) => {
        console.log("userLocationFlag", res);
        const latitude = res.latitude;
        const longitude = res.longitude;
        this._setOrderLocation({
          lat: latitude,
          lng: longitude,
        });
      },
    });
  },
  //根据经纬度转换具体地址名称
  _setOrderLocation(e) {
    let that = this;
    app.getReverseGeocoder(e.lat, e.lng).then(function (res) {
      console.log("userLocationFlag", res);
      let mapdata = res;
      let recommend = mapdata.address_component;
      let orderLocationObj = {
        positioning_success: 1,
        province: recommend.province,
        city: !app._isTextEmpty(recommend.city) ?
          recommend.city :
          recommend.province,
      };
      that.data.orderLocationObj = orderLocationObj;
    }).catch(function (err) {
      console.log(err);
    });
  },

  checkAlbum(scopeName) {
    return new Promise(async (resolve, reject) => { // eslint-disable-line
      let writePhotosAlbum = await this.getAuthSetting(scopeName);
      if (!writePhotosAlbum) {
        wx.showModal({
          title: "请开启授权",
          content: "是否跳转设置页开启授权",
          success(res) {
            if (res.confirm) {
              wx.openSetting({
                success(settingdata) {
                  if (settingdata.authSetting[scopeName]) {
                    resolve(true);
                  } else {
                    resolve(false);
                  }
                },
              });
            } else if (res.cancel) {
              resolve(false);
            }
          },
          fail: () => {
            resolve(false);
          },
        });
      } else resolve(true);
    });
  },
  getAuthSetting(authName) {
    return new Promise((resolve, reject) => {
      wx.getSetting({
        success(res) {
          if (!res.authSetting[authName]) {
            wx.authorize({
              scope: authName,
              success() {
                resolve(true);
              },
              fail() {
                resolve(false);
              },
            });
          } else resolve(true);
        },
        fail() {
          resolve(false);
        },
      });
    });
  },
});