Miniprogram: - Add back buttons to all custom-nav pages - Add debug/mock buttons (BLE connect, wear check, treatment) controlled by __DEV__ flag (hidden in prod) Admin console: - Fix log page using nonexistent fields (operator_type, target_type) now correctly reads admin_id/user_id/action/detail from API - Fix subscription date fields (started_at→start_time, expired_at→expire_time) - Wire up subscription detail/extend/renew action buttons - Wire up device detail "查看完整日志" button - Add "创建订阅" button to subscription toolbar - Fix subscription status mapping (2=expired, 3=cancelled) Docs: - Add detailed architecture docs for server, miniprogram, admin console
96 行
2.4 KiB
JavaScript
96 行
2.4 KiB
JavaScript
var http = require('../../utils/request')
|
|
|
|
Page({
|
|
data: {
|
|
statusBarHeight: 44,
|
|
scanning: false,
|
|
deviceId: '',
|
|
error: ''
|
|
},
|
|
|
|
onBack: function () {
|
|
wx.navigateBack({
|
|
fail: function () {
|
|
wx.reLaunch({ url: '/pages/index/index' })
|
|
}
|
|
})
|
|
},
|
|
|
|
onLoad: function () {
|
|
var app = getApp()
|
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight })
|
|
},
|
|
|
|
onScan: function () {
|
|
var self = this
|
|
self.setData({ scanning: true, error: '' })
|
|
|
|
wx.scanCode({
|
|
onlyFromCamera: true,
|
|
scanType: ['qrCode'],
|
|
success: function (res) {
|
|
var deviceId = self.parseDeviceId(res.result)
|
|
if (!deviceId) {
|
|
self.setData({ scanning: false, error: '无效的设备二维码' })
|
|
return
|
|
}
|
|
self.bindDevice(deviceId)
|
|
},
|
|
fail: function () {
|
|
self.setData({ scanning: false })
|
|
}
|
|
})
|
|
},
|
|
|
|
parseDeviceId: function (content) {
|
|
if (/^[0-9A-Fa-f]{16}$/.test(content)) return content
|
|
try {
|
|
var url = new URL(content)
|
|
var id = url.searchParams.get('device_id') || url.searchParams.get('id')
|
|
return id || null
|
|
} catch (e) {
|
|
return null
|
|
}
|
|
},
|
|
|
|
bindDevice: function (deviceId) {
|
|
var self = this
|
|
self.setData({ scanning: true, error: '' })
|
|
http.post('/api/v1/device/bind', { device_id: deviceId }).then(function (data) {
|
|
self.setData({ scanning: false })
|
|
wx.redirectTo({
|
|
url: '/pages/ble-connect/ble-connect?device_id=' + encodeURIComponent(deviceId) + '&bind_token=' + encodeURIComponent(data.bind_token || '')
|
|
})
|
|
}).catch(function (err) {
|
|
self.setData({ scanning: false })
|
|
if (err && err.code === 2001) {
|
|
wx.showToast({ title: '已绑定设备', icon: 'none' })
|
|
setTimeout(function () {
|
|
wx.navigateBack()
|
|
}, 1500)
|
|
} else {
|
|
self.setData({ error: err.message || '绑定失败' })
|
|
}
|
|
})
|
|
},
|
|
|
|
onManualInput: function () {
|
|
var self = this
|
|
wx.showModal({
|
|
title: '手动输入设备号',
|
|
editable: true,
|
|
placeholderText: '请输入16位设备ID',
|
|
success: function (res) {
|
|
if (res.confirm && res.content) {
|
|
var deviceId = res.content.trim()
|
|
if (/^[0-9A-Fa-f]{16}$/.test(deviceId)) {
|
|
self.bindDevice(deviceId)
|
|
} else {
|
|
wx.showToast({ title: '设备号格式不正确', icon: 'none' })
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
})
|