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.
 

298 lines
9.4 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
},
// 日期结束天数
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
}
})
}
this.setData({
scrollLeft: 70*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
if (date.stock <= 0) return;
if (date.stock == null) return;
if (date.price == null) return;
this.setData({
activeDate: date,
moreFlag: true,
date_price:date.price
})
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);
e.detail.date_price = this.data.activeDate.price;
this.setData({
activeDate: e.detail,
showMoreDateFlag: false,
moreFlag: flag
})
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])
}
}
}
})