const app = getApp(); import $ from "../../utils/request"; Component({ data: {}, methods: { bindOk() { this.triggerEvent('deviceEvent', { status: true }); }, // 开始 OTA 升级 startOtaUpgrade() { const ppScale = app.globalData.ppScale; const activeProtocol = ppScale.activeProtocol; if (!activeProtocol) { wx.showToast({ title: '设备未连接,请重新连接', icon: 'none' }); return; } const res = ppScale.device.version; // 解析固件版本号:格式 "006.005.004.305" → [mcu, ble, wifi, res] const [mcuVer, bleVer, wifiVer, resVer] = (res.firmwareRevision || "").split("."); $.ajax("weighingScale/v2/firmware/version", { type: res.modelNumber }, "GET", false, "").then(serverRes => { if (serverRes.result) { /** * 判断服务端版本是否大于设备端版本(需要升级) * @param {string} deviceVer - 设备端单段版本,如 "006" * @param {string} serverVer - 服务端完整版本,如 "0.0.6" * @returns {boolean} true 表示服务端版本更新,需要升级 */ const isServerNewer = (deviceVer, serverVer) => { // 设备端单段数字化(去前导零),如 "006" → 6 const deviceNum = parseInt(deviceVer, 10); // 服务端版本各段累乘1000合并为整数,如 "0.0.6" → 6,"1.0.2" → 1002 const serverNum = (serverVer || "").split(".").map(v => parseInt(v, 10)).reduce((acc, v) => acc * 1000 + v, 0); return serverNum > deviceNum; }; const needUpdate = isServerNewer(mcuVer, serverRes.result.mcuVersion) || isServerNewer(bleVer, serverRes.result.bleVersion) || isServerNewer(wifiVer, serverRes.result.wifiVersion) || isServerNewer(resVer, serverRes.result.resVersion); if (needUpdate) { // status: false = 成功,true = 失败 activeProtocol.codeOtaUpdate((status) => { console.log("OTA 升级结果:", status); }); } } }).catch(() => { wx.showToast({ title: '获取最新版本失败', icon: 'none' }); }); } } });