starter.controller('workatd-index', function ($rootScope, $interval, $scope, $state, $ionicModal, $ionicPlatform, $cordovaPreferences, $ionicPopup, $ionicActionSheet, global, showPopup, workatd, workatdcheck, formatFilter) {
$scope.todayweek = workatd.todayweek;
$scope.loading = false;
$scope.data = {
id: null, //考勤设置id
checktype: null, //打卡类型
content: null, //理由
isoutside: false //是否在签到范围外
};
$scope.autocheck = {
isautocheck: true,
checkin: {isadvance: false, inadvance: 15},
checkout: {isdelay: false, indelay: 5},
time: [5, 15, 30, 60]
};
$scope.goBack = function () {
global.goBack();
};
var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
global.fetch_user().then(function (data) {
$scope.roleid = global.user.roleid;
if ($scope.usersetting == undefined) $scope.loading = true;
getworkatddata();
});
});
stopTime = $interval(function () {
if ($scope.time) {
$scope.time.setSeconds($scope.time.getSeconds() + 1);
usersetting = $scope.usersetting;
if (usersetting.isAtdDay)
for (i = 0; i < usersetting.items.length; i++) {
state = 3 //未开始
item = usersetting.items[i];
if (item.checktime) {
item.state = 0; //已签到
continue;
}
if (item.checktype == 2 || item.checktype == 4)
if (usersetting.items[i - 1].state == 0 && item.state != 0) { //已签到,并且还未签退,就显示可签退
item.state = 1;
if ($scope.time > new Date(item.itemtime)) //当前时间大于下班时间时才将标志置为false
item.isoutoftime = false;
continue
}
begintime = new Date(item.itemtime);
if (item.checktype == 1 || item.checktype == 3) { // 上、下午签到可提前2小时打卡
begintime = begintime.setHours(begintime.getHours() - 2);
} else if (item.checktype == 2 && usersetting.items[i - 1].state == 0) { // 上午签退可提前1小时打卡(前提:上午已签到)
begintime = begintime.setHours(begintime.getHours() - 2);
}
if ($scope.time > begintime) {
state = 1; //可打卡
item.isoutoftime = (item.checktype == 1 || item.checktype == 3) ? $scope.time > item.itemtime : $scope.time < item.itemtime; //1,3签到:迟到;2,4签退:早退
if (i < usersetting.items.length - 1) {
if ($scope.time > usersetting.items[i + 1].itemtime)
state = 2; //已过期
}
}
item.state = state;
}
if ($scope.usersetting == undefined) {
$scope.usersetting = usersetting;
}
}
}, 1000);
var flag = false;
$scope.checkin = function (checktype, workatdsetid, isoutoftime) {
if (flag) return;
flag = true;
if (window.cordovaLinker != undefined) {
window.cordovaLinker.getdistance(null, function (s) {
flag = false;
console.log(s);
$scope.data.id = workatdsetid;
$scope.data.checktype = checktype;
$scope.data.isoutoftime = isoutoftime;
if (s.Distance > $scope.usersetting.offset) {
showPopup.PopupWindow(0, '你当前位置不在考勤范围内!', false);
} else if (isoutoftime) {
$scope.data.isoutside = false;
if (checktype == 2 || checktype == 4) {
showPopup.confirm('现在是早退时间,你确定签退吗?', '是', '否').then(function (res) {
if (res) $scope.showModalChkReason();
});
} else {
$scope.showModalChkReason();
}
} else {
checkin();
}
}, function (err) {
flag = false;
console.log(err);
})
}
};
function checkin() {
showPopup.showLoading(1, '提交中');
workatdcheck.checkin($scope.data).then(function (data) {
showPopup.hideLoading();
getworkatddata();
}, function (err) {
showPopup.hideLoading();
JSON.stringify(err);
});
}
$scope.isTxtNull = function (value) {
};
var modalIndexchkreason = $ionicModal.fromTemplateUrl('templates/indexchkreason.html', {
scope: $scope,
animation: 'slide-in-right'
});
$scope.showModalAutoChk = function () {
getIsAutoCheckStatus();
showPopup.modalTemplate('templates/modal-autocheck.html', 'slide-in-right', $scope).then(function (modal) {
$rootScope.commons.modal = modal;
$rootScope.commons.modal.show();
})
};
$scope.closeModalAutoChk = function (rst) {
$rootScope.commons.modal.hide();
};
$scope.showtime = function (type, time) {
var btns = _.map([5, 15, 30, 60], function (item) {
var color = time == item ? 'calm' : '';
return {'text': '
' + item + '
'}
});
var hideSheet = $ionicActionSheet.show({
buttons: btns,
titleText: '提醒时间
',
buttonClicked: function (index) {
if (type == 1) {
$scope.autocheck.checkin.inadvance = $scope.autocheck.time[index];
// $scope.saveIsAutoCheck('inadvance', $scope.autocheck.time[index]);
} else if (type == 2) {
$scope.autocheck.checkout.indelay = $scope.autocheck.time[index];
// $scope.saveIsAutoCheck('indelay', $scope.autocheck.time[index]);
}
return true;
}
});
};
$scope.saveIsAutoCheck = function (key, value) {
console.log(formatFilter('{"{0}":{1}}', key, value));
if (window.cordovaLinker != undefined) {
window.cordovaLinker.saveIsAutoCheck(JSON.parse(formatFilter('{"{0}":{1}}', key, value)), function (s) {
console.log(s);
}, function (err) {
alert(JSON.stringify(err));
});
}
};
//理由
$scope.showModalChkReason = function (checktype) {
$scope.data.checktype = checktype || $scope.data.checktype;
modalIndexchkreason.then(function (modal) {
$rootScope.commons.modal = modal;
$rootScope.commons.modal.show();
})
};
$scope.closeModalChkReason = function (rst) {
if (rst == 'ok') {
showPopup.showLoading(1, '提交中');
workatdcheck.checkin($scope.data).then(function (data) {
getworkatddata();
$rootScope.commons.modal.hide();
$scope.data.content = null;
showPopup.hideLoading();
});
} else {
$scope.data.content = null;
$rootScope.commons.modal.hide();
}
};
//签到范围外
$scope.showModalChkOutside = function () {
showPopup.modalTemplate('templates/indexchkoutside.html', 'slide-in-right', $scope).then(function (modal) {
$rootScope.commons.modal = modal;
$rootScope.commons.modal.show();
});
};
$scope.closeModalChkOutside = function (rst, type) { //0:外勤 1:出差 2:其他
if (rst == 'ok') {
$scope.outsidetype = type;
$rootScope.commons.modal.hide();
$scope.showModalChkReason();
} else {
$rootScope.commons.modal.hide();
}
};
$scope.doRefresh = function () {
getworkatddata();
};
function getworkatddata() {
workatdcheck.getCheckInfo().then(function (data) {
$scope.withoutornone = false;
var _now = new Date();
$scope.time = new Date(data.time);
$scope.data.id = data.id;
_.each(data.items, function (item) {
item.isoutoftime = true;
item.itemtime = new Date($scope.time.getFullYear() + '/' + parseInt($scope.time.getMonth() + 1) + '/' + $scope.time.getDate() + ' ' + item.time);
if (item.itemtime.getHours() < 2)
item.itemtime = item.itemtime.setDate(item.itemtime.getDate() + 1)
});
$scope.usersetting = data;
getIsAutoCheckStatus();
}, function (data) {
if (data.status = 404) {
$scope.withoutornone = true
}
}).finally(function () {
$scope.$broadcast('scroll.refreshComplete');
$scope.loading = false;
});
}
$scope.$on("$destroy", function () {
if ($rootScope.commons.modal != null)
$rootScope.commons.moda = undefined;
$interval.cancel(stopTime);
beforeEnter = null;
});
function getIsAutoCheckStatus() {
if (window.cordovaLinker != undefined) {
window.cordovaLinker.getIsAutoCheck(null, function (s) {
//s:{isautocheck:false,isadvance:false,isdelay:false,inadvance:15,indelay:5}
// s = JSON.parse(s);
if (!$scope.usersetting.isallowauto) {
$scope.saveIsAutoCheck('isautocheck', false);
$scope.autocheck.isautocheck = false;
} else {
$scope.autocheck.isautocheck = s == '' ? true : JSON.parse(s).isautocheck;
}
// $scope.autocheck.checkin.isadvance = (s.isadvance == 'true');
// $scope.autocheck.checkout.isdelay = (s.isdelay == 'true');
// $scope.autocheck.checkin.inadvance = s.inadvance;
// $scope.autocheck.checkout.indelay = s.indelay;
}, function (err) {
});
}
}
})
.controller('workatd-setting', function ($rootScope, $scope, $state, $ionicModal, global, workatd, Dept, Member, showPopup) {
global.fetch_user().then(function () {
workatd.getSettings().then(function (data) {
$scope.settings = data;
});
});
$scope.addnew = function () {
if (_.find($scope.settings, function (item) {
return item.isallcheck
})) {
showPopup.PopupWindow(0, '已设置了全员考勤!');
return;
}
if (window.cordovaLinker) {
var local = {
NAME: "",
Latitude: "",
Longitude: "",
Distance: ""
};
cordovaLinker.callMap(local, function (mapdata) {
$scope.settingdetail = workatd.addnew();
$scope.settingdetail.workposition = mapdata.Latitude + "," + mapdata.Longitude;
$scope.settingdetail.workaddress = mapdata.NAME;
$scope.showModalSettingDept();
});
}
}
$scope.showModalSettingDept = function () {
Member.routename = 'workatd-settingdetail';
Member.routeparams = {
id: -1
};
Member.titlename = '选择考勤部门';
Member.resourcemember = [];
Member.selecteddepts = [];
Member.disabled = true;
Member.showall = true;
Member.isallcheck = false;
Member.datatype = 4;
$state.go('selectdept', {
id: -1
});
};
$scope.$on("$destroy", function () {
beforeEnter = null;
})
})
.controller('workatd-settingweek', function ($scope, $state, workatd) {
$scope.currentid = $state.params["id"];
$scope.settingdetail = workatd.current($scope.currentid);
})
.controller('workatd-settingdetail', function ($rootScope, $scope, $state, $ionicModal, $ionicHistory, $cordovaDatePicker, _, workatd, Dept, Member, showPopup, Tool) {
$scope.currentid = $state.params["id"];
$scope.title = $scope.currentid > 0 ? '编辑考勤' : '新增考勤';
$scope.save = function () {
if (($scope.settingdetail.am_ontime != null && $scope.settingdetail.pm_offtime) ||
($scope.settingdetail.am_ontime != null && $scope.settingdetail.am_offtime && $scope.settingdetail.pm_offtime && $scope.settingdetail.pm_offtime)) {
var workatddata = workatd.current($scope.currentid);
if (!$scope.settingdetail.ischeckmonday && !$scope.settingdetail.ischecktuesday && !$scope.settingdetail.ischeckwednesday && !$scope.settingdetail.ischeckthursday && !$scope.settingdetail.ischeckfriday && !$scope.settingdetail.ischecksaturday && !$scope.settingdetail.ischecksunday) {
showPopup.PopupWindow(0, '请选择考勤日期', false);
return;
}
if (workatddata.workatddept.length == 0 && workatddata.isallcheck == 0) {
showPopup.PopupWindow(0, '请选择考勤部门', false);
return;
}
showPopup.showLoading(1, '正在提交');
workatd.save($scope.currentid, workatddata).then(function (data) {
$state.go('workatd-setting');
showPopup.hideLoading();
}, function (err) {
showPopup.hideLoading();
alert(JSON.stringify(err));
});
}
};
$scope.delete = function () {
showPopup.confirm('是否删除该考勤?', '是', '否').then(function (res) {
if (res) {
showPopup.showLoading(1, '删除中');
workatd.delete($scope.currentid).then(function (data) {
$state.go('workatd-setting');
showPopup.hideLoading();
});
}
})
};
$scope.singlecheck = function () {
$scope.settingdetail.isdoublecheck = 0;
$scope.settingdetail.am_offtime = null;
$scope.settingdetail.pm_ontime = null;
$scope.settingdetail.ischeckamoff = false;
$scope.settingdetail.ischeckpmon = false;
};
$scope.doublecheck = function () {
$scope.settingdetail.isdoublecheck = 1;
};
function formatMinute(date) {
return date.getMinutes() < 10 ? ('0' + date.getMinutes().toString()) : date.getMinutes().toString()
}
function choosedate(str_time, b_ischeck) {
var time = {'am_ontime': '09:00:00', 'am_offtime': '12:00:00', 'pm_ontime': '13:30:00', 'pm_offtime': '18:00:00'};
var options = {
mode: 'time',
date: new Date($scope.settingdetail[str_time] == null ? new Date('2016/10/01 ' + time[str_time]) : $scope.settingdetail[b_ischeck]),
is24Hour: true,
androidTheme: 3
};
$cordovaDatePicker.show(options).then(function (date) {
var temp = $scope.settingdetail[str_time];
$scope.settingdetail[str_time] = date.getHours().toString() + ':' + formatMinute(date);
var ts = [];
_.each([$scope.settingdetail.am_ontime, $scope.settingdetail.am_offtime, $scope.settingdetail.pm_ontime, $scope.settingdetail.pm_offtime], function (t) {
if (t != null) ts.push(new Date('2016/10/01 ' + t));
});
if (ts.toString() != _.sortBy(ts).toString()) {
$scope.settingdetail[str_time] = temp;
$scope.settingdetail[b_ischeck] = false;
showPopup.PopupWindow(0, '时间不符合规范!', false);
}
}, function (cancel) {
$scope.settingdetail[b_ischeck] = false;
});
}
$scope.choosedate = function (str_time, b_ischeck) {
$scope.settingdetail[b_ischeck] ? choosedate(str_time, b_ischeck) : $scope.settingdetail[str_time] = null;
};
$scope.showModalSettingDept = function () {
Member.titlename = '选择考勤部门';
Member.resourcemember = [];
Member.selecteddepts = [];
Member.disabled = true;
Member.hide = true;
Member.isallcheck = false;
if ($scope.settingdetail.isallcheck == 1) {
Member.isallcheck = true;
} else {
_.each($scope.settingdetail.workatddept, function (item) {
if (item.depname == undefined && item.id == undefined) {
item.depname = item.dept__depname;
item.id = item.dept__id;
}
Member.resourcemember.push({
'id': item.id,
'depname': item.depname
});
})
}
Member.showall = true;
Member.datatype = 4;
$state.go('selectdept', {
id: $scope.currentid
});
};
//无需考勤人员窗口
$scope.showModalSettingWithoutusr = function () {
Member.titlename = '选择无需考勤人员';
Member.datatype = '0';
Member.resourcemember = [];
Member.selectedemplst = [];
if ($scope.settingdetail.isallcheck == 0) {
Member.homerenderdata = [];
_.each($scope.settingdetail.workatddept, function (item) {
if (item.dept__depname != undefined) {
item.depname = item.dept__depname;
item.id = item.dept__id;
}
Member.homerenderdata.push({
'id': item.id,
'depname': item.depname
})
});
}
Member.showall = false;
Member.disabled = false;
_.each($scope.settingdetail.workatdwithoutusr, function (item) {
Member.resourcemember.push({
'user_id': item.user_id,
'username': item.user__username,
'degree': item.user__usr__degree
});
})
console.log(Member.resourcemember)
$state.go('selectmember');
};
//选择允许谁查看
$scope.showModalSettingReportusr = function () {
Member.titlename = '选择成员';
Member.datatype = '1';
Member.resourcemember = [];
Member.selectedemplst = [];
Member.disabled = false;
Member.showall = false;
_.each($scope.settingdetail.workatdreportusr, function (item) {
Member.resourcemember.push({
'user_id': item.user_id,
'username': item.user__username,
'degree': item.user__usr__degree
});
})
$state.go('selectmember');
};
//修改考勤地点
$scope.showModalSettingMap = function () {
if (window.cordovaLinker != undefined) {
var _locals = $scope.settingdetail.workposition.split(',');
var local = {
NAME: $scope.settingdetail.workaddress,
Latitude: _locals[0],
Longitude: _locals[1],
Distance: ""
};
cordovaLinker.callMap(local, function (mapdata) {
$scope.settingdetail.workposition = mapdata.Latitude + "," + mapdata.Longitude;
$scope.settingdetail.workaddress = mapdata.NAME;
$state.go("workatd-settingdetail", {
'id': $scope.currentid
});
});
}
};
//修改允许偏差
var modalSettingoffset = $ionicModal.fromTemplateUrl('templates/settingoffsetmodal.html', {
scope: $scope,
animation: 'slide-in-right'
});
$scope.showModalSettingOffset = function () {
modalSettingoffset.then(function (modal) {
$rootScope.commons.modal = modal;
$rootScope.commons.modal.show();
})
};
$scope.closeModalSettingOffset = function (rst) {
$rootScope.commons.modal.hide();
};
$scope.toSetPerson = function (type) {
_.each($scope.settingdetail.workatdreportusr, function (item) {
if (item.user__username) {
item.username = item.user__username;
item.degree = item.user__usr__degree
}
});
_.each($scope.settingdetail.workatdwithoutusr, function (item) {
if (item.user__username) {
item.username = item.user__username;
item.degree = item.user__usr__degree
}
});
$state.go('workatd-settingset', {
type: type,
id: $state.params["id"]
});
};
function beforeEnterData() {
if (Member.dialogresult == 1) {
Member.dialogresult = 0;
if (Member.selectedemplst.length > 0) {
if (Member.datatype == '0') {
$scope.settingdetail.workatdwithoutusr = [];
disposeData($scope.settingdetail.workatdwithoutusr, 0);
} else if (Member.datatype == '1') {
$scope.settingdetail.workatdreportusr = [];
disposeData($scope.settingdetail.workatdreportusr, 0);
}
Member.selectedemplst = [];
}
if (Member.selecteddepts.length > 0) {
$scope.settingdetail.workatddept = [];
disposeData($scope.settingdetail.workatddept, 1);
$scope.settingdetail.isallcheck = 0;
Member.selecteddepts = [];
}
if (Member.isallcheck && $scope.settingdetail.workatddept.length > 0) {
$scope.settingdetail.isallcheck = 1;
$scope.settingdetail.workatddept = [];
}
}
}
function disposeData(data, type) {
if (type == 0) {
_.each(Member.selectedemplst, function (item) {
Member.resourcemember.push(item);
data.push(item);
})
} else if (type == 1) {
_.each(Member.selecteddepts, function (item) {
Member.resourcemember.push(item);
data.push(item);
})
}
}
var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
Tool.removeBackView('selectdept');
Member.homerenderdata = [];
Member.routename = '';
Member.routeparams = {};
if ($scope.currentid == -1) {
//新增
$scope.settingdetail = workatd.current(-1);
set_check();
$scope.settingdetail.isallcheck = Member.isallcheck ? 1 : 0;
beforeEnterData();
} else {
if ($scope.settingdetail) {
beforeEnterData();
return
}
workatd.getDetail($scope.currentid).then(function (data) {
console.log(data);
$scope.settingdetail = data;
$scope.settingdetail.isdoublecheck = !(data.am_offtime == null && data.pm_ontime == null);
set_check();
beforeEnterData();
});
}
});
function set_check() {
$scope.settingdetail.ischeckamon = ($scope.settingdetail.am_ontime != null);
$scope.settingdetail.ischeckamoff = $scope.settingdetail.am_offtime != null;
$scope.settingdetail.ischeckpmon = $scope.settingdetail.pm_ontime != null;
$scope.settingdetail.ischeckpmoff = $scope.settingdetail.pm_offtime != null;
}
$scope.$on("$destroy", function () {
if ($rootScope.commons.modal != null)
$rootScope.commons.moda = undefined;
beforeEnter = null;
})
})
.controller('workatd-dailyreport', function ($scope, $rootScope, $state, $ionicModal, $timeout, workatd, global, Tool) {
var days = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
$scope.deptid = 0;
$scope.index = 0;
$scope.currentmonth = new Date().getMonth() + 1;
$scope.datelist_old = [];
$scope.init = function () {
global.fetch_user().then(function () {
workatd.getCountList().then(function (data) {
$scope.settings = data;
console.log(data);
});
})
};
$scope.getdatelist = function () {
global.fetch_user().then(function () {
$scope.workatdsetid = $state.params["id"];
var worksetid = 0, type = 0;
if (parseInt($state.params["id"]) > 0) {
worksetid = $state.params["id"];
type = 1;
}
workatd.getDateList(worksetid, type).then(function (res) {
$scope.nexturl = res.next;
console.log(res);
$scope.datelist_old = _.map(res.results, _.clone);
setdatelist(res.results)
});
});
};
$scope.loadMore = function () {
workatd.getNextPage($scope.nexturl).then(function (res) {
$scope.nexturl = res.next;
$scope.datelist_old = $scope.datelist_old.concat(res.results);
setdatelist($scope.datelist_old)
}).finally(function () {
$scope.$broadcast('scroll.infiniteScrollComplete')
});
};
function setdatelist(data) {
$scope.datelist = [];
var sortitems = [];
_.each(data, function (item) {
item.check_dd = new Date(item.date);
item.yearmonth = item.check_dd.getFullYear().toString() + (item.check_dd.getMonth() + 1).toString();
item.day = item.check_dd.getDay();
item.daystr = Tool.getTranslateByKey("weekdays", item.day); //days[item.day]
sortitems.push(item.yearmonth)
});
sortitems = _.uniq(sortitems);
var list = [];
_.each(sortitems, function (item) {
var temp = {year: '', month: '', items: []};
_.each(data, function (item1) {
if (item == item1.yearmonth) {
temp.year = item1.check_dd.getFullYear();
temp.month = item1.check_dd.getMonth() + 1;
temp.items.push(item1)
}
});
list.push(temp)
});
console.log(list);
$scope.datelist = list;
}
$scope.getreport = function (deptid) {
getReport(deptid)
};
$scope.seedetail = function (title, count, atdtype, type) {
if (count == 0) return;
$state.go('reportdetails', {
'workatdsetid': $scope.workatdsetid,
'atdtype': atdtype,
'date': $state.params["date"],
'type': type,
'deptid': $scope.deptid
});
}
$scope.showselectdeptmodal = function () {
workatd.getWorkatdDeptCount($state.params["id"]).then(function (data) {
$scope.workatddepts = data;
$scope.workatddepts.totalcount = 0;
_.each(data, function (item) {
$scope.workatddepts.totalcount += item.count;
})
});
var m = $ionicModal.fromTemplateUrl('templates/workatddeptlist.html', {
scope: $scope,
animation: 'slide-in-right'
});
m.then(function (modal) {
$rootScope.commons.modal = modal;
$rootScope.commons.modal.show();
})
}
$scope.closeModal = function () {
$rootScope.commons.modal.hide();
}
$scope.changeDept = function (deptid) {
$scope.index = deptid;
$scope.deptid = deptid;
getReport(deptid);
$scope.closeModal()
}
$scope.tohistory = function () {
$state.go('personhistory', {id: 0})
};
function getReport(deptid) {
global.fetch_user().then(function () {
$scope.workatdsetid = $state.params["id"];
$scope.date = $state.params["date"];
$scope.daystr = Tool.getTranslateByKey("weekdays", new Date($scope.date).getDay());
workatd.getReport($state.params["id"], $state.params["date"], $scope.deptid).then(function (data) {
$scope.usrcount = data.usrcount;
_.each(data.items, function (item) {
item.uncheckin_cnt = data.usrcount - item.normal_cnt - item.outof_cnt;
})
$scope.items = data.items;
});
});
}
})
.controller('workatd-settingset', function ($rootScope, $scope, $state, $ionicPopover, global, workatd, Member) {
$scope.type = $state.params['type'];
$scope.data = {
title: ['无需考勤成员', '允许谁看考勤统计'],
showDelete: false,
usrdata: []
};
$rootScope.commons.goBackIsDisable = false;
$ionicPopover.fromTemplateUrl('templates/add.html', {
scope: $scope
}).then(function (popover) {
$scope.popover = popover;
});
$scope.goBack = function () {
global.goBack();
}
$scope.displayremove = function () {
$scope.data.showDelete = !$scope.data.showDelete;
$rootScope.commons.goBackIsDisable = true;
$scope.popover.hide();
};
$scope.removeItem = function (item) {
if ($scope.type == 0) {
$scope.settingdetail.workatdwithoutusr.splice($scope.settingdetail.workatdwithoutusr.indexOf(item), 1);
} else if ($scope.type == 1) {
$scope.settingdetail.workatdreportusr.splice($scope.settingdetail.workatdreportusr.indexOf(item), 1);
}
};
$scope.ok = function () {
$scope.popover.hide();
$rootScope.commons.goBackIsDisable = undefined;
$scope.data.showDelete = false;
};
$scope.toadd = function () {
$scope.popover.hide();
Member.titlename = '选择成员';
Member.resourcemember = [];
Member.selectedemplst = [];
Member.disabled = true;
Member.showall = false;
if ($scope.type == 0) {
addData($scope.settingdetail.workatdwithoutusr);
} else if ($scope.type == 1) {
addData($scope.settingdetail.workatdreportusr);
}
if ($scope.settingdetail.isallcheck == 0 && $scope.type == 0) {
Member.homerenderdata = [];
_.each($scope.settingdetail.workatddept, function (itemdept) {
if (itemdept.depname == undefined) {
itemdept.depname = itemdept.dept__depname;
}
Member.homerenderdata.push({
'depname': itemdept.depname,
'id': itemdept.id
})
})
}
$state.go('selectmember');
};
function addData(data) {
_.each(data, function (item) {
Member.resourcemember.push({
'user_id': item.user_id,
'username': item.username,
'degree': item.degree
});
})
}
function enterData(data) {
console.log(Member.selectedemplst);
_.each(Member.selectedemplst, function (item) {
Member.resourcemember.push(item);
data.push(item);
})
$scope.data.usrdata = data;
Member.selectedemplst = [];
}
var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
data = workatd.current(parseInt($state.params["id"]));
$scope.settingdetail = data;
console.log(data);
if ($scope.type == 0) {
$scope.data.usrdata = $scope.settingdetail.workatdwithoutusr;
} else if ($scope.type == 1) {
$scope.data.usrdata = $scope.settingdetail.workatdreportusr;
}
if (Member.selectedemplst.length > 0) {
$scope.data.usrdata = [];
if ($scope.type == 0) {
$scope.settingdetail.workatdwithoutusr = [];
} else if ($scope.type == 1) {
$scope.settingdetail.workatdreportusr = [];
}
}
});
var enter = $scope.$on("$ionicView.enter", function () {
if (Member.selectedemplst.length > 0) {
if ($scope.type == 0) {
enterData($scope.settingdetail.workatdwithoutusr);
} else if ($scope.type == 1) {
enterData($scope.settingdetail.workatdreportusr);
}
}
});
$scope.$on("$destroy", function () {
enter = null;
beforeEnter = null;
})
})
.controller('ReportDetailsCtrl', function ($scope, $state, workatd, global) {
$scope.type = $state.params['type'];
$scope.atdtype = $state.params['atdtype'];
$scope.titleArr = ['准时', '迟到', '未签到'];
$scope.titleArr[1] = _.contains([2, 4], parseInt($scope.atdtype)) ? '早退' : $scope.titleArr[1];
$scope.titleArr[2] = _.contains([2, 4], parseInt($scope.atdtype)) ? '未签退' : $scope.titleArr[2];
$scope.init = function () {
global.fetch_user().then(function () {
workatd.getReportDetail($state.params['workatdsetid'], $state.params['date'], $state.params['atdtype'], $state.params['type'], $state.params['deptid']).then(function (data) {
$scope.countDetails = data;
})
});
}
})
.controller('CheckinDetailCtrl', function ($scope, $state, workatd, global) {
global.fetch_user().then(function () {
var sortitems = [];
$scope.todayweek = workatd.weeknames[new Date($state.params['check_dd']).getDay()];
$scope.time = new Date($state.params['check_dd']);
workatd.getCheckinDetail($state.params['check_dd']).then(function (data) {
$scope.data = data;
console.log(data);
})
});
})
.controller('PersonMonthCountCtrl', function ($scope, $state, workatd, global) {
global.fetch_user().then(function () {
$scope.year = $state.params['year'];
$scope.month = $state.params['month'];
workatd.getPersonMonthCount($scope.year, $scope.month).then(function (data) {
console.log(data)
$scope.data = data;
})
});
$scope.seedetail = function (count, type) {
console.log(type)
if (count == 0)
return;
$state.go('person-monthcountdetail', {'type': type, 'year': $scope.year, 'month': $scope.month})
}
})
.controller('PersonMonthCountDetailCtrl', function ($scope, $state, workatd, global, Tool) {
$scope.titleArr = workatd.titleArr;
var year = $state.params['year'], month = $state.params['month'];
$scope.type = $state.params['type'] == 5 ? 0 : $state.params['type'];
global.fetch_user().then(function () {
workatd.getPersonMonthCountDetail(year, month, $state.params['type']).then(function (data) {
console.log(data);
$scope.data = [];
if ($scope.type == 1) {
set_data(data, 'isam_ontime', 'ispm_ontime', 'reason_am_ontime', 'check_am_on', 'reason_pm_ontime', 'check_pm_on')
} else if ($scope.type == 2) {
set_data(data, 'isam_offtime', 'ispm_offtime', 'reason_am_offtime', 'check_am_off', 'reason_pm_offtime', 'check_pm_off')
} else {
_.each(data, function (item) {
item.check_dd = new Date(item.date);
item.day = item.check_dd.getDay();
item.daystr = Tool.getTranslateByKey("weekdays", item.day);
});
$scope.data = data
}
})
});
// isam_ontime,ispm_ontime,reason_am_ontime,check_am_on,reason_pm_ontime,check_pm_on,
function set_data(data) {
var args = arguments;
_.each(data, function (item) {
var temp = {'username': item.user__username, 'degree': item.user__usr__degree, 'reason': '', 'check_dd': '', 'address': item.workatdsetting__workaddress};
if (item[args[1]] == 1 && item[args[2]] == 1) {
temp.reason = item[args[3]];
temp.check_dd = item[args[4]];
var temp1 = _.clone(temp);
temp1.reason = item[args[5]];
temp1.check_dd = item[args[6]];
$scope.data.push(temp1);
} else {
temp.reason = item[args[3]] == null ? item[args[5]] : item[args[3]];
temp.check_dd = item[args[4]] == null ? item[args[6]] : item[args[4]];
$scope.data.push(temp)
}
})
}
// 参考
// function set_earlydata(data) {
// _.each(data, function (item) {
// var temp = {'username': item.user__username, 'degree': item.user__usr__degree, 'reason': '', 'check_dd': ''};
// if (item.isam_offtime == 1 && item.ispm_offtime == 1) {
// temp.reason = item.reason_am_offtime;
// temp.check_dd = item.check_am_off;
// var temp1 = _.clone(temp);
// temp1.reason = item.reason_pm_offtime;
// temp1.reason = item.check_pm_off;
// $scope.data.push(temp1);
// } else {
// temp.reason = item.reason_am_offtime == null ? item.reason_pm_offtime : item.reason_am_offtime
// temp.check_dd = item.check_am_on == null ? item.check_pm_on : item.check_am_on;
// }
// $scope.data.push(temp)
// })
// }
})
.controller('MonthCountCtrl', function ($scope, $state, workatd, global) {
global.fetch_user().then(function () {
$scope.year = $state.params['year'];
$scope.month = $state.params['month'];
workatd.getMonthCount($scope.year, $scope.month).then(function (data) {
$scope.data = data;
})
});
$scope.seedetail = function (count, type) {
if (count == 0)
return;
$state.go('monthcountdetail', {'type': type, 'year': $scope.year, 'month': $scope.month})
}
})
.controller('MonthCountDetailCtrl', function ($scope, $state, workatd, global, Tool) {
$scope.titleArr = workatd.titleArr;
var year = $state.params['year'], month = $state.params['month'];
$scope.type = $state.params['type'] == 5 ? 0 : $state.params['type'];
global.fetch_user().then(function () {
workatd.getMonthCountDetail(year, month, $state.params['type']).then(function (data) {
console.log(data);
$scope.data = [];
if ($scope.type == 1) {
set_data(data, 'isam_ontime', 'ispm_ontime', 'reason_am_ontime', 'check_am_on', 'reason_pm_ontime', 'check_pm_on')
} else if ($scope.type == 2) {
set_data(data, 'isam_offtime', 'ispm_offtime', 'reason_am_offtime', 'check_am_off', 'reason_pm_offtime', 'check_pm_off')
} else {
$scope.data = data
}
})
});
function set_data(data) {
var args = arguments;
_.each(data, function (item) {
var temp = _.pick(item, 'user__username', 'user__usr__degree', 'check_dd');
temp.address = item.workatdsetting__workaddress;
temp.reason = '';
if (item[args[1]] == 1 && item[args[2]] == 1) {
temp.reason = item[args[3]];
temp.check_dd = item[args[4]];
var temp1 = _.clone(temp);
temp1.reason = item[args[5]];
temp1.check_dd = item[args[6]];
$scope.data.push(temp1);
} else {
temp.reason = item[args[3]] == null ? item[args[5]] : item[args[3]];
temp.check_dd = item[args[4]] == null ? item[args[6]] : item[args[4]];
$scope.data.push(temp)
}
})
}
})