通過Node.js輕輕松松搞定值日表的制作,無需手動添加日期~

一、項目描述

前言:公司同事基本每20天左右的周一上班會制作一個工作日值班表并將其打印,貼在墻上用于提醒公司同事要記得值班打掃衛生,具體制作過程是:名字和星期可以直接復制粘貼,但是日期還是需要一個個對應日歷上的工作日進行手動錄入并修改。

希望實現的功能:同事周一上班時直接訪問某個鏈接即可查看未來固定天數的值班表,點擊打印當前網頁即可快速便捷打印出工作日值班表,如果你愿意,你可以打印出一個季度,甚至一年的值班記錄表。

二、項目描述

所用模塊:1、Moment.js node的時間操作模塊。 2、Express node的快速web開發框架。3、layui用于前端展示,類似于bootstrap框架。

實現思路:通過Moment.js獲取當前時間并循環加1,并判斷其是否是工作日,如果是工作日就將當前日期、周幾、以及人名PUSH到數組中,如果不是工作日日期加1繼續循環判斷,排班排滿了固定天數為止。(其中判斷日期是否為工作日的方法是使用一個函數,判斷某個日志是否在假期數組中,這個假期數組需要前期準備好,用于做工作日的比對)

三、項目截圖

代碼部署后,訪問 http://localhost:3000/index 既可查看值班表,可以直接打印網頁,也可以轉成PDF~~~

QQ截圖20170830180417.png

四、部分代碼

  • 4.1、首先定義一個數組存放[日期,星期幾,姓名],并獲取當前日期, 根據當前日期通過moment().subtract(-i, "days").format("YYYY-MM-DD");(該函數是獲取當前日期第i天的日期)函數獲取未來的日期nextday,判斷未來日期是否是工作日,如果是工作日那么通過函數(var weekNum=moment(nextDay).format("E");該函數計算出的是數字,需要判斷以后賦上中文)計算出該日期是周幾。然后拼接數組,在數組的Json格式數據傳給前臺。
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="星期天"
      }
      //剛好人數為10,所有模10就可循環輸出人名
      var peopleNum=items.length%10;
      var peopleName=peoples[peopleNum];
      items.push([nextDay,weekStr,peopleName]);
    }
  }
  //注意這里要使用Json格式數據
  rep.json({datas:items});
});
  • 4.1、判斷是否是工作日的函數(網上搜索的),及判斷某個日期是否在假期數組內,這個假期數組需要前期自己定義好。
//判斷字符串是否在數組內的函數
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、后期有想法可以,通過選擇開始時間,而并不一定需要從周一開始,同時員工也可以添加到數據庫中,這樣既可實現對員工的動態操作,大家有啥想法和建議歡迎提出討論~
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • PHP常用函數大全 usleep() 函數延遲代碼執行若干微秒。 unpack() 函數從二進制字符串對數據進行解...
    上街買菜丶迷倒老太閱讀 1,381評論 0 20
  • php usleep() 函數延遲代碼執行若干微秒。 unpack() 函數從二進制字符串對數據進行解包。 uni...
    思夢PHP閱讀 2,002評論 1 24
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • 【R:閱讀原文】 盡量找出不被侵犯的“圣地"利用不容易被工作或私事影響的時間最好,例如,如果利用每天開始工作前的時...
    三米GZ閱讀 155評論 0 0
  • 今年的重陽節也許對我來說意義非凡,不知來年重陽節還是否能帶父母親一起到城郊走走,一起陪老父老母一起吃頓飯。 今年初...
    杜鵑姐姐閱讀 262評論 1 1