// pages/orderinfo/orderinfo.js
var app = getApp()
var network = require("../../../utils/net.js")
var dateTimePicker = require('../../../utils/dateTimePicker.js');
var utilll = require('../../../utils/util.js');
var timechage = require("../../../utils/dateTimeUtil.js")
var orderID = 0;

var getAccountingUnit = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetAccountingUnit";
var getCustomer = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetCustomer";
var getDept = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetDepartment";
var getGoods = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetGoodsWithUnitPrice";
var getSaleKind = "/MainSystem/B3MiniProgramRpc/Rpcs/BaseInfoRpc/GetSaleKind"

var load = "/MainSystem/B3MiniProgramRpc/XuRpcs/Employee/SaleForecastRpc/Load";
let update = '/MainSystem/B3MiniProgramRpc/XuRpcs/Employee/SaleForecastRpc/Update';

function setTime(that) {
  // 获取完整的年月日 时分秒，以及默认显示的数组
  var obj1 = dateTimePicker.dateTimePicker(that.data.startYear, that.data.endYear, that.data.loadTime);
  // 精确到分的处理，将数组的秒去掉
  var lastArray = obj1.dateTimeArray.pop();
  var lastTime = obj1.dateTime.pop();

  that.setData({
    dateTimeArray1: obj1.dateTimeArray,
    dateTime1: obj1.dateTime
  });
}

function GetAccountingUnit(that, inputValue) {
  let method = getAccountingUnit;
  let params = [{
    "InputValue": inputValue,
    "PageIndex": 0,
    "PageSize": 100
  }];
  network.transfer_request(method, params, function (res) {
    that.setData({
      currency: res.result,
      unit: res.result
    })
  })
  that.setData({
    which: "会计单位"
  })
}

function GetCustomer(that, inputValue) {
  let method = getCustomer
  let params = [{
    "InputValue": inputValue,
    "PageIndex": 0,
    "PageSize": 100
  }];
  network.transfer_request(method, params, function (res) {
    that.setData({
      currency: res.result,
      customer: res.result
    })
  })
  that.setData({
    which: "购货客户"
  })
}

function GetDepartment(that, inputValue) {
  let method = getDept;
  let params = [{
    "InputValue": inputValue,
    "PageIndex": 0,
    "PageSize": 100
  }];
  network.transfer_request(method, params, function (res) {
    that.setData({
      currency: res.result,
      department: res.result
    })
  })
  that.setData({
    which: "部门"
  })
}

function GetSaleKind(that, v) {
  let method = getSaleKind;
  let params = [{
    "InputValue": v,
    "PageIndex": 0,
    "PageSize": 100
  }];
  network.transfer_request(method, params, function (res) {
    that.setData({
      currency: res.result,
      saletype: res.result
    })
  })
  that.setData({
    which: "销售类型"
  })
}

function GetGoodsWithUnitPrice(that, v, date) {
  let unitID = that.data.unit[that.data.isUnit].ID;
  let customerID = that.data.customer[that.data.customerIndex].ID;
  let method = getGoods;
  let params = [{
    "Input": v,
    "PageIndex": 0,
    "PageSize": 100,
    "Customer_ID": customerID,
    "AccountingUnit_ID": unitID,
    "Date": date
  }];
  network.transfer_request(method, params, function (res) {
    that.setData({
      goods: res.result,
    })
  })
}

Page({

  /**
   * 页面的初始数据
   */
  data: {
    /**
     * 页面配置
     */
    which: "",
    winWidth: 0,
    winHeight: app.globalData.winHeight,
    // tab切换
    currentTab: 0,
    obj: [],
    goods: [],
    idx: 0,
    currency: [],
    saletypeIndex: 0,
    saletype: [{
      ID: 0,
      Name: "请选择销售类型"
    }],
    departmentIndex: 0,
    department: [{
      ID: 0,
      Name: "请选择销售部门"
    }],
    customerIndex: 0,
    customer: [{
      ID: 0,
      Name: "请选择客户"
    }],
    isUnit: 0,
    unit: [{
      ID: 0,
      Name: "请选择会计单位"
    }],
    addrs: "",
    dateTimeArray1: null,
    dateTime1: null,
    startYear: 2018,
    endYear: 2030,
    loadTime: ""
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;
    let ID = Number(options.ID);
    orderID = ID;

    let method = load;
    let params = [ID];
    network.transfer_request(method, params, function (res) {
      let customerOld = [{
        ID: res.result.Customer_ID,
        Name: res.result.Customer_Name
      }]

      let unitOld = [{
        ID: res.result.AccountingUnit_ID,
        Name: res.result.AccountingUnit_Name
      }]

      let departmentOld = [{
        ID: res.result.Department_ID,
        Name: res.result.Department_Name
      }]

      let saletypeOld = [{
        ID: res.result.SaleKind_ID,
        Name: res.result.SaleKind_Name
      }]

      let addrrrr = res.result.DeliverAddress
      let loadtimee = timechage.formatTimeTwo(res.result.Date.substring(6, 19), 'Y-M-D h:m')

      let details = [];

      for (var i = 0; i < res.result.Details.length; i++) {
        if (res.result.Details[i].RightRatio == null) {
          var rightRatio = 1
        }
        if (res.result.Details[i].LeftRatio == null) {
          var leftRatio = 1
        }
        var dmo = {
          "Goods_Name": res.result.Details[i].Goods_Name,
          "SaleGoods_ID": res.result.Details[i].SaleGoods_ID,
          "goodsNum": res.result.Details[i].UnitNum,
          "goodsSecondNum": res.result.Details[i].SecondNumber,
          "Price": res.result.Details[i].Price,
          "PolicyPrice": res.result.Details[i].PolicyPrice,
          "Goods_MainUnitRatio": res.result.Details[i].Goods_MainUnitRatio,
          "Goods_SecondUnitRatio": res.result.Details[i].Goods_SecondUnitRatio,
          "Goods_UnitConvertDirection": res.result.Details[i].Goods_UnitConvertDirection,
          "RightRatio": rightRatio,
          "LeftRatio": leftRatio,
          "ID": res.result.Details[i].ID
        }
        details.push(dmo)
      }

      that.setData({
        customer: customerOld,
        unit: unitOld,
        department: departmentOld,
        saletype: saletypeOld,
        addrs: addrrrr,
        loadTime: loadtimee,
        obj: details
      })
      setTime(that)

    })
  },

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

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

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

  },

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

  },

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

  },

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

  },
  /**
   * 滑动切换tab
   */
  bindChange: function (e) {

    var that = this;
    that.setData({
      currentTab: e.detail.current
    });

  },
  /**
   * 点击tab切换
   */
  swichNav: function (e) {

    var that = this;

    if (this.data.currentTab === e.target.dataset.current) {
      return false;
    } else {
      that.setData({
        currentTab: e.target.dataset.current
      })
    }
  },

  getAddrs: function (e) {
    this.data.addrs = e.detail.value;
  },
  add: function (e) {

    let newobj = {
      Goods_Name: "请选择存货"
    };

    this.data.obj.push(newobj)

    let aaa = this.data.obj;

    this.setData({
      obj: aaa,
    })
  },
  deleteItem: function (e) {
    let idx = e.target.dataset.idx;
    let deleteobj = this.data.obj;
    deleteobj.splice(idx, 1)
    this.setData({
      obj: deleteobj
    })
  },

  getGoodsNum: function (e) {
    //值：
    //e.detail.value
    //设置的id
    //e.target.dataset.index
    let value = e.detail.value;
    let idx = e.target.dataset.idx;

    let end = value.charAt(value.length - 1)
    if (end != ".") {

      this.data.obj[idx].goodsNum = Number(value);

      let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
      let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
      let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
      let RightRatio = this.data.obj[idx].RightRatio
      let LeftRatio = this.data.obj[idx].LeftRatio

      var numberNumber = Number(value) / RightRatio * LeftRatio;
      if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 1) {
        let secondNumber = numberNumber / (Goods_MainUnitRatio) * (Goods_SecondUnitRatio);
        this.data.obj[idx].goodsSecondNum = Number(secondNumber)
        this.setData({
          obj: this.data.obj
        })
      }
    }

  },
  getSecondNum: function (e) {
    let value = e.detail.value;
    let idx = e.target.dataset.idx;

    let end = value.charAt(value.length - 1)
    if (end != ".") {
      this.data.obj[idx].goodsSecondNum = Number(value);

      let Goods_MainUnitRatio = this.data.obj[idx].Goods_MainUnitRatio
      let Goods_SecondUnitRatio = this.data.obj[idx].Goods_SecondUnitRatio
      let Goods_UnitConvertDirection = this.data.obj[idx].Goods_UnitConvertDirection
      let RightRatio = this.data.obj[idx].RightRatio
      let LeftRatio = this.data.obj[idx].LeftRatio

      var numberNumber = Number(value) / LeftRatio * RightRatio;
      if (Goods_UnitConvertDirection == 0 || Goods_UnitConvertDirection == 2) {
        let unitnumber = numberNumber / (Goods_SecondUnitRatio) * (Goods_MainUnitRatio);
        this.data.obj[idx].goodsNum = Number(unitnumber)
        this.setData({
          obj: this.data.obj
        })
      }
    }
  },
  getPrice: function (e) {
    let value = e.detail.value;
    let idx = e.target.dataset.idx;
    this.data.obj[idx].Price = Number(value);
  },
  powerDrawer: function (e) {
    let that = this;
    let x = e.currentTarget.dataset.x;
    if (x == "会计单位") {
      GetAccountingUnit(that, "")
    } else if (x == "购货客户") {
      GetCustomer(that, "")
    } else if (x == "部门") {
      GetDepartment(that, "")
    } else if (x == "销售类型") {
      GetSaleKind(that, "")
    }
    let currentStatu = e.currentTarget.dataset.statu;
    this.util(currentStatu)
  },
  powerDrawer1: function (e) {
    let that = this;
    let currentStatu = e.currentTarget.dataset.statu;

    let timestamp = Date.parse(new Date());
    let date = "/Date(" + timestamp + "+0800)/";
    GetGoodsWithUnitPrice(that, "", date)

    if (e.currentTarget.dataset.idx != null) {
      let idxx = e.currentTarget.dataset.idx;
      this.setData({
        idx: idxx
      })
    }
    this.util1(currentStatu)

  },
  itemclick: function (e) {
    var that = this;
    var name = e.currentTarget.dataset.name;
    var id = e.currentTarget.dataset.id;
    var which = e.currentTarget.dataset.item;
    var idx = e.currentTarget.dataset.idx;

    if (which == "会计单位") {
      that.setData({
        isUnit: idx
      })
    } else if (which == "购货客户") {
      that.setData({
        customerIndex: idx
      })
    } else if (which == "部门") {
      that.setData({
        departmentIndex: idx
      })
    } else if (which == "销售类型") {
      that.setData({
        saletypeIndex: idx
      })
    }

    this.setData({
      showModalStatus: false,
    })
  },
  itemclick1: function (e) {
    var that = this;
    var name = e.currentTarget.dataset.name;
    var id = e.currentTarget.dataset.data.SaleGoods_ID;
    var pp = e.currentTarget.dataset.policyprice;
    var price = e.currentTarget.dataset.data.Price;
    var Goods_MainUnitRatio = e.currentTarget.dataset.data.Goods_MainUnitRatio
    var Goods_SecondUnitRatio = e.currentTarget.dataset.data.Goods_SecondUnitRatio
    var Goods_UnitConvertDirection = e.currentTarget.dataset.data.Goods_UnitConvertDirection

    if (e.currentTarget.dataset.data.RightRatio == null) {
      this.data.obj[this.data.idx].RightRatio = Number(1)
    }
    if (e.currentTarget.dataset.data.LeftRatio == null) {
      this.data.obj[this.data.idx].LeftRatio = Number(1)
    }
    this.data.obj[this.data.idx].Goods_MainUnitRatio = Number(Goods_MainUnitRatio)
    this.data.obj[this.data.idx].Goods_SecondUnitRatio = Number(Goods_SecondUnitRatio)
    this.data.obj[this.data.idx].SaleGoods_ID = Number(id);
    this.data.obj[this.data.idx].Goods_Name = name;
    this.data.obj[this.data.idx].Price = Number(price)
    this.data.obj[this.data.idx].PolicyPrice = Number(pp);
    this.data.obj[this.data.idx].Goods_UnitConvertDirection = Number(Goods_UnitConvertDirection)
    this.setData({
      showModalStatus1: false,
      obj: that.data.obj
    })
  },
  select: function (e) {
    var that = this;
    var which = e.currentTarget.dataset.item;
    var value = e.detail.value;
    if (which == "会计单位") {
      GetAccountingUnit(that, value)
    } else if (which == "购货客户") {
      GetCustomer(that, value)
    } else if (which == "部门") {
      GetDepartment(that, value)
    } else if (which == "销售类型") {
      GetSaleKind(that, value)
    }
  },
  select1: function (e) {
    var that = this;
    var value = e.detail.value;
    let timestamp = Date.parse(new Date());
    let date = "/Date(" + timestamp + "+0800)/";
    GetGoodsWithUnitPrice(that, value, date)
  },
  submitForm: function () {
    let unitID = this.data.unit[this.data.isUnit].ID;
    let customerID = this.data.customer[this.data.customerIndex].ID;
    let departmentID = this.data.department[this.data.departmentIndex].ID;
    let saletypeID = this.data.saletype[this.data.saletypeIndex].ID;

    let year = this.data.dateTimeArray1[0][this.data.dateTime1[0]]
    let month = this.data.dateTimeArray1[1][this.data.dateTime1[1]]
    let date = this.data.dateTimeArray1[2][this.data.dateTime1[2]]
    let hour = this.data.dateTimeArray1[3][this.data.dateTime1[3]]
    let minu = this.data.dateTimeArray1[4][this.data.dateTime1[4]]

    let stringTime = year + "/" + month + "/" + date + " " + hour + ":" + minu + ":00"
    let timestamp2 = Date.parse(new Date(stringTime));
    let update = "/Date(" + timestamp2 + "+0800)/";

    if (customerID == 0) {
      wx.showToast({
        title: '请选择购货客户'
      })
      return;
    }
    if (unitID == 0) {
      wx.showToast({
        title: '请选择会计单位'
      })
      return;
    }

    if (departmentID == 0) {
      wx.showToast({
        title: '请选择销售部门',
      })
      return;
    }

    if (saletypeID == 0) {
      wx.showToast({
        title: '请选择销售类型',
      })
      return;
    }
    if (this.data.addrs == "") {
      wx.showToast({
        title: '请填写送货地址',
      })
      return;
    }

    let detailsArray = [];

    for (var i = 0; i < this.data.obj.length; i++) {
      if (this.data.obj[i].Goods_Name == "请选择存货") {
        wx.showToast({
          title: '存货不能为空',
        })
        return;
      }
      if (this.data.obj[i].goodsNum == null) {
        wx.showToast({
          title: '报货数量不能为空',
        })
        return;
      }
      if (this.data.obj[i].goodsSecondNum == null) {
        wx.showToast({
          title: '辅数量不能为空',
        })
        return;
      }
      var olddID = 0;
      if (this.data.obj[i].ID == null) {
        olddID = 0
      } else {
        olddID = Number(this.data.obj[i].ID)
      }
      var dmo = {
        SaleGoods_ID: this.data.obj[i].SaleGoods_ID,
        UnitNum: this.data.obj[i].goodsNum,
        SecondNumber: this.data.obj[i].goodsSecondNum,
        Price: this.data.obj[i].Price,
        PolicyPrice: this.data.obj[i].PolicyPrice,
        ID: olddID
      }
      detailsArray.push(dmo)
    }


    let method = update;
    let params = [{
      "Customer_ID": customerID,
      "LoadTime": update,
      "AccountingUnit_ID": unitID,
      "Department_ID": departmentID,
      "SaleKind_ID": saletypeID,
      "DeliverAddress": this.data.addrs,
      "Details": detailsArray,
      "ID": orderID
    }];

    network.transfer_request(method, params, function (res) {
      if (res.result == null) {
        wx.showModal({
          title: '提示',
          content: '修改成功,是否返回上级列表',
          success: function (res) {
            if (res.cancel) {
            } else {
              wx.navigateBack({
                delta: 1
              })
            }
          },
          fail: function (res) { }
        })
      }
    })

  },
  changeDateTime1(e) {
    this.setData({
      dateTime1: e.detail.value
    });

  },
  util: function (currentStatu) {
    /* 动画部分 */
    // 第1步：创建动画实例   
    var animation = wx.createAnimation({
      duration: 200, //动画时长  
      timingFunction: "linear", //线性  
      delay: 0 //0则不延迟  
    });

    // 第2步：这个动画实例赋给当前的动画实例  
    this.animation = animation;

    // 第3步：执行第一组动画  
    animation.opacity(0).rotateX(-100).step();

    // 第4步：导出动画对象赋给数据对象储存  
    this.setData({
      animationData: animation.export()
    })

    // 第5步：设置定时器到指定时候后，执行第二组动画  
    setTimeout(function () {
      // 执行第二组动画  
      animation.opacity(1).rotateX(0).step();
      // 给数据对象储存的第一组动画，更替为执行完第二组动画的动画对象  
      this.setData({
        animationData: animation
      })

      //关闭  
      if (currentStatu == "close") {
        this.setData({
          showModalStatus: false,
        });
      }
    }.bind(this), 200)

    // 显示  
    if (currentStatu == "open") {
      // 调用函数时，传入new Date()参数，返回值是日期和时间
      // var timet = utilll.formatTime(new Date());
      // 再通过setData更改Page()里面的data，动态更新页面的数据
      this.setData({
        // time: timet,
        showModalStatus: true,
      });
    }
  },
  util1: function (currentStatu) {
    /* 动画部分 */
    // 第1步：创建动画实例   
    var animation = wx.createAnimation({
      duration: 200, //动画时长  
      timingFunction: "linear", //线性  
      delay: 0 //0则不延迟  
    });

    // 第2步：这个动画实例赋给当前的动画实例  
    this.animation = animation;

    // 第3步：执行第一组动画  
    animation.opacity(0).rotateX(-100).step();

    // 第4步：导出动画对象赋给数据对象储存  
    this.setData({
      animationData: animation.export()
    })

    // 第5步：设置定时器到指定时候后，执行第二组动画  
    setTimeout(function () {
      // 执行第二组动画  
      animation.opacity(1).rotateX(0).step();
      // 给数据对象储存的第一组动画，更替为执行完第二组动画的动画对象  
      this.setData({
        animationData: animation
      })

      //关闭  
      if (currentStatu == "close") {
        this.setData({
          showModalStatus1: false
        });
      }
    }.bind(this), 200)

    // 显示  
    if (currentStatu == "open") {
      // 调用函数时，传入new Date()参数，返回值是日期和时间
      // var timet = utilll.formatTime(new Date());
      // 再通过setData更改Page()里面的data，动态更新页面的数据
      this.setData({
        // time: timet,
        showModalStatus1: true
      });
    }
  }
})