小程序手写,酒店价格日历,roomcalendar

https://blog.csdn.net/qq_22718203/article/details/103505339

调接口,返回的是一个日历的数组,拿这些数据,去渲染日历


<view class="tac bg_ffffff">

    <view class="week fz28 padtb20 border_bot" id="week">

      <view :class="[idx===0||idx===6 ? 'relax':'','week-item']" v-for="(item,idx) inweek_list" :key="idx">{{item}}

    <scroll-view :scroll-y="true" style="height:70vh">

      <view class="month-block fz28" v-for="(canlendar_item,index) in canlendar_data" :key="index">


        <view class="fz28 bg_eeeeee tac lh60">{{canlendar_item[0].title}}

        <view class="month-content">

          <view :class="[ item.valid==1 ? '':'color_999','month-day',in_date===item.date?'startActive':'',out_date===item.date? 'startActive':'',in_date

                :data-available="item.valid" :data-fulldate="item.date" v-for="(item,dd) in canlendar_item" :key="item.date">

            {{item.day ? item.day : ''}}

<block v-if="item.price>0">

              <view :class="[item.valid==1 ? '' : 'color_999','lh26 fz20']">{{RMB}}{{item.price}}

            <view class="fz20" style="height: 36rpx;line-height: 36rpx;">

              <block v-if="in_date===item.date">

                {{in_date===item.date ? '入住' : ''}}

              <block v-if="out_date===item.date">

                {{out_date===item.date ? '离店' : ''}}



  import httpsfrom '@/utils/common';

  const {RMB,get}=https;

  import {imgObj}from '@/utils/imgs';

export default {

props: ['canlendar_data','all_unvalid','checkdate'],

  data () {

return {

RMB:RMB,

        imgObj:imgObj,

        week_list: ['日','一','二','三','四','五','六'],

        in_date:'',//选择的日期

        out_date:''

    }

},

mounted(){

let {check_date}=this.$store.state;

    if(check_date.check_in && check_date.check_in.length>0){

this.in_date=check_date.check_in[0]+'-'+check_date.check_in[1]+'-'+check_date.check_in[2];

        this.out_date=check_date.check_out[0]+'-'+check_date.check_out[1]+'-'+check_date.check_out[2]

}

},

watch:{

checkdate(newval,oldval){

let check_date=newval;

        if(check_date.check_in && check_date.check_in.length>0){

this.in_date=check_date.check_in[0]+'-'+check_date.check_in[1]+'-'+check_date.check_in[2];

            this.out_date=check_date.check_out[0]+'-'+check_date.check_out[1]+'-'+check_date.check_out[2]

}

}

},

  methods:{

getAllTime(starDay, endDay){

var arr = [];

          var dates = [];

          // 设置两个日期UTC时间

          var db =new Date(starDay);

          var de =new Date(endDay);

          // 获取两个日期GTM时间

          var s = db.getTime() -24 *60 *60 *1000;

          var d = de.getTime() -24 *60 *60 *1000;

          // 获取到两个日期之间的每一天的毫秒数

          for (var i = s; i <= d;) {

i = i +24 *60 *60 *1000;

              arr.push(parseInt(i))

}

// 获取每一天的时间  YY-MM-DD

          for(var jin arr ){

var time =new Date(arr[j]);

              var year = time.getFullYear(time);

              var mouth = (time.getMonth() +1)>=10?(time.getMonth() +1):('0'+(time.getMonth() +1));

              var day = time.getDate()>=10?time.getDate():('0'+time.getDate());

              var YYMMDD = year +'-' + mouth +'-' + day;

              dates.push(YYMMDD)

}

return dates

},

      chooseDate(e) {

//this.validAll();

          const available = e.currentTarget.dataset.available;

          const fullDate = e.currentTarget.dataset.fulldate;

          let inTime=this.in_date,outTime=this.out_date;

          if(available==1) {

if (inTime =='' || (new Date(fullDate) <=new Date(inTime)) || outTime !='') {//选择开始时间

                  this.in_date=fullDate;

                  this.out_date='';

              }else{//选择结束时间

                let arr=this.getAllTime(this.in_date,fullDate),flag=false;

                for(let j=0;j

if(this.all_unvalid.includes(arr[j])){

flag=true

                  }

}

if(flag){//判断中间是否,有满房

                    wx.showToast({

title:'中间有不可选日期!',

                        icon:'none',

                        duration:2000

                    })

this.in_date='';

                    this.out_date='';

                }else{

this.out_date=fullDate;

                    this.$emit('select',inTime,fullDate);

                }

}

}else{

return false;

          }

},

  }

}

  @import "../styles/freecalendar.less";

  .lh26{line-height:26rpx;}

.range_bg{background:#FFF9F2;}

</style>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

createhotel.vue 页面

getFirstDayOfMonth(year,month) {

return new Date(year, month -1, 1).getDay();

},

getEmptyGrids(year,month) {

// FirstDayOfMonth代表本月的第一天是星期几

    const FirstDayOfMonth =this.getFirstDayOfMonth(year, month);

    let emptyGrids = [];

    // 有空格的情况

    if (FirstDayOfMonth >0) {

for (let i =0; i < FirstDayOfMonth; i++) {

emptyGrids.push({

'title': year+'年'+month+'月',

                'fullDate':'x'  //x是我自己定义的一个值,代表没有日期

            });

        }

// 将空格放入数组

        return emptyGrids;

    }else{

// 否则返回一个新数组

        return [];

    }

},

fillCalendar(n) {

let canlendar_data = [];

    for (let i =0; i < n; i++) {

let peryear=cale_origin[i][0].date.slice(0,4),permonty=cale_origin[i][0].date.slice(5,7);

        let EmptyGrids =this.getEmptyGrids(peryear, permonty);

        let item=cale_origin[i];

        let brr=EmptyGrids

for(let j=0;j

let theitem=cale_origin[i][j];

            theitem.title=peryear+'年'+permonty+'月';

            theitem.day=theitem.date.slice(8);

            brr.push(cale_origin[i][j])

}

canlendar_data.push(brr);

        //console.log(canlendar_data);

    }

this.canlendar_data=canlendar_data;

},

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,732评论 6 539
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,214评论 3 426
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,781评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,588评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,315评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,699评论 1 327
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,698评论 3 446
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,882评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,441评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,189评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,388评论 1 372
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,933评论 5 363
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,613评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,023评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,310评论 1 293
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,112评论 3 398
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,334评论 2 377

推荐阅读更多精彩内容