カスタムカレンダーコンポーネントのVUE

<テンプレート> 
    の<div> 
        <行タイプ= "フレックス"正当化=クラス"space-の間に" = "オペレーション・バー"> 
            <コル> <P @ = "previousEvent"をクリック>上一月</ P> </コル> 
            <コル> <P> {{datestrを}} </ P> </コル> 
            <コル> <p個の@クリック= "nextEvent">下一月</ P> </コル> 
        </ ROW> 
        <! - -星期- > 
        <行タイプ= "フレックス"> 
            <コルクラス= "テキスト中心のTD-境界日付ヘッダ">日</コル> 
            <コルクラス= "テキスト中心TDボーダー日付ヘッダ">一</コル> 
            <コルクラス= "テキスト中心のTD-境界日付ヘッダ">二</コル> 
            <コルクラス= "テキスト中心TDボーダー日付ヘッダ">三</コル> 
            <コルクラス= "テキスト中心のTD-境界日付ヘッダ">四</コル>
            <コルクラス= "テキスト中心のTD-ボーダー日付ヘッダ">五</コル> 
            <コルクラス= "テキスト中心のTD-ボーダー日付ヘッダ">六</コル> 
        </ ROW> 
        <! -日期- > 
        <行タイプ= "フレックス"> 
            <コルV- ための = "(アイテム、インデックス)allDaysで"クラス= "テキスト中央TD-ボーダー"> 
                <P:クラス= "item.noToMonth「ノー? -to-月」: 'である対月' "> {{item.dayVal}}、{{item.isToMonth}} </ P> 
            </コル> 
        </ ROW> 
    </ div> 
</テンプレート> 
<スクリプト> 
    輸出デフォルト{ 
        名:'SH-日付ピッカー' 
        データ(){ 
            リターン{ 
                関数datestrを: '' 
                allDays:[]、 
                dayWeek: 0 
                monthdays: 0 
            ;} 
        }、
        メソッド:{ 
            getPreMonth(DATE){ 
                のlet ARR = date.split( '/' ); 
                LET年 = ARR [0]; //は、現在の日付の年を取得 
                月ARR =のlet [1]; //は、月の現在の日付を取得 
                ; LET日のARRは= [2] //は現在の日付を取得し、日付がされ 
                たlet日= 新しい新しい日付(年、月、0 );  = days.getDate() ; //取得します月の日付で日現在の数 
                のlet YEAR2 =年; 
                MONTH2ましょう =のparseInt(月) - 1 ;
                もし(MONTH2 === 0 ){ 
                    YEAR2 =のparseInt(YEAR2) - 1 
                    MONTH2 = 12 
                } 
                であれば(MONTH2 <10 ){ 
                    MONTH2 = '0' + MONTH2。
                } 
                T2せ - '' + = YEAR2 + ; MONTH2を
                リターンT2; 
            }、 
            getNextMonth(DATE){
                ARRせ = date.split( '/' )。
                聞かせて年 = ARR [0]; // 年には現在の日付を取得し 
                たlet月ARR = [1]; // 月の現在の日付を取得 
                しましょうデイARR = [2]; // 取得し、現在の日付月 
                のlet日= 新しい新しい日付(年、月、0 );  ; = days.getDate()// の月に現在の日付を取得する日数 
                のlet YEAR2 = 年、
                LET、MONTH2 =のparseInt(月)+ 1 ;
                 IF(、MONTH2 13 ===ある){ 
                    YEAR2 =のparseInt(YEAR2)+ 1 ;
                    MONTH2 = 1 
                }
                 IF(MONTH2 <10 ){ 
                    MONTH2 = '0' + MONTH2。
                } 
                T2せ - '' + = YEAR2 + ; MONTH2を
                リターンT2; 
            } 
            // 上一月
            previousEvent(){
                 この .dateStr = この .getPreMonth(この.dateStr)。
                この.calDate(); 
            } 
            // 下一月
            nextEvent(){
                 この .dateStr = この .getNextMonth(この.dateStr)。
                この.calDate(); 
            }、
            calDate(){ 
                この .allDays = [];
                 // 現在の年、月、日を取得 
                LET dを= これ?.dateStrが新しい新しい日付(この .dateStr ):新しい新しい日付(); 
                LET年 = d.getFullYear(); 
                のlet月。= d.getMonth()+ 1 ;
                 この .dateStr `$ = {}年/月$ {`};
                 // 現在の最初の月を取得曜日
                この .dayWeek =新新を DATE(年、月- 1 ,. 1。).getDay();
                // 毎月の最初の前のギャップを埋める 
                LET firstNum =を7 - 。この.dayWeek;
                 のために(;私は<7 - firstNum;私は= 0 LET私は++。){
                     この.allDays.unshift({ 
                        dayVal:この .getDay($ `年} { - } $ {月-1`、 - I).dayVal、
                        dateVal:この .getDay( `$年} { - } $ {月-1`、 - I).dateVal、
                        noToMonth:trueに
                    }); 
                } 
                // 現在の月の日数を取得
                この= .monthDays 新しい新しい日付(年、月ザ・、0 ).getDate();
                 // 実際の
                IFこの.monthDays){
                     のため(LET J = 0; J < この .monthDays; J ++ ){
                         この.allDays.push( { 
                            TIMEVAL: `$ {}年 {$} / {J $ + 1 /月。}`、
                            dayVal:J。+ 1 
                        }); 
                    } 
                }; 
                // 週の月の最終日を取得
                この .lastDayWeek = 新しい新しい日付を(年月- 1、この.monthDays).getDay();
                //塗りつぶしブランクの各月の最後の日 
                lastNum = 7を聞かせて- この .lastDayWeekを- 1 (聞かせてK = 1; K <= lastNum; ++ k個){
                     この.allDays.push({ 
                        dayVal:この .getDay( `$ {年} - $ {月} - $ { この.monthDays}`、K)。 dayVal、
                        dateVal:この .getDay( `$ {年} - $ {月} - $ { この.monthDays}`、K).dateVal、
                        noToMonth:
                    }); 
                } 
            }、
            // N日前及び取得日後(日:往路負、正バックパス)
            getDay(日付、曜日){
                今日ましょう = 新しい日付(日付); 
                聞かせてtargetday_milliseconds = today.getTime()+ 1000年* 60 * 60 * 24 * 日。
                today.setTime(targetday_milliseconds)。
                聞かせてtYear = today.getFullYear(); 
                聞かせてtMonth = today.getMonth(); 
                聞かせてtDate = today.getDate();
                リターン{ 
                    dateVal:tYear + ' - ' + tMonth + ' - ' + tDate、
                    dayVal:tDate 
                }。 
            }
        }、 
        (){ 搭載
            この.calDate()。
        } 
    }。
</ SCRIPT> 
<スタイルLANG = "少ない"> 
    @font_color:#FFF; 
    @font_size:18px; 
    .td - ボーダー{ 
        幅: 14.28571428571429% / * 幅:40ピクセル; * / 
        国境:固体1pxのグレー。
        国境 - 右:なし。 - 高さ:36px; 
        背景:オレンジ; 
        色:@font_color。
        フォント - サイズ:16pxに; 
    } 
    .td -border:直前に入って子{ 
        ボーダー -月{右:固体1pxのグレー。
    } 
    .date - ヘッダ{ 
        フォント - サイズ:28px; 
        フォント - 重さ:太字;  - 高さ:42px; 
        背景:deepskyblue。
    } 
    .operation - バー{ 
        幅: 100% 
        背景:deeppink。
        色:@font_color。
        フォント - サイズ:@font_size。
        フォント - 重さ:太字; 
    } 
    .NO -to- 
        色:グレー。
    } 
    .is-to- 月{ 
        色:@font_color。
    }
 </スタイル>

 

おすすめ

転載: www.cnblogs.com/web-zqk/p/11544041.html