Files

59 lines
2.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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' });
});
}
}
});