| | |
| | | </wd-grid-item> |
| | | </view> |
| | | </wd-grid> |
| | | |
| | | <wd-message-box /> |
| | | <wd-popup v-model="fileProgress.show" custom-style="width: 300px; border-radius: 32rpx;"> |
| | | <view class="download_box"> |
| | | <view class="download_box_title">下载中...</view> |
| | | <wd-progress :percentage="fileProgress.progress" hide-text :status="fileProgress.status" /> |
| | | </view> |
| | | </wd-popup> |
| | | <wd-toast /> |
| | | <!-- 数据统计 --> |
| | | <!-- <wd-grid :column="2" :gutter="2"> |
| | | <wd-grid-item use-slot custom-class="custom-item"> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import { reactive } from "vue"; |
| | | import { dayjs } from "wot-design-uni"; |
| | | import { dayjs, useMessage, useToast } from "wot-design-uni"; |
| | | import LogAPI, { VisitStatsVO } from "@/api/system/log"; |
| | | import WorkerCallingCard from "@/components/worker-calling-card/index.vue"; |
| | | import HomeApi from "@/api/home"; |
| | |
| | | todayPvCount: 0, |
| | | pvGrowthRate: 0, |
| | | totalPvCount: 0, |
| | | }); |
| | | |
| | | const message = useMessage(); |
| | | const toast = useToast(); |
| | | |
| | | const fileProgress = reactive({ |
| | | show: false, |
| | | progress: 0, |
| | | status: undefined, |
| | | }); |
| | | |
| | | // 图表数据 |
| | |
| | | }; |
| | | |
| | | const init = async () => { |
| | | checkVersion(); |
| | | const { data } = await HomeApi.getIndex(); |
| | | if (data.deviceGroupName == "时效组") { |
| | | navList[1].show = true; |
| | | } else { |
| | | navList[0].show = true; |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * @description 检查版本号 |
| | | */ |
| | | const checkVersion = async () => { |
| | | const systemInfo = uni.getSystemInfoSync(); |
| | | const { code, data } = await HomeApi.getVersion({ version: systemInfo.appVersion }); |
| | | if (code == 200 && data.isUpdate) { |
| | | message |
| | | .confirm({ |
| | | title: "发现新版本", |
| | | confirmButtonText: "下载", |
| | | cancelButtonText: "忽略", |
| | | }) |
| | | .then(() => { |
| | | downloadApk(data.url, data.fileSize); |
| | | }) |
| | | .catch(() => {}); |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * @desc 发起下载APK |
| | | */ |
| | | const downloadApk = (url: string, fileSize: number) => { |
| | | fileProgress.show = true; |
| | | let dtask: any = downloadFile(url); |
| | | // 下载任务开始下载 |
| | | dtask.start(); |
| | | // 关于进度的获取是使用定时器不断获取已经下载的文件的大小,再对比总大小即可 |
| | | let timer = setInterval(() => { |
| | | let percent: any = (dtask.downloadedSize / fileSize).toFixed(2); // fileSize文件总大小,后端返回的 |
| | | console.log("发起下载APK", dtask.downloadedSize); |
| | | fileProgress.progress = Math.floor(percent * 100); // 转成整数展示 |
| | | if (percent >= 1) { |
| | | // 注意百分比,及时清除定时器即可 |
| | | clearInterval(timer); |
| | | fileProgress.show = false; |
| | | } |
| | | }, 18); |
| | | }; |
| | | |
| | | // uniapp下载APK实例 |
| | | const downloadFile = (url: string) => { |
| | | return plus.downloader.createDownload(url, {}, (d, status) => { |
| | | console.log(d); |
| | | if (status == 200) { |
| | | fileProgress.show = true; |
| | | plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, (error) => { |
| | | toast.error("安装失败"); |
| | | }); |
| | | } else { |
| | | toast.error("更新失败"); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | |
| | | width: 100%; |
| | | height: 300px; |
| | | } |
| | | .download_box { |
| | | padding: 24px; |
| | | .download_box_title { |
| | | text-align: center; |
| | | font-size: 16px; |
| | | color: #000000d9; |
| | | line-height: 20px; |
| | | font-weight: 500; |
| | | padding-top: 5px; |
| | | padding-bottom: 10px; |
| | | } |
| | | } |
| | | </style> |