// pages/order/components/date/index.js import commonApi from "../../../../utils/https/common" import util from "../../../../utils/util" let app = getApp() Component({ /** * 组件的属性列表 */ options: { styleIsolation: 'apply-shared', addGlobalClass: true }, properties: { product: { type: Object, default: {} }, // 是否是团体预约的场馆 isTeam: { type: Number, default: 0 }, // 日期结束天数 endDays: { type: Number, value: 60 }, datePrice: { type: Array, value: [] }, }, /** * 组件的初始数据 */ data: { threeDays: [], activeDate: "", datelist: [], showMoreDateFlag: false, moreFlag: true, timelist: [], timeIndex: 0, isSzMuseum: false, kjIdCom: null, gpIdCom: null, date_price:0, today:util.formatDate(new Date()), tomorrow:util.formatMing(new Date()), afterTom:util.formatHou(new Date()), skuName:'', monthList:[], scrollLeft: 0 }, lifetimes: { attached: function () { console.log(app.globalData.product); let skuName = app.globalData.product.sku.sku_name this.setData({ kjIdCom: app.globalData.kjId, gpIdCom: app.globalData.gp_id || app.globalData.team_id, skuName }) // 在组件实例进入页面节点树时执行 let product = app.globalData.product, today = util.formatDate(new Date()), end_date = util.formatDate(new Date(new Date().getTime() + this.properties.endDays * 24 * 60 * 60 * 1000)); if (product.product.title.indexOf("苏州博物馆") != -1) { this.setData({ isSzMuseum: true }) } let todayTimes = new Date(today.replace(/-/g,'/')).getTime(); commonApi.user_post("token/check").then(res => { if (res&&res.code == 1) { // 获取价格日历 if (Array.isArray(this.properties.datePrice) && this.properties.datePrice.length>0) { let param = {code: 1, data: this.properties.datePrice} this.handleDatePrice(param, {todayTimes}) } else { commonApi.user_post("product/product_date_price", { start_date: today, end_date: end_date, sku_id: product.sku.id }).then(res => { this.handleDatePrice(res, {todayTimes}) }) } } }) }, detached: function () { // 在组件实例被从页面节点树移除时执行 }, }, pageLifetimes: { show: function () { this.setData({ kjIdCom: app.globalData.kjId, gpIdCom: app.globalData.gp_id || app.globalData.team_id }) } }, /** * 组件的方法列表 */ methods: { handleDatePrice:function (res, otherParam) { let {todayTimes} = otherParam for (let i = 0; i < res.data.length; i++) { if(new Date(res.data[i].date.replace(/-/g,'/')).getTime()==todayTimes && (this.properties.isTeam || this.properties.product && this.properties.product.isTeam==1)){ // 如果是团队预约的场馆 并且是今天的话 不能预定 res.data[i].stock=0; // res.data.price=100; res.data[i].tipText = '不可定' } } // 如果之前已经在详情页面选择了日期的话 默认日期不能是第一个有库存的日期了 if (app.globalData.product.infoDate) { let dateIndex = res.data.slice(0, 3).findIndex(item => item.date == app.globalData.product.infoDate.date) // if(!app.globalData.product.infoDate.short_date){ // app.globalData.product.infoDate.short_date = app.globalData.product.infoDate.date.split("-").splice(1,2).join("-") // } this.setData({ activeDate: app.globalData.product.infoDate, moreFlag: dateIndex != -1 }) this.getTimeStock() this.triggerEvent("onChangeDate", app.globalData.product.infoDate) } else { for (let i = 0; i < res.data.length; i++) { if (res.data[i].stock > 0) { res.data[i].short_date = res.data[i].date.split("-").splice(1, 2).join("-") this.setData({ activeDate: res.data[i] }) this.getTimeStock() this.triggerEvent("onChangeDate", this.data.activeDate) break; } } } if (this.data.gpIdCom) { // 拼团的话 价格日历无效 所有价格都是sku里面的event_price res.data.map(item => { item.price = product.sku.event_price }) } this.setData({ datelist: res.data }) res.data.forEach(item=> { item.short_date = item.date.split("-").splice(1, 2).join("-") item.week = this.getDay(item.date) }) let seldDate = '' let leftIndex = 0; if (app.globalData.product.changeFlag) { if( app.globalData.product.date) { res.data.forEach((item,index)=> { if (item.date == app.globalData.product.date.date) { seldDate = item leftIndex = index } }) } leftIndex = (leftIndex-1)>=0?(leftIndex-1):0; this.setData({ // scrollLeft: 70*leftIndex scrollLeft: "scroll-item-"+leftIndex }) setTimeout(() => { this.changeDate(seldDate) }) // this.setData({ // activeDate:seldDate // }) // this.getTimeStock() } this.setData({ threeDays: res.data.slice(0, 3), monthList: res.data, // monthList: res.data.slice(0, 30), }) console.log(this.data.monthList); let index = this.data.threeDays.findIndex(item => item.date == this.data.activeDate.date) console.log(this.data.activeDate); this.setData({ moreFlag: index != -1 }) }, getDay: function (date) { let d = new Date(date.replace(/-/g, '/')).getDay(); let days = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]; return days[d]; }, showMoreDate: function () { this.setData({ showMoreDateFlag: true }) }, hideCalendar: function () { this.setData({ showMoreDateFlag: false }) }, changeDate: function (e) { let date = e.currentTarget ? e.currentTarget.dataset.date : e let index = e.currentTarget.dataset.index; if (date.stock <= 0) return; if (date.stock == null) return; if (date.price == null) return; index = (index-1)>=0?(index-1):0; this.setData({ activeDate: date, moreFlag: true, date_price:date.price, scrollLeft: "scroll-item-"+index }) this.triggerEvent("onChangeDate", this.data.activeDate) this.getTimeStock() }, // 修改日期 onTapDay: function (e) { let threeDays = this.data.threeDays, flag = false; threeDays.map((item,i) => { if (item.date == e.detail.date) { flag = true } }) let index = this.data.datelist.findIndex(v=>v.date == e.detail.date) e.detail.short_date = e.detail.date.substr(5, 5); e.detail.date_price = this.data.activeDate.price; index = (index-1)>=0?(index-1):0; this.setData({ activeDate: e.detail, showMoreDateFlag: false, moreFlag: flag, scrollLeft: "scroll-item-"+index }) app.globalData.product.price = this.data.activeDate.price this.triggerEvent("onChangeDate", this.data.activeDate) this.getTimeStock() }, getTimeStock: function () { if (this.data.activeDate.is_time_stock != true) { this.triggerEvent("onChangeTime", '') return }; commonApi.user_post("product/product_timestock_price", { date: this.data.activeDate.date, sku_id: this.data.activeDate.sku_id ? this.data.activeDate.sku_id : app.globalData.product.sku.id }).then(res => { let timeIndex = -1; if (app.globalData.product.infoTime) { this.triggerEvent("onChangeTime", app.globalData.product.infoTime); timeIndex = res.data.findIndex(item => item.start_time == app.globalData.product.infoTime.start_time) this.setData({ timelist: res.data, timeIndex: timeIndex }) return; } for (let i = 0; i < res.data.length; i++) { if (res.data[i].stock_number > 0) { if (app.globalData.product.changeFlag && app.globalData.product.time) { if (res.data[i].start_time == app.globalData.product.time.start_time) { timeIndex = i; break; } } else { timeIndex = i; break; } } } this.setData({ timelist: res.data, timeIndex: timeIndex }) this.triggerEvent("onChangeTime", this.data.timelist[this.data.timeIndex]) }) app.globalData.product.price = this.data.activeDate.price console.log('price',this.data.activeDate.price); console.log(app.globalData.product); }, selectTime: function (e) { if (this.data.timelist[e.currentTarget.dataset.index].stock_number >0) { this.setData({ timeIndex: e.currentTarget.dataset.index }) this.triggerEvent("onChangeTime", this.data.timelist[this.data.timeIndex]) } } } })