admin/addon/cashier/source/os/components/nc-update/nc-update.vue

149 lines
3.0 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.

<template>
<view>
<uni-popup ref="updatePopup" type="center" :maskClick="false" v-if="versionInfo">
<view class="update-wrap">
<view class="head"><image :src="$util.img('public/uniapp/cashier/update_header.png')"></image></view>
<view class="body">
<view class="version-no">版本号{{ versionInfo.version }}</view>
<view class="title">更新内容</view>
<view class="desc common-scrollbar">{{ versionInfo.update_desc }}</view>
<button type="default" class="primary-btn" @click="update">立即更新</button>
<view class="giveup-update" @click="giveupUpdate" v-if="!versionInfo.is_force_upgrade">以后再说</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
/**
* app版本更新
*/
export default {
data() {
return {
versionInfo: null
};
},
created() {
// wifi模式下才检测升级
if (plus.networkinfo.getCurrentType() == plus.networkinfo.CONNECTION_WIFI) {
this.checkUpdate();
}
},
methods: {
/**
* 检测是否有新版本
*/
checkUpdate() {
this.$api.sendRequest({
url: '/cashier/storeapi/appversion/checkupdate',
data: {
app_key: this.$config.app.app_key,
version: this.$config.app.version_no,
platform: uni.getSystemInfoSync().platform
},
success: res => {
if (res.code == 0 && res.data) {
this.versionInfo = res.data;
if (!uni.getStorageSync('version_' + this.versionInfo.version_no)) {
this.$refs.updatePopup.open();
}
}
}
});
},
/**
* 确认更新
*/
update() {
let systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform == 'android') {
uni.showLoading({});
uni.downloadFile({
url: this.$util.img(this.versionInfo.package_path),
success: data => {
uni.hideLoading();
if (data.statusCode === 200) {
plus.runtime.install(
data.tempFilePath,
{
force: false
},
function() {
plus.runtime.restart();
}
);
}
},
fail: res => {
this.$util.showToast({ title: '安装包下载失败' });
uni.hideLoading();
}
});
} else if (systemInfo.platform == 'ios') {
plus.runtime.launchApplication({ action: this.versionInfo.package_path }, e => {
this.$util.showToast({ title: e.message });
this.$refs.updatePopup.close();
});
}
},
/**
* 放弃本次更新
*/
giveupUpdate() {
uni.setStorageSync('version_' + this.versionInfo.version_no, 1);
this.$refs.updatePopup.close();
}
}
};
</script>
<style lang="scss">
.update-wrap {
width: 3rem;
.head {
height: 0.98rem;
image {
width: 3rem;
height: 0.98rem;
}
}
.body {
padding: 0.2rem 0.3rem;
background: #fff;
.version-no {
margin-bottom: 0.15rem;
}
.desc {
max-height: 1rem;
}
.title {
font-size: 0.16rem;
font-weight: 700;
margin-bottom: 0.15rem;
}
.primary-btn {
margin-top: 0.15rem;
}
.giveup-update {
margin-top: 0.15rem;
text-align: center;
line-height: 1;
}
}
}
/deep/ .uni-popup {
z-index: 1010;
}
</style>