176 lines
3.7 KiB
JavaScript
176 lines
3.7 KiB
JavaScript
|
import {
|
||
|
getGXconfig
|
||
|
} from "@/api/uniMP.js";
|
||
|
import {
|
||
|
HTTP_REQUEST_URL
|
||
|
} from '@/config/app';
|
||
|
const mp = uni.requireNativePlugin('uniMP');
|
||
|
import store from "@/store/modules/app.js"
|
||
|
|
||
|
let appid = ''; // 应用id
|
||
|
let wgtFile = ''; // 应用文件地址
|
||
|
let timer = null; // 加载计时器
|
||
|
|
||
|
// 比较版本号大小
|
||
|
function compareVersions(version1, version2) {
|
||
|
const arr1 = version1.split('.').map(Number);
|
||
|
const arr2 = version2.split('.').map(Number);
|
||
|
for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {
|
||
|
const num1 = i < arr1.length ? arr1[i] : 0;
|
||
|
const num2 = i < arr2.length ? arr2[i] : 0;
|
||
|
if (num1 > num2) {
|
||
|
return 1;
|
||
|
} else if (num1 < num2) {
|
||
|
return -1;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
// 加载小程序
|
||
|
const loadMP = async (id) => {
|
||
|
appid = id;
|
||
|
let info = await getGXconfig();
|
||
|
console.log('最新版本', info.data);
|
||
|
console.log(mp, uni);
|
||
|
// return ;
|
||
|
uni.showLoading({
|
||
|
title: '初始化中...',
|
||
|
mask: true
|
||
|
})
|
||
|
mp.getUniMPVersion(id, (ret) => {
|
||
|
console.log('当前版本', ret);
|
||
|
let flag;
|
||
|
if (HTTP_REQUEST_URL == 'https://shop.lihaink.cn') {
|
||
|
flag = false
|
||
|
} else {
|
||
|
flag = true
|
||
|
}
|
||
|
if (0 != ret.code || compareVersions(info.data.version, ret.versionInfo.name) == 1 || flag ==
|
||
|
true) {
|
||
|
let count = 0;
|
||
|
timer = setInterval(() => {
|
||
|
if (count < 100) uni.showLoading({
|
||
|
title: `初始化中... ${count}%`,
|
||
|
mask: true
|
||
|
})
|
||
|
else uni.showLoading({
|
||
|
title: '初始化中...100%',
|
||
|
mask: true
|
||
|
})
|
||
|
}, 600)
|
||
|
let downloadTask = uni.downloadFile({
|
||
|
url: info.data.version_info?.dow_url,
|
||
|
success(res) {
|
||
|
wgtFile = res.tempFilePath;
|
||
|
console.log('初始化完成', wgtFile);
|
||
|
installMP();
|
||
|
},
|
||
|
fail(res) {
|
||
|
clearInterval(timer);
|
||
|
timer = null;
|
||
|
uni.hideLoading();
|
||
|
}
|
||
|
});
|
||
|
downloadTask.onProgressUpdate((res) => {
|
||
|
// console.log('初始化进度' + res.progress);
|
||
|
if (res.progress > count) count += 10;
|
||
|
if (count >= 90) {
|
||
|
clearInterval(timer);
|
||
|
timer = null;
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
open()
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// 按URL加载小程序
|
||
|
const loadMPurl = async (e) => {
|
||
|
appid = e.id;
|
||
|
mp.getUniMPVersion(appid, (ret) => {
|
||
|
console.log('当前版本', ret);
|
||
|
wgtFile = e.url;
|
||
|
doInstallMP();
|
||
|
// if (0 != ret.code) {
|
||
|
// wgtFile = e.url;
|
||
|
// installMP();
|
||
|
// } else {
|
||
|
// open()
|
||
|
// }
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// 小程序版本信息
|
||
|
const getVersion = (id) => {
|
||
|
appid = id;
|
||
|
return new Promise((resolve, reject) => {
|
||
|
mp.getUniMPVersion(appid, (ret) => {
|
||
|
console.log('供销', ret);
|
||
|
});
|
||
|
})
|
||
|
}
|
||
|
// 初始化小程序
|
||
|
const installMP = () => {
|
||
|
mp.getUniMPVersion(appid, (ret) => {
|
||
|
doInstallMP();
|
||
|
console.log('getUniMPVersion: ' + JSON.stringify(ret));
|
||
|
});
|
||
|
};
|
||
|
const doInstallMP = () => {
|
||
|
mp.installUniMP({
|
||
|
appid: appid,
|
||
|
wgtFile: wgtFile
|
||
|
}, (r) => {
|
||
|
if (0 == r.code) {
|
||
|
open();
|
||
|
} else {
|
||
|
uni.hideLoading();
|
||
|
clearInterval(timer);
|
||
|
timer = null;
|
||
|
uni.showModal({
|
||
|
title: '初始化失败',
|
||
|
content: JSON.stringify(r),
|
||
|
showCancel: false
|
||
|
});
|
||
|
}
|
||
|
console.log('初始化: ' + JSON.stringify(r));
|
||
|
});
|
||
|
};
|
||
|
|
||
|
const open = (id = null) => {
|
||
|
let token = uni.getStorageSync('LOGIN_STATUS_TOKEN');
|
||
|
if (!token) return uni.showToast({
|
||
|
icon: 'none',
|
||
|
title: '请先登录'
|
||
|
})
|
||
|
let avatar = store?.state?.userInfo?.avatar;
|
||
|
mp.openUniMP({
|
||
|
appid: id || appid,
|
||
|
extraData: {
|
||
|
uniMP: true,
|
||
|
token: token,
|
||
|
avatar: avatar,
|
||
|
}
|
||
|
}, (ret) => {
|
||
|
uni.hideLoading();
|
||
|
if (0 != ret.code) {
|
||
|
uni.showModal({
|
||
|
title: '启动失败',
|
||
|
content: JSON.stringify(ret),
|
||
|
showCancel: false
|
||
|
});
|
||
|
}
|
||
|
console.log('openUniMP: ' + JSON.stringify(ret));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
loadMP,
|
||
|
loadMPurl,
|
||
|
installMP,
|
||
|
doInstallMP,
|
||
|
getVersion,
|
||
|
open
|
||
|
}
|