|
@@ -266,9 +266,15 @@ async function loadRoomInfo() {
|
|
|
stayId: data.room?.stayId || null,
|
|
stayId: data.room?.stayId || null,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 在更新 Store 之前捕获旧 stayId,用于判断是否为同一客人重新扫码
|
|
|
|
|
+ const prevStayId = orderStore.roomInfo?.stayId || null
|
|
|
|
|
+ const newStayId = data.room?.stayId || null
|
|
|
|
|
+ const stayChanged = prevStayId !== null && newStayId !== null && prevStayId !== newStayId
|
|
|
|
|
+
|
|
|
// 存入 Store
|
|
// 存入 Store
|
|
|
orderStore.setTenantId(data.tenantId)
|
|
orderStore.setTenantId(data.tenantId)
|
|
|
orderStore.setRoomInfo(roomInfo.value)
|
|
orderStore.setRoomInfo(roomInfo.value)
|
|
|
|
|
+ orderStore.setScanParams(shortCode, sign)
|
|
|
|
|
|
|
|
// 校验营业状态(非营业时段整页拦截,不给进菜单)
|
|
// 校验营业状态(非营业时段整页拦截,不给进菜单)
|
|
|
const hoursState = await loadBusinessHours(data.tenantId)
|
|
const hoursState = await loadBusinessHours(data.tenantId)
|
|
@@ -289,12 +295,15 @@ async function loadRoomInfo() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 入住时前台已录入客人信息,自动回填到联系人(优先级高于支付宝授权)
|
|
|
|
|
|
|
+ // 联系人信息同步策略:
|
|
|
|
|
+ // 1. 房间有住客数据 → 以房间数据为准更新对应字段(前台录入/首单回写,是权威来源)
|
|
|
|
|
+ // 只更新有值的字段,缺失字段保留 store 旧值
|
|
|
|
|
+ // 2. 房间无住客数据 + stayId 变化 → 新客人,清空旧缓存防止串数据
|
|
|
|
|
+ // 3. 房间无住客数据 + stayId 不变 → 同一客人,保留已填写的联系人
|
|
|
if (data.room?.guestName || data.room?.guestPhone) {
|
|
if (data.room?.guestName || data.room?.guestPhone) {
|
|
|
- orderStore.setContactInfo(
|
|
|
|
|
- data.room.guestName || orderStore.contactName,
|
|
|
|
|
- data.room.guestPhone || orderStore.contactPhone,
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ orderStore.setContactInfo(data.room.guestName, data.room.guestPhone)
|
|
|
|
|
+ } else if (stayChanged || !prevStayId) {
|
|
|
|
|
+ orderStore.clearContactInfo()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 加载酒店配置(暂时使用默认值,后续可扩展接口)
|
|
// 加载酒店配置(暂时使用默认值,后续可扩展接口)
|
|
@@ -394,8 +403,8 @@ async function autoFetchUserName() {
|
|
|
var data = res?.data || res
|
|
var data = res?.data || res
|
|
|
if (data && data.userName) {
|
|
if (data && data.userName) {
|
|
|
authName.value = data.userName
|
|
authName.value = data.userName
|
|
|
- // 存入 Store,下单时自动填入
|
|
|
|
|
- orderStore.setContactInfo(data.userName, orderStore.contactPhone || '')
|
|
|
|
|
|
|
+ // 存入 Store,下单时自动填入(只更新姓名,不碰电话)
|
|
|
|
|
+ orderStore.setContactInfo(data.userName)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// #endif
|
|
// #endif
|
|
@@ -433,8 +442,8 @@ async function doGetPhone() {
|
|
|
|
|
|
|
|
if (data && data.phone) {
|
|
if (data && data.phone) {
|
|
|
authPhone.value = data.phone
|
|
authPhone.value = data.phone
|
|
|
- // 存入 Store,下单时自动填入
|
|
|
|
|
- orderStore.setContactInfo(authName.value || orderStore.contactName, data.phone)
|
|
|
|
|
|
|
+ // 存入 Store,下单时自动填入(只更新电话,不碰姓名)
|
|
|
|
|
+ orderStore.setContactInfo(undefined, data.phone)
|
|
|
uni.showToast({ title: '授权成功', icon: 'success' })
|
|
uni.showToast({ title: '授权成功', icon: 'success' })
|
|
|
}
|
|
}
|
|
|
// #endif
|
|
// #endif
|