2025-09-19 13:46:33 +08:00
|
|
|
import request, {
|
|
|
|
|
baseURL
|
|
|
|
|
} from '@/utils/request.js'
|
2025-09-17 15:21:20 +08:00
|
|
|
|
2025-08-27 11:06:49 +08:00
|
|
|
/**
|
|
|
|
|
* 检查并执行wgt热更新
|
|
|
|
|
* @param {String} updateUrl - 检查更新的接口地址
|
|
|
|
|
*/
|
|
|
|
|
function checkAndUpdateWgt(updateUrl) {
|
2025-09-19 13:46:33 +08:00
|
|
|
if (!plus) {
|
2025-08-27 11:06:49 +08:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 显示加载提示
|
|
|
|
|
|
2025-10-09 14:34:22 +08:00
|
|
|
let urls = ['https://dmsapp.skf.com.cn/HummerService/app/CheckUpdate'];
|
2025-08-27 11:06:49 +08:00
|
|
|
|
|
|
|
|
// 1. 获取当前应用版本信息
|
|
|
|
|
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
|
|
|
|
|
const currentVersion = widgetInfo.version;
|
|
|
|
|
console.log("当前版本:" + currentVersion);
|
2025-10-09 14:34:22 +08:00
|
|
|
|
|
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
let callbck = (res) => {
|
2025-10-09 14:34:22 +08:00
|
|
|
let flag = false;
|
2025-09-19 13:46:33 +08:00
|
|
|
uni.hideLoading();
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log("检查更新成功=", res)
|
2025-09-19 13:46:33 +08:00
|
|
|
if (res.statusCode === 200) {
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
const updateInfo = res.data.data;
|
|
|
|
|
if (!updateInfo.hasUpdate) {
|
2025-10-09 14:34:22 +08:00
|
|
|
return true;
|
2025-09-18 17:31:40 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
flag = true;
|
2025-09-19 13:46:33 +08:00
|
|
|
// 3. 显示更新提示
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '检测到更新',
|
|
|
|
|
content: updateInfo.description || '有新版本可用,是否立即更新?',
|
|
|
|
|
confirmText: '立即更新',
|
|
|
|
|
cancelText: '稍后更新',
|
|
|
|
|
success: (modalRes) => {
|
|
|
|
|
if (modalRes.confirm) {
|
|
|
|
|
downloadAndInstallWgt(updateInfo.downloadUrl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log('当前已是最新版本');
|
2025-09-18 17:31:40 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
|
|
|
|
|
return flag;
|
2025-09-19 13:46:33 +08:00
|
|
|
};
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
let Update = (url) => {
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log("url=", url);
|
2025-09-19 13:46:33 +08:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.request({
|
|
|
|
|
url: url,
|
|
|
|
|
method: 'GET',
|
|
|
|
|
data: {
|
|
|
|
|
currentVersion: currentVersion,
|
2025-09-23 08:36:21 +08:00
|
|
|
platform: uni.getSystemInfoSync().platform,
|
2025-10-09 14:34:22 +08:00
|
|
|
appId: "xhyc"
|
2025-09-19 13:46:33 +08:00
|
|
|
},
|
|
|
|
|
success: (res) => {
|
2025-10-10 17:31:33 +08:00
|
|
|
// console.log("res=>",res)//坑,404居然进success
|
2025-10-09 14:34:22 +08:00
|
|
|
if (res.statusCode === 200) {
|
|
|
|
|
res.type = '1';
|
|
|
|
|
resolve(res);
|
|
|
|
|
} else {
|
|
|
|
|
reject(res);
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
},
|
|
|
|
|
fail: (err) => {
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log("err=", err);
|
2025-09-19 13:46:33 +08:00
|
|
|
reject(err);
|
|
|
|
|
},
|
2025-10-09 14:34:22 +08:00
|
|
|
complete: () => {
|
2025-09-19 13:46:33 +08:00
|
|
|
console.log("complete");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
let Callback1 = (res) => {
|
|
|
|
|
console.log("检查版本更新:", res);
|
|
|
|
|
let os = plus.os.name.toLowerCase();
|
2025-10-09 14:34:22 +08:00
|
|
|
|
|
|
|
|
let flag = false;
|
2025-09-19 13:46:33 +08:00
|
|
|
if (res.code != 200) {
|
2025-10-09 14:34:22 +08:00
|
|
|
return flag;
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
|
|
|
|
let f = res.data.find(v => {
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
if (v.dictLabel.toLowerCase() == os) {
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
});
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log("f=", f)
|
2025-09-19 13:46:33 +08:00
|
|
|
if (f) {
|
|
|
|
|
if (f.dictValue == currentVersion) {
|
2025-10-09 14:34:22 +08:00
|
|
|
flag = false;
|
|
|
|
|
return flag;
|
|
|
|
|
}
|
|
|
|
|
if(!f.dictValue || !f.remark){
|
|
|
|
|
flag=false;
|
2025-09-19 13:46:33 +08:00
|
|
|
return;
|
|
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
flag = true;
|
2025-09-19 13:46:33 +08:00
|
|
|
uni.showModal({
|
|
|
|
|
title: '检测到更新',
|
|
|
|
|
content: '当前版本“' + currentVersion + '”,发现新版本“' + f.dictValue + '”,是否立即更新?',
|
|
|
|
|
confirmText: '立即更新',
|
|
|
|
|
cancelText: '稍后更新',
|
|
|
|
|
success: (modalRes) => {
|
|
|
|
|
if (modalRes.confirm) {
|
|
|
|
|
downloadAndInstallWgt(f.remark);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-10-09 14:34:22 +08:00
|
|
|
} else {
|
|
|
|
|
flag = false;
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
return flag;
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
let Update1 = () => {
|
|
|
|
|
return request({
|
|
|
|
|
url: '/app/auth/version',
|
|
|
|
|
method: 'get'
|
|
|
|
|
});
|
|
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
|
|
|
|
|
|
2025-09-19 13:46:33 +08:00
|
|
|
let promises = [];
|
|
|
|
|
for (var i = 0; i < urls.length; i++) {
|
|
|
|
|
promises.push(Update(urls[i]));
|
|
|
|
|
}
|
|
|
|
|
promises.push(Update1());
|
|
|
|
|
|
|
|
|
|
Promise.allSettled(promises).then(results => {
|
|
|
|
|
let length = results.length;
|
2025-10-09 14:34:22 +08:00
|
|
|
let flag = false;
|
2025-09-19 13:46:33 +08:00
|
|
|
for (var i = 0; i < length; i++) {
|
2025-10-09 14:34:22 +08:00
|
|
|
console.log('results[' + i + ']=', results[i]);
|
|
|
|
|
if (results[i].status == 'fulfilled' && results[i].value.type === '1' && !flag) {
|
|
|
|
|
if (results[i].value.statusCode === 200) {
|
|
|
|
|
flag = callbck(results[i].value)
|
|
|
|
|
}
|
2025-09-23 08:36:21 +08:00
|
|
|
// break;
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
|
|
|
|
|
if (results[i].status == 'fulfilled' && results[i].value.type !== '1' && !flag) {
|
|
|
|
|
|
|
|
|
|
flag = Callback1(results[i].value);
|
2025-09-23 08:36:21 +08:00
|
|
|
// break;
|
2025-09-19 13:46:33 +08:00
|
|
|
}
|
|
|
|
|
}
|
2025-10-09 14:34:22 +08:00
|
|
|
if (!flag) {
|
2025-09-19 13:46:33 +08:00
|
|
|
console.log("检查更新失败了");
|
2025-10-09 14:34:22 +08:00
|
|
|
} else {
|
2025-09-19 13:46:33 +08:00
|
|
|
console.log("检查更新成功");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2025-08-27 11:06:49 +08:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下载并安装wgt更新包
|
|
|
|
|
* @param {String} wgtUrl - wgt包下载地址
|
|
|
|
|
*/
|
|
|
|
|
function downloadAndInstallWgt(wgtUrl) {
|
|
|
|
|
// 显示下载进度
|
2025-09-19 13:46:33 +08:00
|
|
|
var wating = plus.nativeUI.showWaiting({
|
|
|
|
|
title: "下载中0%"
|
2025-08-27 11:06:49 +08:00
|
|
|
});
|
|
|
|
|
// uni.showLoading({
|
|
|
|
|
// title: '更新下载中...',
|
|
|
|
|
// mask: true
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// 1. 下载wgt包
|
|
|
|
|
const downloadTask = uni.downloadFile({
|
|
|
|
|
url: wgtUrl,
|
|
|
|
|
success: (downloadRes) => {
|
|
|
|
|
wating.setTitle("下载完成,正在安装");
|
|
|
|
|
if (downloadRes.statusCode === 200) {
|
|
|
|
|
// 2. 安装wgt包
|
|
|
|
|
plus.runtime.install(downloadRes.tempFilePath, {
|
|
|
|
|
force: true // 是否强制安装
|
|
|
|
|
}, () => {
|
|
|
|
|
uni.removeSavedFile({
|
|
|
|
|
filePath: downloadRes.tempFilePath,
|
|
|
|
|
success() {
|
|
|
|
|
console.log("临时文件已删除");
|
|
|
|
|
},
|
|
|
|
|
fail() {
|
|
|
|
|
console.log("无法删除临时文件");
|
|
|
|
|
},
|
|
|
|
|
complete() {
|
|
|
|
|
wating.close();
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '更新完成',
|
|
|
|
|
content: '应用已更新,是否重启应用?',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: () => {
|
|
|
|
|
// 3. 重启应用
|
|
|
|
|
plus.runtime.restart();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}, (error) => {
|
|
|
|
|
|
|
|
|
|
wating.close();
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '安装失败: ' + error.message,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 3000
|
|
|
|
|
});
|
|
|
|
|
console.error('wgt安装失败:', error);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
wating.close();
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '下载失败',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: (err) => {
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '下载失败: ' + err.errMsg,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
});
|
|
|
|
|
console.error('wgt下载失败:', err);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 监听下载进度
|
|
|
|
|
downloadTask.onProgressUpdate((progress) => {
|
|
|
|
|
console.log('下载进度: ' + progress.progress + '%');
|
2025-09-19 13:46:33 +08:00
|
|
|
wating.setTitle("下载中" + progress.progress + '%');
|
2025-08-27 11:06:49 +08:00
|
|
|
// 可以在这里更新自定义进度条
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
checkAndUpdateWgt
|
|
|
|
|
};
|