Echart統(tǒng)計上下班狀態(tài)(正常讨永、遲到、早退)

最近做公司的項目人臉考勤遇革,需要統(tǒng)計個人考勤最近上下班狀態(tài)卿闹,以散點圖的形式展示,剛開始一點思路都沒有萝快,看文檔有沒有找到合適的案例锻霎,參考了百度上別人寫案例,他的案例不全杠巡,分了好幾次才寫出這個dome量窘,希望遇到問題后要有耐心雇寇,多思考氢拥。

 //自定義數(shù)據(jù)
var BASE_TIME = '2020-06-20' // 統(tǒng)一聲明一個變量
var data = [{
   goWorkTime: '2020-03-19 09:10:12',
   offWorkTime: '2020-03-19 18:10:45',
}, {
   goWorkTime: '2020-03-20 08:10:12',
   offWorkTime: '2020-03-20 17:10:45',
 }, {
   goWorkTime: '2020-03-21 10:10:12',
   offWorkTime: '2020-03-21 19:48:45',
},{
    goWorkTime: '2020-03-22 08:44:45',
    offWorkTime: '2020-03-22 19:49:08',
 }, {
  goWorkTime: '2020-03-25 10:44:45',
   offWorkTime: '',
}];

  // 處理數(shù)據(jù)
  this.onTime = [];
  this.offTime = [];
  for(let item of data){
     this.onTime.push(item.goWorkTime ? `${BASE_TIME} ${moment(item.goWorkTime).format('YYYY-MM- DD HH:mm:ss').substr(11, 10)}` : null);
     this.offTime.push(item.offWorkTime ? `${BASE_TIME} ${moment(item.offWorkTime).format('YYYY-MM- DD HH:mm:ss').substr(11, 10)}` : null);
}
 var optionss =  {
   grid: {
     left: '3%',
    right: '8%',
     bottom: '10%',
    height: 150,
    containLabel: true
  },
legend: {
  orient: 'vertical',
  icon: "circle",
  top: '3%',
  textStyle: {
    color: "#3BAEFE",
    fontSize: 16
   }
},
tooltip: {
   trigger: 'axis',
   padding: [2, 10],
   formatter: function(params) {
    var res='<div><p>時間:'+params[0].name+'</p></div>' 
    for(var i=0;i<params.length;i++){
      var states = '';
      if (params[i].data) {
        states =  moment(params[i].data ).format('HH:mm:ss');
      } else {
        states = '缺勤';
      }
    res+='<p><span style="display: inline-block; width: 10px; height: 10px; background-color: '+params[i].color+';border-radius: 50%"></span>'+params[i].seriesName+': '+  states +'</p>'
    }
   return res;
          
},
textStyle: {
    fontSize: 16
  } 
 },
xAxis: {
  type: 'category',
  axisLabel: {
  interval: 0,
   fontSize: 16
  },
   axisTick: {
   alignWithLabel: true
 },
 axisLine: {
   onZero: false,
   lineStyle: {
    color: '#aaa'
  }
},
 data: ["03-19 周四", "03-20 周五", "03-21 周六", "03-22 周日", "03-25 周一"]
},
 yAxis: {
  type: 'time',
  splitLine: {
   lineStyle: {
   type: 'dashed',
   color: '#DDD'
   }
 },
 axisLine: {
   show: false,
    lineStyle: {
      color: '#333'
   }
  },
  nameTextStyle: {
    color: '#303133',
    fontSize: 10,
   },
   splitArea: {
     show: false
   },
  min: `${BASE_TIME} 0:00:00`,
  max: `${BASE_TIME} 23:59:59`,
  splitNumber: 7,
  axisLabel:{
    formatter: function (value) {
     return (moment(value).format('YYYY-MM-DD HH:mm:ss')).substr(11,20)
   }
  }
},
dataZoom: [
    {
    type: 'slider',
    start: 30,
    end: 100
   }, {
    type: 'inside',
    start: 30,
    end: 100
  }],
 series: [
    {
     type: 'scatter',
     name: '下班',
     symbolSize: '6',
    data: this.offTime,
    itemStyle: {
       normal: {
        color: function(params) {
          if (params.data) {
             var startTime = moment(`${BASE_TIME} 18:00:00`).valueOf();
              var endTime =  moment(`${BASE_TIME} 23:59:59`).valueOf();
              var time = moment(params.data).valueOf();
           if (parseInt(startTime) < parseInt(time) && parseInt(time) < parseInt(endTime)) {
               return '#2996F2'
             } else {
              return '#FF4848'
            }
           } else {
            return '#5e5e5e'
      }
    }
  }
   }
 },
{
 type: 'scatter',
 name: '上班',
 symbolSize: '6',
 data: this.onTime,
 itemStyle: {
  normal: {
    color: function(params) {
      if (params.data) {
        var startTime = moment(`${BASE_TIME} 00:00:00`).valueOf();
        var endTime =  moment(`${BASE_TIME} 09:15:00`).valueOf();
        var time = moment(params.data).valueOf();
        if (parseInt(startTime) < parseInt(time) && parseInt(time) < parseInt(endTime)) {
          return '#2996F2'
        } else {
          return '#F7D225'
        }
      } else {
        return '#5e5e5e'
          }
        }
      }
     }
   }
  ]
};

最終效果圖


TIM圖片20200603151537.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锨侯,隨后出現(xiàn)的幾起案子嫩海,更是在濱河造成了極大的恐慌,老刑警劉巖囚痴,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叁怪,死亡現(xiàn)場離奇詭異,居然都是意外死亡深滚,警方通過查閱死者的電腦和手機奕谭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痴荐,“玉大人血柳,你說我怎么就攤上這事∩祝” “怎么了难捌?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我根吁,道長员淫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任击敌,我火速辦了婚禮介返,結果婚禮上,老公的妹妹穿的比我還像新娘沃斤。我一直安慰自己映皆,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布轰枝。 她就那樣靜靜地躺著捅彻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞍陨。 梳的紋絲不亂的頭發(fā)上步淹,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音诚撵,去河邊找鬼缭裆。 笑死,一個胖子當著我的面吹牛寿烟,可吹牛的內容都是我干的澈驼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼筛武,長吁一口氣:“原來是場噩夢啊……” “哼缝其!你這毒婦竟也來了?” 一聲冷哼從身側響起徘六,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤内边,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后待锈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漠其,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年竿音,在試婚紗的時候發(fā)現(xiàn)自己被綠了和屎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡春瞬,死狀恐怖柴信,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情快鱼,我是刑警寧澤颠印,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布纲岭,位于F島的核電站,受9級特大地震影響线罕,放射性物質發(fā)生泄漏止潮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一钞楼、第九天 我趴在偏房一處隱蔽的房頂上張望喇闸。 院中可真熱鬧,春花似錦询件、人聲如沸燃乍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刻蟹。三九已至,卻和暖如春嘿辟,著一層夾襖步出監(jiān)牢的瞬間舆瘪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工红伦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留英古,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓昙读,卻偏偏與公主長得像召调,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蛮浑,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355