389 lines
8.6 KiB
JavaScript
389 lines
8.6 KiB
JavaScript
import {
|
|
Toast
|
|
} from "../libs/uniApi";
|
|
import {
|
|
getGXconfig,
|
|
miniapp
|
|
} from "@/api/uniMP.js";
|
|
import {
|
|
ENV
|
|
} 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();
|
|
uni.$emit('showLoading', true, '初始化中');
|
|
mp.getUniMPVersion(id, (ret) => {
|
|
let flag;
|
|
if (ENV == 'prod') {
|
|
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 && count > 0) uni.$emit('showLoading', true,
|
|
`初始化中... ${count}%`)
|
|
else uni.$emit('showLoading', true, `初始化中... 99%`)
|
|
}, 200)
|
|
let downloadTask = uni.downloadFile({
|
|
url: info.data.version_info?.dow_url,
|
|
// url: "https://lihai001.oss-cn-chengdu.aliyuncs.com/attach/36e40202405031202367449.wgt",
|
|
success(res) {
|
|
wgtFile = res.tempFilePath;
|
|
setTimeout(() => {
|
|
installMP();
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}, 700)
|
|
},
|
|
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()
|
|
}
|
|
});
|
|
};
|
|
|
|
//加载商城小程序
|
|
const loadMPx = async (id) => {
|
|
|
|
appid = id;
|
|
let info = await miniapp();
|
|
console.log('最新版本', info.data);
|
|
console.log(mp, uni);
|
|
// return ;
|
|
uni.$emit('showLoading', true, `初始化中...`)
|
|
mp.getUniMPVersion(id, (ret) => {
|
|
console.log('当前版本', ret);
|
|
let flag;
|
|
if (ENV == 'prod') {
|
|
flag = false
|
|
} else {
|
|
flag = true
|
|
}
|
|
if (0 != ret.code || compareVersions(info.data.appInfo.version, ret.versionInfo.name) == 1 ||
|
|
flag ==
|
|
true) {
|
|
let count = 0;
|
|
timer = setInterval(() => {
|
|
if (count < 100 && count > 0) uni.$emit('showLoading', true,
|
|
`初始化中... ${count}%`)
|
|
else uni.$emit('showLoading', true, `初始化中... 99%`)
|
|
}, 200)
|
|
|
|
let downloadTask = uni.downloadFile({
|
|
url: './__UNI__7626C0F.wgt',
|
|
success(res) {
|
|
wgtFile = res.tempFilePath;
|
|
console.log('初始化完成', wgtFile);
|
|
setTimeout(() => {
|
|
installMP();
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}, 700)
|
|
},
|
|
fail(res) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
uni.hideLoading();
|
|
}
|
|
});
|
|
downloadTask.onProgressUpdate((res) => {
|
|
if (res.progress > count) count += 10;
|
|
if (count >= 90) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}
|
|
});
|
|
} else {
|
|
open()
|
|
}
|
|
});
|
|
};
|
|
|
|
// 按信息接口加载小程序
|
|
const loadMPurl = async (e) => {
|
|
appid = e.id;
|
|
let FURL = e.url;
|
|
uni.$emit('showLoading', true, `初始化中...`)
|
|
uni.request({
|
|
url: FURL,
|
|
method: 'GET',
|
|
success: (fileInfo) => {
|
|
mp.getUniMPVersion(appid, (ret) => {
|
|
console.log('当前版本', ret);
|
|
let flag;
|
|
if (ENV == 'prod') {
|
|
flag = false
|
|
} else {
|
|
flag = true
|
|
}
|
|
if (0 != ret.code || compareVersions(fileInfo.data?.data?.version, ret
|
|
.versionInfo.name) == 1 || flag ==
|
|
true) {
|
|
let count = 0;
|
|
timer = setInterval(() => {
|
|
if (count < 100 && count > 0) uni.$emit('showLoading', true,
|
|
`初始化中... ${count}%`)
|
|
else uni.$emit('showLoading', true, `初始化中... 99%`)
|
|
}, 200)
|
|
let downloadTask = uni.downloadFile({
|
|
url: fileInfo.data?.data?.down_url,
|
|
success(res) {
|
|
wgtFile = res.tempFilePath;
|
|
console.log('初始化完成', wgtFile);
|
|
setTimeout(() => {
|
|
installMP();
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}, 700)
|
|
},
|
|
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()
|
|
}
|
|
});
|
|
|
|
},
|
|
fail: (err) => {
|
|
console.log('错误:', err);
|
|
}
|
|
})
|
|
|
|
};
|
|
|
|
// 商城配置的小程序
|
|
const loadAppletMP = async (data) => {
|
|
// console.log(data)
|
|
// return
|
|
appid = data.app_id;
|
|
// return ;
|
|
uni.$emit('showLoading', true, '初始化中');
|
|
mp.getUniMPVersion(appid, (ret) => {
|
|
let flag;
|
|
if (ENV == 'prod') {
|
|
flag = false
|
|
} else {
|
|
flag = true
|
|
}
|
|
if (data.showToast) {
|
|
uni.showLoading({
|
|
title: '正在加载中...'
|
|
});
|
|
}
|
|
|
|
if (0 != ret.code || compareVersions(data.version, ret.versionInfo.name) == 1 || flag ==
|
|
true) {
|
|
let count = 0;
|
|
timer = setInterval(() => {
|
|
if (count < 100 && count > 0) uni.$emit('showLoading', true,
|
|
`初始化中... ${count}%`)
|
|
else uni.$emit('showLoading', true, `初始化中... 99%`)
|
|
}, 200)
|
|
|
|
|
|
let downloadTask = uni.downloadFile({
|
|
url: data.url,
|
|
// url: "https://lihai001.oss-cn-chengdu.aliyuncs.com/attach/3ffde202405031254278460.wgt",
|
|
success(res) {
|
|
wgtFile = res.tempFilePath;
|
|
console.log('初始化完成', wgtFile);
|
|
setTimeout(() => {
|
|
installMP(data);
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}, 700)
|
|
},
|
|
fail(res) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
uni.hideLoading();
|
|
}
|
|
});
|
|
downloadTask.onProgressUpdate((res) => {
|
|
if (res.progress > count) count += 10;
|
|
if (count >= 90) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}
|
|
});
|
|
} else {
|
|
open()
|
|
}
|
|
});
|
|
};
|
|
|
|
// 按远程文件地址加载小程序
|
|
const loadMPdns = async (e) => {
|
|
appid = e.id;
|
|
let FURL = e.url;
|
|
uni.$emit('showLoading', true, `初始化中...`)
|
|
let count = 0;
|
|
timer = setInterval(() => {
|
|
if (count < 100 && count > 0) uni.$emit('showLoading', true, `初始化中... ${count}%`)
|
|
else uni.$emit('showLoading', true, `初始化中... 99%`)
|
|
}, 200)
|
|
let downloadTask = uni.downloadFile({
|
|
url: FURL,
|
|
success(res) {
|
|
wgtFile = res.tempFilePath;
|
|
console.log('初始化完成', wgtFile);
|
|
setTimeout(() => {
|
|
installMP();
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}, 700)
|
|
},
|
|
fail(res) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
uni.hideLoading();
|
|
}
|
|
});
|
|
downloadTask.onProgressUpdate((res) => {
|
|
if (res.progress > count) count += 10;
|
|
if (count >= 90) {
|
|
clearInterval(timer);
|
|
timer = null;
|
|
}
|
|
});
|
|
|
|
};
|
|
|
|
// 小程序版本信息
|
|
const getVersion = (id) => {
|
|
appid = id;
|
|
return new Promise((resolve, reject) => {
|
|
mp.getUniMPVersion(appid, (ret) => {
|
|
console.log('供销', ret);
|
|
});
|
|
})
|
|
}
|
|
// 初始化小程序
|
|
const installMP = (data) => {
|
|
mp.getUniMPVersion(appid, (ret) => {
|
|
doInstallMP(data);
|
|
console.log('getUniMPVersion: ' + JSON.stringify(ret));
|
|
});
|
|
};
|
|
const doInstallMP = (data) => {
|
|
mp.installUniMP({
|
|
appid: appid,
|
|
wgtFile: wgtFile
|
|
}, (r) => {
|
|
if (0 == r.code) {
|
|
open(data);
|
|
} 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) => {
|
|
uni.hideLoading()
|
|
uni.$emit('showLoading', false);
|
|
let token = uni.getStorageSync('LOGIN_STATUS_TOKEN');
|
|
if (!token) return uni.showToast({
|
|
icon: 'none',
|
|
title: '请先登录'
|
|
})
|
|
let avatar = store?.state?.userInfo?.avatar;
|
|
mp.openUniMP({
|
|
appid: typeof(id) == 'object' ? 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
|
|
});
|
|
}
|
|
|
|
if (id.type == 2) {
|
|
setTimeout(() => {
|
|
console.log("发送给小程序的", id)
|
|
mp.sendUniMPEvent(appid, 'tocustomlist', id, (ret) => {
|
|
console.log("开始发送消息")
|
|
});
|
|
}, 1000)
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
export default {
|
|
loadMP,
|
|
loadMPurl,
|
|
loadMPx,
|
|
loadMPdns,
|
|
installMP,
|
|
loadAppletMP,
|
|
doInstallMP,
|
|
getVersion,
|
|
open
|
|
} |