<u-mask :show="jindushow" :mask-click-able="false">
<view class="upshow flex flex_align_center flex_center">
<view class="upshowcon text_center">
<view class="img">
<image src="../static/images/up.png"></image>
</view>
<view class="tit ">新版本下载中</view>
<view class="jindut">
<u-line-progress :striped="true" :percent="jindu"
active-color="#007BFF"
:striped-active="true"></u-line-progress>
</view>
<view class="info">版本正在更新,请稍等</view>
</view>
</view>
</u-mask>
<u-mask :show="upshow" :mask-click-able="false">
<view class="upshow flex flex_align_center flex_center">
<view class="upshowcon ">
<view class="img">
<image src="../static/images/up.png"></image>
</view>
<view class="tit text_center">检测到有新版本</view>
<view class="updetail">
<view class="tit2 ">更新内容:</view>
<view class="upinfo flex flex-colum">
<view v-for="item in upcon">{{item}}</view>
</view>
</view>
<view class="btnlist text_center">
<view class="btn" @click="dialogConfirm">立即升级</view>
<view class="text" @click="dialogClose,upshow=false">不再提醒</view>
</view>
</view>
</view>
</u-mask>
upshow: false,
jindushow: false,
jindu: 0,
mounted() {
// 获取登录标识(登录之后回存储一个标识isLogin=1,[退出登录之后会清空],从本地获取这个标识,最开始的时候没有登录标识,获取不到isLogin='')
var isLogin = uni.getStorageSync('isLogin')
// 获取不再提醒标识 0或者空代表要提醒,1代表不再提醒
var updateTips = uni.getStorageSync('updateTips')
// 判断只有登录之后并且提醒标识不等于1才会提示更新 (提醒标识最开始为空,用户点击不再提醒之后本地会存储updateTips =1,[退出登录之后会清空])
if (isLogin == 1 && updateTips != 1) {
// 登录之后,没有不再提醒标识 就判断线上版本号和当前版本号是否一致
this.updateVersion()
} else if (isLogin == 1 && updateTips == 1) {
// 登录之后 有不再提醒标识 就判断线上版本号和(不再提醒的那个版本号)是否一致 ,不一致就提示更新
// 有不再提醒标识的话,说明肯定有不再提醒的版本
this.noTipsUpdateVersion()
}
},
noTipsUpdateVersion() {
//#ifdef APP-PLUS
var that = this
//获取 不再提醒的版本号
var noTipsVersion = uni.getStorageSync('noTipsVersion')
// 获取线上最新的版本号,
that.$work.getappupdate().then(res => {
this.upappurl=formatPic(res.records[0].appPath.replace(/\\/g,'/'))
this.newVersionCode = Number(res.records[0].appVersion)
this.upcon=res.records[0].updateContent.split('\n')
console.log(this.upcon,'oppppppppp')
// 判断不再提醒版本号小于线上最新的版本号,就提示更新
console.log(parseInt(noTipsVersion), '不再提醒版本号', parseInt(this.newVersionCode), '新版本号');
if (Number(noTipsVersion) < Number(this.newVersionCode)) {
console.log("有新版本并且需要升级");
// that.$refs.alertDialog.open()
that.upshow = true
}
})
//#endif
},
// 没有不再提醒标识的时候,用当前版本和新版本对比
updateVersion() {
//#ifdef APP-PLUS
var that = this
//获取 当前版本号
var currentVersionCode = ''
plus.runtime.getProperty(plus.runtime.appid, (info) => {
currentVersionCode = info.versionCode;
// 获取线上最新的版本号,
that.$work.getappupdate({size:1,current:1}).then(res => {
if(res.records.length>0){
console.log(res);
this.upappurl=formatPic(res.records[0].appPath.replace(/\\/g,'/'))
this.newVersionCode = Number(res.records[0].appVersion)
this.upcon=res.records[0].updateContent.split('\n')
// 判断当前的版本号小于线上最新的版本号,就提示更新
console.log(this.upcon,'this.upcon');
console.log(Number(currentVersionCode),this.newVersionCode,'新旧版本号');
if (Number(currentVersionCode) < this.newVersionCode) {
console.log("有新版本并且需要升级");
// that.$refs.alertDialog.open()
that.upshow = true
}
}
})
})
//#endif
},
dialogClose() {
console.log('用户点击不再提醒');
uni.setStorageSync('updateTips', '1');
uni.setStorageSync('noTipsVersion', this.newVersionCode);
},
dialogConfirm() {
let _this = this
let platform = plus.os.name.toLocaleLowerCase()
if (platform == 'ios') {
// 如果是ios,则跳转到appstore
plus.runtime.openURL(result.data.data.url)
return;
}
console.log(_this.upappurl,'_this.upappurl')
let versionUrl = _this.upappurl
// 创建下载任务
var dtask = plus.downloader.createDownload(versionUrl, {
filename: "_downloads/"
},
function(d, status) {
// 下载完成
if (status == 200) {
plus.runtime.install(d.filename, {
force: true
}, function() {
//进行重新启动;
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败:' + JSON.stringify(e),
icon: 'none'
})
});
} else {
uni.showToast({
title: '下载升级包失败,请手动去站点下载安装,错误码: ' + status,
icon: 'none'
})
}
});
_this.upshow = false
_this.jindushow = true;
dtask.addEventListener("statechanged", (e) => {
if (e && e.downloadedSize > 0) {
let jindu = ((e.downloadedSize / e.totalSize) *
100).toFixed(2)
_this.jindu = jindu
}
}, false);
dtask.start();
},