_this.pageinit = function () { newPageInit(_this) _this.entryleaveDay={}; } // 在页面初始化加载之后 mbos('page').bind('afterLoad', function () { _this.bfTypeValue = "8r0AAAAMhrv9LVKY"; // "8r0AAAA09p9IT3K3" _this.customeBf = "8r0AAAA09p9IT3K3"; _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() }) }) // 【请假类型】F7过滤, _this.holidayIdList是接口返回的过滤数据,再依据这个过滤F7 function filterLeaveTypeF7(index) { var filterStr = _this.holidayIdList.join('\',\'') mbos('entries_sourceHolidayType', index).attr('dynamicFilter', 'id in (\'' + filterStr + '\')'); // 动态添加过滤 } // 哺乳假F7 function filterBreastTypeF7(index) { mbos('entries.bfType', index).attr('dynamicFilter', 'state = 1'); // 动态添加过滤 } // 分录渲染后 mbos('entries').bind('afterRendered', function (e) { _this.leaveLengthTitle = mbos('entries_leaveLength_0').attr('title').split('(')[0] // 获取请假时长的标题 _this.bindDateChange(e.index) _this.getAllDayField(e.index) getHolidayType(e) multiLangField(e.index)// 兼容多语言字段回显的问题 //20260507 出差地必填 _this.controlPlaceRequired(e.index); }) //兼容是否有整天请假字段,并根据分录数据的整天请假的值设置时间格式 _this.getAllDayField = function (index) { var setAllDayTime = function () { if(_this.hasAllDayField === 'noAllDayField'){ mbos('entries_isAllDay',index).hide() mbos('entries_isAllDay',index).value(false) }else { mbos('entries_isAllDay',index).show() _this.setTimeVisiable(index) } } if(!_this.hasAllDayField){ var callback = function (res) { _this.hasAllDayField = res.data.isAllDay ? 'hasAllDayField' : 'noAllDayField'; setAllDayTime() } baseInterface('getDecimalPlace', callback) }else{ setAllDayTime() } } // 保存按钮 _this.save = function (event) { // ====================== 在这里加开始 20260507 ====================== if(!_this.validatePlaceRequired()){ return; // 校验不通过,直接拦截,不往下执行 } // ====================== 在这里加结束 ====================== var params = getModel(-1, 'save') // 封装model,不走common的封装 if(params.entries.length > 1){ params.billSourceType = '2' } baseInterface('save', toView, -1, params) // 调用保存接口 } // 提交按钮 _this.submit = function (event) { // ====================== 在这里加开始 20260507 ====================== if(!_this.validatePlaceRequired()){ return; // 校验不通过,直接拦截,不往下执行 } // ====================== 在这里加结束 ====================== // 确认提交 弹框 mbos.ui.showConfirm({ title: localeResource.confirmSubmit, iconclass: "kdfont kdfont-zhuangtai_jingshi the_info", callback: function (data) { mbos('nextperson1').checkParticipantPerson({ "editdata":getModel(-1, 'submit'), "callback": function () { if (data == 0) { var params = getModel(-1, 'submit') // 封装model,不走common的封装 baseInterface('submit', toView, -1, params) // 调用提交接口 } } }); } }); } // 点击“保存、提交” 跳转页面 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() { if (typeof _this.operateState != "undefined" && (_this.operateState === "ADDNEW" || _this.operateState === "EDIT")) { var entries = _.cloneDeep(mbos('entity').data.entries) // lodash 深拷贝 entries.map(function (entry, i) { entry.person = easContext.person // position和adminOrgUnit取后端默认值,前端取的是人事档案的不是正确的值 // entry.position = easContext.position.id // entry.adminOrgUnit = easContext.position.adminOrgUnit.id getEntries(entry, i) // 各单据处理分录数据 }) return entries } } //哺乳假 是自定义还是非自定义 _this.isCustomBr = function(index){ var htype = mbos("entries.sourceHolidayType",index).value() ? mbos("entries.sourceHolidayType",index).value().id : '' var bfType = mbos("entries.bfType",index).value() ? mbos("entries.bfType",index).value().id : '' if(htype && bfType && htype===_this.bfTypeValue && bfType!== _this.customeBf){ return 'noCustomBf'; }else if(htype && bfType && htype===_this.bfTypeValue && bfType === _this.customeBf){ return 'isCustomBf'; } } function getModel(index, method) { var entries = setModel() var obj = mbos('entity').data if (method === "save" || method === "submit"){ // 只在保存喝提交时修改枚举字段的存储,不然会清空表头的枚举字段 Object.keys(obj).map(function(key){ if (obj[key] && obj[key].isenum) {// 遍历枚举字段 依据后端需要 传参只传value obj[key] = obj[key].value } }) console.log(obj) } for(var i=0; i _this.entryleaveDay[i]){ mbos.msgBox.showError(localeResource.detialNo+(i+1)+localeResource.leaveDaysMsg); throw new Error(localeResource.prMsg) } } } // var model = { // ...obj, // entries: entries, //} var model = $.extend({},obj,{entries: entries}) if (index >= 0) { // index 为-1 时代表取所有明细 model.entries = [entries[index]] } if ((method === "save" || method === "submit") && mbos.getRequestParams().abnormalId) { model.abnormalId = mbos.getRequestParams().abnormalId } var personList = mbos('personSelector1').$element ? mbos('personSelector1').getpersonList() : []; // 抄送人列表 model.ccPersonIds = personList.map(function (i) { return (i.personid || i.id) }).join(',') model.ccPerson = personList.map(function (i) { return (i.personid || i.id) }).join(',') return model } // 各单据处理分录数据的函数 function getEntries(entry, i) { if (!entry.bfType) entry.bfType = '' var halfData = _this['isHalf' + i] var beginHalf = mbos('beginHalf', i).value() ? mbos('beginHalf', i).value().value : '' if (halfData && entry.beginTime && !entry.beginTime.split(' ')[1] && beginHalf) { // 页面显示的是上午下午,但是传参得拼接上时分 格式为年月日时分 //entry.beginTime = entry.beginTime + ' ' + (mbos('beginHalf', i).value().value === 'am' ? halfData.amBeginTime : halfData.pmBeginTime) //entry.endTime = entry.endTime + ' ' + (mbos('endHalf', i).value().value === 'am' ? halfData.amEndTime : halfData.pmEndTime) entry.beginTime = entry.beginTime.split(" ")[0] + ' ' + halfData[mbos('beginHalf', i).value().value] entry.endTime = entry.endTime.split(" ")[0] + ' ' + halfData[mbos('endHalf', i).value().value] } // 如果是哺乳假 非自定义的类型 结束时间需要拼接时分为23:59 var _holidayType = mbos('entries_sourceHolidayType', i).value() var _bfType = mbos('entries_bfType', i).value() if (_holidayType && _holidayType.name == localeResource.bf_holiday && _bfType && _bfType.name !== localeResource.Customized){ entry.beginTime = entry.beginTime.split(" ")[0] + ' 00:00' entry.endTime = entry.endTime.split(" ")[0] + ' 23:59' } if(_holidayType && _holidayType.name !== localeResource.bf_holiday && entry.isAllDay){ if(_this['fullBeginTime_'+i]){ entry.beginTime = _this['fullBeginTime_'+i]; entry.endTime = _this['fullEndTime_'+i]; } else { var beginHMS = _this['beginHMS_'+i] ? _this['beginHMS_'+i] : '00:00'; var endHMS = _this['endHMS_'+i] ? _this['endHMS_'+i] : '23:59'; entry.beginTime = (entry.beginYMD || '') + " " + beginHMS; entry.endTime = (entry.endYMD || '') + " " + endHMS; } } } // 获取请假类型 var getHolidayType = _.debounce(function (e) { var callback = function (res) { var list = res.data _this.holidayIdList = res.data.map(function(item){return item.holidayTypeId.id}) // 存储过滤后的请假类型F7数据 filterLeaveTypeF7(e.index) filterBreastTypeF7(e.index) // 请假类型数组 _this.holidayType = {} for (var i = 0; i < list.length; i++) { var typeId = list[i].holidayTypeId.id _this.holidayType[typeId] = { holidayPolicyId: list[i].holidayPolicyInfo.id, sourceUnit: list[i].unit, sourceHolidayType: list[i].holidayTypeId, description: list[i].description } } if (mbos.getRequestParams().type && mbos.getRequestParams().holidayTypeId){ // 从我的假期页面跳转过来,携带赋值假期类型 mbos('entries_sourceHolidayType', e.index).value({ id: decodeURIComponent(mbos.getRequestParams().holidayTypeId), name: mbos.getRequestParams().type }) } if (mbos('entries_sourceHolidayType', e.index).value()) { _this.typeChange({ index: e.index, new_value: mbos('entries_sourceHolidayType', e.index).value(), old_value: '' }) } } var date = mbos.getRequestParams().date || new Date() // 需要传参时间,默认为当天 或其他页面带过来的参数 var today = moment(date).format('YYYY-MM-DD') if (!mbos('entries_beginTime', e.index).value()) { mbos('entries_beginTime', e.index).value(today + ' 00:00') mbos('entries_beginYMD', e.index).value(today) } if (!mbos('entries_endTime', e.index).value()) { mbos('entries_endTime', e.index).value(today + ' 23:59') mbos('entries_endYMD', e.index).value(today) } setModel() baseInterface('getHolidayTypeByPerson', callback, e.index) }, 0) // 接口计算请假时长 var getTimeLength = _.debounce(function (index) { var callback = function (res) { mbos('entries_leaveLength', index).value(res.data.leaveBillDays) _this.entryleaveDay[index] = res.data.leaveBillDays } var addDayCallback = function (res) { var isHalf = _this['isHalf' + index]; mbos('entries_leaveLength', index).value(res.data.leaveLength); _this.entryleaveDay[index] = res.data.leaveBillDays if(isHalf){ _this['beginHMS_'+index] = res.data.amStartWorkTime _this['endHMS_'+index] = res.data.pmEndWorkTime }else{ _this['beginHMS_'+index] = res.data.beginHMS _this['endHMS_'+index] = res.data.endHMS } var beginHMS = isHalf ? res.data.amStartWorkTime : res.data.beginHMS; var endHMS = isHalf ? res.data.pmEndWorkTime : res.data.endHMS; _this['fullBeginTime_'+index] = res.data.beginYMD.split(" ")[0] + " " + beginHMS; _this['fullEndTime_'+index] = res.data.endYMD.split(" ")[0] + " " + endHMS; _this.changeTime = true mbos("entries_beginTime_"+index).value(res.data.beginYMD); mbos("entries_endTime_"+index).value(res.data.endYMD); setTimeout(function(){ _this.changeTime = false $("#entries_beginTime_"+index+" .ng-pristine").val(_this['fullBeginTime_'+index]) $("#entries_endTime_"+index+" .ng-pristine").val(_this['fullEndTime_'+index]) }) } var params = getModel(index,'changeLeaveBillTime') // 封装model,不走common的封装 var entry = mbos('entity').data.entries[index] if (entry.beginTime && entry.endTime && entry.sourceHolidayType) { //整天请假 var holidayTypeId = entry.sourceHolidayType.id; if(entry.isAllDay && holidayTypeId !== _this.bfTypeValue){ var param = _.cloneDeep(params); param.entries[0].beginTime =entry.beginYMD ||entry.beginTime.split(" ")[0]; param.entries[0].endTime = entry.endYMD || entry.endTime.split(" ")[0]; param.entries[0].holidayTypeId = holidayTypeId param.entries[0].personId = params.entries[0].person.id; baseInterface('changeLeaveBillTime',addDayCallback, index, param) //非整体请假 } baseInterface('getBillLength', callback, index, params) } }, 500) // 获取假期剩余额度单位 var getRemainLength = _.debounce(function (event) { var index = event.index var entry = mbos('entity').data.entries[index] delete entry.SourceHolidayType if (entry.beginTime && entry.endTime && entry.sourceHolidayType) { var callback = function (res) { if (!res.data) { $('#remainCard_' + index).css('display', 'none') return } if (res && res.data) { var type = _this.holidayType[mbos('entries_sourceHolidayType', index).value().id] $('#remainCard_' + index).css('display', 'flex') //document.getElementById('remainCard_' + index).innerText = `${type.sourceHolidayType.name} ${localeResource.remained}${res.data.remainLimitVal}${type.sourceUnit.alias} ${localeResource.remainedDays}` document.getElementById('remainCard_' + index).innerText = type.sourceHolidayType.name+' '+localeResource.remained+res.data.remainLimitVal+type.sourceUnit.alias+localeResource.remainedDays } } setModel() baseInterface('getHolidayLimitByHolidayType', callback, index) } }, 200) // 根据时间判断 是否展示弹性算时长字段 var isElastic = _.debounce(function (index) { var callback = function (res) { if (res.data) { mbos('entries_isElasticCalLen', index).show() } else { mbos('entries_isElasticCalLen', index).hide() } } // TODO holidayPolicyId待添加 setModel(index) var entry = mbos('entity').data.entries[index] if (entry.beginTime && entry.endTime) { baseInterface('showIsElasticCalCtrl', callback, index) } }, 500) /** * 修改开始结束时间的格式 * YYYY-MM-DD : 非【自定义】的所有哺乳假类型 * YYYY-MM-DD HH:mm:未启用半天假的非哺乳假;【自定义】的哺乳假类型且未启用半天假; * YYYY-MM-DD AM/PM:启用半天假的非哺乳假、【自定义】的哺乳假类型且启用半天假 */ function beginEndFormat(format, index) { mbos('entries.beginTime', index).timeFormat(format); mbos('entries.endTime', index).timeFormat(format); } // 是否开启半天假 function isHalfHoliday(index, timeFormat) { var callback = function (res) { if (res.data && res.data.isHalfDayOff) { // 先赋值 在设置半天假 最后格式化时间,顺序不能变 _this['isHalf' + index] = res.data // setHalfDay(index)// 设置开启半天假的样式 // beginEndFormat('YYYY-MM-DD', index) } else { _this['isHalf' + index] = false // hideHalfDay(index)// 隐藏半天假 // beginEndFormat(timeFormat ? timeFormat : 'YYYY-MM-DD HH:mm', index) } _this.setTimeVisiable(index); } setModel() baseInterface('getSetIsCtrlHalfDayOff', callback, index) } // 设置开启半天假的样式 function setHalfDay1(index) { $('#entries_beginTime_' + index).removeClass('col-xs-12').addClass('col-xs-9') $('#entries_endTime_' + index).removeClass('col-xs-12').addClass('col-xs-9') // mbos('beginHalf', index).show() // mbos('endHalf', index).show() $('#beginHalf_' + index).css("display", "block") $('#endHalf_' + index).css("display", "block") var half = { am: { alias: localeResource.AM, value: "am" }, pm: { alias: localeResource.PM, value: "pm" }, } var halfData = _this['isHalf' + index] // 半天假及时间字段 // 编辑时 根据时间判断 var startHM = halfData.pmBeginTime === mbos('entries_beginTime', index).value().split(' ')[1] ? half.pm : half.am var endHM = halfData.amEndTime === mbos('entries_endTime', index).value().split(' ')[1] ? half.am : half.pm //mbos('beginHalf', index).value(startHM) //mbos('endHalf', index).value(endHM) if(!mbos('beginHalf', index).value()){ mbos('beginHalf', index).value(startHM) } if(!mbos('endHalf', index).value()){ mbos('endHalf', index).value(endHM) } } // 设置开启半天假的样式 function setHalfDay(index) { // 样式变动 $('#entries_beginTime_' + index).removeClass('col-xs-12').addClass('col-xs-8') $('#entries_endTime_' + index).removeClass('col-xs-12').addClass('col-xs-8') $('#beginHalf_' + index).css("display", "block") $('#endHalf_' + index).css("display", "block") halfClick(index) // 半天枚举控件的点击事件 var halfData = _this['isHalf' + index] // 半天假及时间字段 var half = {} half[halfData.amBeginTime] = { alias: localeResource.AM + ' ' + halfData.amBeginTime, value: "amBeginTime" } half[halfData.amEndTime] = { alias: localeResource.AM + ' ' + halfData.amEndTime, value: "amEndTime" } half[halfData.pmBeginTime] = { alias: localeResource.PM + ' ' + halfData.pmBeginTime, value: "pmBeginTime" } half[halfData.pmEndTime] = { alias: localeResource.PM + ' ' + halfData.pmEndTime, value: "pmEndTime" } _this.halfEnum = half // 编辑时 根据时间判断 var sTime = mbos('entries_beginTime', index).value().split(' ')[1] var eTime = mbos('entries_endTime', index).value().split(' ')[1] var startHM = half[sTime] || half[halfData.amBeginTime] var endHM = half[eTime] || half[halfData.pmEndTime] mbos('beginHalf', index).value(startHM) mbos('endHalf', index).value(endHM) } // 半天控件的点击事件 给枚举选项拼接时分 function halfClick(index){ var list = ["amBeginTime","amEndTime","pmBeginTime","pmEndTime"] $('#beginHalf_'+index).click(function () { setTimeout(function(){ var enumList = $('.seldiv .ng-binding') for (var i = 0; i < enumList.length; i++) { if(i == 1 || i == 3){ enumList.eq(i).closest('li').hide(); } enumList[i].innerHTML = enumList[i].innerHTML.split(' ')[0] + ' ' + _this['isHalf' + index][list[i]] } }, 0) }) $('#endHalf_'+index).click(function () { setTimeout(function(){ var enumList = $('.seldiv .ng-binding') for (var i = 0; i < enumList.length; i++) { enumList.eq(i).closest('li').show(); if(i == 0 || i == 2){ enumList.eq(i).closest('li').hide(); } enumList[i].innerHTML = enumList[i].innerHTML.split(' ')[0] + ' ' + _this['isHalf' + index][list[i]] } }, 0) }) } // 隐藏半天假 function hideHalfDay(index) { $('#entries_beginTime_' + index).removeClass('col-xs-8').addClass('col-xs-12') $('#entries_endTime_' + index).removeClass('col-xs-8').addClass('col-xs-12') mbos('beginHalf', index).hide() mbos('endHalf', index).hide() } // 监听请假类型 _this.typeChange = function (event) { var index = event.index var entry = mbos('entity').data.entries[index] if (!event.new_value) return //清空 var type = _this.holidayType && _this.holidayType[event.new_value.id] if (type) { entry.sourceUnit = type.sourceUnit // 1是天 2是小时 entry.holidayPolicyId = type.holidayPolicyId entry.SourceHolidayType = type.sourceHolidayType.id } // 是否是哺乳假 var sourceHolidayTypeValue = mbos('entries_sourceHolidayType', index).value(); if (sourceHolidayTypeValue && (sourceHolidayTypeValue.id == _this.bfTypeValue || sourceHolidayTypeValue.name == localeResource.bf_holiday)) { mbos('entries.isAllDay', index).hide() mbos('entries_isAllDay',index).value(false) // 请假类型为【哺乳假】则显示 哺乳假类型、子女出生日期、产假结束日期 mbos('entries.bfType', index).show() var format = 'YYYY-MM-DD' if (mbos('entries_bfType', index).value()) { if(mbos('entries_bfType', index).value().name == localeResource.Customized){ format = 'YYYY-MM-DD HH:mm' } else { mbos('entries.childbirthday', index).show() mbos('entries.mLEndTime', index).show() } } else { // 如果哺乳假类型不存在则默认为自定义 mbos('entries_bfType', index).value({id: _this.customeBf, name: localeResource.Customized}) format = 'YYYY-MM-DD HH:mm' } isHalfHoliday(index, format) // 判断是否启用半天假 } else {// 非哺乳假时间格式只有两种:【年月日时分】、【年月日 上/下午】。启用半天假时为【年月日 上/下午】,其他的都是【年月日时分】; // 其他类型则隐藏 mbos('entries.bfType', index).hide() mbos('entries_bfType', index).value('') mbos('entries.childbirthday', index).hide() mbos('entries.childbirthday', index).value('') mbos('entries.mLEndTime', index).hide() mbos('entries.mLEndTime', index).value('') if(_this.hasAllDayField === 'hasAllDayField'){ mbos('entries.isAllDay', index).show() } isHalfHoliday(index) // 判断是否启用半天假 } if (entry.sourceUnit) { mbos('entries_leaveLength', index).attr('title', _this.leaveLengthTitle +`(${entry.sourceUnit.alias})`); } getTimeLength(index) getRemainLength(event) getExplain(index) } // 监听 开始时间 _this.calTime1 = function (event) { if(_this.changeTime) return; var beginalue = mbos('entries.beginTime',event.index).value(); var endValue = mbos('entries.endTime',event.index).value(); var newEndValue = endValue; if(new Date(beginalue).getTime() > new Date(endValue).getTime()){ if(endValue && endValue.split(' ').length >= 2){ newEndValue = beginalue.split(' ')[0] + ' ' + endValue.split(' ')[1]; mbos('entries.endTime',event.index).value(newEndValue.split(' ')[0]+" 23:59"); }else{ newEndValue = beginalue; mbos('entries.endTime',event.index).value(newEndValue); } mbos("entries.endYMD",event.index).value(newEndValue); } getHolidayType(event) getTimeLength(event.index) isElastic(event.index) getRemainLength(event) } // 监听 结束时间 _this.calTime2 = function (event) { if(_this.changeTime) return; var beginalue = mbos('entries.beginTime',event.index).value(); var endValue = mbos('entries.endTime',event.index).value(); var newBeginValue = beginalue; if(new Date(beginalue).getTime() > new Date(endValue).getTime()){ if(beginalue && beginalue.split(' ').length >= 2){ newBeginValue = endValue.split(' ')[0] + ' ' + endValue.split(' ')[1]; mbos('entries.beginTime',event.index).value(newBeginValue.split(' ')[0]+" 00:00"); }else{ newBeginValue = endValue; mbos('entries.beginTime',event.index).value(newBeginValue); } mbos("entries.beginYMD",event.index).value(newBeginValue); } getHolidayType(event) getTimeLength(event.index) isElastic(event.index) getRemainLength(event) } // 监听 子女出生日期 _this.birthdayChange = function (event) { // 请假开始时间默认值:产假结束日期,再加1天; if (event.new_value) { var value = moment(mbos('entries_childbirthday', event.index).value()).add(1, 'years').format('YYYY-MM-DD') value = moment(value).subtract(1, 'days').format('YYYY-MM-DD') mbos('entries.endTime', event.index).value(value) } } // 监听 产假结束日期 _this.mlEndChange = function (event) { // 请假结束时间默认值:子女出生日期延后一年,再减1天; if (event.new_value) { var value = moment(mbos('entries_mLEndTime', event.index).value()).add(1, 'days').format('YYYY-MM-DD') mbos('entries.beginTime', event.index).value(value) } } // 监听 哺乳假类型 _this.bfTypeChange = function (event) { var index = event.index // 哺乳假类型是否为【自定义】 if (!mbos('entries_bfType', index).value()){ // 如果哺乳假类型不存在则默认为自定义 setTimeout(function(){ mbos('entries_bfType', index).value({id: _this.customeBf, name: localeResource.Customized}) }, 0) } if (mbos('entries_bfType', index).value() && (mbos('entries_bfType', index).value().id == _this.customeBf || mbos('entries_bfType', index).value().name == localeResource.Customized)) { // 【自定义】: 则不展示【子女出生日期、产假结束日期】 mbos('entries.childbirthday', index).value('') mbos('entries.childbirthday', index).hide() mbos('entries.mLEndTime', index).value('') mbos('entries.mLEndTime', index).hide() // 哺乳假类型为【自定义】时,启用半天假时为【年月日 上/下午】,其他的都是【年月日 时分】 isHalfHoliday(index) // 判断是否启用半天假 } else { // 非【自定义】的所有哺乳假类型 日期格式为年月日 beginEndFormat('YYYY-MM-DD', index) mbos('entries.childbirthday', index).show() mbos('entries.mLEndTime', index).show() } getTimeLength(event.index) } // 监听是否是弹性算时长 _this.isElasticChange = function (event) { getTimeLength(event.index) } // 更改半天假开始 _this.calTime3 = function (event) { if (event.new_value.alias.split(' ').length === 1 ){ event.new_value.alias += ' '+ _this['isHalf' + event.index][event.new_value.value] } getTimeLength(event.index) } // 更改半天假结束 _this.calTime4 = function (event) { if (event.new_value.alias.split(' ').length === 1 ){ event.new_value.alias += ' '+ _this['isHalf' + event.index][event.new_value.value] } 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(function(){ mbos('entries_leaveLength',event.index).value('') }) return } } //更新整体请假 _this.isAllDayChange = function(event){ var index = event.index _this.setTimeVisiable(index); getTimeLength(index) } //设置半天假的上午下午选择框可见不可见 _this.setTimeVisiable = function(index){ var isAllDay = mbos("entries_isAllDay",index).value(); var isHalf = _this['isHalf' + index] ? _this['isHalf' + index].isHalfDayOff : false; if(isAllDay){ if(isHalf){ hideHalfDay(index) } _this.changeTime = true beginEndFormat('YYYY-MM-DD', index) setTimeout(()=>{ _this.changeTime = false }) }else{ if(isHalf){ //半天假时 整天请假需要显示时间点,切换为非整天请假时需要将时间点去掉 var beginTime = $("#entries_beginTime_"+index+" .ng-pristine").val(); var endTime = $("#entries_endTime_"+index+" .ng-pristine").val() $("#entries_beginTime_"+index+" .ng-pristine").val(beginTime ? beginTime.split(" ")[0]:'') $("#entries_endTime_"+index+" .ng-pristine").val(endTime ? endTime.split(" ")[0]:'') setHalfDay(index) }else{ hideHalfDay(index) } _this.changeTime = true //半天假和非自定义哺乳假 if(isHalf || _this.isCustomBr(index)==="noCustomBf"){ beginEndFormat('YYYY-MM-DD', index) }else{ _this.setTimeYMDHM('YYYY-MM-DD HH:mm', index) } setTimeout(()=>{ _this.changeTime = false }) } } _this.setTimeYMDHM = function(format, index){ mbos('entries.beginTime', index).timeFormat(format); mbos('entries.endTime', index).timeFormat(format); var startTimeValue = mbos('entries.beginTime', index).value(); var endTimeValue = mbos('entries.endTime', index).value(); var isAllDay = mbos('entries.isAllDay', index).value(); var endDate = endTimeValue ? endTimeValue.split(" ")[0] : ''; var endTime = endTimeValue && endTimeValue.split(" ").length == 2 ? endTimeValue.split(" ")[1] : ''; var startDate = startTimeValue ? startTimeValue.split(" ")[0] : ''; var startTime = startTimeValue && startTimeValue.split(" ").length == 2 ? startTimeValue.split(" ")[1] : ''; if(!isAllDay && endTime.indexOf('00:00')!== -1 && startDate===endDate){ var endDate = endTimeValue.split(" ")[0]; mbos('entries.endTime', index).value(endDate+" 23:59") } }, _this.bindDateChange = function(index){ $("#entries_beginTime_"+index+" .mobInput").bind('change',function(){ var value = mbos("entries_beginTime_"+index).value(); value = value ? value.split(" ")[0] : ''; mbos("entries_beginYMD_"+index).value(value); //当开始日期大于于用户选的结束日期时将结束时间设置为开始日期 var endYMD = mbos("entries_endYMD_"+index).value(); if(new Date(endYMD).getTime() < new Date(value).getTime()){ mbos("entries_endYMD_"+index).value(value); } }) $("#entries_endTime_"+index+" .mobInput").bind('change',function(){ var value = mbos("entries_endTime_"+index).value(); value = value ? value.split(" ")[0] : ''; mbos("entries_endYMD_"+index).value(value); //当结束日期小于用户选的开始日期时将开始时间设置为结束日期 var beginYMD = mbos("entries_beginYMD_"+index).value(); if(new Date(beginYMD).getTime() > new Date(value).getTime()){ mbos("entries_beginYMD_"+index).value(value); } }) // 工作流根据请假类型匹配不同的流程定义,请假类型改变后要刷新下一步参与人控件 mbos("entries.sourceHolidayType",index).bind("change",function(newF7Value) { var model = mbos('entity').value(); var param = $.extend(true, {}, model); var entries = param.entries; if(entries && entries.length>0){ entries[index].sourceHolidayType = newF7Value; // 这几个字段导致model转单据实体失败,先去掉待shr排查! delete entries[index].beginTime; delete entries[index].beginYMD; delete entries[index].endTime; delete entries[index].endYMD; } mbos('nextperson1').getNextPerson(param,null); }); } _this.sflsChange = function(event){ var index = event.index; _this.controlPlaceRequired(index); } _this.sfcgjChange = function(event){ var index = event.index; _this.controlPlaceRequired(index); } // 核心:控制目的地必填 + 前端标红 20260507 _this.controlPlaceRequired = function(index){ // 替换成你自己两个布尔字段编码、目的地字段编码 var b1 = mbos('entries_sfls', index).value(); var b2 = mbos('entries_sfcgj', index).value(); var needReq = b1 || b2; // 1. 设置 MBOS 内部必录属性(给后台校验用) mbos('entries_place', index).attr('mustinput', needReq); // 2. 找到目的地的 label 标签 var $fieldContainer = $('#entries_place_' + index); var $label = $fieldContainer.find('label.lclabel'); if (!$label.length) return; // 3. 先移除旧的红星(防止重复添加) $label.find('i.mustinput').remove(); // 4. 需要必填时,添加 MBOS 原生红星 * if (needReq) { $label.append('*'); } } // ====================== 多分录目的地必填校验(通用方法)====================== _this.validatePlaceRequired = function(){ // 1. 获取所有分录行数 var entries = mbos('entity').data.entries; if(!entries || entries.length === 0) return true; // 2. 遍历每一行进行校验 for(var i = 0; i < entries.length; i++){ var sfls = mbos('entries_sfls', i).value() || false; var sfcgj = mbos('entries_sfcgj', i).value() || false; var place = mbos('entries_place', i).value(); // 3. 判断:任一勾选,但目的地为空 if((sfls || sfcgj) && (!place || !place.trim())){ // 4. 提示具体是第几行 mbos.msgBox.showError('第' + (i+1) + '行:勾选了【是否离深】或【是否出国境】时,请填写目的地!'); return false; // 校验不通过,返回 false } } return true; // 所有行都校验通过,返回 true };