|
|
@@ -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
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|