20250613-预约后提示功能

This commit is contained in:
luoyu 2025-06-13 16:08:45 +08:00
parent 3a078ac8a3
commit 1993c97a54
4 changed files with 158 additions and 43 deletions

View File

@ -66,11 +66,15 @@ Page({
console.log('会务人员:', resStaff) console.log('会务人员:', resStaff)
let musicList = [] let musicList = []
let serveList = [] let serveList = []
let hasMusicStaff = false
let hasServiceStaff = false
for (let key in resStaff.voiceWaiter) { for (let key in resStaff.voiceWaiter) {
let eachObj = resStaff.voiceWaiter[key] let eachObj = resStaff.voiceWaiter[key]
let isSel = false let isSel = false
if (staffIdArr.includes(eachObj.id)) { if (staffIdArr.includes(eachObj.id)) {
isSel = true isSel = true
hasMusicStaff = true
} }
musicList.push({ musicList.push({
id: eachObj.id, id: eachObj.id,
@ -83,6 +87,7 @@ Page({
let isSel = false let isSel = false
if (staffIdArr.includes(eachObj.id)) { if (staffIdArr.includes(eachObj.id)) {
isSel = true isSel = true
hasServiceStaff = true
} }
serveList.push({ serveList.push({
id: eachObj.id, id: eachObj.id,
@ -90,6 +95,13 @@ Page({
isSelect: isSel isSelect: isSel
}) })
} }
// 保存初始状态到本地存储
wx.setStorageSync('staffStatus_' + _this.data.rId, {
hasMusicStaff,
hasServiceStaff
});
_this.setData({ _this.setData({
staffServeList: serveList, staffServeList: serveList,
staffMusicList: musicList staffMusicList: musicList
@ -138,8 +150,11 @@ Page({
let staffMusicList = _this.data.staffMusicList let staffMusicList = _this.data.staffMusicList
let staffServeList = _this.data.staffServeList let staffServeList = _this.data.staffServeList
let musicId = '' let musicId = ''
// 检查音控组是否有选择
let hasMusicStaff = false
for (let key in staffMusicList) { for (let key in staffMusicList) {
if (staffMusicList[key].isSelect) { if (staffMusicList[key].isSelect) {
hasMusicStaff = true
musicId += staffMusicList[key].id + ',' musicId += staffMusicList[key].id + ','
} }
} }
@ -148,8 +163,11 @@ Page({
musicId = musicId.substring(0, musicId.length - 1) musicId = musicId.substring(0, musicId.length - 1)
} }
let serveId = '' let serveId = ''
// 检查会务服务组是否有选择
let hasServiceStaff = false
for (let key in staffServeList) { for (let key in staffServeList) {
if (staffServeList[key].isSelect) { if (staffServeList[key].isSelect) {
hasServiceStaff = true
serveId += staffServeList[key].id + ',' serveId += staffServeList[key].id + ','
} }
} }
@ -157,6 +175,13 @@ Page({
// 去掉最后一个, // 去掉最后一个,
serveId = serveId.substring(0, serveId.length - 1) serveId = serveId.substring(0, serveId.length - 1)
} }
// 保存选择状态到本地存储
wx.setStorageSync('staffStatus_' + _this.data.rId, {
hasMusicStaff,
hasServiceStaff
});
addStaff({ addStaff({
id: _this.data.rId, id: _this.data.rId,
voiceWaiter: musicId, voiceWaiter: musicId,
@ -166,6 +191,17 @@ Page({
type: 'success', type: 'success',
message: '分配成功!' message: '分配成功!'
}) })
// 获取页面栈
let pages = getCurrentPages()
// 获取上一页实例
let prevPage = pages[pages.length - 2]
// 设置上一页的dataChange为true触发刷新
prevPage.setData({
dataChange: true
})
// 返回上一页
wx.navigateBack() wx.navigateBack()
}) })

View File

@ -444,6 +444,47 @@ Page({
showCancel = true showCancel = true
showEdit = true showEdit = true
showStaff = true showStaff = true
// 根据会务负责人选择状态设置按钮颜色和提示
try {
// 从本地存储获取会务负责人选择状态
let staffStatus = wx.getStorageSync('staffStatus_' + item.id);
if (staffStatus) {
// 判断音控组和会务服务组选择状态
const hasMusicStaff = staffStatus.hasMusicStaff;
const hasServiceStaff = staffStatus.hasServiceStaff;
if (hasMusicStaff && hasServiceStaff) {
// 音控组和会务服务组都有选择
item.staffBtnType = '';
item.staffTip = '';
// 绿色样式标记
item.isStaffComplete = true;
} else if (!hasMusicStaff && !hasServiceStaff) {
// 音控组和会务服务组都没有选择
item.staffBtnType = 'danger';
item.staffTip = '请选择音控组和会务服务组';
item.isStaffComplete = false;
} else if (hasMusicStaff && !hasServiceStaff) {
// 只选择了音控组
item.staffBtnType = 'warning';
item.staffTip = '请选择会务服务组';
item.isStaffComplete = false;
} else if (!hasMusicStaff && hasServiceStaff) {
// 只选择了会务服务组
item.staffBtnType = 'warning';
item.staffTip = '请选择音控组';
item.isStaffComplete = false;
}
} else {
// 默认状态:黄色按钮(与取消预约按钮一致),提示选择两个组
item.staffBtnType = 'warning';
item.staffTip = '请选择音控组和会务服务组';
item.isStaffComplete = false;
}
} catch (error) {
console.error('获取会务负责人状态失败', error);
}
} }
} }
if (statusValue == 9) { if (statusValue == 9) {
@ -500,6 +541,41 @@ Page({
url: "/pages/meeting/meetingRoom/meetingStaff/meetingStaff?rId=" + id, url: "/pages/meeting/meetingRoom/meetingStaff/meetingStaff?rId=" + id,
}) })
}, },
/**
* 生命周期函数--监听页面显示
* 添加刷新会务负责人状态按钮显示逻辑
*/
onShow() {
let _this = this;
// 每次页面显示时检查用户角色是否有变化
let currentUserData = wx.getStorageSync('user');
let userRoleChanged = false;
// 检查用户角色是否发生变化
if(_this.data.userData && currentUserData && _this.data.userData.roomRole !== currentUserData.roomRole) {
userRoleChanged = true;
// 更新用户数据
_this.setData({
userData: currentUserData
});
console.log('用户角色已变更,重新加载数据');
}
// 数据是否变化或用户角色变化
if (_this.data.dataChange || userRoleChanged) {
// 刷新数据
_this.setData({
dataChange: false,
// 预约记录参数
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
})
_this.getDataList()
}
},
// 取消预约一系列方法 // 取消预约一系列方法
cancelConfirm(e) { cancelConfirm(e) {
console.log('cancelConfirm', e); console.log('cancelConfirm', e);
@ -673,18 +749,38 @@ Page({
}).then(res => { }).then(res => {
console.log('passOrder', res) console.log('passOrder', res)
if (res.code == 0) { if (res.code == 0) {
// 刷新预约数据 // 通知成功
_this.setData({
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
showRejectReason: false
})
Notify({ Notify({
type: 'success', type: 'success',
message: '已通过该申请!' message: '已通过该申请!'
}) })
_this.getDataList()
// 先提示用户选择会务负责人,再刷新数据
wx.showModal({
title: '会务负责人',
content: '请选择会议的音控组和会务服务组负责人',
confirmText: '去选择',
cancelText: '我知道了',
success(res) {
if (res.confirm) {
// 点击"去选择",跳转到会务负责人页面
wx.navigateTo({
url: "/pages/meeting/meetingRoom/meetingStaff/meetingStaff?rId=" + id,
})
} else {
// 点击"我知道了",只刷新数据
console.log('用户选择稍后设置会务负责人')
// 刷新预约数据
_this.setData({
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
showRejectReason: false
})
_this.getDataList()
}
}
})
} else { } else {
// 危险通知 // 危险通知
Notify({ Notify({
@ -772,39 +868,7 @@ Page({
}, },
/**
* 生命周期函数--监听页面显示
*/
onShow() {
let _this = this;
// 每次页面显示时检查用户角色是否有变化
let currentUserData = wx.getStorageSync('user');
let userRoleChanged = false;
// 检查用户角色是否发生变化
if(_this.data.userData && currentUserData && _this.data.userData.roomRole !== currentUserData.roomRole) {
userRoleChanged = true;
// 更新用户数据
_this.setData({
userData: currentUserData
});
console.log('用户角色已变更,重新加载数据');
}
// 数据是否变化或用户角色变化
if (_this.data.dataChange || userRoleChanged) {
// 刷新数据
_this.setData({
dataChange: false,
// 预约记录参数
reservationPageNum: 1,
reservationDataList: [],
reservationIsDataAll: false,
})
_this.getDataList()
}
},
/** /**
* 生命周期函数--监听页面隐藏 * 生命周期函数--监听页面隐藏

View File

@ -29,6 +29,7 @@
<view class="priceView"> <view class="priceView">
<view class="cancelContent" wx:if="{{item.status == 1 && item.operate && item.operate.length > 0}}">取消原因:{{item.operate[item.operate.length - 1].content}}</view> <view class="cancelContent" wx:if="{{item.status == 1 && item.operate && item.operate.length > 0}}">取消原因:{{item.operate[item.operate.length - 1].content}}</view>
<view class="cancelContent" wx:if="{{item.status == 3 && item.operate && item.operate.length > 0}}">驳回原因:{{item.operate[item.operate.length - 1].content}}</view> <view class="cancelContent" wx:if="{{item.status == 3 && item.operate && item.operate.length > 0}}">驳回原因:{{item.operate[item.operate.length - 1].content}}</view>
<view class="staff-tip" wx:if="{{item.showStaff && item.staffTip}}">{{item.staffTip}}</view>
</view> </view>
<view class="btnView"> <view class="btnView">
<!-- <view class="btn" wx:if="{{item.showInvite}}">去邀请 <!-- <view class="btn" wx:if="{{item.showInvite}}">去邀请
@ -36,8 +37,8 @@
</view> --> </view> -->
<van-button style="margin-right: 10rpx;" size="small" plain type="warning" wx:if="{{item.showCancel}}" bind:tap="cancelConfirm" data-id="{{item.id}}" data-status="{{item.status}}">取消预约</van-button> <van-button style="margin-right: 10rpx;" size="small" plain type="warning" wx:if="{{item.showCancel}}" bind:tap="cancelConfirm" data-id="{{item.id}}" data-status="{{item.status}}">取消预约</van-button>
<van-button style="margin-right: 10rpx;" size="small" plain type="info" wx:if="{{item.showEdit}}" bind:tap="editConfirm" data-id="{{item.id}}">修改信息</van-button> <van-button style="margin-right: 10rpx;" size="small" plain type="info" wx:if="{{item.showEdit}}" bind:tap="editConfirm" data-id="{{item.id}}">修改信息</van-button>
<van-button style="margin-right: 10rpx;" size="small" plain type="warning" wx:if="{{item.showStaff}}" bind:tap="goStaff" data-id="{{item.id}}">会务负责人</van-button> <van-button style="margin-right: 10rpx;" size="small" plain type="{{item.staffBtnType || 'warning'}}" custom-class="{{item.isStaffComplete ? 'approve-btn-success' : ''}}" wx:if="{{item.showStaff}}" bind:tap="goStaff" data-id="{{item.id}}">会务负责人</van-button>
<van-button style="margin-right: 10rpx;" size="small" plain type="primary" wx:if="{{item.showApprove}}" bind:tap="pass" data-id="{{item.id}}">通过</van-button> <van-button style="margin-right: 10rpx;" size="small" plain type="primary" custom-class="approve-btn-success" wx:if="{{item.showApprove}}" bind:tap="pass" data-id="{{item.id}}">通过</van-button>
<van-button style="margin-right: 10rpx;" size="small" plain type="danger" wx:if="{{item.showApprove}}" bind:tap="rejectConfirm" data-id="{{item.id}}">驳回</van-button> <van-button style="margin-right: 10rpx;" size="small" plain type="danger" wx:if="{{item.showApprove}}" bind:tap="rejectConfirm" data-id="{{item.id}}">驳回</van-button>
<!-- <view class="btn" wx:if="{{item.showDetail}}" bind:tap="jumpMeetingDetail" data-id="{{item.id}}">查看详情</view> --> <!-- <view class="btn" wx:if="{{item.showDetail}}" bind:tap="jumpMeetingDetail" data-id="{{item.id}}">查看详情</view> -->

View File

@ -151,3 +151,17 @@
.loadAllLine { .loadAllLine {
margin-top: 80rpx; margin-top: 80rpx;
} }
.staff-tip {
color: #ff4d4f;
font-size: 28rpx;
margin: 10rpx 0;
text-align: right;
font-weight: bold;
}
/* 通过按钮绿色样式 */
.approve-btn-success {
color: #07c160 !important;
border-color: #07c160 !important;
}