一、項目描述
前言:公司同事基本每20天左右的周一上班會制作一個工作日值班表并將其打印巩趁,貼在墻上用于提醒公司同事要記得值班打掃衛(wèi)生痒玩,具體制作過程是:名字和星期可以直接復(fù)制粘貼,但是日期還是需要一個個對應(yīng)日歷上的工作日進行手動錄入并修改议慰。
希望實現(xiàn)的功能:同事周一上班時直接訪問某個鏈接即可查看未來固定天數(shù)的值班表蠢古,點擊打印當前網(wǎng)頁即可快速便捷打印出工作日值班表,如果你愿意别凹,你可以打印出一個季度便瑟,甚至一年的值班記錄表。
二番川、項目描述
所用模塊:1、Moment.js node的時間操作模塊脊框。 2颁督、Express node的快速web開發(fā)框架。3浇雹、layui用于前端展示沉御,類似于bootstrap框架。
實現(xiàn)思路:通過Moment.js獲取當前時間并循環(huán)加1昭灵,并判斷其是否是工作日吠裆,如果是工作日就將當前日期伐谈、周幾、以及人名PUSH到數(shù)組中试疙,如果不是工作日日期加1繼續(xù)循環(huán)判斷诵棵,排班排滿了固定天數(shù)為止。(其中判斷日期是否為工作日的方法是使用一個函數(shù)祝旷,判斷某個日志是否在假期數(shù)組中履澳,這個假期數(shù)組需要前期準備好,用于做工作日的比對)
三怀跛、項目截圖
代碼部署后距贷,訪問 http://localhost:3000/index 既可查看值班表,可以直接打印網(wǎng)頁吻谋,也可以轉(zhuǎn)成PDF~~~
QQ截圖20170830180417.png
四忠蝗、部分代碼
- 4.1、首先定義一個數(shù)組存放[日期漓拾,星期幾阁最,姓名],并獲取當前日期晦攒, 根據(jù)當前日期通過moment().subtract(-i, "days").format("YYYY-MM-DD");(該函數(shù)是獲取當前日期第i天的日期)函數(shù)獲取未來的日期nextday闽撤,判斷未來日期是否是工作日,如果是工作日那么通過函數(shù)(var weekNum=moment(nextDay).format("E");該函數(shù)計算出的是數(shù)字脯颜,需要判斷以后賦上中文)計算出該日期是周幾哟旗。然后拼接數(shù)組,在數(shù)組的Json格式數(shù)據(jù)傳給前臺栋操。
app.get('/users', function(req,rep){
//當前時間
//var now =moment().format("YYYY-MM-DD");
var items=[];
for(var i=items.length;items.length<20;i++){
//從當前日期查詢往后的日子
nextDay=moment().subtract(-i, "days").format("YYYY-MM-DD");
if(!contains(holidays,nextDay)){
//判斷日期是星期幾
var weekNum=moment(nextDay).format("E");
var weekStr=""
if(weekNum=="1"){
weekStr="星期一"
}else if(weekNum=="2"){
weekStr="星期二"
}else if(weekNum=="3"){
weekStr="星期三"
}else if(weekNum=="4"){
weekStr="星期四"
}else if(weekNum=="5"){
weekStr="星期五"
}else if(weekNum=="6"){
weekStr="星期六"
}else if(weekNum=="7"){
weekStr="星期天"
}
//剛好人數(shù)為10闸餐,所有模10就可循環(huán)輸出人名
var peopleNum=items.length%10;
var peopleName=peoples[peopleNum];
items.push([nextDay,weekStr,peopleName]);
}
}
//注意這里要使用Json格式數(shù)據(jù)
rep.json({datas:items});
});
- 4.1、判斷是否是工作日的函數(shù)(網(wǎng)上搜索的),及判斷某個日期是否在假期數(shù)組內(nèi)矾芙,這個假期數(shù)組需要前期自己定義好舍沙。
//判斷字符串是否在數(shù)組內(nèi)的函數(shù)
function contains(arr, obj) {
var i = arr.length;
while (i--) {
if (arr[i] === obj) {
return true;
}
}
return false;
}
五、源碼與展望
- 5.1剔宪、項目源代碼: https://github.com/dpc761218914/ZhiBanBiao
- 5.2拂铡、后期有想法可以,通過選擇開始時間葱绒,而并不一定需要從周一開始感帅,同時員工也可以添加到數(shù)據(jù)庫中,這樣既可實現(xiàn)對員工的動態(tài)操作地淀,大家有啥想法和建議歡迎提出討論~