You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

214 lines
6.7 KiB

// 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
}
},
/**
* 组件的初始数据
*/
data: {
threeDays: [],
activeDate: "",
datelist: [],
showMoreDateFlag: false,
moreFlag: true,
timelist: [],
timeIndex: 0,
isSzMuseum: false,
kjIdCom: null,
gpIdCom: null
},
lifetimes: {
attached: function () {
this.setData({
kjIdCom: app.globalData.kjId,
gpIdCom: app.globalData.gp_id || app.globalData.team_id
})
// 在组件实例进入页面节点树时执行
let product = app.globalData.product, today = util.formatDate(new Date()), end_date = util.formatDate(new Date(new Date().getTime() + 60 * 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.code == 1) {
// 获取价格日历
commonApi.user_post("product/product_date_price", {
start_date: today,
end_date: end_date,
sku_id: product.sku.id
}).then(res => {
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
})
this.setData({
threeDays: res.data.slice(0, 3)
})
let index = this.data.threeDays.findIndex(item => item.date == this.data.activeDate.date)
this.setData({
moreFlag: index != -1
})
console.log(res)
})
}
})
},
detached: function () {
// 在组件实例被从页面节点树移除时执行
},
},
pageLifetimes: {
show: function () {
this.setData({
kjIdCom: app.globalData.kjId,
gpIdCom: app.globalData.gp_id || app.globalData.team_id
})
}
},
/**
* 组件的方法列表
*/
methods: {
showMoreDate: function () {
this.setData({
showMoreDateFlag: true
})
},
hideCalendar: function () {
this.setData({
showMoreDateFlag: false
})
},
changeDate: function (e) {
let date = e.currentTarget.dataset.date;
if (date.stock <= 0) return;
if (date.stock == null) return;
if (date.price == null) return;
this.setData({
activeDate: date,
moreFlag: true
})
this.triggerEvent("onChangeDate", this.data.activeDate)
this.getTimeStock()
},
// 修改日期
onTapDay: function (e) {
let threeDays = this.data.threeDays, flag = false;
threeDays.map(item => {
if (item.date == e.detail.date) {
flag = true
}
})
e.detail.short_date = e.detail.date.substr(5, 5);
this.setData({
activeDate: e.detail,
showMoreDateFlag: false,
moreFlag: flag
})
this.triggerEvent("onChangeDate", this.data.activeDate)
this.getTimeStock()
},
getTimeStock: function () {
if (this.data.activeDate.is_time_stock != true) 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) {
timeIndex = i;
break;
}
}
this.setData({
timelist: res.data,
timeIndex: timeIndex
})
this.triggerEvent("onChangeTime", this.data.timelist[this.data.timeIndex])
})
},
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])
}
}
}
})