268 lines
6.9 KiB
Vue
268 lines
6.9 KiB
Vue
<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';
|
||
|
||
.one-line-ellipsis {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}
|
||
.two-line-ellipsis {display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis;}
|
||
</style>
|