From c9c263dc43ad90f95f24a036cee9e6b47afb596c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 21 十二月 2024 18:44:20 +0800 Subject: [PATCH] 新建盐城德森项目 --- uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue | 1000 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 500 insertions(+), 500 deletions(-) diff --git a/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue b/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue index fc3a6cc..5f0ddfd 100644 --- a/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue +++ b/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue @@ -1,500 +1,500 @@ -<template> - <view class="mask flex-center"> - <view class="content botton-radius"> - <view class="content-top"> - <text class="content-top-text">{{title}}</text> - <image class="content-top" style="top: 0;" width="100%" height="100%" src="../images/bg_top.png"> - </image> - </view> - <view class="content-header"></view> - <view class="content-body"> - <view class="title"> - <text>{{subTitle}}</text> - <!-- <text style="padding-left:20rpx;font-size: 0.5em;color: #666;">v.{{version}}</text> --> - </view> - <view class="body"> - <scroll-view class="box-des-scroll" scroll-y="true"> - <text class="box-des"> - {{contents}} - </text> - </scroll-view> - </view> - <view class="footer flex-center"> - <template v-if="isiOS"> - <button class="content-button" style="border: none;color: #fff;" plain @click="jumpToAppStore"> - {{downLoadBtnTextiOS}} - </button> - </template> - <template v-else> - <template v-if="!downloadSuccess"> - <view class="progress-box flex-column" v-if="downloading"> - <progress class="progress" border-radius="35" :percent="downLoadPercent" - activeColor="#3DA7FF" show-info stroke-width="10" /> - <view style="width:100%;font-size: 28rpx;display: flex;justify-content: space-around;"> - <text>{{downLoadingText}}</text> - <text>({{downloadedSize}}/{{packageFileSize}}M)</text> - </view> - </view> - - <button v-else class="content-button" style="border: none;color: #fff;" plain - @click="downloadPackage"> - {{downLoadBtnText}} - </button> - </template> - <button v-else-if="downloadSuccess && !installed" class="content-button" - style="border: none;color: #fff;" plain :loading="installing" :disabled="installing" - @click="installPackage"> - {{installing ? '姝e湪瀹夎鈥︹��' : '涓嬭浇瀹屾垚锛岀珛鍗冲畨瑁�'}} - </button> - - <button v-if="installed && isWGT" class="content-button" style="border: none;color: #fff;" plain - @click="restart"> - 瀹夎瀹屾瘯锛岀偣鍑婚噸鍚� - </button> - </template> - </view> - </view> - - <image v-if="!is_mandatory" class="close-img" src="../images/app_update_close.png" - @click.stop="closeUpdate"></image> - </view> - </view> -</template> - -<script> - const localFilePathKey = '__localFilePath__' - const platform_iOS = 'iOS'; - let downloadTask = null; - - /** - * 瀵规瘮鐗堟湰鍙凤紝濡傞渶瑕侊紝璇疯嚜琛屼慨鏀瑰垽鏂鍒� - * 鏀寔姣斿 ("3.0.0.0.0.1.0.1", "3.0.0.0.0.1") ("3.0.0.1", "3.0") ("3.1.1", "3.1.1.1") 涔嬬被鐨� - * @param {Object} v1 - * @param {Object} v2 - * v1 > v2 return 1 - * v1 < v2 return -1 - * v1 == v2 return 0 - */ - function compare(v1 = '0', v2 = '0') { - v1 = String(v1).split('.') - v2 = String(v2).split('.') - const minVersionLens = Math.min(v1.length, v2.length); - - let result = 0; - for (let i = 0; i < minVersionLens; i++) { - const curV1 = Number(v1[i]) - const curV2 = Number(v2[i]) - - if (curV1 > curV2) { - result = 1 - break; - } else if(curV1 < curV2) { - result = -1 - break; - } - } - - if (result === 0 && (v1.length !== v2.length)) { - const v1BiggerThenv2 = v1.length > v2.length; - const maxLensVersion = v1BiggerThenv2 ? v1 : v2; - for (let i = minVersionLens; i < maxLensVersion.length; i++) { - const curVersion = Number(maxLensVersion[i]) - if (curVersion > 0) { - v1BiggerThenv2 ? result = 1 : result = -1 - break; - } - } - } - - return result; - } - - export default { - data() { - return { - // 浠庝箣鍓嶄笅杞藉畨瑁� - installForBeforeFilePath: '', - - // 瀹夎 - installed: false, - installing: false, - - // 涓嬭浇 - downloadSuccess: false, - downloading: false, - - downLoadPercent: 0, - downloadedSize: 0, - packageFileSize: 0, - - tempFilePath: '', // 瑕佸畨瑁呯殑鏈湴鍖呭湴鍧� - - // 榛樿瀹夎鍖呬俊鎭� - title: '鏇存柊鏃ュ織', - contents: '', - is_mandatory: false, - - // 鍙嚜瀹氫箟灞炴�� - subTitle: '鍙戠幇鏂扮増鏈�', - downLoadBtnTextiOS: '绔嬪嵆璺宠浆鏇存柊', - downLoadBtnText: '绔嬪嵆涓嬭浇鏇存柊', - downLoadingText: '瀹夎鍖呬笅杞戒腑锛岃绋嶅悗' - } - }, - onLoad({ - local_storage_key - }) { - if (!local_storage_key) { - console.error('local_storage_key涓虹┖锛岃妫�鏌ュ悗閲嶈瘯') - uni.navigateBack() - return; - }; - - const localPackageInfo = uni.getStorageSync(local_storage_key); - if (!localPackageInfo) { - console.error('瀹夎鍖呬俊鎭负绌猴紝璇锋鏌ュ悗閲嶈瘯') - uni.navigateBack() - return; - }; - - const requiredKey = ['version', 'url', 'type'] - for (let key in localPackageInfo) { - if (requiredKey.indexOf(key) !== -1 && !localPackageInfo[key]) { - console.error(`鍙傛暟 ${key} 蹇呭~锛岃妫�鏌ュ悗閲嶈瘯`) - uni.navigateBack() - return; - } - } - - Object.assign(this, localPackageInfo) - this.checkLocalStoragePackage() - }, - onBackPress() { - // 寮哄埗鏇存柊涓嶅厑璁歌繑鍥� - if (this.is_mandatory) { - return true - } - - downloadTask && downloadTask.abort() - }, - computed: { - isWGT() { - return this.type === 'wgt' - }, - isiOS() { - return !this.isWGT ? this.platform.includes(platform_iOS) : false; - } - }, - methods: { - checkLocalStoragePackage() { - // 濡傛灉宸茬粡鏈変笅杞藉ソ鐨勫寘锛屽垯鐩存帴鎻愮ず瀹夎 - const localFilePathRecord = uni.getStorageSync(localFilePathKey) - if (localFilePathRecord) { - const { - version, - savedFilePath, - installed - } = localFilePathRecord - - // 姣斿鐗堟湰 - if (!installed && compare(version, this.version) === 0) { - this.downloadSuccess = true; - this.installForBeforeFilePath = savedFilePath; - this.tempFilePath = savedFilePath - } else { - // 濡傛灉淇濆瓨鐨勫寘鐗堟湰灏� 鎴� 宸插畨瑁呰繃锛屽垯鐩存帴鍒犻櫎 - this.deleteSavedFile(savedFilePath) - } - } - }, - async closeUpdate() { - if (this.downloading) { - if (this.is_mandatory) { - return uni.showToast({ - title: '涓嬭浇涓紝璇风◢鍚庘�︹��', - icon: 'none', - duration: 500 - }) - } - uni.showModal({ - title: '鏄惁鍙栨秷涓嬭浇锛�', - cancelText: '鍚�', - confirmText: '鏄�', - success: res => { - if (res.confirm) { - downloadTask && downloadTask.abort() - uni.navigateBack() - } - } - }); - return; - } - - if (this.downloadSuccess && this.tempFilePath) { - // 鍖呭凡缁忎笅杞藉畬姣曪紝绋嶅悗瀹夎锛屽皢鍖呬繚瀛樺湪鏈湴 - await this.saveFile(this.tempFilePath, this.version) - uni.navigateBack() - return; - } - - uni.navigateBack() - }, - downloadPackage() { - this.downloading = true; - - //涓嬭浇鍖� - downloadTask = uni.downloadFile({ - url: this.url, - success: res => { - if (res.statusCode == 200) { - this.downloadSuccess = true; - this.tempFilePath = res.tempFilePath - - // 寮哄埗鏇存柊锛岀洿鎺ュ畨瑁� - if (this.is_mandatory) { - this.installPackage(); - } - } - }, - complete: () => { - this.downloading = false; - - this.downLoadPercent = 0 - this.downloadedSize = 0 - this.packageFileSize = 0 - - downloadTask = null; - } - }); - - downloadTask.onProgressUpdate(res => { - this.downLoadPercent = res.progress; - this.downloadedSize = (res.totalBytesWritten / Math.pow(1024, 2)).toFixed(2); - this.packageFileSize = (res.totalBytesExpectedToWrite / Math.pow(1024, 2)).toFixed(2); - }); - }, - installPackage() { - // #ifdef APP-PLUS - // wgt璧勬簮鍖呭畨瑁� - if (this.isWGT) { - this.installing = true; - } - - plus.runtime.install(this.tempFilePath, { - force: false - }, async res => { - this.installing = false; - this.installed = true; - - // wgt鍖咃紝瀹夎鍚庝細鎻愮ず 瀹夎鎴愬姛锛屾槸鍚﹂噸鍚� - if (this.isWGT) { - // 寮哄埗鏇存柊瀹夎瀹屾垚閲嶅惎 - if (this.is_mandatory) { - uni.showLoading({ - icon: 'none', - title: '瀹夎鎴愬姛锛屾鍦ㄩ噸鍚�︹��' - }) - - setTimeout(() => { - uni.hideLoading() - this.restart(); - }, 1000) - } - } else { - const localFilePathRecord = uni.getStorageSync(localFilePathKey) - uni.setStorageSync(localFilePathKey, { - ...localFilePathRecord, - installed: true - }) - } - }, async err => { - // 濡傛灉鏄畨瑁呬箣鍓嶇殑鍖咃紝瀹夎澶辫触鍚庡垹闄や箣鍓嶇殑鍖� - if (this.installForBeforeFilePath) { - await this.deleteSavedFile(this.installForBeforeFilePath) - this.installForBeforeFilePath = ''; - } - - // 瀹夎澶辫触闇�瑕侀噸鏂颁笅杞藉畨瑁呭寘 - this.installing = false; - this.installed = false; - - uni.showModal({ - title: `鏇存柊澶辫触${this.isWGT ? '' : '锛孉PK鏂囦欢涓嶅瓨鍦�'}锛岃閲嶆柊涓嬭浇`, - content: err.message, - showCancel: false - }); - }); - - // 闈瀢gt鍖咃紝瀹夎璺冲嚭瑕嗙洊瀹夎锛屾澶勭洿鎺ヨ繑鍥炰笂涓�椤� - if (!this.isWGT) { - uni.navigateBack() - } - // #endif - }, - restart() { - this.installed = false; - // #ifdef APP-PLUS - //鏇存柊瀹岄噸鍚痑pp - plus.runtime.restart(); - // #endif - }, - async saveFile(tempFilePath, version) { - const [err, res] = await uni.saveFile({ - tempFilePath - }) - if (err) { - return; - } - uni.setStorageSync(localFilePathKey, { - version, - savedFilePath: res.savedFilePath - }) - }, - deleteSavedFile(filePath) { - uni.removeStorageSync(localFilePathKey) - return uni.removeSavedFile({ - filePath - }) - }, - jumpToAppStore() { - plus.runtime.openURL(this.url); - } - } - } -</script> - -<style> - page { - background: transparent; - } - - .flex-center { - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - justify-content: center; - align-items: center; - } - - .mask { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, .65); - } - - .botton-radius { - border-bottom-left-radius: 30rpx; - border-bottom-right-radius: 30rpx; - } - - .content { - position: relative; - top: 0; - width: 600rpx; - background-color: #fff; - box-sizing: border-box; - padding: 0 50rpx; - font-family: Source Han Sans CN; - } - - .text { - /* #ifndef APP-NVUE */ - display: block; - /* #endif */ - line-height: 200px; - text-align: center; - color: #FFFFFF; - } - - .content-top { - position: absolute; - top: -195rpx; - left: 0; - width: 600rpx; - height: 270rpx; - } - - .content-top-text { - font-size: 45rpx; - font-weight: bold; - color: #F8F8FA; - position: absolute; - top: 120rpx; - left: 50rpx; - z-index: 1; - } - - .content-header { - height: 70rpx; - } - - .title { - font-size: 33rpx; - font-weight: bold; - color: #3DA7FF; - line-height: 38px; - } - - .footer { - height: 150rpx; - display: flex; - align-items: center; - justify-content: space-around; - } - - .box-des-scroll { - box-sizing: border-box; - padding: 0 40rpx; - height: 200rpx; - text-align: left; - } - - .box-des { - font-size: 26rpx; - color: #000000; - line-height: 50rpx; - } - - .progress-box { - width: 100%; - } - - .progress { - width: 90%; - height: 40rpx; - border-radius: 35px; - } - - .close-img { - width: 70rpx; - height: 70rpx; - z-index: 1000; - position: absolute; - bottom: -120rpx; - left: calc(50% - 70rpx / 2); - } - - .content-button { - text-align: center; - flex: 1; - font-size: 30rpx; - font-weight: 400; - color: #FFFFFF; - border-radius: 40rpx; - margin: 0 18rpx; - - height: 80rpx; - line-height: 80rpx; - - background: linear-gradient(to right, #1785ff, #3DA7FF); - } - - .flex-column { - display: flex; - flex-direction: column; - align-items: center; - } -</style> +<template> + <view class="mask flex-center"> + <view class="content botton-radius"> + <view class="content-top"> + <text class="content-top-text">{{title}}</text> + <image class="content-top" style="top: 0;" width="100%" height="100%" src="../images/bg_top.png"> + </image> + </view> + <view class="content-header"></view> + <view class="content-body"> + <view class="title"> + <text>{{subTitle}}</text> + <!-- <text style="padding-left:20rpx;font-size: 0.5em;color: #666;">v.{{version}}</text> --> + </view> + <view class="body"> + <scroll-view class="box-des-scroll" scroll-y="true"> + <text class="box-des"> + {{contents}} + </text> + </scroll-view> + </view> + <view class="footer flex-center"> + <template v-if="isiOS"> + <button class="content-button" style="border: none;color: #fff;" plain @click="jumpToAppStore"> + {{downLoadBtnTextiOS}} + </button> + </template> + <template v-else> + <template v-if="!downloadSuccess"> + <view class="progress-box flex-column" v-if="downloading"> + <progress class="progress" border-radius="35" :percent="downLoadPercent" + activeColor="#3DA7FF" show-info stroke-width="10" /> + <view style="width:100%;font-size: 28rpx;display: flex;justify-content: space-around;"> + <text>{{downLoadingText}}</text> + <text>({{downloadedSize}}/{{packageFileSize}}M)</text> + </view> + </view> + + <button v-else class="content-button" style="border: none;color: #fff;" plain + @click="downloadPackage"> + {{downLoadBtnText}} + </button> + </template> + <button v-else-if="downloadSuccess && !installed" class="content-button" + style="border: none;color: #fff;" plain :loading="installing" :disabled="installing" + @click="installPackage"> + {{installing ? '姝e湪瀹夎鈥︹��' : '涓嬭浇瀹屾垚锛岀珛鍗冲畨瑁�'}} + </button> + + <button v-if="installed && isWGT" class="content-button" style="border: none;color: #fff;" plain + @click="restart"> + 瀹夎瀹屾瘯锛岀偣鍑婚噸鍚� + </button> + </template> + </view> + </view> + + <image v-if="!is_mandatory" class="close-img" src="../images/app_update_close.png" + @click.stop="closeUpdate"></image> + </view> + </view> +</template> + +<script> + const localFilePathKey = '__localFilePath__' + const platform_iOS = 'iOS'; + let downloadTask = null; + + /** + * 瀵规瘮鐗堟湰鍙凤紝濡傞渶瑕侊紝璇疯嚜琛屼慨鏀瑰垽鏂鍒� + * 鏀寔姣斿 ("3.0.0.0.0.1.0.1", "3.0.0.0.0.1") ("3.0.0.1", "3.0") ("3.1.1", "3.1.1.1") 涔嬬被鐨� + * @param {Object} v1 + * @param {Object} v2 + * v1 > v2 return 1 + * v1 < v2 return -1 + * v1 == v2 return 0 + */ + function compare(v1 = '0', v2 = '0') { + v1 = String(v1).split('.') + v2 = String(v2).split('.') + const minVersionLens = Math.min(v1.length, v2.length); + + let result = 0; + for (let i = 0; i < minVersionLens; i++) { + const curV1 = Number(v1[i]) + const curV2 = Number(v2[i]) + + if (curV1 > curV2) { + result = 1 + break; + } else if(curV1 < curV2) { + result = -1 + break; + } + } + + if (result === 0 && (v1.length !== v2.length)) { + const v1BiggerThenv2 = v1.length > v2.length; + const maxLensVersion = v1BiggerThenv2 ? v1 : v2; + for (let i = minVersionLens; i < maxLensVersion.length; i++) { + const curVersion = Number(maxLensVersion[i]) + if (curVersion > 0) { + v1BiggerThenv2 ? result = 1 : result = -1 + break; + } + } + } + + return result; + } + + export default { + data() { + return { + // 浠庝箣鍓嶄笅杞藉畨瑁� + installForBeforeFilePath: '', + + // 瀹夎 + installed: false, + installing: false, + + // 涓嬭浇 + downloadSuccess: false, + downloading: false, + + downLoadPercent: 0, + downloadedSize: 0, + packageFileSize: 0, + + tempFilePath: '', // 瑕佸畨瑁呯殑鏈湴鍖呭湴鍧� + + // 榛樿瀹夎鍖呬俊鎭� + title: '鏇存柊鏃ュ織', + contents: '', + is_mandatory: false, + + // 鍙嚜瀹氫箟灞炴�� + subTitle: '鍙戠幇鏂扮増鏈�', + downLoadBtnTextiOS: '绔嬪嵆璺宠浆鏇存柊', + downLoadBtnText: '绔嬪嵆涓嬭浇鏇存柊', + downLoadingText: '瀹夎鍖呬笅杞戒腑锛岃绋嶅悗' + } + }, + onLoad({ + local_storage_key + }) { + if (!local_storage_key) { + console.error('local_storage_key涓虹┖锛岃妫�鏌ュ悗閲嶈瘯') + uni.navigateBack() + return; + }; + + const localPackageInfo = uni.getStorageSync(local_storage_key); + if (!localPackageInfo) { + console.error('瀹夎鍖呬俊鎭负绌猴紝璇锋鏌ュ悗閲嶈瘯') + uni.navigateBack() + return; + }; + + const requiredKey = ['version', 'url', 'type'] + for (let key in localPackageInfo) { + if (requiredKey.indexOf(key) !== -1 && !localPackageInfo[key]) { + console.error(`鍙傛暟 ${key} 蹇呭~锛岃妫�鏌ュ悗閲嶈瘯`) + uni.navigateBack() + return; + } + } + + Object.assign(this, localPackageInfo) + this.checkLocalStoragePackage() + }, + onBackPress() { + // 寮哄埗鏇存柊涓嶅厑璁歌繑鍥� + if (this.is_mandatory) { + return true + } + + downloadTask && downloadTask.abort() + }, + computed: { + isWGT() { + return this.type === 'wgt' + }, + isiOS() { + return !this.isWGT ? this.platform.includes(platform_iOS) : false; + } + }, + methods: { + checkLocalStoragePackage() { + // 濡傛灉宸茬粡鏈変笅杞藉ソ鐨勫寘锛屽垯鐩存帴鎻愮ず瀹夎 + const localFilePathRecord = uni.getStorageSync(localFilePathKey) + if (localFilePathRecord) { + const { + version, + savedFilePath, + installed + } = localFilePathRecord + + // 姣斿鐗堟湰 + if (!installed && compare(version, this.version) === 0) { + this.downloadSuccess = true; + this.installForBeforeFilePath = savedFilePath; + this.tempFilePath = savedFilePath + } else { + // 濡傛灉淇濆瓨鐨勫寘鐗堟湰灏� 鎴� 宸插畨瑁呰繃锛屽垯鐩存帴鍒犻櫎 + this.deleteSavedFile(savedFilePath) + } + } + }, + async closeUpdate() { + if (this.downloading) { + if (this.is_mandatory) { + return uni.showToast({ + title: '涓嬭浇涓紝璇风◢鍚庘�︹��', + icon: 'none', + duration: 500 + }) + } + uni.showModal({ + title: '鏄惁鍙栨秷涓嬭浇锛�', + cancelText: '鍚�', + confirmText: '鏄�', + success: res => { + if (res.confirm) { + downloadTask && downloadTask.abort() + uni.navigateBack() + } + } + }); + return; + } + + if (this.downloadSuccess && this.tempFilePath) { + // 鍖呭凡缁忎笅杞藉畬姣曪紝绋嶅悗瀹夎锛屽皢鍖呬繚瀛樺湪鏈湴 + await this.saveFile(this.tempFilePath, this.version) + uni.navigateBack() + return; + } + + uni.navigateBack() + }, + downloadPackage() { + this.downloading = true; + + //涓嬭浇鍖� + downloadTask = uni.downloadFile({ + url: this.url, + success: res => { + if (res.statusCode == 200) { + this.downloadSuccess = true; + this.tempFilePath = res.tempFilePath + + // 寮哄埗鏇存柊锛岀洿鎺ュ畨瑁� + if (this.is_mandatory) { + this.installPackage(); + } + } + }, + complete: () => { + this.downloading = false; + + this.downLoadPercent = 0 + this.downloadedSize = 0 + this.packageFileSize = 0 + + downloadTask = null; + } + }); + + downloadTask.onProgressUpdate(res => { + this.downLoadPercent = res.progress; + this.downloadedSize = (res.totalBytesWritten / Math.pow(1024, 2)).toFixed(2); + this.packageFileSize = (res.totalBytesExpectedToWrite / Math.pow(1024, 2)).toFixed(2); + }); + }, + installPackage() { + // #ifdef APP-PLUS + // wgt璧勬簮鍖呭畨瑁� + if (this.isWGT) { + this.installing = true; + } + + plus.runtime.install(this.tempFilePath, { + force: false + }, async res => { + this.installing = false; + this.installed = true; + + // wgt鍖咃紝瀹夎鍚庝細鎻愮ず 瀹夎鎴愬姛锛屾槸鍚﹂噸鍚� + if (this.isWGT) { + // 寮哄埗鏇存柊瀹夎瀹屾垚閲嶅惎 + if (this.is_mandatory) { + uni.showLoading({ + icon: 'none', + title: '瀹夎鎴愬姛锛屾鍦ㄩ噸鍚�︹��' + }) + + setTimeout(() => { + uni.hideLoading() + this.restart(); + }, 1000) + } + } else { + const localFilePathRecord = uni.getStorageSync(localFilePathKey) + uni.setStorageSync(localFilePathKey, { + ...localFilePathRecord, + installed: true + }) + } + }, async err => { + // 濡傛灉鏄畨瑁呬箣鍓嶇殑鍖咃紝瀹夎澶辫触鍚庡垹闄や箣鍓嶇殑鍖� + if (this.installForBeforeFilePath) { + await this.deleteSavedFile(this.installForBeforeFilePath) + this.installForBeforeFilePath = ''; + } + + // 瀹夎澶辫触闇�瑕侀噸鏂颁笅杞藉畨瑁呭寘 + this.installing = false; + this.installed = false; + + uni.showModal({ + title: `鏇存柊澶辫触${this.isWGT ? '' : '锛孉PK鏂囦欢涓嶅瓨鍦�'}锛岃閲嶆柊涓嬭浇`, + content: err.message, + showCancel: false + }); + }); + + // 闈瀢gt鍖咃紝瀹夎璺冲嚭瑕嗙洊瀹夎锛屾澶勭洿鎺ヨ繑鍥炰笂涓�椤� + if (!this.isWGT) { + uni.navigateBack() + } + // #endif + }, + restart() { + this.installed = false; + // #ifdef APP-PLUS + //鏇存柊瀹岄噸鍚痑pp + plus.runtime.restart(); + // #endif + }, + async saveFile(tempFilePath, version) { + const [err, res] = await uni.saveFile({ + tempFilePath + }) + if (err) { + return; + } + uni.setStorageSync(localFilePathKey, { + version, + savedFilePath: res.savedFilePath + }) + }, + deleteSavedFile(filePath) { + uni.removeStorageSync(localFilePathKey) + return uni.removeSavedFile({ + filePath + }) + }, + jumpToAppStore() { + plus.runtime.openURL(this.url); + } + } + } +</script> + +<style> + page { + background: transparent; + } + + .flex-center { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + justify-content: center; + align-items: center; + } + + .mask { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, .65); + } + + .botton-radius { + border-bottom-left-radius: 30rpx; + border-bottom-right-radius: 30rpx; + } + + .content { + position: relative; + top: 0; + width: 600rpx; + background-color: #fff; + box-sizing: border-box; + padding: 0 50rpx; + font-family: Source Han Sans CN; + } + + .text { + /* #ifndef APP-NVUE */ + display: block; + /* #endif */ + line-height: 200px; + text-align: center; + color: #FFFFFF; + } + + .content-top { + position: absolute; + top: -195rpx; + left: 0; + width: 600rpx; + height: 270rpx; + } + + .content-top-text { + font-size: 45rpx; + font-weight: bold; + color: #F8F8FA; + position: absolute; + top: 120rpx; + left: 50rpx; + z-index: 1; + } + + .content-header { + height: 70rpx; + } + + .title { + font-size: 33rpx; + font-weight: bold; + color: #3DA7FF; + line-height: 38px; + } + + .footer { + height: 150rpx; + display: flex; + align-items: center; + justify-content: space-around; + } + + .box-des-scroll { + box-sizing: border-box; + padding: 0 40rpx; + height: 200rpx; + text-align: left; + } + + .box-des { + font-size: 26rpx; + color: #000000; + line-height: 50rpx; + } + + .progress-box { + width: 100%; + } + + .progress { + width: 90%; + height: 40rpx; + border-radius: 35px; + } + + .close-img { + width: 70rpx; + height: 70rpx; + z-index: 1000; + position: absolute; + bottom: -120rpx; + left: calc(50% - 70rpx / 2); + } + + .content-button { + text-align: center; + flex: 1; + font-size: 30rpx; + font-weight: 400; + color: #FFFFFF; + border-radius: 40rpx; + margin: 0 18rpx; + + height: 80rpx; + line-height: 80rpx; + + background: linear-gradient(to right, #1785ff, #3DA7FF); + } + + .flex-column { + display: flex; + flex-direction: column; + align-items: center; + } +</style> -- Gitblit v1.9.1