|
|
@@ -36,7 +36,7 @@ function queryEmpClick() {
|
|
|
var endStr = end_date.replace(/-/g, '/');
|
|
|
var start = new Date(startStr);
|
|
|
//开始日期取前一天的23:00
|
|
|
- start.setDate(start.getDate()-1);
|
|
|
+ start.setDate(start.getDate() - 1);
|
|
|
start_date = start.Format("yyyy-MM-dd HH:mm:ss");
|
|
|
var end = new Date(endStr);
|
|
|
if (start > end) {
|
|
|
@@ -71,7 +71,7 @@ function initQueryEmp() {
|
|
|
|
|
|
var start = new Date(start_date);
|
|
|
//开始日期取前一天的23:00
|
|
|
- start.setDate(start.getDate()-1);
|
|
|
+ start.setDate(start.getDate() - 1);
|
|
|
start_date = start.Format("yyyy-MM-dd HH:mm:ss");
|
|
|
var param = {
|
|
|
"start_date": start_date,
|
|
|
@@ -117,91 +117,355 @@ function getEmployeeInfosClick(url, param, start_score, end_score) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
function addTask(userid, start_date, end_date) {
|
|
|
|
|
|
//获取该人员排班
|
|
|
+ var url = "teamClass/getUserClasss"
|
|
|
+ var param = {
|
|
|
+ "user_id": userid,
|
|
|
+ "start_time": start_date,
|
|
|
+ "end_time": end_date
|
|
|
+ }
|
|
|
+ post_common_service(url, param, function (data) {
|
|
|
+
|
|
|
+ console.log(data)
|
|
|
+
|
|
|
+ var tasklist = data.teamClasseList;
|
|
|
+ var userclasslist = data.userClassCountList;
|
|
|
|
|
|
+ var allheight = 500;
|
|
|
+ var height = allheight - 150 - 20;
|
|
|
+ var allwidth = 820;
|
|
|
|
|
|
- var allheight = 500;
|
|
|
- var height = allheight - 150 - 50;
|
|
|
- var allwidth = 820;
|
|
|
|
|
|
+ //计算日期
|
|
|
+ var satrtday = new Date(start_date);
|
|
|
+ var endday = new Date(end_date);
|
|
|
+
|
|
|
+ var taskmap= new Map();
|
|
|
+ var userClassmap= new Map();
|
|
|
+
|
|
|
+
|
|
|
+ for(var i=0;i<tasklist.length;i++){
|
|
|
+ var task = tasklist[i];
|
|
|
+ if(!taskmap.get(task.work_date)){
|
|
|
+ taskmap.put(task.work_date,[]);
|
|
|
+ }
|
|
|
+ var arr = taskmap.get(task.work_date);
|
|
|
+ arr.push(task);
|
|
|
+ taskmap.put(task.work_date,arr);
|
|
|
+ }
|
|
|
+ for(var i=0;i<userclasslist.length;i++){
|
|
|
+ var usercount = userclasslist[i];
|
|
|
+
|
|
|
+ var daytime = new Date(usercount.start_time)
|
|
|
+ if(daytime.getHours()>=23){
|
|
|
+ daytime = new Date(daytime.valueOf()+(1000 * 60 * 60 * 24))
|
|
|
+ }
|
|
|
+ var work_date = daytime.Format("yyyy-MM-dd")+" 00:00";
|
|
|
+
|
|
|
+
|
|
|
+ if(!userClassmap.get(work_date)){
|
|
|
+ userClassmap.put(work_date,[]);
|
|
|
+ }
|
|
|
+ var arr = userClassmap.get(work_date);
|
|
|
+ arr.push(usercount);
|
|
|
+ userClassmap.put(work_date,arr);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ var days = (endday.valueOf() - satrtday.valueOf()) / (1000 * 60 * 60 * 24);
|
|
|
+ var header = "<td></td>"
|
|
|
+ var nighttd = "<td>夜班</td>"
|
|
|
+ var middletd = "<td>中班</td>"
|
|
|
+ var morningtd = "<td>早班</td>"
|
|
|
+
|
|
|
+ for (var i = 1; i <= days; i++) {
|
|
|
+ var daytime = new Date(satrtday.valueOf() + i * 1000 * 60 * 60 * 24 -1000 * 60 * 60 * 23);
|
|
|
+ var workday = daytime.Format("yyyy-MM-dd HH:mm");
|
|
|
+
|
|
|
+ var html1 = ""
|
|
|
+ var html2 = ""
|
|
|
+ var html3 = ""
|
|
|
+
|
|
|
+ if(taskmap.get(workday)){
|
|
|
+ var userclassarry = null;
|
|
|
+ if(userClassmap.get(workday)){
|
|
|
+ userclassarry = userClassmap.get(workday);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var arry = taskmap.get(workday);
|
|
|
+
|
|
|
+ for(var j=0;j<arry.length;j++){
|
|
|
+ var hasin = false;
|
|
|
+ var tasktemp = arry[j];
|
|
|
+ var hasmin = false;
|
|
|
+
|
|
|
+ var taskfail = false;
|
|
|
+
|
|
|
+ if(userclassarry!=null){
|
|
|
+ var d = hasinList(tasktemp,userclassarry)
|
|
|
+ hasin = d!=null
|
|
|
+
|
|
|
+ if(hasin){
|
|
|
+ if(d.check_status == 22){
|
|
|
+ taskfail = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if((new Date(tasktemp.end_time)).valueOf() - (new Date(tasktemp.start_time)).valueOf()< 1000*60*15){
|
|
|
+ hasmin = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ var classname = "btn-primary";
|
|
|
+ if(hasmin){
|
|
|
+ classname = "btn-danger disabled";
|
|
|
+ }
|
|
|
+ if(hasin){
|
|
|
+ classname = "btn-success disabled";
|
|
|
+ }
|
|
|
+ if(taskfail){
|
|
|
+ classname = "btn-info disabled";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var teamid = tasktemp.class_id +"_"+ ( typeof(tasktemp.unregular_id)=="undefined"?"":tasktemp.unregular_id)
|
|
|
+
|
|
|
+ var name = (new Date(tasktemp.start_time)).Format("HH:mm") + "--"+(new Date(tasktemp.end_time)).Format("HH:mm")
|
|
|
+ if(tasktemp.class_type==1){
|
|
|
+ html1+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
|
|
|
+
|
|
|
+ // html1 +='<div class="row"><label class="btn '+classname+'"><input type="radio" name="options" id="option2">'+name+'</label></div>'
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(tasktemp.class_type==2){
|
|
|
+ html2+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(tasktemp.class_type==3){
|
|
|
+ html3+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if(userClassmap.get(workday)){
|
|
|
+ var teamclassarry = null;
|
|
|
+
|
|
|
+ if(taskmap.get(workday)){
|
|
|
+ teamclassarry = taskmap.get(workday);
|
|
|
+ }
|
|
|
+ var arry = userClassmap.get(workday);
|
|
|
+
|
|
|
+ for(var j=0;j<arry.length;j++){
|
|
|
+ var hasin = false;
|
|
|
+ var usercounttemp = arry[j];
|
|
|
+
|
|
|
+ if(teamclassarry!=null){
|
|
|
+ var d = hasinList(usercounttemp,teamclassarry)
|
|
|
+ hasin = d!=null
|
|
|
+ }
|
|
|
+ var classname = "btn-warning disabled";
|
|
|
+ if(hasin){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ var name = (new Date(usercounttemp.start_time)).Format("HH:mm") + "--"+(new Date(usercounttemp.end_time)).Format("HH:mm")
|
|
|
+ if(usercounttemp.class_type==1){
|
|
|
+ html1+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(usercounttemp.class_type==2){
|
|
|
+ html2+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(usercounttemp.class_type==3){
|
|
|
+ html3+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ nighttd+="<td>" + (html3==""?"无":html3) + "</td>"
|
|
|
+ middletd+="<td>" + (html1==""?"无":html1) + "</td>"
|
|
|
+ morningtd+="<td>" + (html2==""?"无":html2) + "</td>"
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ header += "<td>" + daytime.Format("dd") + "</td>"
|
|
|
+ }
|
|
|
|
|
|
- //计算日期
|
|
|
- var satrtday = new Date(start_date);
|
|
|
- var endday = new Date(end_date);
|
|
|
|
|
|
|
|
|
- var days = (endday.valueOf()-satrtday.valueOf())/(1000*60*60*24);
|
|
|
-
|
|
|
- var header = "<td></td>"
|
|
|
|
|
|
- for(var i=0;i<=days;i++){
|
|
|
- var daytime = new Date(satrtday.valueOf()+i*1000*60*60*24);
|
|
|
- header+="<td>"+daytime.Format("dd")+"</td>"
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ var css = '<style lang="css">' +
|
|
|
+ '.row{' +
|
|
|
+ ' margin-right: 0px; ' +
|
|
|
+ ' margin-left: 0px;' +
|
|
|
+ '}' +
|
|
|
+ '.selecttag{' +
|
|
|
+ ' line-height:32px' +
|
|
|
+ '}' +
|
|
|
+ '.table td {' +
|
|
|
+ ' vertical-align: middle;' +
|
|
|
+ ' text-align: center;' +
|
|
|
+ ' border-left: 1px solid #ddd;' +
|
|
|
+ ' border-right: 1px solid #ddd;' +
|
|
|
+ ' border-top: 1px solid #ddd;' +
|
|
|
+ '}' +
|
|
|
+ '.classbtn{' +
|
|
|
+ ' font-size:10px;' +
|
|
|
+ ' text-align: center;' +
|
|
|
+ ' padding: 0;' +
|
|
|
+ '}' +
|
|
|
+ '.spanclass{' +
|
|
|
+ ' width:10px;' +
|
|
|
+ ' height: 10px;' +
|
|
|
+ '}' +
|
|
|
+ '</style>';
|
|
|
+
|
|
|
+ var table1 = '<div class="row scrollbar" style="height:' + height + 'px;width:' + (allwidth - 21) + 'px;overflow:scroll;padding-top:10px;padding-bottom:10px"><table class="table" style="height:' + height + 'px;margin:0px">' +
|
|
|
+ ' <tbody>' +
|
|
|
+ ' <tr style="height:10px" >' +
|
|
|
+ header +
|
|
|
+ ' </tr>' +
|
|
|
+ ' <tr class="danger">' +
|
|
|
+ nighttd+
|
|
|
+ ' </tr>' +
|
|
|
+ ' <tr class="warning">' +
|
|
|
+ morningtd+
|
|
|
+ ' </tr>' +
|
|
|
+ ' <tr class="active">' +
|
|
|
+ middletd+
|
|
|
+ ' </tr>' +
|
|
|
+ ' </tbody>' +
|
|
|
+ '</table></div>';
|
|
|
+
|
|
|
+
|
|
|
+ var tips = '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#38B03F"/><div class="col-xs-10">排班已被稽查</div></div>'+
|
|
|
+ '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#3280FC"/><div class="col-xs-10">排班未被稽查</div></div>'+
|
|
|
+ '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#F1A325"/><div class="col-xs-10">已稽查但排班被删除</div></div>'+
|
|
|
+ '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#EA644A"/><div class="col-xs-10">排班未满15分钟</div></div>'+
|
|
|
+ '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#03B8CF"/><div class="col-xs-10">排班已稽查但任务无效</div></div>';
|
|
|
+
|
|
|
+
|
|
|
+ var selectdiv = '<div class="row" style="text-align: left;"><div class="col-xs-10">已选择的排班:</div></div>'+
|
|
|
+ '<div class="row" style="text-align: left;"><div class="col-xs-2"/><div class="col-xs-10"><span id="selectedclass" style="font-size:10px"></span></div></div>';
|
|
|
+
|
|
|
+ var optlist = "";
|
|
|
+ var userlist = data.userList;
|
|
|
+ for(var q=0;q<userlist.length;q++){
|
|
|
+ var user = userlist[q];
|
|
|
+ optlist+=' <option value="'+user.id+'">'+user.truename+'</option>'
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ var html = css + '<div class="row row_alert" style="padding-left:10px;padding-right:10px;">' + table1 + '</div><div class="row row_alert" style="bottom: 0;position: absolute;width: 100%;text-align: right;}">' +
|
|
|
+ '<div class="col-xs-3">'+tips+'</div><div class="col-xs-3">'+selectdiv+'</div><div class="col-xs-3"><span class="selecttag" style="text-align: right;">请分配对应的稽查人员:</span></div><div class="col-xs-3 class="selecttag""><select data-placeholder="选择稽查员" id="selectusers" class="chosen-select form-control" >' +
|
|
|
+ optlist+
|
|
|
+ '</select></div><div class="row row_alert"><button class="btn btn-primary" style="margin:20px;margin-right:10px" onclick="creatTask()" type="button">生成任务</button></div></div>';
|
|
|
|
|
|
|
|
|
|
|
|
- var css = '<style lang="css">' +
|
|
|
- '.row{' +
|
|
|
- ' margin-right: 0px; ' +
|
|
|
- ' margin-left: 0px;' +
|
|
|
- '}' +
|
|
|
- '.selecttag{' +
|
|
|
- ' line-height:32px' +
|
|
|
- '}' +
|
|
|
- '.table td {' +
|
|
|
- ' vertical-align: middle;' +
|
|
|
- ' text-align: center;' +
|
|
|
- ' border-left: 1px solid #ddd;'+
|
|
|
- ' border-right: 1px solid #ddd;'+
|
|
|
- ' border-top: 1px solid #ddd;'+
|
|
|
- '}' +
|
|
|
- '</style>';
|
|
|
-
|
|
|
- var table1 = '<div class="row scrollbar" style="width:'+(allwidth-21)+'px;overflow:scroll;padding-top:10px;padding-bottom:10px"><table class="table" style="height:' + height + 'px;margin:0px">' +
|
|
|
- ' <tbody>' +
|
|
|
- ' <tr style="height:10px" >' +
|
|
|
- header +
|
|
|
- ' </tr>' +
|
|
|
- ' <tr class="danger">' +
|
|
|
- ' <td>夜班</td>' +' <td>夜班</td>' +
|
|
|
- ' </tr>' +
|
|
|
- ' <tr class="warning">' +
|
|
|
- ' <td>早班</td>' +' <td>夜班</td>' +
|
|
|
- ' </tr>' +
|
|
|
- ' <tr class="active">' +
|
|
|
- ' <td>中班</td>' +' <td>夜班</td>' +
|
|
|
- ' </tr>' +
|
|
|
- ' </tbody>' +
|
|
|
- '</table></div>';
|
|
|
-
|
|
|
- var html = css + '<div class="row row_alert" style="padding-left:10px;padding-right:10px;">' + table1 + '</div><div class="row row_alert" style="bottom: 0;position: absolute;width: 100%;text-align: right;}">' +
|
|
|
- '<div class="col-xs-9"><span class="selecttag" style="text-align: right;">请分配对应的稽查人员:</span></div><div class="col-xs-3 class="selecttag""><select data-placeholder="选择一个宠物..." class="chosen-select form-control" tabindex="2">' +
|
|
|
- ' <option value=""></option>' +
|
|
|
- ' <option value="cat">小猫</option>' +
|
|
|
- ' <option value="fish">金鱼</option>' +
|
|
|
- ' <option value="dragon">龙</option>' +
|
|
|
- ' <option value="mammoth">猛犸</option>' +
|
|
|
- ' <option value="gollum">咕噜</option>' +
|
|
|
- '</select></div><div class="row row_alert"><button class="btn btn-primary" style="margin:20px;margin-right:10px" type="button">生成任务</button></div></div>';
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- layer.open({
|
|
|
- type: 1,
|
|
|
- title: "生成稽查任务",
|
|
|
- skin: 'layui-layer-rim', //加上边框
|
|
|
- area: [allwidth+'px', allheight+'px'], //宽高
|
|
|
- scrollbar: false,
|
|
|
- content: html
|
|
|
+ layer.open({
|
|
|
+ type: 1,
|
|
|
+ title: "生成稽查任务",
|
|
|
+ skin: 'layui-layer-rim', //加上边框
|
|
|
+ area: [allwidth + 'px', allheight + 'px'], //宽高
|
|
|
+ scrollbar: false,
|
|
|
+ content: html
|
|
|
+ });
|
|
|
+
|
|
|
});
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+function selectTeamClass(obj){
|
|
|
+ $("#selectedclass").html( $(obj).attr('data') +" "+ $(obj).html() +"的排班");
|
|
|
+ $("#selectedclass").attr('data',obj.id);
|
|
|
+}
|
|
|
+
|
|
|
+function creatTask(){
|
|
|
+
|
|
|
+ //获取classid
|
|
|
+ var id = $("#selectedclass").attr('data');
|
|
|
+
|
|
|
+ //获取userid
|
|
|
+ var userid = $("#selectusers").val();
|
|
|
+ if(id!=null && typeof(id)!="undefined"){
|
|
|
+ var ids=id.split("_");
|
|
|
+ var classid = ids[0];
|
|
|
+ var unregular_id = ids[1];
|
|
|
+ var url = task_server_url + "/task/add"
|
|
|
+ if(unregular_id==null||unregular_id==""){
|
|
|
+ url+='?classid='+classid+'&userid='+userid;
|
|
|
+ }else{
|
|
|
+ url+='?classid='+classid+'&unregularid='+unregular_id+'&userid='+userid;
|
|
|
+ }
|
|
|
+ get_common_service(url,'',function(data){
|
|
|
+ tip("已生成",null)
|
|
|
+ },function(error){
|
|
|
+ tip(error,null)
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ }else{
|
|
|
+ tip("未选择任务",null)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function hasinList(task,list){
|
|
|
+ var hasin = false;
|
|
|
+ for(var p=0;p<list.length;p++){
|
|
|
+ var userclasscount = list[p];
|
|
|
+ if(typeof(task.unregular_id)=="undefined"){
|
|
|
+ if(typeof(userclasscount.unregular_id)=="undefined"){
|
|
|
+ if(task.class_id == userclasscount.class_id){
|
|
|
+ return userclasscount;
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(typeof(userclasscount.unregular_id)=="undefined"){
|
|
|
+ continue;
|
|
|
+ }else{
|
|
|
+ if(task.class_id == userclasscount.class_id && userclasscount.unregular_id==task.unregular_id){
|
|
|
+ return userclasscount;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -321,9 +585,9 @@ function exportExcel() {
|
|
|
start_date += " 23:00:00";
|
|
|
end_date += " 23:00:00";
|
|
|
}
|
|
|
- if(!dept_id) dept_id="";
|
|
|
- window.open( getserveraddr() + "/file/employee/order?dept_id="+dept_id+
|
|
|
- "&start_date="+start_date+"&end_date="+end_date+"&start_score="+start_score+"&end_score="+end_score);
|
|
|
+ if (!dept_id) dept_id = "";
|
|
|
+ window.open(getserveraddr() + "/file/employee/order?dept_id=" + dept_id +
|
|
|
+ "&start_date=" + start_date + "&end_date=" + end_date + "&start_score=" + start_score + "&end_score=" + end_score);
|
|
|
}
|
|
|
|
|
|
|