const app = getApp() import Notify from '@vant/weapp/notify/notify'; import { meetingRoomBookedRecordRq, selectFreeMeetingRoomRq, useRoom } from "../../../../api/meeting/meetingRoom.js" import { selfFormatTimeReturnSecond59, selfFormatTimeYMDHMS, selfFormatTimeYMD, selfFormatTimeYMDH } from "../../../../utils/util.js" Page({ /** * 页面的初始数据 */ data: { IMG_NAME: app.IMG_NAME, userDetail: {}, date: '', rId: '', dep: '', depId: '', dateText: '', timeRange: '', timeRangeText: '', meetingRoomId: null, minTime: null, maxTime: null, minMinute: null, // 开始时间最小分钟 maxMinute: null, // 开始时间最大分钟 endMinTime: null, // 结束时间最小小时(与开始时间联动) endMaxTime: null, // 结束时间最大小时(根据范围固定) endMinMinute: null, // 结束时间最小分钟 endMaxMinute: null, // 结束时间最小分钟 startTime: null, endTime: null, showTime: true, showRangePicker: false, dataList: [], rangeOp: [], filterTime(type, options) { // if (type === 'minute') { // return options.filter((option) => option == '00'); // } return options; }, }, showRange() { this.setData({ showRangePicker: true }); }, hideRange() { this.setData({ showRangePicker: false }); }, rangePick(e) { let _this = this let value = e.detail.value let _timeRange = '' if (value === '上午') { _timeRange = 1 } else if (value === '下午') { _timeRange = 2 } else if (value === '晚上') { _timeRange = 3 } _this.setData({ timeRange: _timeRange, timeRangeText: value, showRangePicker: false }) _this.initParamTime() }, // 选择-开始时间 onInputStartTime(event) { let timeRange = this.data.timeRange let valueArr = event.detail.getValues() let detail = valueArr[0] + ':' + valueArr[1] let _minMintue = '' let _maxMintue = '' if (valueArr[0] == '08') { // 8点和17点,从30分开始 _minMintue = 30 _maxMintue = 59 } else if (valueArr[0] == '17') { _minMintue = 0 _maxMintue = 30 if (this.data.userDetail.roomRole == 5) { // 管理员全天可选 _minMintue = 0 _maxMintue = 59 } } else { _minMintue = 0 _maxMintue = 59 } this.setData({ minMinute: _minMintue, maxMinute: _maxMintue, startTime: detail, }) this.setEndMaxTime(detail) }, // 选择-结束时间 onInputEndTime(event) { let valueArr = event.detail.getValues() let timeRange = this.data.timeRange let detail = valueArr[0] + ':' + valueArr[1] let sTime = this.data.startTime let sTimeArr = sTime.split(':') let _endMinMinute = '' let _endMaxMinute = '' if (parseInt(valueArr[0]) == parseInt(sTimeArr[0])) { // 小时相同,则分钟最小要大于开始时间的分钟 _endMinMinute = parseInt(sTimeArr[1]) _endMaxMinute = 59 } else { // 小时大于开始时间,则分钟数为0-59 _endMinMinute = 0 _endMaxMinute = 59 } if (timeRange == 1 && valueArr[0] == '12') { // 上午12点,只允许选到0 _endMinMinute = 0 _endMaxMinute = 0 detail = '12:00' } this.setData({ endTime: detail, endMinMinute: _endMinMinute, endMaxMinute: _endMaxMinute }) }, // 预约时间 reservationTime() { }, // 确认时间 confirmTime(e) { let act = e.currentTarget.dataset.act let _this = this; let date = this.data.date let meetingRoomId = _this.data.meetingRoomId let startTime = _this.data.startTime let endTime = _this.data.endTime // 计算时间戳 let startTimeArr = startTime.split(':') startTime = parseInt(date) + (parseInt(startTimeArr[0]) * 60 * 60 + parseInt(startTimeArr[1]) * 60) * 1000 let endTimeArr = endTime.split(':') endTime = parseInt(date) + (parseInt(endTimeArr[0]) * 60 * 60 + parseInt(endTimeArr[1]) * 60) * 1000 let paramUrl = "?meetingRoomId=" + meetingRoomId + "&startTime=" + selfFormatTimeYMDHMS(startTime) + "&endTime=" + selfFormatTimeYMDHMS(endTime) + '&timeRange=' + _this.data.timeRange + '&rId=' + _this.data.rId + '&dep=' + _this.data.dep + '&depId=' + _this.data.depId; // 结束时间不能小于开始时间 if (startTime >= endTime) { Notify('结束时间不能小于开始时间!') return } // 判断开始时间是否已经超过了当前时间 let nowDate = new Date().getTime() if (nowDate > startTime) { Notify('开始时间请大于当前时间!') return } if (act == 'use') { // 提前占用 console.log('占用!') // 获取当下 let nowTime = selfFormatTimeYMD(parseInt(date)) let data = { "mr": { "roomId": meetingRoomId, "start": selfFormatTimeYMDHMS(startTime), "end": selfFormatTimeYMDHMS(endTime), "mrdate": nowTime, "timeFormat": "0" } } useRoom(data).then(res => { console.log('占用结果', res) if (res.code == 0) { wx.reLaunch({ url: '/pages/meeting/pay/waitComplete/waitComplete', }) } else { // 错误提示 Notify({ type: 'danger', message: res.msg }); } }) } else { // 下一步填写信息 wx.navigateTo({ url: "/pages/meeting/meetingRoom/meetingOrder/meetingOrder" + paramUrl, }) } }, // 取消时间 cancelTime() { }, // 初始化时间 initParamTime() { let _date = this.data.date _date = parseInt(_date) let _timeRange = this.data.timeRange _timeRange = parseInt(_timeRange) let _minTime = '' let _maxTime = '' let _startTime = '' let _minMintue = '' let _maxMintue = '' if (_timeRange === 1) { // 上午,从8:30 - 12:00 _minTime = 8 _maxTime = 11 _startTime = '8:30' _minMintue = 30 _maxMintue = 59 } else if (_timeRange === 2) { // 下午,从12:00 - 17:30 _minTime = 12 _maxTime = 17 _startTime = '12:00' _minMintue = 0 _maxMintue = 59 } else if (_timeRange === 3) { // 晚上,从17:30 - 24:00 _minTime = 17 _maxTime = 23 _startTime = '17:30' _minMintue = 30 _maxMintue = 59 } if (this.data.userDetail.roomRole == 5) { // 管理员全天可选 _minTime = 8 _maxTime = 23 _startTime = '8:30' _minMintue = 30 _maxMintue = 59 } // let maxTime = new Date(_date) // maxTime.setFullYear(maxTime.getFullYear() + 3) this.setData({ startTime: _startTime, minTime: _minTime, maxTime: _maxTime, minMinute: _minMintue, maxMinute: _maxMintue // maxTime: maxTime.getTime() }) this.setEndMaxTime(this.data.startTime) // 设置最小时间 // this.setMinTime() }, // 设置最小时间 // setMinTime() { // // let minTime = new Date(selfFormatTimeYMDH(new Date()) + ':00:00').getTime() // let minTime = new Date().getTime() // this.setData({ // minTime, // startTime: minTime // }) // }, // 获取结束时间的最大时间和最小时间 setEndMaxTime(time) { let timeArr = time.split(':') let sTimeHour = timeArr[0] let sTimeMin = timeArr[1] // let endMaxTime = new Date(new Date(time).toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1; let _endMinTime = time let _endMaxTime = '' let _endMinMinute = sTimeMin // 分钟一定要大于开始时间的分钟(同小时) let _endMaxMinute = 59 // 最大分钟,仅有下午17点特殊,最多为30 let _timeRange = this.data.timeRange _timeRange = parseInt(_timeRange) if (_timeRange === 1) { // 上午,从8:30 - 12:00 _endMaxTime = 12 } else if (_timeRange === 2) { // 下午,从12:00 - 17:30 _endMaxTime = 17 // 分钟,0-30 if (sTimeHour == '17') { // 17点,结束分钟从0-29 _endMaxMinute = 30 } } else if (_timeRange === 3) { // 晚上,从17:30 - 24:00 _endMaxTime = 23 } if (this.data.userDetail.roomRole == 5) { // 管理员全天可选 _endMaxTime = 23 _endMaxMinute = 59 } this.setData({ endTime: _endMinTime, endMinTime: sTimeHour, endMaxTime: _endMaxTime, endMinMinute: _endMinMinute, endMaxMinute: _endMaxMinute }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { console.log('onLoad', options); let userDetail = wx.getStorageSync('user') let time = options.time let _timeRange = options.timeRange let _rangeOp = [] let _timeRangeText = '' if (_timeRange === '4') { // 全天,此时默认给1,上午 _timeRange = '1' } if (_timeRange === '1') { _timeRangeText = '上午' } else if (_timeRange === '2') { _timeRangeText = '下午' } else if (_timeRange === '3') { _timeRangeText = '晚上' } if (options.timeRange === '4') { // 全天,则三个都可选 _rangeOp = ['上午', '下午', '晚上'] } else { _rangeOp = [_timeRangeText] } if (userDetail.roomRole == 5) { _timeRange = '4' _rangeOp = ['全天'] _timeRangeText = '全天' } const _date = new Date(parseInt(time)) const _year = _date.getFullYear() const _month = _date.getMonth() + 1 // 月份从0开始,需要+1 const _day = _date.getDate() // 获取传递参数 this.setData({ meetingRoomId: options.meetingRoomId, date: time, rId: options.rId, dep: options.dep, depId: options.depId, dateText: _year + '年' + _month + '月' + _day + '日', timeRange: _timeRange, timeRangeText: _timeRangeText, rangeOp: _rangeOp, userDetail: userDetail }) // minTime: null, // maxTime: null, // endMaxTime: null, // startTime: null, // endTime: null, // 初始化时间 this.initParamTime() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { // console.log('onShow', 111); let _this = this; // meetingRoomBookedRecordRq(this.data.meetingRoomId).then(res => { // console.log('meetingRoomBookedRecordRq', res); // let dataList = res.data; // dataList.map(item => { // item.nowDate = item.nowDate.substring(0, 10); // item.reservations = item.reservations.map(record => { // record.startTime = record.startTime.substring(11) // record.endDate = record.endDate.substring(11) // record.userName = record.userName.substring(0, 1) + "某" // record.phone = record.phone.substring(0, 3) + "****" + record.phone.substring(7, record.phone.length) // return record; // }) // return item // }) // _this.setData({ // dataList // }) // }) }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })