_this.pageinit = function () { var that = _this newPageInit(that) } // 在页面初始化加载之后 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) { // mbos('oldBill', e.index).value(localeResource.view) // 查看原单 点击查看按钮 multiLangField(e.index)// 兼容多语言字段回显的问题 viewOldBill(e.index) // 给查看添加点击事件 // 初始化审批流 _this.getNextPerson(); getOldEntry(e) }) // 初始化审批流 _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 viewOldBill(index){ $("#oldBill_" + index).bind('click', function () { if (mbos('entries.tripBill', index).value() && mbos('entries.tripBill', index).value().id) { openPage('trip880', 'tripView.editui', { billID: mbos('entries.tripBill', index).value().id, // 出差单id entryId: mbos('entries_tripEntryBill', index).value().id, // 聚焦在对应的分录明细上 billType: 'tripBill' // 出差单的name,取自天天勤。作用是过滤分录,不显示非自己的单据明细 }) } }) } function getOldEntry(e) { var index = e.index if (mbos.getRequestParams().oldEntry) { var oldEntry = JSON.parse(mbos.getRequestParams().oldEntry) if (oldEntry) { console.log('oldEntry', oldEntry) mbos('entries_tripEntryBill', index).value({id:oldEntry.id}) // 分录id mbos('entries_isAllDay', index).value(oldEntry.entries.isAllDay == '是' ? 'true':'false') // TODO 是中文值 setTimeout(function(){ mbos('entries_realTripDays', index).attr('accuracy', _this.decimal) // 设置小数点后位数 mbos('entries_realTripDays', index).value(oldEntry.entries.tripDays) }, 500) mbos('entries_realStartTime', index).value(oldEntry.entries.tripStartTime) mbos('entries_realEndTime', index).value(oldEntry.entries.tripEndTime) // 回显弹性算时长 mbos.http.ajax({ // 是否弹性算时长 'url': `/mbos/data/getObjectValue?id=${mbos('entries_tripEntryBill', index).value().id}&fields=isElasticCalLen`, success: function (data) { mbos('entries_isElasticCalLen', index).value(data.isElasticCalLen) // 原出差单单据id mbos('entries_isElasticCalLen', index).show() // 原出差单单据id } }); } } if (oldEntry && oldEntry.bill) { mbos('entries.tripBill', index).value(oldEntry.bill) // 原出差单单据id } else { // 通过分录id获取原出差单据的id mbos.http.ajax({ 'url': `/mbos/data/getObjectValue?id=${mbos('entries_tripEntryBill', index).value().id}&fields=bill.id`, success: function (data) { mbos('entries_tripBill', index).value(data.bill) // 原出差单单据id } }); } } // 保存按钮 _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 }) } }); } else { mbos.msgBox.showMessage('billID获取失败!'); } } // 给隐藏的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.tripBill = _this.tripBillId // 原出差单id if(method == 'getNextPerson'){ // entry.position = easContext.position.id; // entry.adminOrgUnit = easContext.position.adminOrgUnit.id; if(entry.realStartTime){ entry.realStartTime = moment(entry.realStartTime).format('YYYY-MM-DD HH:mm:ss'); } if(entry.realEndTime){ entry.realEndTime = moment(entry.realEndTime).format('YYYY-MM-DD HH:mm:ss'); } }else{ // delete entry.position; // delete entry.adminOrgUnit; } } // 计算单据时长 var getTimeLength = _.debounce(function (index) { var callback = function (res) { mbos('entries_realTripDays', index).attr('accuracy', _this.decimal) // 设置小数点后位数 mbos('entries_realTripDays', index).value(Number(res.data)) } setModel(index) var entry = mbos('entity').data.entries[index] if (entry.realEndTime && entry.realStartTime) { baseInterface('getBillLength', callback, index) } }, 200) // 根据时间判断 是否展示弹性算时长字段 function isElastic(index) { var callback = function (res) { if (res.data) { mbos('entries_isElasticCalLen', index).show() } else { mbos('entries_isElasticCalLen', index).hide() } } setModel(index) if (mbos('entries_realStartTime',0).value() && mbos('entries_realEndTime',0).value()) { baseInterface('showIsElasticCalCtrl', callback, index) } } // 获取整天的开始、结束时间 var getStartEndTime = _.debounce(function (event) { if (String(mbos('entries_isAllDay', event.index).value()) == 'true') { // 整天出差 var callback = function (res) { mbos('entries_realStartTime', event.index).value(moment(res.data.beginTime).format('YYYY-MM-DD HH:mm')) mbos('entries_realEndTime', event.index).value(moment(res.data.endTime).format('YYYY-MM-DD HH:mm')) } baseInterface('getAllDayBeginAndEndTime', callback, event.index) } }, 0) // 如果是整天出差 则使用date;否则使用datetime,同时清空时长 function recalcTime(event) { mbos('entries_realTripDays', event.index).value('') if (event.new_value) { var entry = mbos('entity').data.entries[event.index] if (entry.realStartTime || entry.realEndTime) { getStartEndTime(event) } } getTimeLength(event.index) } // 计算时长 _this.calTime1 = function (event) { // getTimeLength(event.index) isElastic(event.index) recalcTime(event) } _this.calTime2 = function (event) { // getTimeLength(event.index) isElastic(event.index) recalcTime(event) } // 弹性时段算时长 _this.calTime3 = function (event) { recalcTime(event) } // 切换是否整天 _this.isAllDayChange = function (event) { recalcTime(event) } // 时长更改时 做校验 _this.lengthChange = function(event){ var value = event.new_value // 判断是否小于0 if (!isNaN(parseFloat(value)) && value < 0) { mbos.msgBox.showError(localeResource.lengthValid); setTimeout(()=>{ mbos('entries_realTripDays',event.index).value(0) }) return } }