From 34701558f312ff9a1d1ff5bad98856a642df7bdc Mon Sep 17 00:00:00 2001 From: "471615499@qq.com" Date: Mon, 16 Sep 2024 18:22:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 完成会议首页、会议室列表页、会议室详情页、会议预约时间选择功能 --- miniprogram/pages/meeting/index/index.js | 317 +++++---- miniprogram/pages/meeting/index/index.json | 4 +- miniprogram/pages/meeting/index/index.wxml | 46 +- .../meetingReservation/meetingReservation.js | 608 ++++++++++-------- .../meetingReservation.wxml | 2 + .../meetingBooked/meetingBooked.js | 534 +++++++++------ .../meetingBooked/meetingBooked.json | 17 +- .../meetingBooked/meetingBooked.wxml | 99 ++- .../meetingBooked/meetingBooked.wxss | 8 +- .../meetingOrder/meetingOrder.wxml | 143 ++-- .../pages/meeting/meetingRoom/meetingRoom.js | 32 +- .../meeting/meetingRoom/meetingRoom.json | 10 +- .../meeting/meetingRoom/meetingRoom.wxml | 88 +-- .../meeting/meetingRoom/meetingRoom.wxss | 92 +++ 14 files changed, 1155 insertions(+), 845 deletions(-) diff --git a/miniprogram/pages/meeting/index/index.js b/miniprogram/pages/meeting/index/index.js index 37fd1a3..84ade9c 100644 --- a/miniprogram/pages/meeting/index/index.js +++ b/miniprogram/pages/meeting/index/index.js @@ -4,145 +4,186 @@ import Notify from '@vant/weapp/notify/notify'; Page({ - /** - * 页面的初始数据 - */ - data: { - IMG_NAME: app.IMG_NAME, - userDetail: {}, - menuList: [{ - type: "report", - name: "会议预约", - img: "/profile/static/repair/index/my.png", - path: "/pages/meeting/meetingReservation/meetingReservation", - visible: true - }, { - type: "query", - name: "预约记录", - img: "/profile/static/repair/index/query.png", - path: "/pages/meeting/reservationRecord/meetingRecord/meetingRecord", - visible: true - }, { - type: "assign", - name: "会议审核", - img: "/profile/static/repair/index/case.png", - path: "/pages/meeting/visitorIinvitation/list/list", - visible: false - }, { - type: "repair", - name: "会务服务", - img: "/profile/static/repair/index/repair.png", - path: "/pages/reportRepair/repair/index/index", - visible: false - }] + /** + * 页面的初始数据 + */ + data: { + IMG_NAME: app.IMG_NAME, + userDetail: {}, + menuList: [{ + type: "report", + name: "会议预约", + img: "/profile/static/repair/index/my.png", + path: "/pages/meeting/meetingReservation/meetingReservation", + visible: true + }, { + type: "query", + name: "预约记录", + img: "/profile/static/repair/index/query.png", + path: "/pages/meeting/reservationRecord/meetingRecord/meetingRecord", + visible: true + }, { + type: "assign", + name: "会议审核", + img: "/profile/static/repair/index/case.png", + path: "/pages/meeting/visitorIinvitation/list/list", + visible: false + }, { + type: "repair", + name: "会务服务", + img: "/profile/static/repair/index/repair.png", + path: "/pages/reportRepair/repair/index/index", + visible: false + }], + timeShow: false, + currentDate: new Date().getTime(), + minDate: new Date().getTime(), + maxDate: '', + formatter(type, value) { + if (type === 'year') { + return `${value}年`; + } + if (type === 'month') { + return `${value}月`; + } + if (type === 'day') { + return `${value}日`; + } + return value; }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - let _this = this - let userDetail = wx.getStorageSync('user') - _this.setData({ - userDetail - }) - // 展示模块 - _this.visibleBlock() - }, - - // 跳转菜单 - jumpMenu(e) { - console.log('jumpMenu', e); - let obj = e.currentTarget.dataset.obj - console.log(obj.path) - if (obj.visible) { - wx.navigateTo({ - url: obj.path, - }) - } else { - app.vantNotifyErrTop(Notify, `"${obj.name}"无权限访问!`) - return - } - }, - + }, + showTimePicker() { + this.setData({ timeShow: true }); + }, + hideTimePicker() { + this.setData({ timeShow: false }); + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + let _this = this + // 获取一月后时间,默认只能选一个月之后 + const today = new Date() + const newDate = new Date(today) + newDate.setMonth(newDate.getMonth() + 1) + let userDetail = wx.getStorageSync('user') + _this.setData({ + userDetail, + maxDate: newDate.getTime() + }) // 展示模块 - visibleBlock() { - let _this = this - let userDetail = _this.data.userDetail - let dataType = userDetail.dataType - let menuList = _this.data.menuList - // 角色类型 1.普通用户,3派单员,5维修工,7管理员 , 9楼层 - // if (dataType == 3 || dataType == 7) { // 展示-派单入口,仅有派单员、管理员能进 - // menuList = menuList.map(item => { - // if (item.type == 'assign') { - // item.visible = true - // } - // return item - // }) - // } - // if (dataType == 5) { // 展示-维修入口 - // menuList = menuList.map(item => { - // if (item.type == 'repair') { - // item.visible = true - // } - // return item - // }) - // } - // _this.setData({ - // menuList - // }) - }, - - back() { - wx.navigateBack() - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - + _this.visibleBlock() + }, + // 跳转会议预约页面 + goRes(e) { + wx.navigateTo({ + url: '/pages/meeting/meetingReservation/meetingReservation?time=' + e.detail, + }) + }, + // 跳转菜单 + jumpMenu(e) { + console.log('jumpMenu', e); + let obj = e.currentTarget.dataset.obj + if (obj.visible) { + // 未授权 + if (obj.name == '会议预约') { + // 会议预约需要先选择时间 + this.showTimePicker() + } else { + wx.navigateTo({ + url: obj.path, + }) + } + } else { + if (obj.name === '会议预约') { + // 未授权 + app.selfShowMsg('您暂无权限使用该功能,请联系机关事务局XXX(电话15888888888)进行赋权后使用') + } else { + app.vantNotifyErrTop(Notify, `"${obj.name}"无权限访问!`) + return + } } + }, + + // 展示模块 + visibleBlock() { + let _this = this + let userDetail = _this.data.userDetail + let dataType = userDetail.dataType + let menuList = _this.data.menuList + // 角色类型 1.普通用户,3派单员,5维修工,7管理员 , 9楼层 + // if (dataType == 3 || dataType == 7) { // 展示-派单入口,仅有派单员、管理员能进 + // menuList = menuList.map(item => { + // if (item.type == 'assign') { + // item.visible = true + // } + // return item + // }) + // } + // if (dataType == 5) { // 展示-维修入口 + // menuList = menuList.map(item => { + // if (item.type == 'repair') { + // item.visible = true + // } + // return item + // }) + // } + // _this.setData({ + // menuList + // }) + }, + + back() { + wx.navigateBack() + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } }) \ No newline at end of file diff --git a/miniprogram/pages/meeting/index/index.json b/miniprogram/pages/meeting/index/index.json index 88044d6..aa80254 100644 --- a/miniprogram/pages/meeting/index/index.json +++ b/miniprogram/pages/meeting/index/index.json @@ -2,6 +2,8 @@ "navigationStyle": "custom", "usingComponents": { "van-icon": "@vant/weapp/icon/index", - "van-notify": "@vant/weapp/notify/index" + "van-notify": "@vant/weapp/notify/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-popup": "@vant/weapp/popup/index" } } \ No newline at end of file diff --git a/miniprogram/pages/meeting/index/index.wxml b/miniprogram/pages/meeting/index/index.wxml index 11becc1..ce4efb5 100644 --- a/miniprogram/pages/meeting/index/index.wxml +++ b/miniprogram/pages/meeting/index/index.wxml @@ -1,32 +1,36 @@ - - - - + + + + - - - - - 会议系统 - - 欢迎进入 - 淮安市行政中心会议管理系统 - - + + - - - - {{item.name}} - + 会议系统 + + 欢迎进入 + 淮安市行政中心会议管理系统 + + - + + + + {{item.name}} + + + + - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingReservation/meetingReservation.js b/miniprogram/pages/meeting/meetingReservation/meetingReservation.js index bb2307e..88abe58 100644 --- a/miniprogram/pages/meeting/meetingReservation/meetingReservation.js +++ b/miniprogram/pages/meeting/meetingReservation/meetingReservation.js @@ -1,7 +1,7 @@ const app = getApp() import { - meetingRoomDict, - meetingRoomListRq, + meetingRoomDict, + meetingRoomListRq, } from "../../../api/meeting/meetingRoom.js" import Notify from '@vant/weapp/notify/notify'; @@ -9,282 +9,332 @@ import Notify from '@vant/weapp/notify/notify'; Page({ - /** - * 页面的初始数据 - */ - data: { - IMG_NAME: app.IMG_NAME, - roomDataList: {}, - queryParam: { - meetingTypeDict: { - list: [], - value: null, - }, - personDict: { - list: [], - value: null, - }, - itemDict: { - list: [], - value: null, - title: '设备' - }, - shapeDict: { - list: [], - value: null, - }, - } - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - // 页面初始化 options为页面跳转所带来的参数 - if (options.name) { - wx.setNavigationBarTitle({ - title: options.name - }) - } - - // 初始化数据 - this.initData(); - }, - - // 初始化数据 - initData() { - let _this = this; - // 1.会议室类型,2.人数,3.会议室设备,4.形式 - meetingRoomDict("1").then(res => { - console.log('meetingRoomDict("1")', res); - // 封装参数 - let list = res.roomContents.map(item => { - return { - text: item.typeName, - value: item.typeValue - } - }) - list = [{ - text: "楼层", - value: null - }, ...list] - // 赋值参数 - let queryParam = _this.data.queryParam; - queryParam.meetingTypeDict.list = list; - _this.setData({ - queryParam - }) - console.log('meetingRoomDict("1")=>', list); - }) - meetingRoomDict("2").then(res => { - console.log('meetingRoomDict("2")', res); - // 封装参数 - let list = res.roomContents.map(item => { - return { - text: item.capacityNum + '人', - value: item.capacityNum - } - }) - list = [{ - text: "人数", - value: null - }, ...list] - // 赋值参数 - let queryParam = _this.data.queryParam; - queryParam.personDict.list = list; - _this.setData({ - queryParam - }) - console.log('meetingRoomDict("2")=>', list); - }) - meetingRoomDict("3").then(res => { - console.log('meetingRoomDict("3")', res); - // 封装参数 - let list = res.roomItem.map(item => { - return { - text: item.name, - value: item.id - } - }) - // 赋值参数 - let queryParam = _this.data.queryParam; - queryParam.itemDict.list = list; - _this.setData({ - queryParam - }) - console.log('meetingRoomDict("3")=>', list); - }) - meetingRoomDict("4").then(res => { - console.log('meetingRoomDict("4")', res); - // 封装参数 - let list = res.roomContents.map(item => { - return { - text: item.shape, - value: item.shape - } - }) - list = [{ - text: "形式", - value: null - }, ...list] - // 赋值参数 - let queryParam = _this.data.queryParam; - queryParam.shapeDict.list = list; - _this.setData({ - queryParam - }) - console.log('meetingRoomDict("4")=>', list); - }) - - // 数据-会议室列表 - this.meetingRoomList() - }, - - // 查询条件变动 - dictChange(e) { - console.log('dictChange', e); - let queryParam = this.data.queryParam; - queryParam[e.currentTarget.dataset.type].value = e.detail; - this.setData({ - queryParam - }) - // 数据-会议室列表 - this.meetingRoomList() - }, - - // 设备-多选 - dictSwitchChange(e) { - console.log('dictSwitchChange', e); - let select = e.detail; - let name = e.currentTarget.dataset.name; - let id = e.currentTarget.dataset.id; - let queryParam = this.data.queryParam; - queryParam.itemDict.list = queryParam.itemDict.list.map(item => { - if (item.value == id) { - item.select = select; - } - return item - }) - // 计算选择数量 - let selectCount = queryParam.itemDict.list.filter(item => item.select).length; - console.log('selectCount', selectCount); - if (selectCount > 0) { - queryParam.itemDict.title = '设备+' + selectCount; - } else { - queryParam.itemDict.title = '设备'; - } - this.setData({ - queryParam - }) - // 数据-会议室列表 - this.meetingRoomList() - }, - // 设备多选收起 - itemDictConfirm() { - this.selectComponent('#itemSelect').toggle(); - }, - - // 数据-会议室列表 - meetingRoomList() { - let _this = this; - let queryParam = _this.data.queryParam; - let roomItemList = queryParam.itemDict.list.filter(item => item.select).map(item => { - return { - "id": item.value, - "name": item.text - } - }) - let param = { - "type": queryParam.meetingTypeDict.value, - "capacityNum": queryParam.personDict.value, - "roomItemList": roomItemList, - "shape": queryParam.shapeDict.value, - } - // 会议室列表数据 - meetingRoomListRq(param).then(res => { - console.log('meetingRoomListRq', res); - let roomArr = {} - let valueObj = res.rows - for(let key in valueObj) { - let eachObj = valueObj[key] - if (eachObj['type'] in roomArr) { - } else { - roomArr[eachObj['type']] = { - name: eachObj['typeName'], - list: [] - } - } - roomArr[eachObj['type']]['list'].push(eachObj) - } - _this.setData({ - roomDataList: roomArr - }) - }) - }, - - // 会议室 - jumpMeetingRoom(e) { - console.log('jumpMeetingRoom', e); - if (e.currentTarget.dataset.id == 47) { - Notify({ - type: 'danger', - message: '内部会议室不可预约', - duration: 3 * 1000, - }); - return - } - // 跳转预约详情 - wx.navigateTo({ - url: "/pages/meeting/meetingRoom/meetingRoom?id=" + e.currentTarget.dataset.id, - }) - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady() { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow() { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide() { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload() { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh() { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom() { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage() { - + /** + * 页面的初始数据 + */ + data: { + IMG_NAME: app.IMG_NAME, + roomDataList: {}, + date: '', + queryParam: { + timeRangeDict: { + list: [{ + text: '全天', + value: null + }, { + text: '上午', + value: 1 + }, { + text: '下午', + value: 2 + }, { + text: '晚上', + value: 3 + }], + value: null, + }, + meetingTypeDict: { + list: [], + value: null, + }, + personDict: { + list: [{ + text: "人数", + value: null + }, { + text: "0-10", + value: 1 + }, { + text: "11-20", + value: 2 + }, { + text: "21-30", + value: 3 + }, { + text: "31-40", + value: 4 + }, { + text: "41-50", + value: 5 + }, { + text: "50-100", + value: 6 + }, { + text: "100以上", + value: 7 + }], + value: null, + }, + itemDict: { + list: [], + value: null, + title: '设备' + }, + shapeDict: { + list: [], + value: null, + }, } + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // 页面初始化 options为页面跳转所带来的参数 + if (options.name) { + wx.setNavigationBarTitle({ + title: options.name + }) + } + const time = options.time + if (!time || time === '') { + app.selfShowMsg('请选择时间!', '/pages/meeting/index/index') + return + } + this.setData({ + date: time + }) + const _date = new Date(parseInt(time)) + const _year = _date.getFullYear() + const _month = _date.getMonth() + 1 // 月份从0开始,需要+1 + const _day = _date.getDate() + // 设置标题 + wx.setNavigationBarTitle({ + title: _year + '年' + _month + '月' + _day + '日' + }) + // 初始化数据 + this.initData(); + }, + + // 初始化数据 + initData() { + let _this = this; + // 1.会议室类型,2.人数,3.会议室设备,4.形式 + meetingRoomDict("1").then(res => { + console.log('meetingRoomDict("1")', res); + // 封装参数 + let list = res.roomContents.map(item => { + return { + text: item.typeName, + value: item.typeValue + } + }) + list = [{ + text: "楼层", + value: null + }, ...list] + // 赋值参数 + let queryParam = _this.data.queryParam; + queryParam.meetingTypeDict.list = list; + _this.setData({ + queryParam + }) + console.log('meetingRoomDict("1")=>', list); + }) + // meetingRoomDict("2").then(res => { + // console.log('meetingRoomDict("2")', res); + // // 封装参数 + // let list = res.roomContents.map(item => { + // return { + // text: item.capacityNum + '人', + // value: item.capacityNum + // } + // }) + // list = [{ + // text: "人数", + // value: null + // }, ...list] + // // 赋值参数 + // let queryParam = _this.data.queryParam; + // queryParam.personDict.list = list; + // _this.setData({ + // queryParam + // }) + // console.log('meetingRoomDict("2")=>', list); + // }) + meetingRoomDict("3").then(res => { + console.log('meetingRoomDict("3")', res); + // 封装参数 + let list = res.roomItem.map(item => { + return { + text: item.name, + value: item.id + } + }) + // 赋值参数 + let queryParam = _this.data.queryParam; + queryParam.itemDict.list = list; + _this.setData({ + queryParam + }) + console.log('meetingRoomDict("3")=>', list); + }) + meetingRoomDict("4").then(res => { + console.log('meetingRoomDict("4")', res); + // 封装参数 + let list = res.roomContents.map(item => { + return { + text: item.shape, + value: item.shape + } + }) + list = [{ + text: "形式", + value: null + }, ...list] + // 赋值参数 + let queryParam = _this.data.queryParam; + queryParam.shapeDict.list = list; + _this.setData({ + queryParam + }) + console.log('meetingRoomDict("4")=>', list); + }) + // 数据-会议室列表 + this.meetingRoomList() + }, + + // 查询条件变动 + dictChange(e) { + console.log('dictChange', e); + let queryParam = this.data.queryParam; + queryParam[e.currentTarget.dataset.type].value = e.detail; + this.setData({ + queryParam + }) + // 数据-会议室列表 + this.meetingRoomList() + }, + + // 设备-多选 + dictSwitchChange(e) { + console.log('dictSwitchChange', e); + let select = e.detail; + let name = e.currentTarget.dataset.name; + let id = e.currentTarget.dataset.id; + let queryParam = this.data.queryParam; + queryParam.itemDict.list = queryParam.itemDict.list.map(item => { + if (item.value == id) { + item.select = select; + } + return item + }) + // 计算选择数量 + let selectCount = queryParam.itemDict.list.filter(item => item.select).length; + console.log('selectCount', selectCount); + if (selectCount > 0) { + queryParam.itemDict.title = '设备+' + selectCount; + } else { + queryParam.itemDict.title = '设备'; + } + this.setData({ + queryParam + }) + // 数据-会议室列表 + this.meetingRoomList() + }, + // 设备多选收起 + itemDictConfirm() { + this.selectComponent('#itemSelect').toggle(); + }, + + // 数据-会议室列表 + meetingRoomList() { + let _this = this; + let queryParam = _this.data.queryParam; + let roomItemList = queryParam.itemDict.list.filter(item => item.select).map(item => { + return { + "id": item.value, + "name": item.text + } + }) + let param = { + "type": queryParam.meetingTypeDict.value, + "capacityNum": queryParam.personDict.value, + "roomItemList": roomItemList, + "shape": queryParam.shapeDict.value, + timeRange: queryParam.timeRangeDict.value + } + // 会议室列表数据 + meetingRoomListRq(param).then(res => { + console.log('meetingRoomListRq', res); + let roomArr = {} + let valueObj = res.rows + for (let key in valueObj) { + let eachObj = valueObj[key] + if (eachObj['type'] in roomArr) {} else { + roomArr[eachObj['type']] = { + name: eachObj['typeName'], + list: [] + } + } + roomArr[eachObj['type']]['list'].push(eachObj) + } + // console.log(roomArr) + _this.setData({ + roomDataList: roomArr + }) + }) + }, + + // 会议室 + jumpMeetingRoom(e) { + console.log('jumpMeetingRoom', e) + let timeRange = this.data.queryParam.timeRangeDict.value + timeRange = timeRange ? timeRange : 0 + // 跳转预约详情 + wx.navigateTo({ + url: "/pages/meeting/meetingRoom/meetingRoom?id=" + e.currentTarget.dataset.id + '&time=' + this.data.date + '&timeRange=' + timeRange, + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } }) \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingReservation/meetingReservation.wxml b/miniprogram/pages/meeting/meetingReservation/meetingReservation.wxml index ff5e7af..5b9b1b2 100644 --- a/miniprogram/pages/meeting/meetingReservation/meetingReservation.wxml +++ b/miniprogram/pages/meeting/meetingReservation/meetingReservation.wxml @@ -3,6 +3,8 @@ + + diff --git a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.js b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.js index 67636bc..3608597 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.js +++ b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.js @@ -3,223 +3,337 @@ const app = getApp() import Notify from '@vant/weapp/notify/notify'; import { - meetingRoomBookedRecordRq, - selectFreeMeetingRoomRq + meetingRoomBookedRecordRq, + selectFreeMeetingRoomRq } from "../../../../api/meeting/meetingRoom.js" import { - selfFormatTimeReturnSecond59, - selfFormatTimeYMDHMS, - selfFormatTimeYMDH + selfFormatTimeReturnSecond59, + selfFormatTimeYMDHMS, + selfFormatTimeYMDH } from "../../../../utils/util.js" Page({ - /** - * 页面的初始数据 - */ - data: { - IMG_NAME: app.IMG_NAME, - meetingRoomId: null, - minTime: null, - maxTime: null, - endMaxTime: null, - startTime: null, - endTime: null, - showTime: false, - dataList: [], - filterTime(type, options) { - // if (type === 'minute') { - // return options.filter((option) => option == '00'); - // } - return options; - }, + /** + * 页面的初始数据 + */ + data: { + IMG_NAME: app.IMG_NAME, + date: '', + dateText: '', + timeRange: '', + timeRangeText: '', + meetingRoomId: null, + minTime: null, + maxTime: null, + endMinTime: null, // 结束时间最小小时(与开始时间联动) + endMaxTime: 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; }, - - // 选择-开始时间 - onInputStartTime(event) { - this.setData({ - startTime: event.detail, - }); - this.setEndMaxTime(event.detail) - }, - - // 选择-结束时间 - onInputEndTime(event) { - let _this = this; - this.setData({ - endTime: event.detail, - }); - }, - - // 预约时间 - reservationTime() { - this.setData({ - showTime: true - }) - }, - - // 确认时间 - confirmTime() { - let _this = this; - let meetingRoomId = _this.data.meetingRoomId; - let startTime = _this.data.startTime; - let endTime = _this.data.endTime; - let paramUrl = "?meetingRoomId=" + meetingRoomId + "&startTime=" + selfFormatTimeYMDHMS(startTime) + "&endTime=" + selfFormatTimeYMDHMS(endTime); - - // // 预约时间不能小于1小时 - // if ((1000 * 60 * 60) > (endTime - startTime)) { - // Notify({ - // type: 'danger', - // message: '预约时间不能小于1小时', - // duration: 1000, - // selector: '#notify', - // }); - // return - // } - - // 当前会议室是否可以预约 - selectFreeMeetingRoomRq({ - "roomContentId": meetingRoomId, - "startTime": selfFormatTimeYMDHMS(startTime), - "endDate": selfFormatTimeYMDHMS(endTime) - }).then(res => { - console.log('selectFreeMeetingRoomRq', res); - // 可以预约 - if (!res.count) { - wx.navigateTo({ - url: "/pages/meeting/meetingRoom/meetingOrder/meetingOrder" + paramUrl, - }) - _this.setData({ - showTime: false - }) - } else { // 不能预约 - Notify({ - type: 'danger', - message: res.msg, - duration: 1000, - selector: '#notify', - }); - } - }) - }, - - // 取消时间 - cancelTime() { - this.setData({ - showTime: false - }) - }, - - // 初始化时间 - initParamTime() { - let maxTime = new Date(); - maxTime.setFullYear(maxTime.getFullYear() + 3) - this.setData({ - 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 endMaxTime = new Date(new Date(time).toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1; - this.setData({ - endMaxTime: endMaxTime - }) - }, - - - /** - * 生命周期函数--监听页面加载 - */ - onLoad(options) { - console.log('onLoad', options); - // 获取传递参数 - this.setData({ - ...options - }) - // 初始化时间 - 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() { - + }, + 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) { + this.setData({ + startTime: event.detail, + }) + this.setEndMaxTime(event.detail) + }, + + // 选择-结束时间 + onInputEndTime(event) { + let _this = this; + this.setData({ + endTime: event.detail, + }); + }, + + // 预约时间 + reservationTime() { + // this.setData({ + // showTime: true + // }) + }, + + // 确认时间 + confirmTime() { + 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); + // 结束时间不能小于开始时间 + if (startTime >= endTime) { + Notify('结束时间不能小于开始时间!') + return + } + + wx.navigateTo({ + url: "/pages/meeting/meetingRoom/meetingOrder/meetingOrder" + paramUrl, + }) + + // // 当前会议室是否可以预约 + // selectFreeMeetingRoomRq({ + // "roomContentId": meetingRoomId, + // "startTime": selfFormatTimeYMDHMS(startTime), + // "endDate": selfFormatTimeYMDHMS(endTime) + // }).then(res => { + // console.log('selectFreeMeetingRoomRq', res); + // // 可以预约 + // if (!res.count) { + // wx.navigateTo({ + // url: "/pages/meeting/meetingRoom/meetingOrder/meetingOrder" + paramUrl, + // }) + // // _this.setData({ + // // showTime: false + // // }) + // } else { // 不能预约 + // Notify({ + // type: 'danger', + // message: res.msg, + // duration: 1000, + // selector: '#notify', + // }); + // } + // }) + }, + + // 取消时间 + cancelTime() { + // this.setData({ + // showTime: false + // }) + }, + + // 初始化时间 + initParamTime() { + let _date = this.data.date + _date = parseInt(_date) + let _timeRange = this.data.timeRange + _timeRange = parseInt(_timeRange) + let _minTime = '' + let _maxTime = '' + let _startTime = '' + if (_timeRange === 1) { + // 上午,从6:00 - 12:00 + _minTime = 6 + _maxTime = 11 + _startTime = '8:30' + } else if (_timeRange === 2) { + // 下午,从12:00 - 18:00 + _minTime = 12 + _maxTime = 17 + _startTime = '14:00' + } else if (_timeRange === 3) { + // 下午,从12:00 - 18:00 + _minTime = 18 + _maxTime = 23 + _startTime = '18:00' + } + // let maxTime = new Date(_date) + // maxTime.setFullYear(maxTime.getFullYear() + 3) + this.setData({ + // startTime: _startTime, + minTime: _minTime, + maxTime: _maxTime + // 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 endMaxTime = new Date(new Date(time).toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1; + let _endMinTime = timeArr[0] + let _endMaxTime = '' + let _timeRange = this.data.timeRange + _timeRange = parseInt(_timeRange) + if (_timeRange === 1) { + // 上午,从6:00 - 12:00 + _endMaxTime = 11 + } else if (_timeRange === 2) { + // 下午,从12:00 - 18:00 + _endMaxTime = 17 + } else if (_timeRange === 3) { + // 下午,从12:00 - 18:00 + _endMaxTime = 23 + } + this.setData({ + endMinTime: _endMinTime, + endMaxTime: _endMaxTime + }) + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + console.log('onLoad', options); + let time = options.time + let _timeRange = options.timeRange + let _rangeOp = [] + let _timeRangeText = '' + if (_timeRange === '0') { + // 全天,此时默认给1,上午 + _timeRange = '1' + } + if (_timeRange === '1') { + _timeRangeText = '上午' + } else if (_timeRange === '2') { + _timeRangeText = '下午' + } else if (_timeRange === '3') { + _timeRangeText = '晚上' + } + if (options.timeRange === '0') { + // 全天,则三个都可选 + _rangeOp = ['上午', '下午', '晚上'] + } else { + _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, + dateText: _year + '年' + _month + '月' + _day + '日', + timeRange: _timeRange, + timeRangeText: _timeRangeText, + rangeOp: _rangeOp + }) + // 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() { + + } }) \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.json b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.json index b166c06..9624626 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.json +++ b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.json @@ -1,9 +1,12 @@ { - "usingComponents": { - "van-datetime-picker": "@vant/weapp/datetime-picker/index", - "van-popup": "@vant/weapp/popup/index", - "van-notify": "@vant/weapp/notify/index", - "van-icon": "@vant/weapp/icon/index" - }, - "navigationBarTitleText": "会议室已预约" + "usingComponents": { + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-popup": "@vant/weapp/popup/index", + "van-notify": "@vant/weapp/notify/index", + "van-icon": "@vant/weapp/icon/index", + "van-cell": "@vant/weapp/cell/index", + "van-cell-group": "@vant/weapp/cell-group/index", + "van-picker": "@vant/weapp/picker/index" + }, + "navigationBarTitleText": "预约会议室" } \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxml b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxml index b1f4257..6e27d00 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxml +++ b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxml @@ -1,67 +1,40 @@ - + + + + + + 请选择时间范围 - - - 会议预约情况 - - - {{item.nowDate}} - - - {{record.startTime}}~{{record.endDate}} - 已预约 - - - - - 预约人:{{record.userName}} - - - - 联系电话:{{record.phone}} - - - - - - - - 暂无记录 - + + - - - 预约时间 - - - - - 请选择开始时间 - - - - - - - - - - - - 请选择结束时间 - 确定 - - - - - - - - - + + + 会议时间范围 + + - - - - + + 请选择开始时间 + + + + + + + + 请选择结束时间 + + + + + + + + 确认时间 + + + + + \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxss b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxss index d3e3f61..9c82c32 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxss +++ b/miniprogram/pages/meeting/meetingRoom/meetingBooked/meetingBooked.wxss @@ -1,6 +1,6 @@ -.containerView.public { +/* .containerView.public { padding-bottom: 300rpx; -} +} */ .dataView { padding: 20rpx; @@ -82,7 +82,7 @@ left: 0; top: 0; background: #ffffff; - transition: 1s all; + /* transition: 1s all; */ } .selfPop .labelView { @@ -105,7 +105,7 @@ justify-content: space-between; align-items: center; font-size: 34rpx; - padding: 20rpx 60rpx; + padding: 20rpx 0rpx; } diff --git a/miniprogram/pages/meeting/meetingRoom/meetingOrder/meetingOrder.wxml b/miniprogram/pages/meeting/meetingRoom/meetingOrder/meetingOrder.wxml index 4954035..7ed4206 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingOrder/meetingOrder.wxml +++ b/miniprogram/pages/meeting/meetingRoom/meetingOrder/meetingOrder.wxml @@ -1,92 +1,93 @@ - - - 会议室 - - - - - - + + + {{room.meetingName}} + + + + + + - - - - {{room.capacityNum}}人间 | {{room.roomName}} | {{room.buildingName}} - - #{{roomItem.name}} - - - + + + {{room.buildingName}} | {{room.roomName}} | {{room.capacityNum}}人 | {{room.shape}} + + #{{serviceItem.name}} + #{{serveItem.serveName}} + + + - + - - - - - {{selectDay}} - - - - {{selectCountTime}} - - - - {{userData.username}} {{userData.mobile}} - + + + + + {{selectDay}} + + + {{selectCountTime}} + + + + {{userData.username}} {{userData.mobile}} + + - - - - 会议主题 - - - - - - 参会人数 - - - - - - 会议服务 - - - - - + + + 会议主题 + + + + + + 参会人数 + + + + + + 会议服务 + + + + + - + + + 提交预约 + + + + + + {{room.money}}/小时({{room.duration}}小时起) + + + {{room.remake}} + - - 提交预约 - - - - - - {{room.money}}/小时({{room.duration}}小时起) - - - {{room.remake}} - - - - - + + + \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingRoom.js b/miniprogram/pages/meeting/meetingRoom/meetingRoom.js index 18bf16f..80b5618 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingRoom.js +++ b/miniprogram/pages/meeting/meetingRoom/meetingRoom.js @@ -13,9 +13,25 @@ Page({ data: { IMG_NAME: app.IMG_NAME, meetingRoomId: null, + date: '', + timeRange: '', detail: {}, bannerList: [], - mapData: {} + mapData: {}, + resList: [{ + date: '2024年9月18日', + time: '14:00 - 17:30', + user: '王XX', + dep: '司法局', + tel: '15811111111' + },{ + date: '2024年9月19日', + time: '14:00 - 17:30', + user: '王XX', + dep: '司法局', + tel: '15811111111' + }], + canRes: true // 是否允许预约 }, /** @@ -24,6 +40,12 @@ Page({ onLoad(options) { let _this = this; console.log('onLoad', options); + let time = options.time + let timeRange = options.timeRange + _this.setData({ + date: time, + timeRange: timeRange + }) let meetingRoomId = options.id; meetingRoomDetailRq(meetingRoomId).then(res => { console.log('meetingRoomDetailRq', res); @@ -43,10 +65,10 @@ Page({ }) }) // 获取地址信息 - _this.getAddress() + // _this.getAddress() }, - // 获取地址信息 + // 获取地址信息(不需要地址) getAddress() { let _this = this; selectCoordinateRq().then(res => { @@ -88,8 +110,10 @@ Page({ // 跳转-会议室已预约 jumpMeetingBooked() { let meetingRoomId = this.data.meetingRoomId; + let time = this.data.date + let timeRange = this.data.timeRange wx.navigateTo({ - url: "/pages/meeting/meetingRoom/meetingBooked/meetingBooked?meetingRoomId=" + meetingRoomId, + url: "/pages/meeting/meetingRoom/meetingBooked/meetingBooked?meetingRoomId=" + meetingRoomId + '&time=' + time + '&timeRange=' + timeRange, }) }, diff --git a/miniprogram/pages/meeting/meetingRoom/meetingRoom.json b/miniprogram/pages/meeting/meetingRoom/meetingRoom.json index b1e33b7..d78429b 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingRoom.json +++ b/miniprogram/pages/meeting/meetingRoom/meetingRoom.json @@ -1,6 +1,8 @@ { - "usingComponents": { - "van-icon": "@vant/weapp/icon/index" - }, - "navigationBarTitleText": "会议室" + "usingComponents": { + "van-icon": "@vant/weapp/icon/index", + "van-cell": "@vant/weapp/cell/index", + "van-cell-group": "@vant/weapp/cell-group/index" + }, + "navigationBarTitleText": "会议室" } \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxml b/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxml index d0e371f..ff638d9 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxml +++ b/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxml @@ -1,46 +1,49 @@ - + + + {{detail.meetingName}} - - - + + + + + + + {{detail.buildingName}} | {{detail.roomName}} | {{detail.capacityNum}}人 | {{detail.shape}} + + #{{serviceItem.name}} + #{{serveItem.serveName}} - - - - - - 所在楼层 - {{detail.buildingName}} - - - 空间面积 - {{detail.renArea}}m - - - 形式 - {{detail.shape}} - - - - - {{detail.content ? detail.content : ''}} + + + + + 会议室描述 + {{detail.content ? detail.content : '无描述'}} + - - - 空间设施 - - - - {{serviceItem.name}} - - + + 预约情况 + + + + + + + - - + - - - 会议地点 - - - - - 会议预约 + + + + 会议预约 \ No newline at end of file diff --git a/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxss b/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxss index 574bb90..66ffae3 100644 --- a/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxss +++ b/miniprogram/pages/meeting/meetingRoom/meetingRoom.wxss @@ -2,6 +2,24 @@ padding-bottom: 200rpx; } +.swiperView { + position: relative; +} + +.swiperView .tag { + position: absolute; + left: 22rpx; + top: 20rpx; + background: #76aef9; + font-size: 28rpx; + color: white; + font-weight: bold; + padding: 10rpx 40rpx; + border-top-right-radius: 6rpx; + border-bottom-right-radius: 6rpx; + z-index: 1; +} + .swiper-box { border-radius: 14rpx; box-sizing: border-box; @@ -43,6 +61,56 @@ width: 40rpx; } + +.meetingDetailView { + display: flex; + justify-content: space-between; + align-items: center; + margin: 30rpx 22rpx; + padding: 0 16rpx; +} + +.meetingDetailView .detailView { + flex: 1; + word-break: break-all; + margin-right: 20rpx; +} + +.meetingDetailView .detailView .title { + font-size: 32rpx; + font-weight: 700; +} + +.meetingDetailView .detailView .itemList { + display: flex; + flex-wrap: wrap; + justify-content: start; + align-items: center; + margin-top: 14rpx; + font-size: 26rpx; + color: gray; +} + +.meetingDetailView .detailView .itemList .item { + margin-right: 12rpx; +} + +.meetingDetailView .priceView { + display: flex; + justify-content: start; + align-items: flex-end; + line-height: 1; +} + +.meetingDetailView .priceView .price { + font-size: 36rpx; + color: red; +} + +.meetingDetailView .priceView .unit { + font-size: 24rpx; +} + .roomView { margin-top: 30rpx; } @@ -88,6 +156,11 @@ margin: 50rpx 20rpx; } +.facilitiesView .content { + margin: 40rpx 20rpx 0; + font-size: 26rpx; +} + .facilitiesView .itemView { display: flex; justify-content: start; @@ -146,3 +219,22 @@ height: 500rpx; } +.roomView .device { + margin: 40rpx 20rpx 0; + font-size: 26rpx; +} +.roomView .device .deviceName { + float: left; + color: grey; +} + +.resView { + margin: 50rpx 20rpx; +} +.resView .leftLineTitle{ + margin-bottom: 30rpx; +} +.resView .content { +margin: 40rpx 20rpx 0; +font-size: 26rpx; +} \ No newline at end of file