2025-05-28 11:43:10 +08:00

406 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const app = getApp()
import Dialog from '@vant/weapp/dialog/dialog';
import Notify from '@vant/weapp/notify/notify';
import {
selfFormatTimeYMD,
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: {
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
})
// 更新状态文本
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;
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({
userData: userDetail
})
// 获取数据
_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({
role: _this.data.userData.roomRole, // 按不同角色去查询预约记录。1.普通用户, 3.会议服务人员 ,5.会议管理员
pageNum,
pageSize,
userId: _this.data.userData.id, // 确保传递用户ID
title: _this.data.search.title.value,
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) {
// 格式化数据
let _this = this;
let userRole = _this.data.userData.roomRole; // 获取当前用户角色
return queryDataList.map(item => {
let isNowDay = false
let nowDate = selfFormatTimeYMD(getNowDate())
if (nowDate == selfFormatTimeYMD(item.start)) {
isNowDay = true
}
item.isNowDay = isNowDay
// 添加星期几属性用于颜色判断
item.weekDay = getWeekday(item.start)
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) {
// 待审核
statusName = '待审核'
}
if (statusValue == 7) {
// 审核通过,服务人员只能查看详情
statusName = '待开始'
}
if (statusValue == 9) {
// 进行中
statusColor = "#333333"
statusName = '进行中'
}
if (statusValue == 11) {
// 已结束
statusColor = "#333333"
statusName = '已结束'
}
// 赋值
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}`);
}
}
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() {
// 确保状态值和文本正确初始化
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;
}
})