手寫一個需求簡單的甘特圖原型,百度echarts太簡單,其他的太重量級,自己手寫符合需求。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="  crossorigin="anonymous"></script>
    </head>
    <style>
        .body-left {width: 320px;float: left;}
        .list-data div{    float: left;width: 80px;text-align: center;font-size: 13px;}
        .list-data{ clear: both;}
        .y,.m,.d{ width: 1620px; clear: both;}
        .y .ylist:nth-child(2n-1){ background: #efefef;}
        .y .ylist{ background: #f7f7f7;}
        /* .tm:nth-child(2n-1){ background: #f7f7f7;} */
        .tda span{ position: relative;}
        .tda span:before {background: #00C7AF;content: "";margin: 5%;left: 0;top: 0;width: 90%;z-index: -1;height: 96%;border-radius: 5px;position: absolute;}
        .tm:before { position: absolute; left: 0; top: 0; /* right: -14px; */ width: 100%; height: 100%; border-left: 1px solid #ccc; content: ""; }.tm { width: 45px; float: left; text-align: center; position: relative; }
        .tm > div{ font-size: 13px;}
        
        .d > div{ background: #00C7AF; border-radius:3px;}
    </style>
    <body>
    <div>
        <div  class="body-left">
            <div class="list-data"><div>項目階段</div><div>開始時間</div><div>結束時間</div><div>完成率</div></div>
 
        </div>
        <div style="width: 2020px;float: left;">
            <div class="y"></div>
            <div class="m"></div>
            <div class="d" ></div>
        </div>
    </div>
    </body>

    <script>
        var source =  [{
					name: "<div>項目立項" +"</div><div>2020-09-29</div><div>" +"2020-10-29</div><div>" + "100%</div>" ,
					from: "1320192000000",
					to: "1322401600000",
				},{
					name: "<div>需求提報 " +"</div><div>2020-09-29</div><div>" +"2020-10-29</div><div>" + "100%</div>" ,
					from: "1342192000000",
					to: "1360192000000",
				},{
					name: "<div>合同生效" +"</div><div>2020-09-29</div><div>" +"2020-10-29</div><div>" + "100%</div>" ,
					from: "1342421600000",
					to: "1362401600000",
				}]
                console.log(source.length)
                
                var yArrS=[];
                var yArrE=[];
                var mArrS=[];
                var mArrE=[];
                
                var dArrS=[];
                var dArrE=[];
                for(var i=0;i<source.length;i++){
                    console.log(source[i].from)
                    
                    $(".body-left").append("<div class='list-data'>"+ source[i].name +"</div>")
                    var now = new Date(parseInt(source[i].from));
                    var end = new Date(parseInt(source[i].to));
                    var yearS = now.getFullYear(); 
                    var yearE = end.getFullYear(); 
                    var monthS = now.getMonth()+1; 
                    var monthE = end.getMonth()+1; 
                    var dateS = now.getDate();
                    var dateE = end.getDate();
                    
                    yArrS.push(yearS)
                     yArrE.push(yearE)
                    mArrS.push(monthS)
                    mArrE.push(monthE)
                    
                    dArrS.push(dateS)
                    dArrE.push(dateE)
                }
                
                console.log(yArrS)
                 console.log(yArrE)
                console.log(mArrS)
                console.log(mArrE)
                // console.log(dArrS)
                // console.log(dArrE)
                
                var tabArrYear = [];
                var yearR = yArrE[yArrE.length-1]-yArrS[0]
               
                for(var i=0;i<=yearR;i++){

                $(".y").append("<div class='ylist'>"+parseInt( yArrS[0]+i) +"</div>")
                  tabArrYear.push(yArrS[i])
                }

                var mSum = tabArrYear.length*12
                var mSunArr = []
                for(var i=0;i<mSum;i++){
                    mSunArr.push(parseInt((i%12)+1))
               
                $(".m").append("<div class='tm'><div>"+ parseInt((i%12)+1) +"月</div><div class='tda'><span>10</span><span>20</span><span>30</span></div></div>")
                }
                // console.log(mSunArr)
                // console.log(mSunArr.slice(mArrS[0]-1,mArrE[mArrE.length-1]-12))
                
                //  var mSunArrDom = mSunArr.slice(mArrS[0]-1,mArrE[mArrE.length-1]-12);
                // //  console.log(mSunArrDom)
                  
                //  for(var i=0;i<mSunArrDom.length;i++){
                //      $(".m").append("<div class='tm'><div>"+ mSunArrDom[i] +"月</div><div class='tda'><span>10</span><span>20</span><span>30</span></div></div>")
                //  }
                
                
                for(var i=0;i<yArrS.length;i++){
                    var yearReduce = yArrS[i]-yArrS[0];
                     var inYear = yArrE[i]-yArrS[i];
                    var setWidth = yArrE[i] - yArrS[i] == 0  ? (mArrE[i]-mArrS[i])+1 : (12-mArrS[i])+mArrE[i]+1;
                    var fM = mArrE[0]-mArrS[0]+1

                    if(i==0){
                        var dStr = "<div style='margin-top:3px;margin-left:"+parseInt((mArrS[i]-1)*45)+"px;width:"+ setWidth*45 +"px;height:20px;'></div>"
                    }else{
                     //  console.log(yArrE[i] - yArrS[i] == 0  ? mArrS[i]-mArrE[i] : (12-mArrS[i])+mArrE[i])
                        var dStr = "<div style='margin-top:3px;margin-left:"+parseInt(yearReduce*12*45+(mArrS[i]-1)*45)+"px;width:"+ setWidth*45 +"px;height:20px;'></div>"
                    }
                    
                    // if(inYear==0){
                    //     var dStr = "<div style='margin-top:3px;margin-left:"+parseInt(((12-mArrS[i])-1)*45)+"px;width:"+ setWidth*45 +"px;height:20px;'></div>"
                    // }else if(inYear == 1){
                    //      if(mArrE[i]-mArrS[i] > 0){
                    //          var dStr = "<div style='margin-top:3px;margin-left:"+parseInt(((12-mArrS[i])-1)*45 + mArrS[i]*45)+"px;width:"+  setWidth*45 +"px;height:20px;'></div>"
                    //      }
                        
                    // }
                    
                    
                    
                    $(".d").append(dStr)
                }
                
       var now = new Date(1326816000000);
       
       var year = now.getFullYear(); 
       var month = now.getMonth(); 
       var date = now.getDate();
       
     function getMonthWeek(a, b, c) {
       var date = new Date(a, parseInt(b) - 1, c),
           w = date.getDay(),
           d = date.getDate();
       if(w==0){
           w=7;
       }
       var config={
           getMonth:date.getMonth()+1,
           getYear:date.getFullYear(),
           getWeek:Math.ceil((d + 6 - w) / 7),
       }
       return config;
   };
       var getDate=getMonthWeek(year, month, date);
       console.log("今天是 " + getDate.getYear + " 年的第 "+ getDate.getMonth + " 月的第 " + getDate.getWeek + " 周");
    </script>
<style>
    .y .ylist {
        float: left;
        width: 33.3333%;
        text-align: center;
    }
    .tda { float: left;}
    .tda span {
        display: block;
        float: left;
        font-size: 10px;
        height: 15px;
        width: 15px;
        line-height: 15px;
        text-align: center;
    }

    .d{ height:180px;}
</style>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章