yuanzhi_kuang 2 дней назад
Родитель
Сommit
7b07d63e5d
2 измененных файлов с 628 добавлено и 0 удалено
  1. 314 0
      mbos/mbos_其他外出.js
  2. 314 0
      mbos/mbos_其他外出_备份_20260727.js

+ 314 - 0
mbos/mbos_其他外出.js

@@ -0,0 +1,314 @@
+_this.pageinit = function () {
+  newPageInit()
+
+}
+// 从其他页面跳过来时,获取日期
+function setDate() {
+  var date = moment(mbos.getRequestParams().date).format('YYYY-MM-DD')
+  if (date && mbos.getRequestParams().operateState == 'ADDNEW') {
+    mbos('entries_startTime', 0).value(date + ' 08:00')
+    getStartEndTime(0)
+  }
+}
+
+
+// 异地办公类型F7 传递变量 ,TeleOfficeType为异地办公类型数据源的id
+mbos('TeleOfficeType').bind('beforeLoad', function (e) {
+  var params = setParams('getOtherOffsiteFilter', e.index) // 获取参数
+  mbos.variable.setValue("v_entry", encodeURIComponent(JSON.stringify(params))); //赋值给变量
+})
+// 交通工具F7 传递变量 ,AtsVehicle为交通工具数据源的id
+mbos('AtsVehicle').bind('beforeLoad', function (e) {
+  var params = setParams('getTrafficFilter', 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') // 详情页面的编码 (个别页面可特殊处理直接写入) 例如 offsiteView.editui
+  _this.operateState = mbos.getRequestParams().operateState // 'ADDNEW' 'EDIT' 'VIEW'
+  _this.type = mbos.getRequestParams().type || '';	// team 团队考勤
+  //   单据说明
+  mbos('description').bind('click', function () {
+    handleClickDesc()
+  })
+})
+mbos('entries').bind('afterRendered', function (e) {
+  multiLangField(e.index)// 兼容多语言字段回显的问题
+  _this.setDefaultValue(e.index);
+  if (e.index == 0) {
+    setDate()
+  }
+  //debugger;
+  if(_this.type == 'team'){
+    mbos('entries_person',e.index).show();
+    mbos('entries_person',e.index).attr("mustinput",true)
+  }
+  // 初始化审批流
+  _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 () { }
+      });
+    }
+  })
+}
+// 设置默认值
+_this.setDefaultValue = function(index){
+  var type = mbos.getRequestParams().type;
+  var teleOfficeType = mbos('entries_teleOfficeType',index).value();
+  if(!teleOfficeType || type==="team"){
+    mbos('entries_teleOfficeType',index).value({
+      bosType: "C543D2BA",
+      id: "rqRfuUU1RuGNkFYUz/SeksVD0ro=",
+      name: "其它外出单",
+      number: "0003"
+    })
+  }
+}
+// 提交前增加校验
+_this.verify = function(action){
+  var flag = true;
+  var entries = mbos('entity').data.entries
+  $.each(entries, function(i,item){
+      if(item.startTime >= item.endTime){
+        mbos.ui.showInfo('开始时间应小于结束时间');
+        flag = false;
+        return false;
+      }
+     if(item.days === 0){
+        mbos.ui.showInfo('天数不能为0');
+        flag = false;
+        return false;
+     }
+  })
+  return flag;
+}
+// 保存按钮
+_this.save = function (event) {
+  if(!_this.verify()){
+    return false;
+  }
+  setModel()
+  //debugger
+  var param = getModel('', 'save');
+  if(_this.type == 'team'){
+    param.assistBill = 1;
+    param.permItemId = 'e87c4069-0622-47ed-b592-22bbe0cb1321PERMITEM';
+  }
+  baseInterface('save', toView, '', param) // 调用保存接口
+}
+// 提交按钮
+_this.submit = function (event) {
+  if(!_this.verify()){
+    return false;
+  }
+    // 确认提交 弹框
+  mbos.ui.showConfirm({
+    title: localeResource.confirmSubmit,
+    iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
+    callback: function (data) {
+      if (data == 0) {     
+        setModel()
+         //debugger
+        var param = getModel('', 'submit');
+        if(_this.type == 'team'){
+          param.assistBill = '1';
+          param.permItemId = 'e87c4069-0622-47ed-b592-22bbe0cb1321PERMITEM';
+        }
+        baseInterface('submit', toView, '', param, _this.type) // 调用提交接口
+      }
+    }
+  });
+
+}
+
+// 点击“保存、提交” 跳转页面
+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, type: _this.type })
+      }
+    });
+  }
+}
+// 给隐藏的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,i) {
+      if(_this.type != 'team'){
+      	entry.person = easContext.person
+      }
+      // entry.position = easContext.position.id
+      // entry.adminOrgUnit = easContext.position.adminOrgUnit.id
+      // mbos('entries_person',i).value(easContext.person);
+      // mbos('entries_adminOrgUnit',i).value(easContext.position.adminOrgUnit);
+      // mbos('entries_position',i).value(easContext.position);
+       entry.hours = mbos('hours',i).value();
+      getEntries(entry,method) // 各单据处理分录数据
+    })
+	return entries;
+  }
+}
+// 各单据处理分录数据的函数
+function getEntries(entry,method) {
+  // 给时间点赋值
+  entry.startTimeHMS = entry.startTime
+  entry.endTimeHMS = entry.endTime
+  if(method == 'getNextPerson'){
+    entry.position = easContext.position.id;
+    entry.adminOrgUnit = easContext.position.adminOrgUnit.id;
+    if(entry.startTime){
+      entry.startTime = moment(entry.startTime).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTime){
+      entry.endTime = moment(entry.endTime).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.startTimeHMS){
+      entry.startTimeHMS = moment(entry.startTimeHMS).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTimeHMS){
+      entry.endTimeHMS = moment(entry.endTimeHMS).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.startTimeDate){
+      entry.startTimeDate = moment(entry.startTimeDate).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTimeDate){
+      entry.endTimeDate = moment(entry.endTimeDate).format('YYYY-MM-DD HH:mm:ss');
+    }
+  }else{
+    delete entry.position;
+    delete entry.adminOrgUnit;
+  }
+}
+// 计算单据时长
+function getTimeLength(index) {
+  var callback = function (res) {
+    mbos('entries_days', index).value(res.data.days);
+    mbos('hours', index).value(res.data.hours);
+  }
+  setModel(index)
+  var entry = mbos('entity').data.entries[index]
+  if (entry.endTime && entry.startTime) {
+    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.endTime && entry.startTime) {
+    baseInterface('showIsElasticCalCtrl', callback, index)
+  }
+}
+// 获取整天的开始、结束时间
+function getStartEndTime(i) {
+  var callback = function (res) {
+    if(res.data.beginTime || res.data.endTime){
+      mbos('entries_startTime', i).value(moment(res.data.beginTime).format('YYYY-MM-DD HH:mm'))
+      mbos('entries_endTime', i).value(moment(res.data.endTime).format('YYYY-MM-DD HH:mm'))
+    }
+  }
+  if (mbos('entries_startTime', i).value() || mbos('entries_endTime', i).value()){
+    setModel(i)
+    var params = _.cloneDeep(mbos('entity').data)
+    var endTime = params.entries[i].endTime
+    if (endTime && endTime.includes('00:00')) { // 防止结束日期会一直触发 
+      params.entries[i].endTime = 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_days', event.index).value('')
+  if (String(event.new_value) == 'true') {
+    var entry = mbos('entity').data.entries[event.index]
+    if (entry.endTime || entry.startTime) {
+      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)) && Number(value) < 0) {
+   mbos.msgBox.showError(localeResource.lengthValid);
+    setTimeout(()=>{
+      mbos('entries_days',event.index).value(0)
+    })
+    return
+  }
+  
+}
+        

+ 314 - 0
mbos/mbos_其他外出_备份_20260727.js

@@ -0,0 +1,314 @@
+_this.pageinit = function () {
+  newPageInit()
+
+}
+// 从其他页面跳过来时,获取日期
+function setDate() {
+  var date = moment(mbos.getRequestParams().date).format('YYYY-MM-DD')
+  if (date && mbos.getRequestParams().operateState == 'ADDNEW') {
+    mbos('entries_startTime', 0).value(date + ' 08:00')
+    getStartEndTime(0)
+  }
+}
+
+
+// 异地办公类型F7 传递变量 ,TeleOfficeType为异地办公类型数据源的id
+mbos('TeleOfficeType').bind('beforeLoad', function (e) {
+  var params = setParams('getOtherOffsiteFilter', e.index) // 获取参数
+  mbos.variable.setValue("v_entry", encodeURIComponent(JSON.stringify(params))); //赋值给变量
+})
+// 交通工具F7 传递变量 ,AtsVehicle为交通工具数据源的id
+mbos('AtsVehicle').bind('beforeLoad', function (e) {
+  var params = setParams('getTrafficFilter', 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') // 详情页面的编码 (个别页面可特殊处理直接写入) 例如 offsiteView.editui
+  _this.operateState = mbos.getRequestParams().operateState // 'ADDNEW' 'EDIT' 'VIEW'
+  _this.type = mbos.getRequestParams().type || '';	// team 团队考勤
+  //   单据说明
+  mbos('description').bind('click', function () {
+    handleClickDesc()
+  })
+})
+mbos('entries').bind('afterRendered', function (e) {
+  multiLangField(e.index)// 兼容多语言字段回显的问题
+  _this.setDefaultValue(e.index);
+  if (e.index == 0) {
+    setDate()
+  }
+  //debugger;
+  if(_this.type == 'team'){
+    mbos('entries_person',e.index).show();
+    mbos('entries_person',e.index).attr("mustinput",true)
+  }
+  // 初始化审批流
+  _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 () { }
+      });
+    }
+  })
+}
+// 设置默认值
+_this.setDefaultValue = function(index){
+  var type = mbos.getRequestParams().type;
+  var teleOfficeType = mbos('entries_teleOfficeType',index).value();
+  if(!teleOfficeType || type==="team"){
+    mbos('entries_teleOfficeType',index).value({
+      bosType: "C543D2BA",
+      id: "rqRfuUU1RuGNkFYUz/SeksVD0ro=",
+      name: "其它外出单",
+      number: "0003"
+    })
+  }
+}
+// 提交前增加校验
+_this.verify = function(action){
+  var flag = true;
+  var entries = mbos('entity').data.entries
+  $.each(entries, function(i,item){
+      if(item.startTime >= item.endTime){
+        mbos.ui.showInfo('开始时间应小于结束时间');
+        flag = false;
+        return false;
+      }
+     if(item.days === 0){
+        mbos.ui.showInfo('天数不能为0');
+        flag = false;
+        return false;
+     }
+  })
+  return flag;
+}
+// 保存按钮
+_this.save = function (event) {
+  if(!_this.verify()){
+    return false;
+  }
+  setModel()
+  //debugger
+  var param = getModel('', 'save');
+  if(_this.type == 'team'){
+    param.assistBill = 1;
+    param.permItemId = 'e87c4069-0622-47ed-b592-22bbe0cb1321PERMITEM';
+  }
+  baseInterface('save', toView, '', param) // 调用保存接口
+}
+// 提交按钮
+_this.submit = function (event) {
+  if(!_this.verify()){
+    return false;
+  }
+    // 确认提交 弹框
+  mbos.ui.showConfirm({
+    title: localeResource.confirmSubmit,
+    iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
+    callback: function (data) {
+      if (data == 0) {     
+        setModel()
+         //debugger
+        var param = getModel('', 'submit');
+        if(_this.type == 'team'){
+          param.assistBill = '1';
+          param.permItemId = 'e87c4069-0622-47ed-b592-22bbe0cb1321PERMITEM';
+        }
+        baseInterface('submit', toView, '', param, _this.type) // 调用提交接口
+      }
+    }
+  });
+
+}
+
+// 点击“保存、提交” 跳转页面
+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, type: _this.type })
+      }
+    });
+  }
+}
+// 给隐藏的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,i) {
+      if(_this.type != 'team'){
+      	entry.person = easContext.person
+      }
+      // entry.position = easContext.position.id
+      // entry.adminOrgUnit = easContext.position.adminOrgUnit.id
+      // mbos('entries_person',i).value(easContext.person);
+      // mbos('entries_adminOrgUnit',i).value(easContext.position.adminOrgUnit);
+      // mbos('entries_position',i).value(easContext.position);
+       entry.hours = mbos('hours',i).value();
+      getEntries(entry,method) // 各单据处理分录数据
+    })
+	return entries;
+  }
+}
+// 各单据处理分录数据的函数
+function getEntries(entry,method) {
+  // 给时间点赋值
+  entry.startTimeHMS = entry.startTime
+  entry.endTimeHMS = entry.endTime
+  if(method == 'getNextPerson'){
+    entry.position = easContext.position.id;
+    entry.adminOrgUnit = easContext.position.adminOrgUnit.id;
+    if(entry.startTime){
+      entry.startTime = moment(entry.startTime).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTime){
+      entry.endTime = moment(entry.endTime).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.startTimeHMS){
+      entry.startTimeHMS = moment(entry.startTimeHMS).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTimeHMS){
+      entry.endTimeHMS = moment(entry.endTimeHMS).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.startTimeDate){
+      entry.startTimeDate = moment(entry.startTimeDate).format('YYYY-MM-DD HH:mm:ss');
+    }
+    if(entry.endTimeDate){
+      entry.endTimeDate = moment(entry.endTimeDate).format('YYYY-MM-DD HH:mm:ss');
+    }
+  }else{
+    delete entry.position;
+    delete entry.adminOrgUnit;
+  }
+}
+// 计算单据时长
+function getTimeLength(index) {
+  var callback = function (res) {
+    mbos('entries_days', index).value(res.data.days);
+    mbos('hours', index).value(res.data.hours);
+  }
+  setModel(index)
+  var entry = mbos('entity').data.entries[index]
+  if (entry.endTime && entry.startTime) {
+    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.endTime && entry.startTime) {
+    baseInterface('showIsElasticCalCtrl', callback, index)
+  }
+}
+// 获取整天的开始、结束时间
+function getStartEndTime(i) {
+  var callback = function (res) {
+    if(res.data.beginTime || res.data.endTime){
+      mbos('entries_startTime', i).value(moment(res.data.beginTime).format('YYYY-MM-DD HH:mm'))
+      mbos('entries_endTime', i).value(moment(res.data.endTime).format('YYYY-MM-DD HH:mm'))
+    }
+  }
+  if (mbos('entries_startTime', i).value() || mbos('entries_endTime', i).value()){
+    setModel(i)
+    var params = _.cloneDeep(mbos('entity').data)
+    var endTime = params.entries[i].endTime
+    if (endTime && endTime.includes('00:00')) { // 防止结束日期会一直触发 
+      params.entries[i].endTime = 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_days', event.index).value('')
+  if (String(event.new_value) == 'true') {
+    var entry = mbos('entity').data.entries[event.index]
+    if (entry.endTime || entry.startTime) {
+      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)) && Number(value) < 0) {
+   mbos.msgBox.showError(localeResource.lengthValid);
+    setTimeout(()=>{
+      mbos('entries_days',event.index).value(0)
+    })
+    return
+  }
+  
+}
+