var ble = require('../../services/ble') var http = require('../../utils/request') var app = getApp() Page({ data: { connected: false, deviceName: '', battery: 0, subscription: null, subRemaining: 0, modeState: '空闲', bleState: 'disconnected', hasDevice: false, deviceInfo: null }, onShow: function () { this.checkState() ble.on('status', this.onBleStatus.bind(this)) }, onHide: function () { ble.off('status') }, onUnload: function () { ble.off('status') }, checkState: function () { var self = this var token = wx.getStorageSync('token') if (!token) { wx.reLaunch({ url: '/pages/login/login' }) return } self.setData({ connected: ble.isConnected() }) http.get('/api/v1/device/list').then(function (data) { var devices = data.devices || [] self.setData({ hasDevice: devices.length > 0 }) if (devices.length > 0) { app.globalData.currentDevice = devices[0] self.setData({ deviceName: devices[0].name || devices[0].device_id || '我的光面膜', deviceInfo: devices[0] }) } }).catch(function () {}) http.get('/api/v1/subscription').then(function (sub) { self.setData({ subscription: sub, subRemaining: sub.remaining_days || 0 }) }).catch(function () {}) }, onBleStatus: function (status) { this.setData({ battery: status.battery || 0, modeState: ble.getModeStateName(status.mode_state), connected: true, bleState: 'connected' }) }, onConnectBle: function () { var self = this self.setData({ bleState: 'scanning' }) ble.startScan({ onFound: function () { self.setData({ bleState: 'connecting' }) }, onConnected: function () { self.setData({ connected: true, bleState: 'connected' }) ble.queryStatus().catch(function () {}) }, onError: function (err) { self.setData({ connected: false, bleState: 'error' }) wx.showToast({ title: err.msg || '连接失败', icon: 'none' }) } }) }, onAddDevice: function () { wx.navigateTo({ url: '/pages/scan/scan' }) }, onManageDevice: function () { var self = this wx.showActionSheet({ itemList: ['解绑当前设备'], success: function (res) { if (res.tapIndex === 0) { wx.showModal({ title: '确认解绑', content: '解绑后将无法使用该设备,确定要解绑吗?', success: function (modalRes) { if (modalRes.confirm) { self.doUnbind() } } }) } } }) }, doUnbind: function () { var self = this wx.showLoading({ title: '解绑中...' }) ble.disconnect() http.post('/api/v1/device/unbind', {}).then(function () { wx.hideLoading() self.setData({ hasDevice: false, deviceName: '', deviceInfo: null, connected: false }) wx.showToast({ title: '已解绑', icon: 'success' }) }).catch(function (err) { wx.hideLoading() wx.showToast({ title: err.message || '解绑失败', icon: 'none' }) }) }, onStartTreatment: function () { if (!this.data.subscription || this.data.subscription.status === 0) { wx.navigateTo({ url: '/pages/subscribe-prompt/subscribe-prompt' }) return } wx.navigateTo({ url: '/pages/wear-check/wear-check' }) }, onViewSubscription: function () { if (!this.data.subscription || this.data.subscription.status === 0) { wx.navigateTo({ url: '/pages/subscribe-plans/subscribe-plans' }) } } })