From bc38b4c882c971e9042eb875b6ffddb6054bbacd Mon Sep 17 00:00:00 2001 From: lion <120344285@qq.com> Date: Sat, 20 Jun 2026 11:51:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/index/index.vue | 32 ++++++++----- pages/visit/book.vue | 107 +++++++++++++++++++++++------------------- 2 files changed, 78 insertions(+), 61 deletions(-) diff --git a/pages/index/index.vue b/pages/index/index.vue index aca362b..02ef735 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -163,15 +163,15 @@ export default { data() { const d = new Date() - const year = d.getFullYear() - let month = d.getMonth() + 1 - month = month < 10 ? `0${month}` : month - const date = d.getDate() + const pad = (n) => (n < 10 ? '0' + n : '' + n) + const fmtDate = (dt) => `${dt.getFullYear()}-${pad(dt.getMonth() + 1)}-${pad(dt.getDate())}` + const dMax = new Date(d.getTime()) + dMax.setDate(dMax.getDate() + 6) return { showInfo: false, showBook: false, - minDate: `${year}-${month}-${date + 1}`, - maxDate: `${year}-${month}-${date + 7}`, + minDate: fmtDate(d), + maxDate: fmtDate(dMax), showCalendar: false, list: ["暂无通知通告"], info: {}, @@ -190,8 +190,9 @@ return this.util.shareInfo }, onLoad() { - this.minDate = this.$moment().add(1, 'days').format('YYYY-MM-DD'); - this.maxDate = this.$moment().add(7, 'days').format('YYYY-MM-DD'); + // 可预约共 7 天:今天 ~ 今天+6 + this.minDate = this.$moment().format('YYYY-MM-DD'); + this.maxDate = this.$moment().add(6, 'days').format('YYYY-MM-DD'); this.loadInfo(); this.loadNotice(); }, @@ -345,12 +346,16 @@ that.util.toast("您选择的日期不可预约") } }, + filterCalendarByRange(list) { + var that = this; + return (list || []).filter(function(p) { + return !that.$moment(p.date).isAfter(that.maxDate, 'day') && !that.$moment(p.date).isBefore(that.minDate, 'day'); + }); + }, openCalendar() { var that = this; - var edate = this.$moment().add('days', 7).format("yyyy-MM-DD"); - var ndate = this.$moment().add('days', 1).format("yyyy-MM-DD") - this.loadCalendar(ndate, edate, function(res) { - that.listCalendar = res || []; + this.loadCalendar(this.minDate, this.maxDate, function(res) { + that.listCalendar = that.filterCalendarByRange(res); that.bindCalendarFormatter(); that.showCalendar = true; that.$nextTick(function() { @@ -365,6 +370,9 @@ if (!dateStr) { dateStr = this.$moment(day.date).format("yyyy-MM-DD"); } + if (this.$moment(dateStr).isAfter(this.maxDate, 'day') || this.$moment(dateStr).isBefore(this.minDate, 'day')) { + return day; + } for (var m of this.listCalendar) { if (dateStr == m.date) { if (m.is_open == 1) diff --git a/pages/visit/book.vue b/pages/visit/book.vue index add1e1f..858dd2e 100644 --- a/pages/visit/book.vue +++ b/pages/visit/book.vue @@ -86,21 +86,21 @@ - - + bgColor="#FCF6E3" :min="minCount" :max="maxCount" class="plus"> + + - - - - - + + + + +