const app = getApp(); const api = require('../../utils/api'); const loc = require('../../utils/location'); Page({ data: { showAnimation: false, dataReady: false, result: null, error: '', distanceText: '' }, onLoad() { this.roll(); }, roll() { this.setData({ showAnimation: true, dataReady: false, error: '', result: null }); loc.getLocation().then((pos) => { return api.post('/api/explore/roll', { latitude: pos.latitude, longitude: pos.longitude, openid: 'anonymous' }); }).then((data) => { this.setData({ result: data, distanceText: ((data.distance || 0) / 1000).toFixed(1) + 'km', dataReady: true }); this.saveRecord(data); }).catch((err) => { this.setData({ showAnimation: false, error: err.message || '附近暂无推荐好店,换片区域试试?' }); }); }, onAnimationDone() { this.setData({ showAnimation: false }); }, navigate() { const shop = this.data.result; if (!shop) return; wx.openLocation({ latitude: shop.latitude || app.globalData.location.latitude, longitude: shop.longitude || app.globalData.location.longitude, name: shop.name, address: shop.address, scale: 16 }); }, retry() { this.roll(); }, saveRecord(data) { const history = wx.getStorageSync('box_history') || []; history.push({ id: Date.now().toString(), icon: '🍱', name: data.name, time: new Date().toLocaleString(), typeName: '探店盲盒' }); wx.setStorageSync('box_history', history); } });