61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
const { request, ensureLogin, cents } = require('../../utils/api.js')
|
|
|
|
Page({
|
|
data: {
|
|
storeId: '',
|
|
loading: false,
|
|
errorMessage: '',
|
|
store: null,
|
|
rooms: [],
|
|
wifi: null,
|
|
},
|
|
onLoad(options) {
|
|
this.setData({ storeId: options.storeId || '' })
|
|
if (options.storeId) this.loadStore(options.storeId)
|
|
},
|
|
|
|
async loadStore(storeId) {
|
|
this.setData({ loading: true, errorMessage: '' })
|
|
try {
|
|
const [storeResponse, roomsResponse] = await Promise.all([
|
|
request(`/stores/${encodeURIComponent(storeId)}`),
|
|
request(`/stores/${encodeURIComponent(storeId)}/rooms`),
|
|
])
|
|
this.setData({
|
|
store: storeResponse.data,
|
|
rooms: (roomsResponse.data || []).map((room) => ({
|
|
...room,
|
|
basePriceText: cents(room.basePriceCents),
|
|
depositText: cents(room.depositCents),
|
|
})),
|
|
})
|
|
} catch (error) {
|
|
this.setData({ errorMessage: error.message || '门店加载失败' })
|
|
} finally {
|
|
this.setData({ loading: false })
|
|
}
|
|
},
|
|
|
|
openRoom(event) {
|
|
const roomId = event.currentTarget.dataset.roomId
|
|
if (!roomId || !this.data.storeId) return
|
|
wx.navigateTo({
|
|
url: `/pages/room/detail?storeId=${encodeURIComponent(this.data.storeId)}&roomId=${encodeURIComponent(roomId)}`,
|
|
})
|
|
},
|
|
|
|
async loadWifi() {
|
|
if (!this.data.storeId) return
|
|
this.setData({ loading: true, errorMessage: '' })
|
|
try {
|
|
await ensureLogin()
|
|
const response = await request(`/stores/${encodeURIComponent(this.data.storeId)}/wifi`)
|
|
this.setData({ wifi: response.data })
|
|
} catch (error) {
|
|
this.setData({ errorMessage: error.message || '请登录并确认到店权限后查看 Wi-Fi' })
|
|
} finally {
|
|
this.setData({ loading: false })
|
|
}
|
|
},
|
|
})
|