admin 发表于 2024-5-25 18:18:14

小程序获取一年内的时间预约功能

直接上代码:

var dateUtils = require('date.js')
var CN_Date = require('getCNDate.js');
var app = getApp()
var t = new Date();

Page({
data: {
    dataArray: "", // 保存当前界面的五天日期
    checkday: "",
    checktime: "",
    telphone: "",
    item_id: "",
    hiddenLoading: true,
    currentIndex: 0,
    currentTime: 0,
    catalogSelect: 0
},

sendRequestDate: function (uploadDate) {
    var that = this
    var item_id = that.data.item_id
    console.log(uploadDate)
    this.setData({
      hiddenLoading: false
    })
    wx.request({
      url: '',//后台地址
      data: {
      date: uploadDate,
      product_id: item_id
      },
      method: 'POST',
      header: {
      'content-type': 'application/json'
      },
      success: function (res) {
      var data = res.data;
      console.log(res.data)
      var dataArray = [];
      var i = 0;
      for (var date in data) { // 遍历时期的key
          var timeList = data;
          var j = 0;
          var timeArray = [];
          for (var time in timeList) { // 遍历时间的key
            timeArray = {
            time: time,
            isSelect: timeList,
            select: j + 1
            }
            j++;
          }

          var timeStamp = new Date(date);
          dataArray = {
            date: date,
            dateName: dateUtils.getDateFormatFromMMdd(timeStamp),
            weekName: dateUtils.getWeekName(timeStamp),
            timeArray: timeArray
          }
          i++;
      }

      that.setData({
          hiddenLoading: true,
          dataArray: dataArray
      });
      },
    });

},
// 调用错误提示弹窗的方法
showToastErr(msg) {
    const _this = this;
    _this.$wuxToast.show({
      type: 'forbidden',
      color: '#fff',
      timer: 1000,
      text: msg,
      success: () => console.log('禁止操作')
    })
},
onLoad: function (options) {
    var that = this;
    this.$wuxToast = app.wux(this).$wuxToast
    // 接收从byorder-detail界面传过来的值
    that.setData({
      item_id: options.id,
      telphone: options.phone
    })
    // 获取当日的时间戳
    var todayTimeStamp = Date.parse(new Date());
    // 初始化日期数据
    var uploadDate = dateUtils.getDateFormatFromyyyyMMdd(new Date().getTime())
    that.sendRequestDate(uploadDate)
},
/**
   * 用户点击了向右的箭头
   */
dj1: function () {
    var that = this
    var dateArrayOld = that.data.dataArray;
    var dateName = dateArrayOld.date;
    var uploadDate = dateUtils.getNextDayForyyyyMMdd(new Date(dateName).getTime())
    that.setData({
      catalogSelect: 0,
      checkday: "",
      checktime: ""
    })
    that.sendRequestDate(uploadDate)
},
/**
   * 用户点击了向左的箭头
   */
dj2: function () {
    var that = this
    var dateArrayOld = that.data.dataArray;
    if (dateArrayOld.weekName == "今天") {
      return;
    }
    var dateName = dateArrayOld.date;
    var uploadDate = dateUtils.getPreFiveForyyyyMMdd(new Date(dateName).getTime())
    that.setData({
      catalogSelect: 0,
      checkday: "",
      checktime: ""
    })
    that.sendRequestDate(uploadDate)
},
/**
   * 用户选择了日期
   */
select: function (event) {
    var that = this
    var index = event.currentTarget.dataset.index
    //为上半部分的点击事件
    that.setData({
      currentIndex: index,
      catalogSelect: 0,
      checkday: "",
      checktime: ""
    })

},
/**
   * 用户选择了时间
   */
selectTime: function (data) {
    var that = this
    var dataItem = that.data.dataArray;
    var index = data.currentTarget.dataset.tindex
    if(dataItem.timeArray.isSelect=='false'){
      that.showToastErr('当前时间不可选');
      return;
    }

    var dateTime = dataItem.dateName
    var timeArr = dataItem.timeArray.time
    console.log(data.currentTarget.dataset.select)
    this.setData({
      currentTime: index,
      checkday: dateTime,
      checktime: timeArr,
      catalogSelect: data.currentTarget.dataset.select
    })
},
confirm_byorder: function (e) {
    var user = wx.getStorageSync('user')
    this.setData({
      user: user
    })
    var that = this
    var formId = e.detail.formId
    var openId = (wx.getStorageSync('openId'))
    var telphone = that.data.telphone
    var item_id = that.data.item_id
    var checkday = that.data.dataArray.date
    var checktime = that.data.checktime
    var uploadDate = that.data.dataArray.date;
    if (checkday == '' || checktime == '') {
      this.setData({
      hiddenLoading: !this.data.hiddenLoading
      })
      setTimeout(function () {
      that.setData({
          hiddenLoading: true
      });
      })
      that.showToastErr('请选择服务时间')
    } else {
      this.setData({
      hiddenLoading: !this.data.hiddenLoading
      })
      wx.request({
      url: 'https://ssl.ycml-bj.com/api/wx/activity/reserve',
      data: {
          formId: formId,
          openId: openId,
          user_phone: user,
          phone: telphone,
          product_id: item_id,
          date: checkday,
          time: checktime
      },
      method: 'POST',
      header: {
          'content-type': 'application/json'
      },
      success: function (res) {
          setTimeout(function () {
            that.setData({
            hiddenLoading: true
            });
          })
          if (res.data.code == 430007){
            that.sendRequestDate(uploadDate)
            that.showToastErr('预约人数已满')
          } else {
            wx.showToast({
            title: '预约成功',
            icon: 'success',
            duration: 1500,
            mask: true,//是否显示透明蒙层,防止触摸穿透,默认:false
            success: function () {
                // setTimeout(function () {
                //   wx.reLaunch({
                //   url: '/pages/index/index'
                //   })
                // }, 2000)
            }
            })
          }
         
      },
      });
    }


}

})


页: [1]
查看完整版本: 小程序获取一年内的时间预约功能