From a3e160ffe158f75995ba7c4cd6cded945aa461d8 Mon Sep 17 00:00:00 2001 From: 18631081161 <2088094923@qq.com> Date: Tue, 9 Dec 2025 01:18:51 +0800 Subject: [PATCH] =?UTF-8?q?ui=E4=BF=AE=E6=94=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/index/MahjongCard.vue | 2 +- pages/appointment/appointment-page.vue | 457 ++++---- pages/appointment/book-room-page.vue | 1325 ++++++++++++++---------- pages/index/index.vue | 4 +- pages/index/loading.vue | 2 +- pages/me/me-page.vue | 55 +- pages/me/my-earnings-page.vue | 2 +- 7 files changed, 1080 insertions(+), 767 deletions(-) diff --git a/components/index/MahjongCard.vue b/components/index/MahjongCard.vue index 23106f1..6fb3235 100644 --- a/components/index/MahjongCard.vue +++ b/components/index/MahjongCard.vue @@ -320,7 +320,7 @@ const handleJoin = () => { .info-text { font-family: PingFang SC, PingFang SC; font-weight: 400; - font-size:18rpx; + font-size:24rpx; color: #575757; text-align: left; display: block; diff --git a/pages/appointment/appointment-page.vue b/pages/appointment/appointment-page.vue index 1bbb79a..7659dae 100644 --- a/pages/appointment/appointment-page.vue +++ b/pages/appointment/appointment-page.vue @@ -107,18 +107,19 @@ - - - - - - - - - - - 鸽子费(保证金),参与人需缴纳鸽子费。若有参与者在预约后没有赴约,其鸽子费由在场的所有人平分。组局成功或失败后鸽子费将全额返还。 - + + + + + + + + + + + 鸽子费(保证金),参与人需缴纳鸽子费。若有参与者在预约后没有赴约,其鸽子费由在场的所有人平分。组局成功或失败后鸽子费将全额返还。 + @@ -137,34 +138,34 @@ - - + - + 发起预约成功! - + 关闭 @@ -189,7 +190,9 @@ getSubscribeMessage, configData } from '@/common/server/config' - import { onShareAppMessage } from '@dcloudio/uni-app'; + import { + onShareAppMessage + } from '@dcloudio/uni-app'; import { usePay } from '@/common/server/interface/user' @@ -281,7 +284,7 @@ tomorrow.setDate(tomorrow.getDate() + 1); const dayAfterTomorrow = new Date(today); dayAfterTomorrow.setDate(dayAfterTomorrow.getDate() + 2); - + let dateText = ''; if (targetDate.getTime() === today.getTime()) { dateText = '今天'; @@ -294,11 +297,11 @@ const day = date.getDate(); dateText = `${month}月${day}日`; } - + // 获取星期 const weekdays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; const weekday = weekdays[date.getDay()]; - + return `${dateText} ${weekday}`; } /** @@ -318,11 +321,11 @@ const onDatePickerConfirm = async (e) => { console.log('日期选择器确认事件:', e); console.log('datePickerValue.value:', datePickerValue.value); - + // up-datetime-picker 的 confirm 事件返回的是对象 { value: 毫秒级时间戳, mode: 'date' } // 优先使用 v-model 绑定的 datePickerValue.value,因为它会在用户选择后自动更新 let timestampMs = datePickerValue.value; - + // 如果 v-model 的值无效,尝试从事件参数获取 if (!timestampMs || isNaN(timestampMs) || timestampMs <= 0) { if (e && typeof e === 'object' && e.value !== undefined) { @@ -331,9 +334,9 @@ timestampMs = e; } } - + console.log('提取的时间戳(毫秒):', timestampMs); - + // 确保是数字类型且有效 if (typeof timestampMs !== 'number' || isNaN(timestampMs) || timestampMs <= 0) { console.error('日期选择器返回的时间戳无效:', e, 'datePickerValue:', datePickerValue.value); @@ -344,7 +347,7 @@ datePickerVisible.value = false; return; } - + // 将日期转换为当天的 0 点(只取日期,不取时间) const date = new Date(timestampMs); if (isNaN(date.getTime())) { @@ -356,17 +359,17 @@ datePickerVisible.value = false; return; } - + const year = date.getFullYear(); const month = date.getMonth(); const day = date.getDate(); const dateAtMidnight = new Date(year, month, day, 0, 0, 0); - + // 转换为秒级时间戳 const selectedTimestamp = Math.floor(dateAtMidnight.getTime() / 1000); - + console.log('转换后的秒级时间戳:', selectedTimestamp); - + // 验证转换后的时间戳是否有效 if (isNaN(selectedTimestamp) || selectedTimestamp <= 0) { console.error('时间戳转换失败:', dateAtMidnight, selectedTimestamp); @@ -377,29 +380,29 @@ datePickerVisible.value = false; return; } - + // 如果是同一天,不需要重新加载 if (selectedDate.value && selectedDate.value === selectedTimestamp) { datePickerVisible.value = false; return; } - + // 更新选中的日期 selectedDate.value = selectedTimestamp; - + // 重置时段选择 selectedTimeSlot.value = null; reservationInfo.value.start_time = 0; reservationInfo.value.end_time = 0; // 重置最晚到店时间 latestDateTime.value = null; - + // 重新加载房间详情 if (reservationInfo.value.room_id) { console.log('重新加载房间详情, roomId:', reservationInfo.value.room_id, 'date:', selectedTimestamp); await loadRoomDetailForReservation(reservationInfo.value.room_id, selectedTimestamp); } - + datePickerVisible.value = false; } /** @@ -421,12 +424,20 @@ * 获取时间段的时间范围限制 */ const getTimeSlotRange = () => { - if (!selectedTimeSlot.value || selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) { - return { minHour: 0, maxHour: 23, minMinute: 0, maxMinute: 59 }; + if (selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) { + return { + minHour: 0, + maxHour: 23, + minMinute: 0, + maxMinute: 59 + }; } - - let minHour = 0, maxHour = 23, minMinute = 0, maxMinute = 59; - + + let minHour = 0, + maxHour = 23, + minMinute = 0, + maxMinute = 59; + switch (selectedTimeSlot.value) { case 0: // 凌晨 00:00-05:59 minHour = 0; @@ -453,10 +464,15 @@ maxMinute = 59; break; } - - return { minHour, maxHour, minMinute, maxMinute }; + + return { + minHour, + maxHour, + minMinute, + maxMinute + }; } - + /** * 打开最晚到店时间选择器 */ @@ -468,25 +484,25 @@ }); return; } - - if (!selectedTimeSlot.value || selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) { + + if (selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) { uni.showToast({ title: '请先选择时间段', icon: 'none' }); return; } - + // 设置时间段范围限制 const timeRange = getTimeSlotRange(); latestDateTimeMinHour.value = timeRange.minHour; latestDateTimeMaxHour.value = timeRange.maxHour; latestDateTimeMinMinute.value = timeRange.minMinute; latestDateTimeMaxMinute.value = timeRange.maxMinute; - + // 如果有选择时间段,使用自动计算的时间 updateLatestDateTimeFromSlot(); - + // 将时间戳转换为 HH:MM 格式字符串 let timeString = null; if (latestDateTime.value) { @@ -504,7 +520,7 @@ } timeString = `${String(defaultHour).padStart(2, '0')}:${String(defaultMinute).padStart(2, '0')}`; } - + // 确保时间字符串格式正确(必须是 "HH:MM" 格式) if (timeString && typeof timeString === 'string' && timeString.match(/^\d{2}:\d{2}$/)) { latestDateTimePickerValue.value = timeString; @@ -513,7 +529,7 @@ const timeRangeForFallback = getTimeSlotRange(); latestDateTimePickerValue.value = `${String(timeRangeForFallback.minHour).padStart(2, '0')}:00`; } - + // 确保值设置完成后再打开选择器 nextTick(() => { latestDateTimePickerVisible.value = true; @@ -526,7 +542,7 @@ // up-datetime-picker mode="time" 时,v-model 绑定的值应该是 "HH:MM" 格式字符串 // 事件参数 e 可能是对象 { value: "HH:MM", mode: 'time' } 或直接是字符串 "HH:MM" let timeString = latestDateTimePickerValue.value; - + // 如果 v-model 的值无效,尝试从事件参数获取 if (!timeString || typeof timeString !== 'string') { if (e && typeof e === 'object' && e.value !== undefined) { @@ -535,7 +551,7 @@ timeString = e; } } - + // 验证时间字符串格式 if (!timeString || typeof timeString !== 'string' || !timeString.includes(':')) { console.error('时间选择器返回的值格式无效:', e, 'latestDateTimePickerValue:', latestDateTimePickerValue.value); @@ -546,7 +562,7 @@ latestDateTimePickerVisible.value = false; return; } - + // 解析时间字符串 "HH:MM" const timeParts = timeString.split(':'); if (timeParts.length !== 2) { @@ -558,10 +574,10 @@ latestDateTimePickerVisible.value = false; return; } - + const hours = parseInt(timeParts[0], 10); const minutes = parseInt(timeParts[1], 10); - + if (isNaN(hours) || isNaN(minutes) || hours < 0 || hours > 23 || minutes < 0 || minutes > 59) { console.error('时间值无效:', hours, minutes); uni.showToast({ @@ -571,7 +587,7 @@ latestDateTimePickerVisible.value = false; return; } - + // 验证选择的时间是否在时间段范围内 if (selectedTimeSlot.value !== null && selectedTimeSlot.value !== undefined) { const timeRange = getTimeSlotRange(); @@ -600,7 +616,7 @@ return; } } - + // 如果没有选择日期,使用当前日期 if (!selectedDate.value) { uni.showToast({ @@ -610,17 +626,17 @@ latestDateTimePickerVisible.value = false; return; } - + // 将选择的日期和时间组合 const date = new Date(selectedDate.value * 1000); const year = date.getFullYear(); const month = date.getMonth(); const day = date.getDate(); const dateTime = new Date(year, month, day, hours, minutes, 0); - + // 转换为秒级时间戳 const selectedTimestamp = Math.floor(dateTime.getTime() / 1000); - + // 验证转换后的时间戳是否有效 if (isNaN(selectedTimestamp) || selectedTimestamp <= 0) { console.error('时间戳转换失败:', dateTime, selectedTimestamp); @@ -631,10 +647,10 @@ latestDateTimePickerVisible.value = false; return; } - + // 更新最晚到店时间 latestDateTime.value = selectedTimestamp; - + latestDateTimePickerVisible.value = false; } /** @@ -644,17 +660,17 @@ if (!selectedDate.value || selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) { return; } - + // 将日期时间戳转换为日期对象 const date = new Date(selectedDate.value * 1000); const year = date.getFullYear(); const month = date.getMonth(); const day = date.getDate(); - + // 根据时段类型设置开始时间 let startHour = 0; let startMinute = 30; // 默认加30分钟 - + switch (selectedTimeSlot.value) { case 0: // 凌晨 00:00-05:59 startHour = 0; @@ -673,22 +689,38 @@ startMinute = 30; break; } - + // 创建最晚到店时间(开始时间+30分钟) const latestDateTimeObj = new Date(year, month, day, startHour, startMinute, 0); - + // 转换为秒级时间戳 latestDateTime.value = Math.floor(latestDateTimeObj.getTime() / 1000); } const tipsShow = () => { submitPopupRef.value.open() } - + // 处理关闭弹窗,返回上一页 const handleClosePopup = () => { submitPopupRef.value.close() + refreshPrevPageRoomList() goBack() } + + // 刷新上一页的房间列表(发起预约入口页) + const refreshPrevPageRoomList = () => { + const pages = getCurrentPages() + if (!pages || pages.length < 2) return + const prevPage = pages[pages.length - 2] + const vm = prevPage?.$vm || prevPage + if (vm && typeof vm.loadRoomList === 'function') { + vm.loadRoomList() + return + } + if (vm && typeof vm.loadDates === 'function') { + vm.loadDates() + } + } const maxPlayerCount = ref(0) const peopleRange = ref([]) @@ -744,34 +776,58 @@ return gameRule ? gameRule.text : ''; } -const smokingOptions = ref([ - { value: 2, text: '不禁烟' }, - { value: 1, text: '禁烟' }, -]) -const genderOptions = ref([ - { value: 0, text: '不限' }, - { value: 1, text: '男' }, - { value: 2, text: '女' }, -]) -const depositOptions = ref([ - { value: 0, text: '0元' }, - { value: 5, text: '5元' }, - { value: 10, text: '10元' }, - { value: -1, text: '自定义' }, -]) + const smokingOptions = ref([{ + value: 2, + text: '不禁烟' + }, + { + value: 1, + text: '禁烟' + }, + ]) + const genderOptions = ref([{ + value: 0, + text: '不限' + }, + { + value: 1, + text: '男' + }, + { + value: 2, + text: '女' + }, + ]) + const depositOptions = ref([{ + value: 0, + text: '0元' + }, + { + value: 5, + text: '5元' + }, + { + value: 10, + text: '10元' + }, + { + value: -1, + text: '自定义' + }, + ]) -const currentValue = ref(0) -const customDeposit = ref('') + const currentValue = ref(0) + const customDeposit = ref('') -const onCustomDepositInput = (val) => { - // 仅保留数字与小数点,但需求是整数金额,按只允许数字处理 - let v = String(val).replace(/[^0-9]/g, '') - if (v === '') v = '0' - let n = Number(v) - if (n > 50) n = 50 - if (n < 0) n = 0 - customDeposit.value = String(n) -} + const onCustomDepositInput = (val) => { + // 仅保留数字与小数点,但需求是整数金额,按只允许数字处理 + let v = String(val).replace(/[^0-9]/g, '') + if (v === '') v = '0' + let n = Number(v) + if (n > 50) n = 50 + if (n < 0) n = 0 + customDeposit.value = String(n) + } const increment = () => { if (currentValue.value < 5) { @@ -823,13 +879,13 @@ const onCustomDepositInput = (val) => { }) return false } - + // 验证选择的时段是否仍然可预约 if (roomDetail.value && roomDetail.value.time_slots) { const selectedSlot = roomDetail.value.time_slots.find( slot => slot.slot_type === selectedTimeSlot.value ); - + if (!selectedSlot || selectedSlot.status !== 'available') { uni.showToast({ title: '该时段已不可预约,请重新选择', @@ -843,7 +899,7 @@ const onCustomDepositInput = (val) => { return false; } } - + if (!info.start_time || info.start_time === 0) { uni.showToast({ title: '请选择时间段', @@ -927,38 +983,41 @@ const onCustomDepositInput = (val) => { } - try { - var messageId = await getSubscribeMessage(reservationInfo.value.deposit_fee); - console.log("messageId", messageId); - var subscribeMessage = await requestSubscribeMessage(messageId); - console.log("message", subscribeMessage); + try { + var messageId = await getSubscribeMessage(reservationInfo.value.deposit_fee); + console.log("messageId", messageId); + var subscribeMessage = await requestSubscribeMessage(messageId); + console.log("message", subscribeMessage); - // 显示加载状态 - uni.showLoading({ - title: '提交中...' - }) + // 显示加载状态 + uni.showLoading({ + title: '提交中...' + }) - // 处理自定义鸽子费 - let finalDeposit = reservationInfo.value.deposit_fee - if (finalDeposit === -1) { - const n = Number(customDeposit.value || 0) - if (isNaN(n) || n < 0 || n > 50) { - uni.showToast({ title: '自定义金额需在0-50之间', icon: 'none' }) - return - } - finalDeposit = n - } + // 处理自定义鸽子费 + let finalDeposit = reservationInfo.value.deposit_fee + if (finalDeposit === -1) { + const n = Number(customDeposit.value || 0) + if (isNaN(n) || n < 0 || n > 50) { + uni.showToast({ + title: '自定义金额需在0-50之间', + icon: 'none' + }) + return + } + finalDeposit = n + } - // 准备提交数据 - const submitData = { - ...reservationInfo.value, - // 确保信誉限制同步 - credit_limit: currentValue.value, - deposit_fee: finalDeposit, - important_data: {}, - // 添加最晚到店时间参数 - latestDateTime: latestDateTime.value || null - } + // 准备提交数据 + const submitData = { + ...reservationInfo.value, + // 确保信誉限制同步 + credit_limit: currentValue.value, + deposit_fee: finalDeposit, + important_data: {}, + // 添加最晚到店时间参数 + latestDateTime: latestDateTime.value || null + } // 将玩法类型和具体规则从数字转换为字符串 submitData.game_type = getGameTypeText(submitData.game_type); @@ -979,22 +1038,22 @@ const onCustomDepositInput = (val) => { return } - var resPay = null; - if (submitData.deposit_fee > 0) { - resPay = await usePay(submitData.deposit_fee); - if (resPay == null) { - uni.showToast({ - title: '鸽子费订单创建失败,请重新提交预约数据!', - icon: 'none' - }) - return; + var resPay = null; + if (submitData.deposit_fee > 0) { + resPay = await usePay(submitData.deposit_fee); + if (resPay == null) { + uni.showToast({ + title: '鸽子费订单创建失败,请重新提交预约数据!', + icon: 'none' + }) + return; + } + subscribeMessage.result.paymentId = resPay.paymentId; + if (subscribeMessage.result != null) { + important_data = JSON.stringify(subscribeMessage.result); + } + submitData.important_data = important_data; } - subscribeMessage.result.paymentId = resPay.paymentId; - if (subscribeMessage.result != null) { - important_data = JSON.stringify(subscribeMessage.result); - } - submitData.important_data = important_data; - } // TODO: 调用后端API提交预约 // 调用后端API提交预约 @@ -1061,7 +1120,7 @@ const onCustomDepositInput = (val) => { const savedMaxPlayerCount = maxPlayerCount.value; const savedPeopleRange = [...peopleRange.value]; const savedPeopleText = peopleText.value; - + reservationInfo.value = { room_id: savedRoomId, room_name: savedRoomName, @@ -1082,19 +1141,19 @@ const onCustomDepositInput = (val) => { currentValue.value = 0 gameRuleRange.value = [] customDeposit.value = '' // 重置自定义鸽子费 - + // 保留人数范围 maxPlayerCount.value = savedMaxPlayerCount; peopleRange.value = savedPeopleRange; peopleText.value = savedPeopleText; - + // 重置时段选择 selectedTimeSlot.value = null; reservationInfo.value.start_time = 0; reservationInfo.value.end_time = 0; // 重置最晚到店时间 latestDateTime.value = null; - + gameRuleText.value = "请先选择玩法类型" } @@ -1102,11 +1161,18 @@ const onCustomDepositInput = (val) => { * 加载房间详情,用于预约页面 */ const loadRoomDetailForReservation = async (roomId, date) => { - console.log('loadRoomDetailForReservation 调用参数:', { roomId, date, dateType: typeof date }); - + console.log('loadRoomDetailForReservation 调用参数:', { + roomId, + date, + dateType: typeof date + }); + // 验证参数 if (!roomId || !date) { - console.error('loadRoomDetailForReservation 参数无效:', { roomId, date }); + console.error('loadRoomDetailForReservation 参数无效:', { + roomId, + date + }); uni.showToast({ title: '参数错误', icon: 'none' @@ -1114,7 +1180,7 @@ const onCustomDepositInput = (val) => { roomDetailLoading.value = false; return; } - + // 确保 date 是数字类型 const dateTimestamp = Number(date); if (isNaN(dateTimestamp) || dateTimestamp <= 0) { @@ -1126,14 +1192,14 @@ const onCustomDepositInput = (val) => { roomDetailLoading.value = false; return; } - + roomDetailLoading.value = true; try { console.log('调用 getRoomDetail, roomId:', roomId, 'date:', dateTimestamp); const detail = await getRoomDetail(roomId, dateTimestamp); if (detail) { roomDetail.value = detail; - + // 设置容量和人数范围 if (detail.capacity && detail.capacity > 0) { maxPlayerCount.value = detail.capacity; @@ -1141,7 +1207,7 @@ const onCustomDepositInput = (val) => { peopleText.value = "请选择游玩人数"; t.push({ value: 1, - text:'无需组局' + text: '无需组局' }); for (let i = 2; i <= detail.capacity; i++) { t.push({ @@ -1153,7 +1219,7 @@ const onCustomDepositInput = (val) => { } else { peopleText.value = "请选择游玩人数"; } - + // 从 time_slots 中过滤出可预约的时段,动态生成时间段选项 generateTimeSlotOptions(detail.time_slots); } else { @@ -1172,7 +1238,7 @@ const onCustomDepositInput = (val) => { roomDetailLoading.value = false; } } - + /** * 根据房间的 time_slots 动态生成时间段选项 * 只显示可预约的时段(status === 'available') @@ -1182,20 +1248,35 @@ const onCustomDepositInput = (val) => { timeSlotOptions.value = []; return; } - + // 时段时间范围映射 const timeRangeMap = { - 0: { text: '凌晨', range: '00:00-05:59' }, - 1: { text: '上午', range: '06:00-11:59' }, - 2: { text: '下午', range: '12:00-17:59' }, - 3: { text: '晚上', range: '18:00-23:59' } + 0: { + text: '凌晨', + range: '00:00-05:59' + }, + 1: { + text: '上午', + range: '06:00-11:59' + }, + 2: { + text: '下午', + range: '12:00-17:59' + }, + 3: { + text: '晚上', + range: '18:00-23:59' + } }; - + // 过滤出可预约的时段并生成选项 const availableSlots = timeSlots.filter(slot => slot.status === 'available'); - + timeSlotOptions.value = availableSlots.map(slot => { - const slotInfo = timeRangeMap[slot.slot_type] || { text: slot.slot_name, range: '' }; + const slotInfo = timeRangeMap[slot.slot_type] || { + text: slot.slot_name, + range: '' + }; // 生成显示文本 let displayText = slotInfo.text; if (slotInfo.range) { @@ -1205,14 +1286,14 @@ const onCustomDepositInput = (val) => { if (slot.price_desc_standard) { displayText += ` ${slot.price_desc_standard}`; } - + return { value: slot.slot_type, text: displayText }; }); } - + /** * 时段选择改变事件 */ @@ -1224,23 +1305,23 @@ const onCustomDepositInput = (val) => { // 自动更新最晚到店时间(时间段开始时间+30分钟) updateLatestDateTimeFromSlot(); } - + /** * 根据选择的日期和时段计算开始时间和结束时间 */ const calculateTimeFromSlot = () => { if (!selectedDate.value || selectedTimeSlot.value === null || selectedTimeSlot.value === undefined) return; - + // 将日期时间戳转换为日期对象 const date = new Date(selectedDate.value * 1000); const year = date.getFullYear(); const month = date.getMonth(); const day = date.getDate(); - + // 根据时段类型设置开始时间 let startHour = 0; let endHour = 0; - + switch (selectedTimeSlot.value) { case 0: // 凌晨 00:00-05:59 startHour = 0; @@ -1259,23 +1340,23 @@ const onCustomDepositInput = (val) => { endHour = 24; break; } - + // 创建开始时间和结束时间 const startTime = new Date(year, month, day, startHour, 0, 0); const endTime = new Date(year, month, day, endHour, 0, 0); - + // 转换为秒级时间戳 reservationInfo.value.start_time = Math.floor(startTime.getTime() / 1000); reservationInfo.value.end_time = Math.floor(endTime.getTime() / 1000); } - + onLoad(async (options) => { const config = await getConfigData(); console.log('config', config); if (config != null && config.config != null) { gameTypeRange.value = [...config.config.playingMethodOptions]; } - + // 必须从房间页跳转,需要传入房间信息 if (!options || !options.roomId) { uni.showToast({ @@ -1287,12 +1368,12 @@ const onCustomDepositInput = (val) => { }, 1500); return; } - + // 接收房间信息 const roomId = Number(options.roomId); const roomName = decodeURIComponent(options.roomName || '未知房间'); const date = Number(options.date); - + if (!roomId || !date) { uni.showToast({ title: '房间信息不完整', @@ -1303,12 +1384,12 @@ const onCustomDepositInput = (val) => { }, 1500); return; } - + // 自动填充房间信息 reservationInfo.value.room_id = roomId; reservationInfo.value.room_name = roomName; selectedDate.value = date; - + // 加载房间详情,获取可预约时段和容量信息 await loadRoomDetailForReservation(roomId, date); }) @@ -1380,9 +1461,13 @@ const onCustomDepositInput = (val) => { reservationInfo.value.max_age = maxAge agePickerVisible.value = false } - + // 分享处理函数 - onShareAppMessage(({ from, target, webViewUrl }) => { + onShareAppMessage(({ + from, + target, + webViewUrl + }) => { console.log('onShareAppMessage', from, target, webViewUrl); var resid = 0; if (target != null && target.dataset && target.dataset.item) { @@ -1405,7 +1490,7 @@ const onCustomDepositInput = (val) => { } } console.log('分享的预约ID:', resid); - + // 同步获取分享配置(因为 onShareAppMessage 需要同步返回) const path = "pages/index/loading?id=" + resid; // 直接访问 configData.value,避免异步调用 diff --git a/pages/appointment/book-room-page.vue b/pages/appointment/book-room-page.vue index ab9597a..4eb67ea 100644 --- a/pages/appointment/book-room-page.vue +++ b/pages/appointment/book-room-page.vue @@ -1,82 +1,74 @@ \ No newline at end of file diff --git a/pages/index/index.vue b/pages/index/index.vue index 8659476..a4bb52e 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -55,7 +55,7 @@ - + diff --git a/pages/index/loading.vue b/pages/index/loading.vue index 0f73316..f1e5785 100644 --- a/pages/index/loading.vue +++ b/pages/index/loading.vue @@ -1,6 +1,6 @@