const { appointmentDB, formatRecord } = require('../../../utils/api') Page({ data: { record: null, loading: true, error: '', verifying: false }, onLoad(options) { const id = this.extractId(options) if (!id) { this.setData({ loading: false, error: '缺少预约记录ID' }) return } this.loadRecordDetail(id) }, extractId(options) { if (options.id) return options.id if (!options.scene) return null const scene = decodeURIComponent(options.scene) return scene.startsWith('id=') ? scene.substring(3) : scene }, async loadRecordDetail(id) { try { this.setData({ loading: true }) const result = await appointmentDB.getDetail(id) if (!result) { this.setData({ loading: false, error: '预约记录不存在' }) return } const statusMap = { 'pending': '待审核', 'approved': '已通过', 'rejected': '已拒绝', 'cancelled': '已取消' } // checkStatus 为字符串:'0' 未核销,'1' 已核销 const checkStatus = String(result.checkStatus) const checkStatusText = checkStatus === '1' ? '已核销' : '未核销' this.setData({ record: { ...formatRecord(result), statusText: statusMap[result.status] || result.status, checkStatus: checkStatus, checkStatusText: checkStatusText }, loading: false }) } catch (err) { console.error('加载预约记录详情失败', err) this.setData({ loading: false, error: '加载失败,请稍后重试' }) } }, async onVerify() { const { record, verifying } = this.data if (verifying || !record || !record.id) return wx.showModal({ title: '确认核销', content: '确定要核销该预约记录吗?', confirmColor: '#1890ff', success: async (res) => { if (!res.confirm) return this.setData({ verifying: true }) try { await appointmentDB.notifyHost(record.id) wx.showToast({ title: '核销成功', icon: 'success' }) // 刷新详情页 this.loadRecordDetail(record.id) } catch (err) { console.error('核销失败', err) wx.showToast({ title: '核销失败,请重试', icon: 'none' }) } finally { this.setData({ verifying: false }) } } }) } })