_this.pageinit = function () {
    newPageInit()
  }
  // 从其他页面跳过来时，获取日期
  function setDate() {
    var date = moment(mbos.getRequestParams().date).format('YYYY-MM-DD')
    if (date && mbos.getRequestParams().operateState == 'ADDNEW') {
      mbos('entries_tripStartTime', 0).value(date + ' 08:00')
      getStartEndTime(0)
    }
  }
  
  // 过滤出差类型F7 传递变量 ，dsQuery1为出差类型数据源的id
  mbos('dsQuery1').bind('beforeLoad', function (e) {
    var params = setParams('getTripTypeFilter', e.index) // 获取参数
    mbos.variable.setValue("v_entry", encodeURIComponent(JSON.stringify(params))); //赋值给变量
  })
  
  // 	在页面初始化加载之后
  mbos('page').bind('afterLoad', function () {
    _this.path = mbos.pageInfo.path// 轻应用的路径编码 例如 trip880
    _this.detailPageCode = mbos.pageInfo.name.replace('Add', 'View') // 详情页面的编码 (个别页面可特殊处理直接写入) 例如 tripView.editui
    _this.operateState = mbos.getRequestParams().operateState // 'ADDNEW' 'EDIT' 'VIEW'
    // 初始化审批流
    // mbos('nextperson1').checkParticipantPerson({
    //   "callback": function () { }
    // });
    //   单据说明
    mbos('description').bind('click', function () {
      handleClickDesc()
    })
  })
  mbos('entries').bind('afterRendered', function (e) {
    showTimeZone(e.index)
    multiLangField(e.index)// 兼容多语言字段回显的问题
    if (e.index == 0) {
      setDate()
      // 初始化审批流
        _this.getNextPerson();
    }
  })
  // 初始化审批流
  _this.getNextPerson = function(){
    var entries = setModel('getNextPerson');
    var data = JSON.parse(JSON.stringify(mbos('entity').value()));
    data.entries = JSON.parse(JSON.stringify(entries));
    var date = mbos.getRequestParams().date || new Date()
    var today = moment(date).format('YYYY-MM-DD')
    var beginTime = today + ' 00:00';
    var endTime = today + ' 23:59';
    mbos.eas.invokeScript({
      name: "getHROrgUnit",
      param: [{'beginTime': beginTime, 'endTime':endTime}],
      success: function (res) {
        console.log(res)
        if(res.hrOrgUnitId){
          data.hrOrgUnit = res.hrOrgUnitId
        }
        mbos('nextperson1').checkParticipantPerson({
          'editdata': data,
          "callback": function () { }
        });
      }
    })
  }
  // 是否展示时区
  function showTimeZone(index) {
    var callback = function (res) {
      if (res.data == 'true') {
        mbos('entries_timeZone', index).show()
      }
    }
    setModel()
    baseInterface('isShowTimezone', callback, index)
  }
  // 保存按钮
  _this.save = function (event) {
    setModel()
    baseInterface('save', toView) // 调用保存接口
  }
  // 提交按钮
  _this.submit = function (event) {
      // 确认提交 弹框
    mbos.ui.showConfirm({
      title: localeResource.confirmSubmit,
      iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
      callback: function (data) {
        if (data == 0) {     
          setModel()
          baseInterface('submit', toView) // 调用提交接口
        }
      }
    });
  
  }
  
  // 点击“保存、提交” 跳转页面
  function toView(res) {
    // 提交接口 返回的res.data为数组，取第一条数据
    if (res.data.keyValue || (res.data.length > 0 && res.data[0].keyValue)) {
      // 操作成功 提示弹框
      mbos.ui.showInfo({
        title: localeResource.succeed,
        iconclass: "kdfont kdfont-zhuangtai_wancheng the_success",
        callback: function () {
          openPage(_this.path, _this.detailPageCode, { billID: res.data.keyValue || res.data[0].keyValue })
        }
      });
    }
  }
  // 给隐藏的model赋值
  function setModel(method) {
    if (typeof _this.operateState != "undefined" && (_this.operateState === "ADDNEW" || _this.operateState === "EDIT")) {
      var entries = mbos('entity').data.entries
      entries.map(function (entry) {
        entry.person = easContext.person
        entry.position = easContext.position
        entry.adminOrgUnit = easContext.position.adminOrgUnit
        getEntries(entry,method) // 各单据处理分录数据
      })
      return entries
    }
  }
  // 各单据处理分录数据的函数
  function getEntries(entry,method) {
    entry.startTimeHMS = entry.tripStartTime
    entry.endTimeHMS = entry.tripEndTime
    if(method == 'getNextPerson'){
      // entry.position = easContext.position.id;
      // entry.adminOrgUnit = easContext.position.adminOrgUnit.id;
      if(entry.startTimeHMS){
        entry.startTimeHMS = moment(entry.startTimeHMS).format('YYYY-MM-DD HH:mm:ss')
      }
      if(entry.tripStartTime){
        entry.tripStartTime = moment(entry.tripStartTime).format('YYYY-MM-DD HH:mm:ss')
      }
      if(entry.endTimeHMS){
        entry.endTimeHMS = moment(entry.endTimeHMS).format('YYYY-MM-DD HH:mm:ss')
      }
      if(entry.tripEndTime){
        entry.tripEndTime = moment(entry.tripEndTime).format('YYYY-MM-DD HH:mm:ss')
      }
    }else{
      // delete entry.position;
      // delete entry.adminOrgUnit;
      
    }
  }
  // 计算单据时长
  function getTimeLength(index) {
    var callback = function (res) {
      mbos('entries_tripDays', index).value(res.data)
    }
    setModel(index)
    var entry = mbos('entity').data.entries[index]
    if (entry.tripEndTime && entry.tripStartTime) {
      baseInterface('getBillLength', callback, index)
    }
  }
  // 根据时间判断 是否展示弹性算时长字段
  function isElastic(index) {
    var callback = function (res) {
      if (res.data) {
        mbos('entries_isElasticCalLen', index).show()
      }
    }
    setModel(index)
    var entry = mbos('entity').data.entries[index]
    if (entry.tripEndTime && entry.tripStartTime) {
      baseInterface('showIsElasticCalCtrl', callback, index)
    }
  }
  // 获取整天的开始、结束时间
  function getStartEndTime(i) {
    var callback = function (res) {
      mbos('entries_tripStartTime', i).value(moment(res.data.beginTime).format('YYYY-MM-DD HH:mm'))
      mbos('entries_tripEndTime', i).value(moment(res.data.endTime).format('YYYY-MM-DD HH:mm'))
      
    }
    if (mbos('entries_tripStartTime', i).value() || mbos('entries_tripEndTime', i).value()){
      setModel(i)
      var params = _.cloneDeep(mbos('entity').data)
      var endTime = params.entries[i].tripEndTime
      if (endTime && endTime.includes('00:00')) { // 防止结束日期会一直触发 
        params.entries[i].tripEndTime = moment(endTime).subtract(1, "minutes").format("YYYY-MM-DD HH:mm")
      }
      // 【BT-01684276】改为传一条分录数据
      params.entries = [params.entries[i]];
      baseInterface('getAllDayBeginAndEndTime', callback, i, params)
    }
  }
  
  // 如果是整天出差 则使用date；否则使用datetime，同时清空时长
  function recalcTime(event) {
    mbos('entries_tripDays', event.index).value('')
    if (String(event.new_value) == 'true') {
      var entry = mbos('entity').data.entries[event.index]
      if (entry.tripEndTime || entry.tripStartTime) {
        getStartEndTime(event.index) // 获取pc端配置的起止时间
        //  _this.startHadCalculate = true // 阻止二次触发 出差单整天时 开始时间触发问题
        // _this.endHadCalculate = true // 阻止二次触发
      }
    }
  }
  
  // 计算时长
  _this.calTime1 = function (event) {
    getTimeLength(event.index)
    isElastic(event.index)
    if (String(mbos('entries_isAllDay', event.index).value()) == 'true' && !Boolean(_this.startHadCalculate)) {
      getStartEndTime(event.index)
      // _this.startHadCalculate = true // 阻止二次触发
    } else {
      _this.startHadCalculate = false
    }
      console.log('startHadCalculate', _this.startHadCalculate)
  }
  _this.calTime2 = function (event) {
    getTimeLength(event.index)
    isElastic(event.index)
    if (String(mbos('entries_isAllDay', event.index).value()) == 'true' && !Boolean(_this.endHadCalculate)) {
      getStartEndTime(event.index)
      // _this.endHadCalculate = true// 阻止二次触发
    } else {
      _this.endHadCalculate = false
    }
      console.log('endHadCalculate', _this.endHadCalculate)
  }
  // 监听是否整天
  _this.calTime3 = function (event) {
    getTimeLength(event.index)
    recalcTime(event)
  }
  // 监听弹性
  _this.calTime4 = function (event) {
    getTimeLength(event.index)
  }
  
  // 时长更改时 做校验
  _this.lengthChange = function(event){
    var value = event.new_value
    //   判断是否小于0
    if (!isNaN(parseFloat(value)) && value < 0) {
      mbos.msgBox.showError(localeResource.lengthValid);
      setTimeout(()=>{
        mbos('entries_tripDays',event.index).value(0)
      })
      return
    }
    
  }
          
  