From a9561a3189d50f0e33d693b5226ea56adda06a08 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期四, 30 十月 2025 23:07:25 +0800
Subject: [PATCH] 巡检编辑和扫码
---
src/pages/index/index.vue | 187 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 146 insertions(+), 41 deletions(-)
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
index 6024963..e6e6454 100644
--- a/src/pages/index/index.vue
+++ b/src/pages/index/index.vue
@@ -2,35 +2,39 @@
<view style="width: 100%; height: var(--status-bar-height)" />
<view class="home">
<!-- 褰撳墠鐢ㄦ埛 -->
- <view class="text-[#0D867F] font-medium py-2 text-lg">浜ㄦ椇鐗瑰绾跨紗涓婃姤绯荤粺</view>
+ <view class="flex items-center justify-between">
+ <view class="text-[#0D867F] font-medium py-2 text-lg">
+ <text>浜ㄦ椇鐗瑰绾跨紗涓婃姤绯荤粺</text>
+ </view>
+ </view>
<WorkerCallingCard />
<!-- 閫氱煡鍏憡 -->
- <wd-notice-bar
- text="vue-uniapp-template 鏄竴涓熀浜� Vue3 + UniApp 鐨勫墠绔ā鏉块」鐩紝鎻愪緵浜嗕竴濂楀畬鏁寸殑鍓嶇瑙e喅鏂规锛屽寘鎷櫥褰曘�佹潈闄愩�佸瓧鍏搞�佹帴鍙h姹傘�佺姸鎬佺鐞嗐�侀〉闈㈠竷灞�銆佺粍浠跺皝瑁呯瓑鍔熻兘銆�"
- custom-class="space"
- >
+ <wd-notice-bar text="杩欐槸涓�鏉℃祴璇曢�氱煡鐨勬暟鎹�" custom-class="space">
<template #prefix>
<wd-icon class="prefix" name="warn-bold" size="14px"></wd-icon>
<text class="text-xs">閫氱煡</text>
</template>
</wd-notice-bar>
<!-- 蹇嵎瀵艰埅 -->
- <wd-grid clickable :column="4" class="mt-2">
- <wd-grid-item
- v-for="(item, index) in navList"
- :key="index"
- use-slot
- link-type="navigateTo"
- :url="item.url"
- >
- <view class="p-2">
- <image class="w-72rpx h-72rpx rounded-8rpx" :src="item.icon" />
- </view>
- <view class="text">{{ item.title }}</view>
- </wd-grid-item>
+ <wd-grid clickable :column="1" class="mt-2">
+ <view v-for="(item, index) in navList">
+ <wd-grid-item v-if="item.show" :key="index" use-slot link-type="navigateTo" :url="item.url">
+ <view class="p-2">
+ <image class="w-72rpx h-72rpx rounded-8rpx" :src="item.icon" />
+ </view>
+ <view class="text">{{ item.title }}</view>
+ </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">
@@ -57,7 +61,7 @@
</wd-grid-item>
</wd-grid> -->
- <wd-card>
+ <!-- <wd-card>
<template #title>
<view class="flex-between">
<view>璁块棶瓒嬪娍</view>
@@ -78,14 +82,16 @@
<view class="charts-box">
<qiun-data-charts type="area" :chartData="chartData" :opts="chartOpts" />
</view>
- </wd-card>
+ </wd-card> -->
</view>
</template>
<script setup lang="ts">
-import { dayjs } from "wot-design-uni";
+import { reactive } from "vue";
+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";
const visitStatsData = ref<VisitStatsVO>({
todayUvCount: 0,
@@ -94,6 +100,15 @@
todayPvCount: 0,
pvGrowthRate: 0,
totalPvCount: 0,
+});
+
+const message = useMessage();
+const toast = useToast();
+
+const fileProgress = reactive({
+ show: false,
+ progress: 0,
+ status: undefined,
});
// 鍥捐〃鏁版嵁
@@ -136,24 +151,37 @@
icon: "/static/icons/user.png",
title: "鐢熶骇绠$悊",
url: "/pages/production/index",
+ show: false,
+ },
+ // {
+ // icon: "/static/icons/role.png",
+ // title: "瑙掕壊绠$悊",
+ // url: "/pages/work/role/index",
+ // prem: "sys:role:query",
+ // },
+ // {
+ // icon: "/static/icons/notice.png",
+ // title: "閫氱煡鍏憡",
+ // url: "/pages/work/notice/index",
+ // prem: "sys:notice:query",
+ // },
+ // {
+ // icon: "/static/icons/setting.png",
+ // title: "绯荤粺閰嶇疆",
+ // url: "/pages/work/config/index",
+ // prem: "sys:config:query",
+ // },
+ {
+ icon: "/static/icons/log.png",
+ title: "鏃舵晥鎶ュ伐",
+ url: "/pages/timely/index",
+ show: false,
},
{
- icon: "/static/icons/role.png",
- title: "瑙掕壊绠$悊",
- url: "/pages/work/role/index",
- prem: "sys:role:query",
- },
- {
- icon: "/static/icons/notice.png",
- title: "閫氱煡鍏憡",
- url: "/pages/work/notice/index",
- prem: "sys:notice:query",
- },
- {
- icon: "/static/icons/setting.png",
- title: "绯荤粺閰嶇疆",
- url: "/pages/work/config/index",
- prem: "sys:config:query",
+ icon: "/static/icons/routingInspection.png",
+ title: "宸℃",
+ url: "/pages/routingInspection/index",
+ show: true,
},
]);
@@ -200,9 +228,74 @@
loadVisitTrendData();
};
-onReady(() => {
- // loadVisitStatsData();
- // loadVisitTrendData();
+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(() => {
+ init();
});
</script>
@@ -223,4 +316,16 @@
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>
--
Gitblit v1.9.3