|  |  | 
 |  |  |         </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> |