Files
danyang-match/miniapp/pages/service-station/service-station.js
T

66 lines
1.8 KiB
JavaScript
Raw Normal View History

const api = require('../../utils/api')
Page({
data: {
serviceLocation: null,
loading: true,
loadError: false,
},
onLoad() {
this.loadStation()
},
async loadStation() {
this.setData({ loading: true, loadError: false })
try {
const home = await api.get('/home')
this.setData({ serviceLocation: home?.serviceLocation || null, loading: false })
} catch (error) {
console.error('加载服务站失败', error)
this.setData({ loading: false, loadError: true })
}
},
call() {
const station = this.data.serviceLocation
const phoneNumber = station?.contactPhone || station?.contactPhoneDisplay || ''
const digitCount = phoneNumber.replace(/\D/g, '').length
if (!phoneNumber || phoneNumber.includes('*') || digitCount < 5) {
wx.showToast({ title: '联系电话请以预约确认为准', icon: 'none' })
return
}
wx.makePhoneCall({ phoneNumber })
},
openMap() {
const station = this.data.serviceLocation
const latitude = Number(station?.latitude)
const longitude = Number(station?.longitude)
if (Number.isFinite(latitude) && Number.isFinite(longitude) && latitude && longitude) {
wx.openLocation({
latitude,
longitude,
name: station.name,
address: station.address || '',
})
return
}
if (station?.address) {
wx.setClipboardData({ data: station.address })
return
}
wx.showToast({ title: '暂未提供地图位置', icon: 'none' })
},
book() {
const id = this.data.serviceLocation?.id
const query = id ? `?serviceLocationId=${encodeURIComponent(id)}` : ''
wx.navigateTo({ url: `/pages/service-appointment/service-appointment${query}` })
},
onRetry() {
this.loadStation()
},
})