From 2e07a7fcee27aae8f4874432abee843e824e1190 Mon Sep 17 00:00:00 2001 From: 17792275749 <812100002@qq.com> Date: Tue, 25 Aug 2026 13:51:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(equipment):=20=E8=AE=BE=E5=A4=87=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8D=87=E7=BA=A7=20v6=20=E6=8E=A5=E5=8F=A3=E5=B9=B6?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=8F=96=E6=B6=88=E9=85=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- miniprogram/pages/equipment/equipment.ts | 46 +++++++++++++++++----- miniprogram/pages/equipment/equipment.wxml | 2 +- miniprogram/utils/request/index.ts | 9 +++++ miniprogram/utils/request/types.ts | 2 +- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/miniprogram/pages/equipment/equipment.ts b/miniprogram/pages/equipment/equipment.ts index 2840239..9ffde97 100644 --- a/miniprogram/pages/equipment/equipment.ts +++ b/miniprogram/pages/equipment/equipment.ts @@ -1,4 +1,4 @@ -import { get } from '../../utils/request/index' +import { get, del } from '../../utils/request/index' import { leFuService } from '../../lefu/index' import type { UserInfo } from '../../api/index' @@ -17,8 +17,12 @@ interface ScaleDevice { } /** 获取体重设备列表 */ -const getDeviceList = (userId: string) => - get('weighingScale/v3/list/device', { userId }) +const getDeviceList = () => + get('weighingScale/v6/list/device') + +/** 取消配对:id 不传则解除所有设备绑定 */ +const unbindDevice = (id?: string) => + del(`weighingScale/v6/unbind${id ? `?id=${id}` : ''}`, {}, { loading: false }) /** 展示用设备项 */ interface DeviceItem { @@ -81,7 +85,7 @@ Page({ const raw = wx.getStorageSync('userInfo') as UserInfo | null if (!raw?.userId) return try { - const res = await getDeviceList(raw.userId) + const res = await getDeviceList() this.setData({ devices: res.result.map(item => { let info: Record = {} @@ -104,14 +108,28 @@ Page({ } }, - /** 取消配对:使用小程序自带 showModal */ - onTapUnpair() { + /** 取消配对:解除指定设备绑定 */ + onTapUnpair(e: WechatMiniprogram.TouchEvent) { + const item = e.currentTarget.dataset.item as DeviceItem wx.showModal({ title: '取消配对', content: '是否确认取消配对当前设备?', cancelText: '取消', confirmText: '确定', - confirmColor: '#F24439' + confirmColor: '#F24439', + success: (res) => { + if (!res.confirm) return + unbindDevice(item.id) + .then(() => { + const cached = wx.getStorageSync('connectDeviceInfo') as Record | null + if (cached?.deviceId === item.deviceId) { + wx.removeStorageSync('connectDeviceInfo') + } + wx.showToast({ title: '已取消配对', icon: 'success' }) + this.loadDevices() + }) + .catch(() => {}) + }, }) }, @@ -227,14 +245,24 @@ Page({ // 关闭运维模式(待接入) }, - /** 取消全部配对 */ + /** 取消全部配对:解除所有设备绑定 */ onUnpairAll() { wx.showModal({ title: '取消全部配对', content: '是否确认取消全部设备的配对?', cancelText: '取消', confirmText: '确定', - confirmColor: '#F24439' + confirmColor: '#F24439', + success: (res) => { + if (!res.confirm) return + unbindDevice() + .then(() => { + wx.removeStorageSync('connectDeviceInfo') + wx.showToast({ title: '已取消全部配对', icon: 'success' }) + this.loadDevices() + }) + .catch(() => {}) + }, }) } }) diff --git a/miniprogram/pages/equipment/equipment.wxml b/miniprogram/pages/equipment/equipment.wxml index edf6c27..5a505f8 100644 --- a/miniprogram/pages/equipment/equipment.wxml +++ b/miniprogram/pages/equipment/equipment.wxml @@ -39,7 +39,7 @@ {{ item.name }} - 取消配对 + 取消配对 diff --git a/miniprogram/utils/request/index.ts b/miniprogram/utils/request/index.ts index 40bae7f..e0d3e2f 100644 --- a/miniprogram/utils/request/index.ts +++ b/miniprogram/utils/request/index.ts @@ -74,3 +74,12 @@ export const put = ( data?: Record, options?: RequestOptions, ): Promise> => request(url, data, 'PUT', options) + +export const del = ( + url: string, + data?: Record, + options?: RequestOptions, +): Promise> => request(url, data, 'DELETE', { + contentType: 'application/x-www-form-urlencoded', + ...options, +}) diff --git a/miniprogram/utils/request/types.ts b/miniprogram/utils/request/types.ts index adccfd1..ba5eafa 100644 --- a/miniprogram/utils/request/types.ts +++ b/miniprogram/utils/request/types.ts @@ -6,7 +6,7 @@ export interface ApiResponse { result: T } -export type HttpMethod = 'GET' | 'POST' | 'PUT' +export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' export interface RequestOptions { loading?: boolean