zoukankan      html  css  js  c++  java
  • VUE 日历签到

    <style lang="scss">
    @import "../assets/css/px2rem.scss";
    .sign-box {
       100%;
      min-height: 100%;
      background: #f5f5f5;
      position: relative;
      .top-box {
        padding: px2rem(40) px2rem(30) px2rem(0);
        background: #4bc7c7;
      }
      .person-box {
        display: flex;
        justify-content: space-around;
        align-items: center;
      }
      .sign-personInfor {
        display: flex;
        color: #fff;
        align-items: center;
        .headImg {
          position: relative;
          margin-right: px2rem(30);
          img {
             px2rem(140);
            height: px2rem(140);
            display: block;
          }
        }
        .nickname {
          p:first-child {
            font-size: px2rem(34);
          }
          p:last-child {
            font-size: px2rem(28);
            span {
              color: #f60;
            }
          }
        }
      }
      .sign-btn {
        font-size: px2rem(34);
        border: 0;
        background: rgba(0, 0, 0, 0.4);
        height: px2rem(70);
        line-height: px2rem(50);
         px2rem(140);
        border-radius: px2rem(14);
        color: #fff;
      }
      .integral-box {
        font-size: px2rem(30);
        color: #fff;
        display: flex;
        justify-content: space-around;
        margin-top: px2rem(20);
        font-size: px2rem(34);
        .sign-price {
          flex: 0 0 40%;
          p {
            text-align: center;
            height: px2rem(80);
            line-height: px2rem(80);
            img {
               px2rem(40);
              margin-right: px2rem(10);
              vertical-align: sub;
            }
          }
        }
      }
        .calender {
            background: #fff;
             100%;
            border-radius: px2rem(10);
            box-shadow: 0 px2rem(4) px2rem(4) rgba($color: #000000, $alpha: 0.2);
            .ui-datepicker-wrapper {
                 100%;
                font-size: px2rem(24);
                color: #666;
                box-shadow: px2rem(2) px2rem(2) px2rem(8) px2rem(2) rgba(128,128,128,.3);
                &.ui-datepicker-wrapper-show {
                    display: block;
                }
                .ui-datepicker-header {
                    height: px2rem(100);
                    line-height: px2rem(100);
                    text-align: center;
                    border-bottom: px2rem(1) solid #eaeaea;
                    font-weight: bold;
                    .ui-datepicker-curr-month {
                        font-size: px2rem(30);
                    }
                    .ui-datepicker-btn {
                        height: px2rem(100);
                         px2rem(100);
                    }
                    .ui-datepicker-prev {
                        background: url(../assets/img/arrow-l.png) no-repeat center center;
                        background-size: px2rem(20) auto;  
                        float: left;
                    }
                    .ui-datepicker-next {
                        background: url(../assets/img/arrow-r.png) no-repeat center center;
                        background-size: px2rem(20) auto;  
                        float: right;
                    }
                }
                .ui-datepicker-body {
                    .datepicker-weekday {
                        .weekday-head {
                            display: flex;
                            justify-content: space-around;
                            border-bottom: px2rem(1) solid #777;
                            li {
                                height: px2rem(100);
                                line-height: px2rem(100);
                                font-size: px2rem(30);
                                font-weight: bold;
                            }
                        }
                        .weekday-days {
                            display: flex;
                            justify-content: space-around;
                            flex-wrap: wrap;
                            li {
                                flex: 0 1 14.2%;
                                text-align: center; 
                                height: px2rem(90);
                                line-height: px2rem(90);
                                font-size: px2rem(24);
                                &.active {
                                    background: url(../assets/img/right-mark.png) no-repeat center center;
                                    background-size: 50% auto;
                                }
                                &.ifDiabled {
                                    color: #DDD;
                                    visibility: hidden;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    </style>
    <template>
        <div class="sign-box">
            <div class="top-box">
                <div class="person-box">
                    <div class="sign-personInfor">
                        <div class="headImg">
                            <img src="../assets/img/head-img.png" alt="">
                        </div>
                        <div class="nickname">
                            <p>我是大橙子</p>
                            <p>您连续签到:<span>7天</span></p>
                        </div>
                    </div>
                    <button class="sign-btn" @click="signIn">签到</button>
                </div>
                <div class="integral-box">
                    <div class="sign-price">
                        <p><img src="../assets/img/red-packet.png" alt="">红包:5.00</p>
                    </div>
                    <div class="sign-price">
                        <p><img src="../assets/img/banshou.png" alt=""> 小扳手:320</p>
                    </div>
                </div>
            </div>
            <div class="calender">
                <div class="ui-datepicker-wrapper ui-datepicker-wrapper-show">
                    <div class="ui-datepicker-header">
                        <a href="javascript:;" class="ui-datepicker-btn ui-datepicker-prev" @click="getPrevMonth(1)"></a>
                        <a href="javascript:;" class="ui-datepicker-btn ui-datepicker-next" @click="getNextMonth(2)"></a>
                        <span class="ui-datepicker-curr-month">{{thisMonthDays.year}}年{{thisMonthDays.month}}月</span>
                    </div>
                    <div class="ui-datepicker-body">
                        <div class="datepicker-weekday">
                            <ul class="weekday-head">
                                <li>日</li>
                                <li>一</li>
                                <li>二</li>
                                <li>三</li>
                                <li>四</li>
                                <li>五</li>
                                <li>六</li>
                            </ul>
                            <!-- active -->
                            <ul class="weekday-days">
                                <li v-for="item in this.thisMonthDays.days" :data-date="thisMonthDays.year+'-'+thisMonthDays.month+'-'+item.showDate" :key="item.id" :class="{active: item.hasMark ==thisMonthDays.year+'-'+thisMonthDays.month+'-'+item.showDate,ifDiabled: !item.ifThisMonthDays}">
                                    {{item.showDate}}
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </template>
    <script>
    import Hotcss from "hotcss";
    import qs from "qs";
    export default {
        name: "signIn",
        data: function() {
            return {
                ret: [],
                thisMonthDays: {},
                daysHtml: '',
                setYear: new Date().getFullYear(),
                setMonth: new Date().getMonth()+1,
                uid: '',
                signMark: []
            };
        },
        created() {
            this.login();
        },
        mounted: function() {
            this.getMonthData(this.setYear,this.setMonth);
            this.getSignData(this.setMonth,this.setYear,this.setMonth);
        },
        methods: {
            login(){
                this.axios.get('http://app.lanbanshou.com/mpdemo/login/translate',{
                    params: {
                        openid: 'oFX2IwUkoxBLEmk999HaPrxCB79c'
                    }
                }).then((response)=> {
                    response = JSON.parse(response.data.obj);
                    console.log(response)
                    sessionStorage.setItem('uid',response.info.id)
                    this.uid = response.info.id;
                }).catch((response)=>{
                    console.log(response);
                })
            },
            signIn(){
                this.axios.get('http://192.168.2.88:8080/mpdemo/qiandao/qiandao',{
                    params:{
                        uid: this.uid
                    }
                }).then((response)=>{
                    console.log(response);
                    alert(response.data.obj)
                }).catch((response)=>{
                    console.log(response);
                })
            },
            fillZero(s) {
                return s < 10 ? '0' + s : s;
            },
            getNextMonth(mon){
                this.setMonth = this.setMonth + 1;
                this.getSignData(this.setMonth,this.setYear,this.setMonth,mon)
                //this.getMonthData(this.setYear,this.setMonth)
            },
            getPrevMonth(mon){
                this.setMonth = this.setMonth - 1;
                this.getSignData(this.setMonth,this.setYear,this.setMonth,mon)
    
                // this.getMonthData(this.setYear,this.setMonth)
            },
            getMonthData(year,month){
                if(!year || !month){
                    var today = new Date();
                    year = today.getFullYear();
                    month = today.getMonth()+1;
                }
                var firstDay = new Date(year,month - 1, 1);
                var firstDayWeekDay = firstDay.getDay();
                if(firstDayWeekDay === 0) firstDayWeekDay = 7;
    
                year = firstDay.getFullYear();
                month = firstDay.getMonth() + 1;
    
                var lastDayOfLastMonth = new Date(year,month-1,0);
                var lastDateOfLastMonth = lastDayOfLastMonth.getDate();
    
                var preMonthDayCount = firstDayWeekDay - 1;
    
                var lastDay = new Date(year,month,0);
                var lastDate = lastDay.getDate();
                this.ret = [];
                for (var i = 0; i < 42; i++) {
                    var date = i - preMonthDayCount;
                    var showDate = date;
                    var thisMonth = month;
                    var ifThisMonthDays = true;
    
                    if (date <= 0) {
                        //上一月
                        thisMonth = month - 1;
                        showDate = lastDateOfLastMonth + date;
                        ifThisMonthDays = false;
                    } else if(date > lastDate){
                        //下一月
                        thisMonth = month + 1;
                        showDate = showDate -lastDate;
                        ifThisMonthDays = false;
                    }
                    if (thisMonth === 0) thisMonth = 12;
                    if (thisMonth === 13) thisMonth = 1;
                    this.ret.push({
                        month: thisMonth,
                        date:date,
                        showDate: this.fillZero(showDate),
                        ifThisMonthDays: ifThisMonthDays
                    });
                }
                this.signMark.map((obj1,index1)=>{
                    var homologous1 = obj1.time.split(' ')[0];
                    this.ret.map((obj2,index2)=>{
                        var mark1 = homologous1.split('-')[2];
                        // console.log(mark1);
                        if(obj2.showDate == mark1){
                            obj2.hasMark = homologous1;
                        }
                    })
                })
                this.thisMonthDays = {
                    year: year,
                    month: this.fillZero(month),
                    days: this.ret  
                }
                // return {
                //     year: year,
                //     month: month,
                //     days: this.ret
                // };
                console.log({
                    year: year,
                    month: this.fillZero(month),
                    days: this.ret
                });
            },
            getSignData(defaultDate,changeYear,changeMonth,mon){
                console.log(defaultDate,changeYear,changeMonth)
                this.axios.get('http://192.168.2.88:8080/mpdemo/qiandao/sign',{
                    params : {
                      uid: sessionStorage.getItem('uid'),
                      time: defaultDate
                    }
                }).then((response)=>{
                    response = JSON.parse(response.data.obj);
                    if(response.code == 404){
                        alert(response.msg)
                        if(mon == 2){
                           this.setMonth = this.setMonth-1; 
                        } else {
                            this.setMonth = this.setMonth+1;
                        }
                        //this.setMonth = new Date().getMonth()+1;
                        return;
                    }
                    this.signMark = response.list;
                    console.log(this.signMark)
                    this.getMonthData(changeYear,changeMonth);
                }).catch((response)=>{
                    console.log(response)
                })
            },
        }
    };
    </script>
  • 相关阅读:
    字符、字符串和文本处理
    接口
    泛型
    事件
    Expression表达式树 案例
    栈帧
    属性
    方法
    常量和字段
    Dynamic
  • 原文地址:https://www.cnblogs.com/hzx-5/p/9711434.html
Copyright © 2011-2022 走看看