406 lines
10 KiB
JavaScript
Raw Normal View History

const app = getApp()
import Dialog from '@vant/weapp/dialog/dialog';
import Notify from '@vant/weapp/notify/notify';
import {
selfFormatTimeYMD,
2025-05-28 11:43:10 +08:00
selfFormatTimeHM,
getWeekday,
getNowDate
} from "../../../../utils/util.js"
import {
selectReservationListByUserIdRq,
selectVisitorInvitationRecordRq,
cancelOrderRq,
approveOrderRq
} from "../../../../api/meeting/meetingRoom.js"
Page({
/**
* 页面的初始数据
*/
data: {
IMG_NAME: app.IMG_NAME,
userData: null,
dataChange: false,
tabTitle: '会务服务',
// 预约记录参数
reservationPageNum: 1,
reservationPageSize: 10,
reservationDataList: [],
reservationIsDataAll: false,
search: {
title: {
text: '会议名称',
value: ''
},
status: {
2025-05-28 11:43:10 +08:00
text: '待开始',
value: 7,
option: [{
text: '全部会议',
value: ''
},
{
text: '待开始',
value: 7
},
{
text: '已结束',
value: 11
},
{
text: '进行中',
value: 9
},
]
}
},
},
changeSearchTitle(e) {
this.setData({
['search.title.value']: e.detail,
})
},
searchTitle() {
// 刷新预约数据
this.setData({
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
})
this.getDataList()
this.selectComponent('#item').toggle()
},
changeSearchStatus(e) {
// 刷新预约数据
this.setData({
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
['search.status.value']: e.detail
})
2025-05-28 11:43:10 +08:00
// 更新状态文本
const statusOption = this.data.search.status.option;
const selectedOption = statusOption.find(option => option.value === e.detail);
if (selectedOption) {
this.setData({
['search.status.text']: selectedOption.text
});
}
this.getDataList()
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let _this = this;
2025-05-28 11:43:10 +08:00
let userDetail = wx.getStorageSync('user')
// 检查是否有URL参数指定状态
if (options && options.status) {
const statusValue = parseInt(options.status) || 7;
// 找到对应的状态文本
const statusOption = _this.data.search.status.option;
const selectedOption = statusOption.find(option => option.value === statusValue);
let statusText = selectedOption ? selectedOption.text : '待开始';
this.setData({
['search.status.value']: statusValue,
['search.status.text']: statusText
});
} else {
// 确保默认显示"待开始"
this.setData({
['search.status.value']: 7,
['search.status.text']: '待开始'
});
}
_this.setData({
2025-05-28 11:43:10 +08:00
userData: userDetail
})
2025-05-28 11:43:10 +08:00
// 获取数据
2025-05-28 11:43:10 +08:00
_this.getDataList()
},
// 获取数据
getDataList() {
// 获取参数
let _this = this;
let tabTitle = _this.data.tabTitle
let userId = _this.data.userData.id
let isDataAll = null
let pageNum = null
let pageSize = null
// 预约记录参数,目前只保留预约记录,其余去掉
isDataAll = _this.data.reservationIsDataAll
pageNum = _this.data.reservationPageNum
pageSize = _this.data.reservationPageSize
// 判断数据是否已全部加载
if (isDataAll) {
return;
}
// 传递参数
let param = {
userId,
pageNum,
pageSize
}
_this.getReservationData(param)
},
// 获取预约数据
getReservationData(param) {
let _this = this;
let {
pageNum,
pageSize,
userId
} = param
// 查询数据
selectReservationListByUserIdRq({
2025-05-28 11:43:10 +08:00
role: _this.data.userData.roomRole, // 按不同角色去查询预约记录。1.普通用户, 3.会议服务人员 ,5.会议管理员
pageNum,
pageSize,
2025-05-28 11:43:10 +08:00
userId: _this.data.userData.id, // 确保传递用户ID
title: _this.data.search.title.value,
2025-05-28 11:43:10 +08:00
status: _this.data.search.status.value === '' ? null : _this.data.search.status.value
}).then(res => {
console.log('selectReservationListByUserIdRq', res);
// 判断数据是否全部查询
let queryDataList = res.rows;
if (_this.data.reservationDataList.length < res.total) {
// 更新参数
let reservationDataList = _this.data.reservationDataList.concat(_this.formartData(queryDataList));
let reservationPageNum = _this.data.reservationPageNum + 1;
_this.setData({
reservationPageNum,
reservationDataList,
})
// 超过总大小,则加载完成
if (_this.data.reservationDataList.length >= res.total) {
_this.setData({
reservationIsDataAll: true
})
}
} else {
_this.setData({
reservationIsDataAll: true
})
}
})
},
// 获取参与数据,此处不需要
getParticipateData(param) {
let _this = this;
let {
pageNum,
pageSize,
userId
} = param
// 查询数据
selectVisitorInvitationRecordRq({
pageNum,
pageSize,
userId
}).then(res => {
console.log('selectVisitorInvitationRecordRq', res);
// 判断数据是否全部查询
let queryDataList = res.page.records;
if (queryDataList && queryDataList.length > 0) {
// 更新参数
let participateDataList = _this.data.participateDataList.concat(_this.formartData(queryDataList));
let participatePageNum = _this.data.participatePageNum + 1;
_this.setData({
participatePageNum,
participateDataList,
})
} else {
_this.setData({
participateIsDataAll: true
})
}
})
},
// 格式化数据
formartData(queryDataList) {
// 格式化数据
2025-05-28 11:43:10 +08:00
let _this = this;
let userRole = _this.data.userData.roomRole; // 获取当前用户角色
return queryDataList.map(item => {
2025-05-28 11:43:10 +08:00
let isNowDay = false
let nowDate = selfFormatTimeYMD(getNowDate())
if (nowDate == selfFormatTimeYMD(item.start)) {
isNowDay = true
}
item.isNowDay = isNowDay
// 添加星期几属性用于颜色判断
item.weekDay = getWeekday(item.start)
2025-05-21 16:42:30 +08:00
item.timeSlot = selfFormatTimeYMD(item.start) + ' '+ getWeekday(item.start) + ' ' + selfFormatTimeHM(item.start) + '~' + selfFormatTimeHM(item.end);
// 状态字体颜色
let statusColor = "#FFB119";
// 按钮是否显示
let statusValue = item.status;
let showCancel = false // 显示取消操作
let showEdit = false // 显示编辑操作
let showStaff = false // 显示会务人员
let statusName = ''
// 预约状态1 取消 3 驳回 4 占用 5 待审核 7 审核通过,待开始 9 进行中 11已结束
if (statusValue == 1) {
// 取消
// 状态字体颜色
statusColor = "#333333"
statusName = '已取消'
}
if (statusValue == 3) {
// 驳回,可以修改
statusColor = "#333333"
statusName = '已驳回'
}
if (statusValue == 4) {
// 占用,可以修改,取消
statusName = '已占用'
}
if (statusValue == 5) {
2025-05-28 11:43:10 +08:00
// 待审核
statusName = '待审核'
}
if (statusValue == 7) {
2025-05-28 11:43:10 +08:00
// 审核通过,服务人员只能查看详情
statusName = '待开始'
}
2025-05-28 11:43:10 +08:00
if (statusValue == 9) {
// 进行中
statusColor = "#333333"
statusName = '进行中'
}
if (statusValue == 11) {
// 已结束
statusColor = "#333333"
statusName = '已结束'
}
// 赋值
2025-05-28 11:43:10 +08:00
item.showCancel = showCancel
item.showEdit = showEdit
item.showStaff = showStaff
item.statusName = statusName
// 状态字体颜色
item.statusColor = statusColor;
// 图片
if (item.imgs) {
try {
item.indoorPicUrlFirst = item.imgs[0].url
} catch (error) {
console.log(`JSON error : ${error}`);
}
}
2025-05-28 11:43:10 +08:00
for (let key in item) {
// null设置为空
if (item[key] == null) {
item[key] = ''
}
}
return item
})
},
// 跳转-预约详情
jumpMeetingDetail(e) {
console.log('jumpMeetingDetail', e);
let id = e.currentTarget.dataset.id
wx.navigateTo({
url: "/pages/meeting/reservationRecord/meetingRecord/meetingDetail/meetingDetail?act=serve&id=" + id,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
2025-05-28 11:43:10 +08:00
// 确保状态值和文本正确初始化
this.setData({
['search.status.value']: 7,
['search.status.text']: '待开始'
});
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
let _this = this;
// 数据是否变化
if (_this.data.dataChange) {
// 刷新数据
_this.setData({
dataChange: false,
// 预约记录参数
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
})
_this.getDataList()
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
console.log('onPullDownRefresh', '页面相关事件处理函数--监听用户下拉动作');
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
console.log('onReachBottom', '页面上拉触底事件的处理函数');
let _this = this;
// 获取数据
_this.getDataList()
},
/**
* 用户点击右上角分享
*/
onShareAppMessage(e) {
console.log('onShareAppMessage', e);
let _this = this;
let id = e.target.dataset.id;
let detail = _this.data.reservationDataList.find(item => item.id == id)
//
let param = {
title: detail.title,
path: "/pages/meeting/invite/invite?id=" + id,
imageUrl: app.IMG_NAME + detail.roomContent.indoorPicUrlFirst,
}
console.log('onShareAppMessage', param);
return param;
}
})