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 }