趁年假期间,回顾整理下最近几年做过的一些系统项目界面,把一些应用场景比较常见的功能代码片段分享出来记录一下。
代码片段名称:排班系统
前端开发语言:html + jquery + css3
选择这样的技术架构方案,目的是方便后续其他项目可以用到,不管是前端采用的vue、react、layui、微信小程序等等。都可以直接拷贝代码过来 直接插入系统当中使用。
排班整体效果如下:
1、按周显示UI效果

2、按月来显示排班效果

看到这样的界面,想必大家都会说一定用到了一些常用UI组件,其实并没有纯原生js开发。
在这个代码片段当中,分享记录2个技术要点或难点。
1、按照「周」或者「月」来显示排班的人员。
//全局初始化配置 var checkValue= 1; var weekNum = 0; var m = new Date().getMonth(); var y = new Date().getFullYear(); var dd = new Date().getDate(); console.log(dd) var w = new Date().getDay(); var weekArr = ['日','一','二','三','四','五','六']; //初始化 按周 数据 var datehtml =''; for(var a=w; a>0;a--){ datehtml+='<ol>'+(m+1)+'月'+(dd-a)+'日/周'+weekArr[a-1]+'</ol>' } datehtml+='<ol class="curdate">'+(m+1)+'月'+dd+'日/周'+weekArr[w]+'</ol>' for(var a=w; a<(7-w);a++){ datehtml+='<ol>'+(m+1)+'月'+(dd+a)+'日/周'+weekArr[a+1]+'</ol>' } $('#dateW').html(datehtml) $('.date').html((m+1)+'月'+(dd-w)+'日 - '+ (m+1)+'月'+(dd+6-w)+'日'); // 计算上周的函数 function preweek(n){ var datehtml =''; var todaydate = new Date(); console.log(todaydate) var newDate = parseInt(todaydate.getTime()) + 7 * n * 24 * 3600 * 1000; var date = new Date(newDate); console.log(date) var years = date.getFullYear(); var month = date.getMonth() + 1; var strDate = date.getDate(); console.log('dangqian' + years +'-'+ month +'-'+ strDate ) for(var a=w; a>0;a--){ var newDates = parseInt(date.getTime()) - a * 24 * 3600 * 1000; var dates = new Date(newDates); var months = dates.getMonth() + 1; var onedate = dates.getDate(); console.log(onedate) datehtml+='<ol>'+months+'月'+onedate+'日/周'+weekArr[a-1]+'</ol>' } datehtml+='<ol class="curdate">'+month+'月'+strDate+'日/周'+weekArr[w]+'</ol>' for(var a=w; a<(7-w);a++){ var newDatess = parseInt(date.getTime()) + a * 24 * 3600 * 1000; var datess = new Date(newDatess); var monthss = datess.getMonth() + 1; var onedates = datess.getDate(); console.log(onedates) datehtml+='<ol>'+monthss+'月'+onedates+'日/周'+weekArr[a+1]+'</ol>' } $('#dateW').html(datehtml) $('.date').html(months+'月'+onedate+'日 - '+ monthss+'月'+onedates+'日'); }
复制
2、日历的自动生成与数据的绑定
function calendar(y, m){ var today = new Date().getDate(); var w = new Date().getDay(); console.log(y, m, w); var cellhtml = '数据1'; var allhtml = '数据2'; var nohtml = '<div class="norow">本岗今天休息<br/> 不排班</div>'; //拿到数据,生成日历 var html = '<div class = "rilibox"><ul>'; var max = new Date(y,m,0).getDate() for (var d = 1;d <= max;d++) { var week = new Date(y,m,d).getDay(); //如果该月的第一天不是星期日,则填充空白 console.log('星期' + week) if(d==1 && week!=0){ for(var ww=0; ww<week;ww++){ html += '<li></li>'; } } var riqitxt= '<bdo>' + (d<10?'0'+d:d) +'</bdo>'; if(today==d){ riqitxt= '<bdo class="curday">' + (d<10?'0'+d:d) +'</bdo>'; } if(d==3 || d==11 || d==15 || d==24){ html += '<li class="nopaiban">'+ riqitxt + nohtml+'</li>'; }else{ if(d==1 || d==11 || d==21){ html += '<li>' + riqitxt + allhtml +'</li>'; }else{ html += '<li>' + riqitxt + cellhtml +'</li>'; } } //如果星期六不是该月的最后一天,则换行 if (week == 6 && d != max){ html += '</ul><ul>'; }else if(d == max) //该月的最后一天 { for(var v=0; v<6-week;v++){ html += '<li></li>'; } html += '</ul>'; } week = (week + 1 > 6) ? 0 : week+1; } html += '</ul></div>'; return html; }
复制
这是纯html配合js来实现的日历。不是用table表格的方式。
如果你们的项目刚好用到了排班系统,不防来参考下,提高我们的工作效率,不用重复去造轮子,了解和掌握好基本技能和业务需求,即可高效的完成我们的项目任务。