|
@@ -0,0 +1,404 @@
|
|
|
+_this.pageinit = function () {
|
|
|
+ newPageInit()
|
|
|
+}
|
|
|
+// 在页面初始化加载之后
|
|
|
+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()
|
|
|
+ })
|
|
|
+})
|
|
|
+// 【请假类型】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] // 获取请假时长的标题
|
|
|
+ getHolidayType(e)
|
|
|
+ multiLangField(e.index)// 兼容多语言字段回显的问题
|
|
|
+})
|
|
|
+// 保存按钮
|
|
|
+_this.save = function (event) {
|
|
|
+ var params = getModel(-1, 'save') // 封装model,不走common的封装
|
|
|
+ baseInterface('save', toView, -1, params) // 调用保存接口
|
|
|
+}
|
|
|
+// 提交按钮
|
|
|
+_this.submit = function (event) {
|
|
|
+ // 确认提交 弹框
|
|
|
+ mbos.ui.showConfirm({
|
|
|
+ title: localeResource.confirmSubmit,
|
|
|
+ iconclass: "kdfont kdfont-zhuangtai_jingshi the_info",
|
|
|
+ callback: function (data) {
|
|
|
+ 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
|
|
|
+ }
|
|
|
+}
|
|
|
+function getModel(index, method) {
|
|
|
+ var entries = setModel()
|
|
|
+ var obj = mbos('entity').data
|
|
|
+ if (method === "save" || method === "submit"){ // 只在保存喝提交时修改枚举字段的存储,不然会清空表头的枚举字段
|
|
|
+ Object.keys(obj).map(key => {
|
|
|
+ if (obj[key] && obj[key].isenum) {// 遍历枚举字段 依据后端需要 传参只传value
|
|
|
+ obj[key] = obj[key].value
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log(obj)
|
|
|
+ }
|
|
|
+
|
|
|
+ var model = {
|
|
|
+ ...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]
|
|
|
+ if (halfData && entry.beginTime && !entry.beginTime.split(' ')[1] && mbos('beginHalf', i).value().value) {
|
|
|
+ // 页面显示的是上午下午,但是传参得拼接上时分 格式为年月日时分
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ // 如果是哺乳假 非自定义的类型 结束时间需要拼接时分为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 += ' 00:00'
|
|
|
+ entry.endTime += ' 23:59'
|
|
|
+ }
|
|
|
+}
|
|
|
+// 获取请假类型
|
|
|
+var getHolidayType = _.debounce(function (e) {
|
|
|
+ var callback = function (res) {
|
|
|
+ var list = res.data
|
|
|
+ _this.holidayIdList = res.data.map(item => 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')
|
|
|
+ }
|
|
|
+ if (!mbos('entries_endTime', e.index).value()) {
|
|
|
+ mbos('entries_endTime', e.index).value(today + ' 23:59')
|
|
|
+ }
|
|
|
+ setModel()
|
|
|
+ baseInterface('getHolidayTypeByPerson', callback, e.index)
|
|
|
+}, 0)
|
|
|
+// 接口计算请假时长
|
|
|
+var getTimeLength = _.debounce(function (index) {
|
|
|
+ var callback = function (res) {
|
|
|
+ mbos('entries_leaveLength', index).value(res.data.leaveBillDays)
|
|
|
+ }
|
|
|
+
|
|
|
+ var params = getModel(index) // 封装model,不走common的封装
|
|
|
+ var entry = mbos('entity').data.entries[index]
|
|
|
+ if (entry.beginTime && entry.endTime && entry.sourceHolidayType) {
|
|
|
+ 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}`
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setModel()
|
|
|
+ baseInterface('getSetIsCtrlHalfDayOff', callback, index)
|
|
|
+}
|
|
|
+// 设置开启半天假的样式
|
|
|
+function setHalfDay(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)
|
|
|
+}
|
|
|
+// 隐藏半天假
|
|
|
+function hideHalfDay(index) {
|
|
|
+ $('#entries_beginTime_' + index).removeClass('col-xs-9').addClass('col-xs-12')
|
|
|
+ $('#entries_endTime_' + index).removeClass('col-xs-9').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
|
|
|
+ }
|
|
|
+ // 是否是哺乳假
|
|
|
+ if (mbos('entries_sourceHolidayType', index).value() && (mbos('entries_sourceHolidayType', index).value().id == "8r0AAAAMhrv9LVKY" || mbos('entries_sourceHolidayType', index).value().name == localeResource.bf_holiday)) {
|
|
|
+ // 请假类型为【哺乳假】则显示 哺乳假类型、子女出生日期、产假结束日期
|
|
|
+ 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: "8r0AAAA09p9IT3K3", 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('')
|
|
|
+ isHalfHoliday(index) // 判断是否启用半天假
|
|
|
+ }
|
|
|
+ if (entry.sourceUnit) {
|
|
|
+ mbos('entries_leaveLength', index).attr('title', _this.leaveLengthTitle + `(${entry.sourceUnit.alias})`);
|
|
|
+ }
|
|
|
+ getTimeLength(index)
|
|
|
+ getRemainLength(event)
|
|
|
+}
|
|
|
+// 监听 开始时间
|
|
|
+_this.calTime1 = function (event) {
|
|
|
+ getHolidayType(event)
|
|
|
+ getTimeLength(event.index)
|
|
|
+ isElastic(event.index)
|
|
|
+ getRemainLength(event)
|
|
|
+}
|
|
|
+// 监听 结束时间
|
|
|
+_this.calTime2 = function (event) {
|
|
|
+ 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')
|
|
|
+ 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(()=>{
|
|
|
+ mbos('entries_bfType', index).value({id: "8r0AAAA09p9IT3K3", name: localeResource.Customized})
|
|
|
+ }, 0)
|
|
|
+ }
|
|
|
+ if (mbos('entries_bfType', index).value() && (mbos('entries_bfType', index).value().id == "8r0AAAA09p9IT3K3" || 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) {
|
|
|
+ getTimeLength(event.index)
|
|
|
+}
|
|
|
+// 更改半天假结束
|
|
|
+_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_leaveLength',event.index).value('')
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|