Files
xiuhuwangqiu/App.vue
wangxiaowei 90c54df48b first commit
2025-10-22 22:56:36 +08:00

265 lines
6.7 KiB
Vue
Raw 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.

<script>
import utils from './common/utils.js';
import config from './config.js';
export default {
onLaunch: function(e) {
// 隐私政策
// #ifdef APP-PLUS
this.isFirstEnter();
// #endif
console.log('App Launch');
//#ifdef MP-WEIXIN
//检查更新
this.updateManager();
//#endif
let self = this;
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
uni.request({
url: config.app_url + '/index.php/api/index/update',
data: {
version: widgetInfo.version,
name: widgetInfo.name,
app_id: config.app_id,
platform: uni.getSystemInfoSync().platform
},
success: result => {
var data = result.data.data.result;
if (data.update && data.wgtUrl) {
self.updateWgt(data.wgtUrl);
}
if (data.update && data.pkgUrl) {
plus.nativeUI.confirm(
'有新版本更新,请点击确认更新到最新版本,以免影响使用',
function(e) {
if (e.index == 0) {
plus.runtime.openURL(data.pkgUrl);
}
},
{
title: '更新提示',
buttons: ['确定', '取消'],
verticalAlign: 'center'
}
);
}
},
error: error => {
console.log('----------------error');
console.log(error);
}
});
});
// #endif
//应用启动参数
this.onStartupScene(e.query);
// #ifndef APP-PLUS
//#endif
this.getNav();
},
beforeCreate() {},
onShow: function() {
// console.log('App Show')
},
onHide: function() {
//console.log('App Hide')
},
methods: {
isFirstEnter() {
var firstEnter = uni.getStorageSync('firstEnter'); //同步获取缓存中是否有首次进入字段
let self = this;
uni.getSystemInfo({
success(data) {
console.log('firstEnter=' + firstEnter);
// 如果是ios并且没有firstEnter缓存则弹出模态框
if (data.platform == 'ios' && !firstEnter) {
console.log('---------------');
uni.navigateTo({
url: '/pages/privacy/privacy'
});
}
}
});
},
updateManager: function() {
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function(res) {
// 请求完新版本信息的回调
if (res.hasUpdate) {
updateManager.onUpdateReady(function(res2) {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,即将重启应用',
showCancel: false,
success(res2) {
if (res2.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
}
});
updateManager.onUpdateFailed(function(res) {
// 新的版本下载失败
uni.showModal({
title: '更新提示',
content: '检查到有新版本,但下载失败,请检查网络设置',
showCancel: false
});
});
},
/**
* 小程序启动场景
*/
onStartupScene(query) {
// 获取场景值
let scene = utils.getSceneData(query);
// 记录推荐人id
let refereeId = query.referee_id;
if (refereeId > 0) {
if (!uni.getStorageSync('referee_id')) {
uni.setStorageSync('referee_id', refereeId);
}
}
// 记录分销人id
let uid = scene.uid;
if (uid > 0) {
uni.setStorageSync('referee_id', uid);
}
// 邀请有礼id
let invitation_id = query.invitation_id;
if (invitation_id > 0) {
uni.setStorageSync('invitation_id', invitation_id);
}
let invitid = scene.invitid;
if (invitid > 0) {
uni.setStorageSync('invitation_id', invitid);
}
// 如果是h5设置app_id
// #ifdef H5
let appId = query.app_id;
if (appId > 0) {
uni.setStorageSync('app_id', appId);
}
if (uni.getStorageSync('app_id')) {
this.config.app_id = uni.getStorageSync('app_id');
}
// #endif
},
getNav() {
uni.request({
url: this.config.app_url + '/index.php/api/index/nav',
data: {
app_id: this.config.app_id
},
success: result => {
let vars = result.data.data.vars.data;
let theme = result.data.data.theme.theme;
this.$store.commit('changePoints', result.data.data.points_name);
this.$store.commit('changeTheme', theme);
uni.setStorageSync('TabBar', vars);
uni.setStorageSync('theme', theme);
}
});
},
updateWgt(wgtUrl) {
uni.showModal({
title: '版本更新',
content: '检查到有新版本,请点击更新',
confirmText: '更新',
showCancel: false,
success: function(e) {
if (e.confirm) {
var dtask = plus.downloader.createDownload(wgtUrl, {}, function(d, status) {
uni.showToast({
title: '下载完成',
mask: false,
duration: 1000
});
// 下载完成
if (status == 200) {
plus.runtime.install(
d.filename,
{
force: true
},
function() {
console.log('install success...');
plus.nativeUI.alert(
'已更新至最新版本,确定后将重启应用',
function() {
plus.runtime.restart();
},
'更新提示',
'确定'
);
},
function(e) {
console.log(e);
console.log(d.filename);
uni.showToast({
title: '安装失败-01',
mask: false,
duration: 1500
});
}
);
} else {
uni.showToast({
title: '更新失败-02',
mask: false,
duration: 1500
});
}
});
try {
dtask.start(); // 开启下载的任务
var prg = 0;
var showLoading = plus.nativeUI.showWaiting('正在下载'); //创建一个showWaiting对象
dtask.addEventListener('statechanged', function(task, status) {
// 给下载任务设置一个监听 并根据状态 做操作
switch (task.state) {
case 1:
showLoading.setTitle('正在下载');
break;
case 2:
showLoading.setTitle('已连接到服务器');
break;
case 3:
prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100);
showLoading.setTitle(' 正在下载' + prg + '% ');
break;
case 4:
plus.nativeUI.closeWaiting();
//下载完成
break;
}
});
} catch (err) {
plus.nativeUI.closeWaiting();
uni.showToast({
title: '更新失败-03',
mask: false,
duration: 1500
});
}
} else {
//取消
}
}
});
}
}
};
</script>
<style lang="scss">
@import './common/iconfont.css';
@import './common/myIcon.css';
/*每个页面公共css */
@import './common/style.scss';
</style>