mirror of
https://gitee.com/elegant_wings/dbd-meeting-wx-small.git
synced 2025-06-22 06:39:37 +08:00
512 lines
12 KiB
JavaScript
512 lines
12 KiB
JavaScript
const app = getApp()
|
||
import {
|
||
meetingRoomDict,
|
||
meetingRoomListRq,
|
||
} from "../../../api/meeting/meetingRoom.js"
|
||
|
||
import Notify from '@vant/weapp/notify/notify';
|
||
|
||
|
||
Page({
|
||
|
||
/**
|
||
* 页面的初始数据
|
||
*/
|
||
data: {
|
||
IMG_NAME: app.IMG_NAME,
|
||
roomDataList: {},
|
||
rId: '',
|
||
dep: '',
|
||
date: '',
|
||
dateStr: '',
|
||
adminTel: '83605343',
|
||
queryParam: {
|
||
timeRangeDict: {
|
||
list: [{
|
||
text: '全天',
|
||
value: 4
|
||
}, {
|
||
text: '上午',
|
||
value: 1
|
||
}, {
|
||
text: '下午',
|
||
value: 2
|
||
}, {
|
||
text: '晚上',
|
||
value: 3
|
||
}],
|
||
value: 4,
|
||
},
|
||
meetingTypeDict: {
|
||
list: [],
|
||
value: null,
|
||
},
|
||
personDict: {
|
||
list: [{
|
||
text: '人数',
|
||
value: ''
|
||
}, {
|
||
text: '1-20',
|
||
value: 1
|
||
}, {
|
||
text: '21-50',
|
||
value: 2
|
||
}, {
|
||
text: '51-100',
|
||
value: 3
|
||
}, {
|
||
text: '100 以上',
|
||
value: 4
|
||
}],
|
||
value: '',
|
||
},
|
||
itemDict: {
|
||
list: [],
|
||
value: null,
|
||
title: '设备'
|
||
},
|
||
shapeDict: {
|
||
list: [],
|
||
value: null,
|
||
},
|
||
},
|
||
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 = ''
|
||
options.depId = ''
|
||
}
|
||
const time = options.time
|
||
if (!time || time === '') {
|
||
app.selfShowMsg('请选择时间!', '/pages/meeting/index/index')
|
||
return
|
||
}
|
||
|
||
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)
|
||
}
|
||
|
||
this.setData({
|
||
date: time,
|
||
rId: options.rId,
|
||
dep: options.dep,
|
||
depId: options.depId,
|
||
dateStr: _year + '-' + _month + '-' + _day,
|
||
userDetail: userDetail,
|
||
maxDate: newDate.getTime()
|
||
})
|
||
if (options.rId == '' && (userDetail.roomRole != 5 && options.depId == '')) {
|
||
// 新增时,非管理员必须认证单位
|
||
Notify('非法操作!')
|
||
wx.navigateBack()
|
||
return
|
||
}
|
||
// 初始化数据
|
||
this.initData();
|
||
},
|
||
|
||
// 初始化数据
|
||
initData() {
|
||
let _this = this;
|
||
meetingRoomDict().then(res => {
|
||
console.log('meetingRoomDict', res)
|
||
let queryParam = _this.data.queryParam
|
||
let dataObj = res.data
|
||
// 封装参数
|
||
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
|
||
}, ...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]
|
||
})
|
||
}
|
||
// 赋值参数
|
||
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
|
||
|
||
// 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
|
||
|
||
_this.setData({
|
||
queryParam
|
||
})
|
||
})
|
||
|
||
// 数据-会议室列表
|
||
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 devicesArr = []
|
||
for (let key in queryParam.itemDict.list) {
|
||
let eachObj = queryParam.itemDict.list[key]
|
||
if (eachObj.select) {
|
||
devicesArr.push(eachObj.value)
|
||
}
|
||
}
|
||
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) {
|
||
// 51-100
|
||
minPerNum = 51
|
||
maxPerNum = 100
|
||
} else if (perNumValue == 4) {
|
||
// 51-100
|
||
minPerNum = 101
|
||
maxPerNum = 1000
|
||
} else {
|
||
// 全部
|
||
minPerNum = 1
|
||
maxPerNum = 1000
|
||
}
|
||
let param = {
|
||
floor: queryParam.meetingTypeDict.value, // 楼层
|
||
min: minPerNum, // 最小容纳人数
|
||
max: maxPerNum, // 最大容纳人数
|
||
devices: devicesArr, // 设备
|
||
typeName: queryParam.shapeDict.value, // 形状
|
||
timeFormat: 1, // 预约时间格式:0 任意时间(管理员),1上午,2下午,3晚上 4 全天。值为0时,读取startTime和endTime为预约会议时间范围;其他值读取mrdate,再拼接时间为预约会议时间范围。返回值为1时;读取 am,上午 0可预约 1不可预约 pm,下午 0可预约 1不可预约 night,晚上 0可预约 1不可预约,这里默认全部为1
|
||
mrdate: _this.data.dateStr
|
||
}
|
||
// 会议室列表数据
|
||
meetingRoomListRq(param).then(res => {
|
||
console.log('meetingRoomListRq', res);
|
||
let roomArr = {}
|
||
let valueObj = res.data
|
||
for (let key in valueObj) {
|
||
let eachObj = valueObj[key]
|
||
if (eachObj['floorId'] in roomArr) {} else {
|
||
roomArr[eachObj['floorId']] = {
|
||
name: eachObj['floor'],
|
||
list: []
|
||
}
|
||
}
|
||
roomArr[eachObj['floorId']]['list'].push(eachObj)
|
||
}
|
||
// console.log(roomArr)
|
||
_this.setData({
|
||
roomDataList: roomArr
|
||
})
|
||
})
|
||
},
|
||
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',
|
||
range: 1,
|
||
status: 0,
|
||
id: id
|
||
}
|
||
} else {
|
||
cAction[0] = {
|
||
name: '上午(不可预约)',
|
||
subname: '9:00 - 12:00',
|
||
range: 1,
|
||
status: 1,
|
||
id: id
|
||
}
|
||
}
|
||
if (pm == 0) {
|
||
cAction[1] = {
|
||
name: '下午',
|
||
subname: '13:30 - 17:30',
|
||
range: 2,
|
||
status: 0,
|
||
id: id
|
||
}
|
||
} else {
|
||
cAction[1] = {
|
||
name: '下午(不可预约)',
|
||
subname: '13:30 - 17:30',
|
||
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({
|
||
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
|
||
})
|
||
},
|
||
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() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面显示
|
||
*/
|
||
onShow() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面隐藏
|
||
*/
|
||
onHide() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 生命周期函数--监听页面卸载
|
||
*/
|
||
onUnload() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面相关事件处理函数--监听用户下拉动作
|
||
*/
|
||
onPullDownRefresh() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 页面上拉触底事件的处理函数
|
||
*/
|
||
onReachBottom() {
|
||
|
||
},
|
||
|
||
/**
|
||
* 用户点击右上角分享
|
||
*/
|
||
onShareAppMessage() {
|
||
|
||
}
|
||
}) |