512 lines
12 KiB
JavaScript
Raw Normal View History

2024-02-26 17:17:27 +08:00
const app = getApp()
2024-03-01 16:42:56 +08:00
import {
meetingRoomDict,
meetingRoomListRq,
2024-03-01 16:42:56 +08:00
} from "../../../api/meeting/meetingRoom.js"
2024-05-17 09:15:54 +08:00
import Notify from '@vant/weapp/notify/notify';
2024-02-26 09:06:34 +08:00
Page({
/**
* 页面的初始数据
*/
data: {
IMG_NAME: app.IMG_NAME,
roomDataList: {},
rId: '',
dep: '',
date: '',
2024-09-24 23:04:06 +08:00
dateStr: '',
adminTel: '83605343',
queryParam: {
timeRangeDict: {
list: [{
text: '全天',
2024-09-24 23:04:06 +08:00
value: 4
}, {
text: '上午',
value: 1
}, {
text: '下午',
value: 2
}, {
text: '晚上',
value: 3
}],
2024-09-24 23:04:06 +08:00
value: 4,
},
meetingTypeDict: {
list: [],
value: null,
},
personDict: {
2024-10-04 17:29:12 +08:00
list: [{
text: '人数',
value: ''
}, {
text: '1-20',
2024-10-04 17:29:12 +08:00
value: 1
}, {
text: '21-50',
2024-10-04 17:29:12 +08:00
value: 2
}, {
text: '51-100',
value: 3
2024-10-04 17:29:12 +08:00
}, {
text: '100 以上',
value: 4
2024-10-04 17:29:12 +08:00
}],
value: '',
},
itemDict: {
list: [],
value: null,
title: '设备'
},
shapeDict: {
list: [],
value: null,
},
2024-10-16 13:16:39 +08:00
},
showPicker: false,
actions: [],
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;
},
},
showTimePicker() {
this.setData({
timeShow: true
});
this.selectComponent('#selectTime').toggle()
},
hideTimePicker() {
this.setData({
timeShow: false
});
},
changeTime(e) {
let date = new Date(e.detail);
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
// IOS不支持-,必须用/
let chooseTime = year + '/' + month + '/' + day + ' 00:00:00'
let chooseTimeStr = new Date(chooseTime).getTime()
this.setData({
date: chooseTimeStr,
dateStr: year + '-' + month + '-' + day
})
// 设置标题
wx.setNavigationBarTitle({
title: year + '年' + month + '月' + day + '日'
})
this.initData()
this.hideTimePicker()
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
// 页面初始化 options为页面跳转所带来的参数
let userDetail = wx.getStorageSync('user')
if (options.name) {
wx.setNavigationBarTitle({
title: options.name
})
}
if (!options.rId) {
// 首页过来会找不到rId设为空否则会报错
options.rId = ''
}
if (!options.dep) {
options.dep = ''
2024-09-24 23:04:06 +08:00
options.depId = ''
}
const time = options.time
if (!time || time === '') {
app.selfShowMsg('请选择时间!', '/pages/meeting/index/index')
return
}
2024-10-04 17:29:12 +08:00
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 + '日'
})
// 设置时间
// 获取两周后时间,默认只能选两周之后,管理员可以选一年后的
const today = new Date()
const newDate = new Date(today)
if (userDetail.roomRole == 5) {
newDate.setFullYear(newDate.getFullYear() + 1)
} else {
newDate.setDate(newDate.getDate() + 14)
}
2024-09-24 23:04:06 +08:00
this.setData({
date: time,
rId: options.rId,
dep: options.dep,
depId: options.depId,
dateStr: _year + '-' + _month + '-' + _day,
userDetail: userDetail,
maxDate: newDate.getTime()
2024-09-24 23:04:06 +08:00
})
if (options.rId == '' && (userDetail.roomRole != 5 && options.depId == '')) {
// 新增时,非管理员必须认证单位
Notify('非法操作!')
wx.navigateBack()
return
}
2024-03-01 16:42:56 +08:00
// 初始化数据
this.initData();
},
2024-02-26 09:06:34 +08:00
// 初始化数据
initData() {
let _this = this;
2024-09-24 23:04:06 +08:00
meetingRoomDict().then(res => {
console.log('meetingRoomDict', res)
let queryParam = _this.data.queryParam
let dataObj = res.data
// 封装参数
2024-09-24 23:04:06 +08:00
let floorList = []
for (let key in dataObj.floors) {
let eachObj = dataObj.floors[key]
const keys = Object.keys(eachObj)
floorList.push({
text: keys[0],
value: keys[0]
})
}
floorList = [{
text: "楼层",
value: null
2024-09-24 23:04:06 +08:00
}, ...floorList]
queryParam.meetingTypeDict.list = floorList
let deviceList = []
for (let key in dataObj.devices) {
let eachObj = dataObj.devices[key]
const keys = Object.keys(eachObj)
deviceList.push({
text: keys[0],
value: keys[0]
})
}
// 赋值参数
2024-09-24 23:04:06 +08:00
queryParam.itemDict.list = deviceList
let typeList = []
for (let key in dataObj.types) {
let eachObj = dataObj.types[key]
const keys = Object.keys(eachObj)
typeList.push({
text: keys[0],
value: keys[0]
})
}
typeList = [{
text: "形式",
value: null
}, ...typeList]
queryParam.shapeDict.list = typeList
2024-09-27 21:33:07 +08:00
2024-10-04 17:29:12 +08:00
// let numList = []
// for (let key in dataObj.personNum) {
// let eachObj = dataObj.personNum[key]
// // const keys = Object.keys(eachObj)
// numList.push({
// text: eachObj,
// value: eachObj
// })
// }
// numList = [{
// text: "人数",
// value: null
// }, ...numList]
// queryParam.personDict.list = numList
2024-09-27 21:33:07 +08:00
_this.setData({
queryParam
})
})
2024-10-04 17:29:12 +08:00
// 数据-会议室列表
this.meetingRoomList()
},
2024-03-01 16:42:56 +08:00
// 查询条件变动
dictChange(e) {
console.log('dictChange', e);
let queryParam = this.data.queryParam;
queryParam[e.currentTarget.dataset.type].value = e.detail;
this.setData({
queryParam
})
2024-03-01 17:41:59 +08:00
// 数据-会议室列表
this.meetingRoomList()
},
2024-03-01 17:41:59 +08:00
// 设备-多选
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 devicesArr = []
for (let key in queryParam.itemDict.list) {
let eachObj = queryParam.itemDict.list[key]
if (eachObj.select) {
devicesArr.push(eachObj.value)
}
}
2024-10-04 17:29:12 +08:00
let minPerNum = 0
let maxPerNum = 1000
let perNumValue = queryParam.personDict.value
if (perNumValue == 1) {
// 1-20
maxPerNum = 20
minPerNum = 1
} else if (perNumValue == 2) {
// 21-50
minPerNum = 21
maxPerNum = 50
} else if (perNumValue == 3) {
2024-10-04 17:29:12 +08:00
// 51-100
minPerNum = 51
maxPerNum = 100
} else if (perNumValue == 4) {
// 51-100
2024-10-04 17:29:12 +08:00
minPerNum = 101
maxPerNum = 1000
} else {
2024-10-04 17:29:12 +08:00
// 全部
minPerNum = 1
maxPerNum = 1000
}
let param = {
2024-09-24 23:04:06 +08:00
floor: queryParam.meetingTypeDict.value, // 楼层
2024-10-04 17:29:12 +08:00
min: minPerNum, // 最小容纳人数
max: maxPerNum, // 最大容纳人数
devices: devicesArr, // 设备
2024-09-24 23:04:06 +08:00
typeName: queryParam.shapeDict.value, // 形状
2024-10-16 13:16:39 +08:00
timeFormat: 1, // 预约时间格式0 任意时间管理员1上午2下午3晚上 4 全天。值为0时读取startTime和endTime为预约会议时间范围其他值读取mrdate再拼接时间为预约会议时间范围。返回值为1时读取 am上午 0可预约 1不可预约 pm下午 0可预约 1不可预约 night晚上 0可预约 1不可预约这里默认全部为1
2024-09-24 23:04:06 +08:00
mrdate: _this.data.dateStr
}
// 会议室列表数据
meetingRoomListRq(param).then(res => {
console.log('meetingRoomListRq', res);
let roomArr = {}
2024-09-24 23:04:06 +08:00
let valueObj = res.data
for (let key in valueObj) {
let eachObj = valueObj[key]
2024-09-24 23:04:06 +08:00
if (eachObj['floorId'] in roomArr) {} else {
roomArr[eachObj['floorId']] = {
name: eachObj['floor'],
list: []
}
2024-05-17 09:15:54 +08:00
}
2024-09-24 23:04:06 +08:00
roomArr[eachObj['floorId']]['list'].push(eachObj)
}
// console.log(roomArr)
_this.setData({
roomDataList: roomArr
})
})
},
2024-10-16 13:16:39 +08:00
chooseMeetingTime(e) {
let id = e.currentTarget.dataset.id
let am = e.currentTarget.dataset.am
let pm = e.currentTarget.dataset.pm
let night = e.currentTarget.dataset.night
if (this.data.userDetail.roomRole == 5) {
// 管理员,直接进入即可,全天都可以选择
this.jumpMeetingRoom(id, 4, 0)
return
}
let cAction = []
if (am == 0) {
cAction[0] = {
name: '上午',
subname: '9:00 - 12:00',
2024-10-16 13:16:39 +08:00
range: 1,
status: 0,
id: id
}
} else {
cAction[0] = {
name: '上午(不可预约)',
subname: '9:00 - 12:00',
2024-10-16 13:16:39 +08:00
range: 1,
status: 1,
id: id
}
}
if (pm == 0) {
cAction[1] = {
name: '下午',
subname: '13:30 - 17:30',
2024-10-16 13:16:39 +08:00
range: 2,
status: 0,
id: id
}
} else {
cAction[1] = {
name: '下午(不可预约)',
subname: '13:30 - 17:30',
2024-10-16 13:16:39 +08:00
range: 2,
status: 1,
id: id
}
}
if (night == 0) {
cAction[2] = {
name: '晚上',
subname: '17:30 - 24:00',
range: 3,
status: 0,
id: id
}
} else {
cAction[2] = {
name: '晚上(不可预约)',
subname: '17:30 - 24:00',
range: 3,
status: 1,
id: id
}
}
this.setData({
showPicker: true,
actions: cAction
})
},
/**
* 跳转会议室详情
* @param {*} id 会议室id
* @param {*} range 会议室时间选择范围
* @param {*} status 是否可以预约
*/
jumpMeetingRoom(id, range, status) {
// 跳转预约详情
wx.navigateTo({
2024-10-16 13:16:39 +08:00
url: "/pages/meeting/meetingRoom/meetingRoom?status=" + status + "&id=" + id + '&time=' + this.data.date + '&timeRange=' + range + '&rId=' + this.data.rId + '&dep=' + this.data.dep + '&depId=' + this.data.depId
})
},
callAdmin() {
let num = this.data.adminTel
wx.makePhoneCall({
phoneNumber: num
})
},
2024-10-16 13:16:39 +08:00
onClosePicker() {
this.setData({ showPicker: false })
},
onSelectRange(event) {
console.log(event.detail)
let timeRange = event.detail.range
let id = event.detail.id
let status = event.detail.status
this.jumpMeetingRoom(id, timeRange, status)
},
timeChange() {
console.log(111)
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 生命周期函数--监听页面显示
*/
onShow() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
2024-02-26 09:06:34 +08:00
},
2024-02-26 09:06:34 +08:00
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
2024-02-26 09:06:34 +08:00
})