// pages/reserveProject/reserveProject.js let date = new Date() let times = [] var weekday = new Array(7) weekday[0] = '周日' weekday[1] = '周一' weekday[2] = '周二' weekday[3] = '周三' weekday[4] = '周四' weekday[5] = '周五' weekday[6] = '周六' for (let i = 0; i < 15; i++) { let stamp = date.setDate(date.getDate() + (i == 0 ? 0 : 1)) let year = new Date(stamp).getFullYear() let month = new Date(stamp).getMonth() + 1 < 10 ? '0' + (new Date(stamp).getMonth() + 1) : new Date(stamp).getMonth() + 1 let day = new Date(stamp).getDate() < 10 ? '0' + new Date(stamp).getDate() : new Date(stamp).getDate() let week = weekday[new Date(stamp).getDay()] times.push({ date: `${year + '-' + month + '-' + day}`, day: `${month + '-' + day}`, week: week }) } // let _hour = ( 10 > date.getHours() ) ? '0' + date.getHours() : date.getHours(); // let _minute = ( 10 > date.getMinutes() ) ? '0' + date.getMinutes() : date.getMinutes(); const app = getApp() import { get, post } from '../../utils/http' import { timestampToDate } from '../../utils/time' Page({ /** * 页面的初始数据 */ data: { times, time: '', // 选中的时间(小时:分钟) currentTimestamp: 0, // 选中的时间戳 currentDateIndex: 0, currentSwiperIndex: 0, currentTimeIndex: -2, currentDeviceIndex: -1, projectTime: [], projectData: {}, deviceList: [], currentChangeTime: null, currentChangeDevice: null, source: 'project', // 来源 inFirstIn: false, inSecIn: false }, knowSubmit: function () { this.setData({ inFirstIn: false, inSecIn: false }) let version3 = wx.getStorageSync('version3') if (!version3 || version3 != 1) { this.setData({ inSecIn : true }) wx.setStorageSync('version3', 1) } }, noneEnoughPeople() { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let date = new Date() let currentTimestamp = date.getTime() / 1000 + 60 * 2 let _time = timestampToDate(currentTimestamp, 'H:i') let source = options.source || 'project' if (options.projectData) { let projectData = decodeURIComponent(options.projectData) projectData = JSON.parse(projectData) projectData.storeData = app.globalData.storeData this.setData({ projectData: projectData, source: source, currentTimestamp: currentTimestamp, time: _time }) // 项目预约 - 获取可选时间 this.getTime() } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () {}, /** * 生命周期函数--监听页面显示 */ onShow: function () { let version2 = wx.getStorageSync('version2') if (!version2 || version2 != 1) { this.setData({ inFirstIn : true }) wx.setStorageSync('version2', 1) } else { let version3 = wx.getStorageSync('version3') if (!version3 || version3 != 1) { this.setData({ inSecIn : true }) wx.setStorageSync('version3', 1) } } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () {}, /** * 生命周期函数--监听页面卸载 */ onUnload: function () {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () {}, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () {}, /** * 用户点击右上角分享 */ onShareAppMessage: function () {}, /** * 日期选择 */ onChangeDate(e) { let { currentDateIndex } = this.data if (currentDateIndex != e.currentTarget.dataset.index) { this.setData({ currentDateIndex: e.currentTarget.dataset.index, currentChangeDevice: null, currentChangeTime: null, currentTimeIndex: -2, currentSwiperIndex: 0, currentDeviceIndex: -1, deviceList: [] }, () => { this.getTime() } ) } }, /** * 时间段切换 */ onChangeSwiper(e) { this.setData({ currentSwiperIndex: e.currentTarget.dataset.index }) }, /** * 时间段切换 */ changeSwiper(e) { this.setData({ currentSwiperIndex: e.detail.current }) }, /** * 时间选择 */ onChangeTime(e) { let { projectTime, currentSwiperIndex, currentChangeTime, currentTimeIndex } = this.data projectTime[currentSwiperIndex].list.forEach((item, index) => { if (item.index == e.currentTarget.dataset.index) { currentChangeTime = item } }) if (currentTimeIndex != e.currentTarget.dataset.index) { this.setData({ currentTimeIndex: e.currentTarget.dataset.index, currentChangeTime, currentChangeDevice: null, currentDeviceIndex: -1 }) this.getProjectDevice() } }, /** * 点击自定义时间 */ bindTimeChange(e) { let { currentDateIndex, currentChangeTime } = this.data currentChangeTime = { order_day: times[currentDateIndex].date, time_id: e.detail.value } this.setData({ time: e.detail.value, currentTimeIndex: -1, currentChangeTime, currentChangeDevice: null, currentDeviceIndex: -1 }) this.getProjectDevice() }, /** * 选择设备 */ onChangeDevice(e) { let { deviceList } = this.data this.setData({ currentDeviceIndex: e.currentTarget.dataset.index, currentChangeDevice: deviceList[e.currentTarget.dataset.index] }) }, /** * 获取可预约时间 */ getTime() { let { projectData, currentDateIndex, projectTime, currentSwiperIndex, time } = this.data get( 'api/project/time', { store_id: projectData.store_id, project_id: projectData.id, order_day: times[currentDateIndex].date, use_time: projectData.use_time || 40 }, (res) => { projectTime[0] = res.data.day projectTime[1] = res.data.night let sum = 0 let defaultTimeIndex = -1 projectTime.forEach((item, index) => { if (item.active == 1) { currentSwiperIndex = index } item.list.forEach((item, index) => { item.index = sum sum++ // 默认选中第一个可预约时间(用于后面的默认绑定设备) if (item.status == 1 && defaultTimeIndex == -1) { defaultTimeIndex = item.index } }) }) this.setData({ projectTime, currentSwiperIndex }, () => { // 默认选中第一个可预约时间 // TODO 产品调整需求默认选中自定义时间 // if (defaultTimeIndex != -1) { // this.onChangeTime({ // currentTarget: { dataset: { index: defaultTimeIndex } } // }) // } this.bindTimeChange({ detail: { value: time } }) }) } ) }, /** * 获取项目可预约的设备 * /api/project/device */ getProjectDevice() { let { currentTimeIndex, time, projectTime, currentSwiperIndex, projectData, currentDateIndex } = this.data let order_time_id if (currentTimeIndex != -1) { projectTime[currentSwiperIndex].list.forEach((item, index) => { if (item.index == currentTimeIndex) { order_time_id = item.time_id } }) } else { order_time_id = time } console.log(projectData) console.log(order_time_id) return new Promise((resolve, reject) => { get( 'api/project/device', { store_id: projectData.store_id, project_id: projectData.id, order_day: times[currentDateIndex].date, order_time_id: order_time_id, use_time: projectData.use_time }, (res) => { this.setData({ deviceList: res.data }, () => { this.onChangeDevice({ currentTarget: { dataset: { index: 0 } } }) } ) resolve() console.log(res) }, (rej) => { this.setData({ currentTimeIndex: -2, currentChangeTime: null }) console.log(rej) } ) }) }, /** * 提交订单 */ addOrder() { let { projectData, currentTimeIndex, time, currentDateIndex, currentChangeTime, currentChangeDevice, deviceList } = this.data if (currentTimeIndex == -1) { currentChangeTime = { order_day: times[currentDateIndex].date, time_id: time, order_time: time } } console.log(currentChangeTime) if (currentChangeTime == null) { wx.showToast({ title: '请选择预约时间', icon: 'none' }) } else if ( new Date( `${currentChangeTime.order_day} ${currentChangeTime.order_time}` ) <= new Date() ) { wx.showToast({ title: '所选时间已超时,请重新选择', icon: 'none' }) } else if (currentChangeDevice == null) { let _title = '请选择设备' if (deviceList.length == 0) { _title = '当前所选时间无可用设备' } wx.showToast({ title: _title, icon: 'none' }) } else { wx.navigateTo({ url: `/pages/orderConfirm/orderConfirm?source=${ this.data.source }&data=${JSON.stringify(projectData)}&deviceData=${JSON.stringify( currentChangeDevice )}&timeData=${JSON.stringify(currentChangeTime)}` }) } } })