// pages/piano/piano.js const app = getApp() const util = require("../../utils/util") const urlDef = require("../../utils/urls") Page({ /** * 页面的初始数据 */ data: { beginDate: null, endDate: null, list: [ ], loading: '上拉加载', flag: 0, pageNum: 0, hasNextPage: true, type: '' }, getPiano: function () { wx.navigateTo({ url: '/pages/makePiano/makePiano', }) }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { let now = new Date(); // 显示近7天的预约记录 let bd = util.formatTime(now).substring(0, 10).replace(/\//g, '-') let edd = new Date(now.setDate(now.getDate() + 7)); let ed = util.formatTime(edd).substring(0, 10).replace(/\//g, '-') this.setData({ beginDate: bd, endDate: ed, list: [] }); this.queryList(); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { if (this.data.hasNextPage) { let pn = this.data.pageNum this.setData({ loading: '加载中', 'pageNum': ++pn }) this.queryList() } }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, getDates: function (e) { this.setData({ list: [], pageNum: 0, beginDate: e.detail.dateArr[0], endDate: e.detail.dateArr[1], type: e.detail.typeIndex == 0 ? '' : e.detail.typeIndex, loading: '加载中' }) this.queryList() }, queryList: function () { const urls = urlDef.urls; let stu = wx.getStorageSync('student'); if (stu) { let params = { 'q.beginDate': this.data.beginDate, 'q.endDate': this.data.endDate, 'q.studentId': stu.studentId,'q.type': this.data.type } params.pageNum = this.data.pageNum util.apiPost(urls.query_appointment_list, params).then(rs => { let list = rs.list list.map(o => { o.visitDate = o.visitDate.substring(0, 10) o.cancelFlag = this.canCancel(o) // 是否可以取消 }) this.setData({ 'hasNextPage': rs.hasNextPage, 'loading': rs.hasNextPage ? '下拉刷新' : '没有更多数据', 'list': this.data.list.concat(list) }) }) } }, canCancel(item) { // 判断是否能取消, 未到预约时间前都能取消,至少提前1个小时 let t = item.visitDate + ' ' + item.beginTime + ':00'; let vdt = new Date(t.replace(/-/g,'/')); let tdt = new Date().getTime(); if (vdt < tdt) { return false; } // const dayTime = 86400000; const dayTime = 3600000; return item.attend == 0 && (vdt - tdt) >= dayTime }, doCancelQueue: function(e) { let id = e.currentTarget.dataset.id let that = this wx.showModal({ title: '确认信息', content: '确定要取消本次排队?', showCancel: true, cancelText: "否", confirmText: "是", success: function (res) { if (res.cancel) { } else { wx.showLoading({ title: '正在取消', mask: true }) const urls = urlDef.urls; util.apiPost(urls.delete_queue, {'ids[]': [id]}).then(rs => { if (rs.message) { wx.showToast({ title: rs.message, icon: 'none' }) return } wx.showToast({ title: '取消成功', icon: 'success' }) that.setData({ list: [], pageNum: 0, loading: '加载中' }) that.queryList() }) } } }) }, doCancel: function (e) { let id = e.currentTarget.dataset.id let that = this wx.showModal({ title: '确认信息', content: '确定要取消本次预约?', showCancel: true, cancelText: "否", confirmText: "是", success: function (res) { if (res.cancel) { } else { wx.showLoading({ title: '正在取消', mask: true }) that.doRealCancel(id) } } }) }, doRealCancel: function (id) { const urls = urlDef.urls; util.apiPost(urls.cancel_appointment + '?id=' + id).then(rs => { if (rs.message) { wx.showToast({ title: rs.message, icon: 'none' }) return } wx.showToast({ title: '取消成功', icon: 'success' }) this.setData({ list: [], pageNum: 0, loading: '加载中' }) this.queryList() }) } })