| | |
| | | method: "get", |
| | | }); |
| | | }; |
| | | |
| | | // çæ¬åçº§ï¼æ¥è¯¢çæ¬å表ï¼åç¬¬ä¸æ¡ææ°æ°æ®ï¼ |
| | | export const getAllVersion = (params) => { |
| | | return request({ |
| | | url: "/app/getAllVersion", |
| | | method: "get", |
| | | params, |
| | | }); |
| | | }; |
| | | // è´¨æ£åæï¼å¯ä¼ dateType: 1å¨ 2æ 3å£åº¦ï¼ |
| | | export const qualityStatistics = (params) => { |
| | | return request({ |
| | |
| | | appInfo: { |
| | | // åºç¨åç§° |
| | | name: "ruoyi-app-vue3", |
| | | // åºç¨çæ¬ |
| | | version: "1.1.0", |
| | | // åºç¨çæ¬ï¼ä¸ manifest.json ç versionName ä¿æä¸è´ï¼ |
| | | version: "1.0.0", |
| | | // åºç¨logo |
| | | logo: "/static/YGCY.png", |
| | | // 宿¹ç½ç« |
| | |
| | | { |
| | | "name" : "ä¿¡æ¯ç®¡ç", |
| | | "appid" : "__UNI__1F1A548", |
| | | "description" : "", |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus" : { |
| | | "compatible" : { |
| | | "usingComponents" : true, |
| | | "ignoreVersion" : true |
| | | }, |
| | | "usingComponents" : true, |
| | | "nvueStyleCompiler" : "uni-app", |
| | | "compilerVersion" : 3, |
| | | "splashscreen" : { |
| | | "alwaysShowBeforeRender" : true, |
| | | "waiting" : true, |
| | | "autoclose" : true, |
| | | "delay" : 0 |
| | | }, |
| | | /* 模åé
ç½® */ |
| | | "modules" : { |
| | | "Camera" : {}, |
| | | "Barcode" : {}, |
| | | "Push" : {}, |
| | | "Maps" : {} |
| | | }, |
| | | /* åºç¨åå¸ä¿¡æ¯ */ |
| | | "distribute" : { |
| | | /* androidæå
é
ç½® */ |
| | | "android" : { |
| | | "permissions" : [ |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location.gps\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location.network\"/>" |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios" : { |
| | | "dSYMs" : false, |
| | | "plist" : { |
| | | "NSLocationWhenInUseUsageDescription" : "éè¦è·åæ¨çä½ç½®ä¿¡æ¯æ¥è®°å½å®¢æ·æè®¿å°ç¹", |
| | | "NSLocationAlwaysAndWhenInUseUsageDescription" : "éè¦è·åæ¨çä½ç½®ä¿¡æ¯æ¥è®°å½å®¢æ·æè®¿å°ç¹" |
| | | } |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs" : { |
| | | "push" : { |
| | | "unipush" : { |
| | | "icons" : { |
| | | "small" : { |
| | | "ldpi" : "D:/xindao/wenjian/img/logo/app.png" |
| | | } |
| | | }, |
| | | "offline" : false |
| | | } |
| | | }, |
| | | "maps" : { |
| | | "amap" : { |
| | | "name" : "amap_18330707920ae9zOwCD", |
| | | "appkey_ios" : "c2b4e3889ab4cb9468e9c8ae4f3ab53f", |
| | | "appkey_android" : "c2b4e3889ab4cb9468e9c8ae4f3ab53f" |
| | | } |
| | | } |
| | | }, |
| | | "icons" : { |
| | | "android" : { |
| | | "hdpi" : "unpackage/res/icons/72x72.png", |
| | | "xhdpi" : "unpackage/res/icons/96x96.png", |
| | | "xxhdpi" : "unpackage/res/icons/144x144.png", |
| | | "xxxhdpi" : "unpackage/res/icons/192x192.png" |
| | | }, |
| | | "ios" : { |
| | | "appstore" : "unpackage/res/icons/1024x1024.png", |
| | | "ipad" : { |
| | | "app" : "unpackage/res/icons/76x76.png", |
| | | "app@2x" : "unpackage/res/icons/152x152.png", |
| | | "notification" : "unpackage/res/icons/20x20.png", |
| | | "notification@2x" : "unpackage/res/icons/40x40.png", |
| | | "proapp@2x" : "unpackage/res/icons/167x167.png", |
| | | "settings" : "unpackage/res/icons/29x29.png", |
| | | "settings@2x" : "unpackage/res/icons/58x58.png", |
| | | "spotlight" : "unpackage/res/icons/40x40.png", |
| | | "spotlight@2x" : "unpackage/res/icons/80x80.png" |
| | | }, |
| | | "iphone" : { |
| | | "app@2x" : "unpackage/res/icons/120x120.png", |
| | | "app@3x" : "unpackage/res/icons/180x180.png", |
| | | "notification@2x" : "unpackage/res/icons/40x40.png", |
| | | "notification@3x" : "unpackage/res/icons/60x60.png", |
| | | "settings@2x" : "unpackage/res/icons/58x58.png", |
| | | "settings@3x" : "unpackage/res/icons/87x87.png", |
| | | "spotlight@2x" : "unpackage/res/icons/80x80.png", |
| | | "spotlight@3x" : "unpackage/res/icons/120x120.png" |
| | | } |
| | | } |
| | | } |
| | | "name": "ä¿¡æ¯ç®¡ç", |
| | | "appid": "__UNI__1F1A548", |
| | | "description": "", |
| | | "versionName": "1.0.0", |
| | | "versionCode": 100, |
| | | "transformPx": false, |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus": { |
| | | "compatible": { |
| | | "usingComponents": true, |
| | | "ignoreVersion": true |
| | | }, |
| | | "usingComponents": true, |
| | | "nvueStyleCompiler": "uni-app", |
| | | "compilerVersion": 3, |
| | | "splashscreen": { |
| | | "alwaysShowBeforeRender": true, |
| | | "waiting": true, |
| | | "autoclose": true, |
| | | "delay": 0 |
| | | }, |
| | | /* 模åé
ç½® */ |
| | | "modules": { |
| | | "Camera": {}, |
| | | "Barcode": {}, |
| | | "Push": {}, |
| | | "Maps": {} |
| | | }, |
| | | /* åºç¨åå¸ä¿¡æ¯ */ |
| | | "distribute": { |
| | | /* androidæå
é
ç½® */ |
| | | "android": { |
| | | "permissions": [ |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location.gps\"/>", |
| | | "<uses-feature android:name=\"android.hardware.location.network\"/>" |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios": { |
| | | "dSYMs": false, |
| | | "plist": { |
| | | "NSLocationWhenInUseUsageDescription": "éè¦è·åæ¨çä½ç½®ä¿¡æ¯æ¥è®°å½å®¢æ·æè®¿å°ç¹", |
| | | "NSLocationAlwaysAndWhenInUseUsageDescription": "éè¦è·åæ¨çä½ç½®ä¿¡æ¯æ¥è®°å½å®¢æ·æè®¿å°ç¹" |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | | "quickapp" : {}, |
| | | /* å°ç¨åºç¹æç¸å
³ */ |
| | | "mp-weixin" : { |
| | | "appid" : "", |
| | | "setting" : { |
| | | "urlCheck" : false |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs": { |
| | | "push": { |
| | | "unipush": { |
| | | "icons": { |
| | | "small": { |
| | | "ldpi": "D:/xindao/wenjian/img/logo/app.png" |
| | | } |
| | | }, |
| | | "offline": false |
| | | } |
| | | }, |
| | | "usingComponents" : true |
| | | "maps": { |
| | | "amap": { |
| | | "name": "amap_18330707920ae9zOwCD", |
| | | "appkey_ios": "c2b4e3889ab4cb9468e9c8ae4f3ab53f", |
| | | "appkey_android": "c2b4e3889ab4cb9468e9c8ae4f3ab53f" |
| | | } |
| | | } |
| | | }, |
| | | "icons": { |
| | | "android": { |
| | | "hdpi": "unpackage/res/icons/72x72.png", |
| | | "xhdpi": "unpackage/res/icons/96x96.png", |
| | | "xxhdpi": "unpackage/res/icons/144x144.png", |
| | | "xxxhdpi": "unpackage/res/icons/192x192.png" |
| | | }, |
| | | "ios": { |
| | | "appstore": "unpackage/res/icons/1024x1024.png", |
| | | "ipad": { |
| | | "app": "unpackage/res/icons/76x76.png", |
| | | "app@2x": "unpackage/res/icons/152x152.png", |
| | | "notification": "unpackage/res/icons/20x20.png", |
| | | "notification@2x": "unpackage/res/icons/40x40.png", |
| | | "proapp@2x": "unpackage/res/icons/167x167.png", |
| | | "settings": "unpackage/res/icons/29x29.png", |
| | | "settings@2x": "unpackage/res/icons/58x58.png", |
| | | "spotlight": "unpackage/res/icons/40x40.png", |
| | | "spotlight@2x": "unpackage/res/icons/80x80.png" |
| | | }, |
| | | "iphone": { |
| | | "app@2x": "unpackage/res/icons/120x120.png", |
| | | "app@3x": "unpackage/res/icons/180x180.png", |
| | | "notification@2x": "unpackage/res/icons/40x40.png", |
| | | "notification@3x": "unpackage/res/icons/60x60.png", |
| | | "settings@2x": "unpackage/res/icons/58x58.png", |
| | | "settings@3x": "unpackage/res/icons/87x87.png", |
| | | "spotlight@2x": "unpackage/res/icons/80x80.png", |
| | | "spotlight@3x": "unpackage/res/icons/120x120.png" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | | "quickapp": {}, |
| | | /* å°ç¨åºç¹æç¸å
³ */ |
| | | "mp-weixin": { |
| | | "appid": "", |
| | | "setting": { |
| | | "urlCheck": false |
| | | }, |
| | | "mp-alipay" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-baidu" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-toutiao" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "uniStatistics" : { |
| | | "enable" : false |
| | | }, |
| | | "vueVersion" : "3" |
| | | "usingComponents": true |
| | | }, |
| | | "mp-alipay": { |
| | | "usingComponents": true |
| | | }, |
| | | "mp-baidu": { |
| | | "usingComponents": true |
| | | }, |
| | | "mp-toutiao": { |
| | | "usingComponents": true |
| | | }, |
| | | "uniStatistics": { |
| | | "enable": false |
| | | }, |
| | | "vueVersion": "3" |
| | | } |
| | |
| | | |
| | | <script setup> |
| | | import { computed, onMounted, ref } from "vue"; |
| | | import { onShow } from "@dcloudio/uni-app"; |
| | | import { analysisCustomerContractAmounts, getBusiness } from "@/api/viewIndex"; |
| | | import { createVersionUpgradeChecker } from "@/utils/versionUpgrade"; |
| | | |
| | | const imgNum1 = "/static/images/index/num1.png"; |
| | | const imgNum2 = "/static/images/index/num2.png"; |
| | |
| | | const contractSummary = ref({ sum: "0", chain: "0", yny: "0" }); |
| | | |
| | | // 客æ·ååéé¢åæï¼æ éçéé¡¹ï¼ææ¥å£é»è®¤è¿åå±ç¤ºï¼ |
| | | |
| | | const { triggerVersionCheck } = createVersionUpgradeChecker({ logPrefix: "[version-index]" }); |
| | | |
| | | function toggleOverview() { |
| | | overviewExpanded.value = !overviewExpanded.value; |
| | |
| | | } catch (e) { |
| | | isCanvas2d.value = false; |
| | | } |
| | | triggerVersionCheck("onMounted"); |
| | | loadHome(); |
| | | }); |
| | | |
| | | onShow(() => { |
| | | triggerVersionCheck("onShow"); |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | |
| | | </up-checkbox> |
| | | </view> |
| | | </view> |
| | | <view class="version-wrap"> |
| | | <text class="version-text">çæ¬å·ï¼{{ versionName }}</text> |
| | | </view> |
| | | </template> |
| | | |
| | | <script setup> |
| | |
| | | import { wxLogin } from "@/api/oauth"; |
| | | import { setToken } from "@/utils/auth"; |
| | | import View from "@/pages/procurementManagement/procurementLedger/view.vue"; |
| | | import config from "@/config"; |
| | | const userStore = useUserStore(); |
| | | const useWxLogin = ref(false); // æ¯å¦ä½¿ç¨å¾®ä¿¡ç»å½ |
| | | const rememberPassword = ref(false); // è®°ä½å¯ç |
| | | const versionName = ref(config?.appInfo?.version || "1.0.0"); |
| | | const loginForm = ref({ |
| | | userName: "", |
| | | password: "", |
| | |
| | | } |
| | | // 页é¢å è½½æ¶æ£æ¥æ¯å¦æä¿åçå¯ç |
| | | onMounted(() => { |
| | | console.log("[login-version] å¼å§è·åç»å½é¡µçæ¬ï¼é»è®¤å¼:", versionName.value); |
| | | // #ifdef MP-WEIXIN |
| | | try { |
| | | const accountInfo = uni.getAccountInfoSync(); |
| | | if (accountInfo?.miniProgram?.version) { |
| | | versionName.value = accountInfo.miniProgram.version; |
| | | console.log("[login-version] å½åç¯å¢=MP-WEIXINï¼çæ¬=", versionName.value); |
| | | } |
| | | } catch (e) { |
| | | // è·å失败æ¶ä½¿ç¨é»è®¤å¼ |
| | | console.log("[login-version] MP-WEIXIN è·åçæ¬å¤±è´¥:", e); |
| | | } |
| | | // #endif |
| | | |
| | | // #ifdef APP-PLUS |
| | | try { |
| | | // @ts-ignore |
| | | if (plus?.runtime?.version) { |
| | | // @ts-ignore |
| | | versionName.value = plus.runtime.version; |
| | | console.log("[login-version] å½åç¯å¢=APP-PLUSï¼çæ¬=", versionName.value); |
| | | } |
| | | } catch (e) { |
| | | // è·å失败æ¶ä½¿ç¨é»è®¤å¼ |
| | | console.log("[login-version] APP-PLUS è·åçæ¬å¤±è´¥:", e); |
| | | } |
| | | // #endif |
| | | console.log("[login-version] æç»çæ¬å·:", versionName.value); |
| | | |
| | | loadPassword(); |
| | | getUserLoginFacotryList(); |
| | | }); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .version-wrap { |
| | | width: 100%; |
| | | text-align: center; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .version-text { |
| | | font-size: 12px; |
| | | color: #999; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <script setup> |
| | | import { ref, onMounted, nextTick, reactive, computed } from "vue"; |
| | | import { onShow } from "@dcloudio/uni-app"; |
| | | import { userLoginFacotryList } from "@/api/login"; |
| | | import { getProductWorkOrderById } from "@/api/productionManagement/productionReporting"; |
| | | import { createVersionUpgradeChecker } from "@/utils/versionUpgrade"; |
| | | import modal from "@/plugins/modal"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | |
| | | const userStore = useUserStore(); |
| | | const { triggerVersionCheck } = createVersionUpgradeChecker({ logPrefix: "[version-works]" }); |
| | | const show = ref(false); |
| | | const factoryList = ref([]); |
| | | const factoryListTem = ref([]); |
| | |
| | | const hasEquipmentItems = computed(() => equipmentItems.length > 0); |
| | | |
| | | onMounted(() => { |
| | | triggerVersionCheck("onMounted"); |
| | | // æ¯æ¬¡è¿å
¥é¦é¡µé½å¼ºå¶å·æ°ç¨æ·ä¿¡æ¯åè·¯ç±æéï¼ä¸åæ¬å°ç¼å夿 |
| | | userStore.getInfo().then(() => { |
| | | userStore |
| | |
| | | // å¯å¨éç¥ç¶æå®æ¶å¨ |
| | | startStatusTimer(); |
| | | }); |
| | | |
| | | onShow(() => { |
| | | triggerVersionCheck("onShow"); |
| | | }); |
| | | </script> |
| | | |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | import config from "@/config"; |
| | | import { getAllVersion } from "@/api/viewIndex"; |
| | | |
| | | function compareVersion(v1, v2) { |
| | | const s1 = String(v1 || "").replace(/[^\d.]/g, "").split(".").map((n) => Number(n) || 0); |
| | | const s2 = String(v2 || "").replace(/[^\d.]/g, "").split(".").map((n) => Number(n) || 0); |
| | | const len = Math.max(s1.length, s2.length); |
| | | for (let i = 0; i < len; i += 1) { |
| | | const n1 = s1[i] || 0; |
| | | const n2 = s2[i] || 0; |
| | | if (n1 > n2) return 1; |
| | | if (n1 < n2) return -1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | function formatFileSize(fileSize) { |
| | | const size = Number(fileSize); |
| | | if (!Number.isFinite(size) || size <= 0) return ""; |
| | | if (size >= 1024 * 1024 * 1024) return `${(size / (1024 * 1024 * 1024)).toFixed(2)}GB`; |
| | | if (size >= 1024 * 1024) return `${(size / (1024 * 1024)).toFixed(2)}MB`; |
| | | if (size >= 1024) return `${(size / 1024).toFixed(2)}KB`; |
| | | return `${size}B`; |
| | | } |
| | | |
| | | function getCurrentVersion(logPrefix) { |
| | | let currentVersion = config?.appInfo?.version || "1.0.0"; |
| | | console.log(`${logPrefix} å¼å§è·åå½åçæ¬ï¼é»è®¤å¼:`, currentVersion); |
| | | // #ifdef MP-WEIXIN |
| | | try { |
| | | const accountInfo = uni.getAccountInfoSync(); |
| | | if (accountInfo?.miniProgram?.version) { |
| | | currentVersion = accountInfo.miniProgram.version; |
| | | console.log(`${logPrefix} å½åç¯å¢=MP-WEIXINï¼çæ¬=`, currentVersion); |
| | | return currentVersion; |
| | | } |
| | | } catch (e) { |
| | | console.log(`${logPrefix} MP-WEIXIN è·åçæ¬å¤±è´¥:`, e); |
| | | } |
| | | // #endif |
| | | // #ifdef APP-PLUS |
| | | try { |
| | | // @ts-ignore |
| | | if (plus?.runtime?.version) { |
| | | // @ts-ignore |
| | | currentVersion = plus.runtime.version; |
| | | console.log(`${logPrefix} å½åç¯å¢=APP-PLUSï¼çæ¬=`, currentVersion); |
| | | return currentVersion; |
| | | } |
| | | } catch (e) { |
| | | console.log(`${logPrefix} APP-PLUS è·åçæ¬å¤±è´¥:`, e); |
| | | } |
| | | // #endif |
| | | console.log(`${logPrefix} æªè¯»åå°è¿è¡æ¶çæ¬ï¼ä½¿ç¨é
ç½®çæ¬:`, currentVersion); |
| | | return currentVersion; |
| | | } |
| | | |
| | | function installPackage(tempFilePath, logPrefix) { |
| | | console.log(`${logPrefix} å¼å§å®è£
æ´æ°å
ï¼ä¸´æ¶è·¯å¾:`, tempFilePath); |
| | | // #ifdef APP-PLUS |
| | | // @ts-ignore |
| | | plus.runtime.install( |
| | | tempFilePath, |
| | | {}, |
| | | () => { |
| | | console.log(`${logPrefix} å®è£
æåï¼çå¾
ç¨æ·ç¡®è®¤æ¯å¦éå¯`); |
| | | uni.showModal({ |
| | | title: "æ´æ°å®æ", |
| | | content: "å®è£
å
ä¸è½½æåï¼æ¯å¦ç«å³éå¯åºç¨çæï¼", |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | // @ts-ignore |
| | | plus.runtime.restart(); |
| | | } |
| | | }, |
| | | }); |
| | | }, |
| | | (err) => { |
| | | console.log(`${logPrefix} å®è£
失败:`, err); |
| | | uni.showToast({ title: err?.message || "å®è£
æ´æ°å
失败", icon: "none" }); |
| | | } |
| | | ); |
| | | // #endif |
| | | } |
| | | |
| | | function downloadVersionPackage(url, logPrefix) { |
| | | console.log(`${logPrefix} å¼å§ä¸è½½æ´æ°å
:`, url); |
| | | uni.showLoading({ title: "æ´æ°å
ä¸è½½ä¸..." }); |
| | | uni.downloadFile({ |
| | | url, |
| | | success: (res) => { |
| | | console.log(`${logPrefix} ä¸è½½ç»æ:`, res); |
| | | uni.hideLoading(); |
| | | if (res.statusCode !== 200 || !res.tempFilePath) { |
| | | console.log(`${logPrefix} ä¸è½½å¤±è´¥ï¼ç¶æç æä¸´æ¶è·¯å¾å¼å¸¸`); |
| | | uni.showToast({ title: "ä¸è½½å¤±è´¥ï¼è¯·ç¨åéè¯", icon: "none" }); |
| | | return; |
| | | } |
| | | const lowerUrl = String(url || "").toLowerCase(); |
| | | const isInstallPkg = lowerUrl.endsWith(".wgt") || lowerUrl.endsWith(".wgtu") || lowerUrl.endsWith(".apk"); |
| | | console.log(`${logPrefix} æä»¶ç±»å夿:`, { lowerUrl, isInstallPkg }); |
| | | if (isInstallPkg) { |
| | | installPackage(res.tempFilePath, logPrefix); |
| | | return; |
| | | } |
| | | uni.openDocument({ |
| | | filePath: res.tempFilePath, |
| | | showMenu: true, |
| | | fail: () => { |
| | | console.log(`${logPrefix} éå®è£
å
ï¼openDocument å¤±è´¥ï¼æç¤ºç¨æ·æå¨æ¥ç`); |
| | | uni.showToast({ title: "ä¸è½½æåï¼è¯·å¨æä»¶ç®¡ç䏿¥ç", icon: "none" }); |
| | | }, |
| | | }); |
| | | }, |
| | | fail: (err) => { |
| | | console.log(`${logPrefix} ä¸è½½è¯·æ±å¤±è´¥:`, err); |
| | | uni.hideLoading(); |
| | | uni.showToast({ title: "ä¸è½½å¤±è´¥ï¼è¯·æ£æ¥ç½ç»", icon: "none" }); |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | async function checkAppVersionUpgrade(logPrefix, currentVersion) { |
| | | try { |
| | | console.log(`${logPrefix} å¼å§æ£æ¥çæ¬å级`); |
| | | const params = { |
| | | records: "", |
| | | total: 1, |
| | | size: 1, |
| | | current: 1, |
| | | orders: "", |
| | | optimizeCountSql: true, |
| | | searchCount: true, |
| | | optimizeJoinOfCountSql: true, |
| | | maxLimit: 1, |
| | | countId: "", |
| | | id: 1, |
| | | name: "", |
| | | version: "", |
| | | createTime: "2026-04-09 10:10:33", |
| | | updateTime: "2026-04-09 10:10:33", |
| | | createUser: 1, |
| | | updateUser: 1, |
| | | tenantId: 1, |
| | | }; |
| | | console.log(`${logPrefix} æ¥è¯¢åæ°:`, params); |
| | | const res = await getAllVersion(params); |
| | | console.log(`${logPrefix} æ¥å£è¿å:`, res); |
| | | const first = Array.isArray(res?.rows) |
| | | ? res.rows[0] |
| | | : Array.isArray(res?.data?.records) |
| | | ? res.data.records[0] |
| | | : Array.isArray(res?.data) |
| | | ? res.data[0] |
| | | : res?.data; |
| | | if (!first) { |
| | | console.log(`${logPrefix} æªè·åå°ç¬¬ä¸æ¡çæ¬æ°æ®ï¼ç»ææ£æ¥`); |
| | | return; |
| | | } |
| | | console.log(`${logPrefix} ç¬¬ä¸æ¡çæ¬æ°æ®:`, first); |
| | | const latestVersion = String(first?.version || ""); |
| | | if (!latestVersion) { |
| | | console.log(`${logPrefix} ç¬¬ä¸æ¡æ°æ®æ çæ¬å·ï¼ç»ææ£æ¥`); |
| | | return; |
| | | } |
| | | const compareResult = compareVersion(latestVersion, currentVersion); |
| | | console.log(`${logPrefix} çæ¬æ¯è¾:`, { currentVersion, latestVersion, compareResult }); |
| | | if (compareResult <= 0) { |
| | | console.log(`${logPrefix} å½åå·²æ¯ææ°çæ¬ï¼æ éæ´æ°`); |
| | | return; |
| | | } |
| | | const firstFile = Array.isArray(first?.commonFileList) ? first.commonFileList[0] : null; |
| | | const downloadUrl = firstFile?.url || ""; |
| | | const fileSizeText = formatFileSize(firstFile?.fileSize); |
| | | console.log(`${logPrefix} æ´æ°éä»¶ä¿¡æ¯:`, { |
| | | downloadUrl, |
| | | fileSize: firstFile?.fileSize, |
| | | fileSizeText, |
| | | firstFile, |
| | | }); |
| | | const desc = fileSizeText ? `ï¼æ´æ°å
大å°çº¦ ${fileSizeText}` : ""; |
| | | uni.showModal({ |
| | | title: "åç°æ°çæ¬", |
| | | content: `å½åçæ¬ ${currentVersion}ï¼ææ°çæ¬ ${latestVersion}${desc}ï¼æ¯å¦ç«å³ä¸è½½ï¼`, |
| | | confirmText: "ç«å³ä¸è½½", |
| | | success: (modalRes) => { |
| | | console.log(`${logPrefix} æ´æ°å¼¹çªæä½:`, modalRes); |
| | | if (!modalRes.confirm) return; |
| | | if (!downloadUrl) { |
| | | console.log(`${logPrefix} ç¨æ·ç¡®è®¤æ´æ°ï¼ä½éä»¶å°å为空`); |
| | | uni.showToast({ title: "æªæ¾å°æ´æ°éä»¶å°å", icon: "none" }); |
| | | return; |
| | | } |
| | | downloadVersionPackage(downloadUrl, logPrefix); |
| | | }, |
| | | }); |
| | | } catch (e) { |
| | | console.log(`${logPrefix} çæ¬æ£æ¥å¤±è´¥:`, e); |
| | | } |
| | | } |
| | | |
| | | export function createVersionUpgradeChecker(options = {}) { |
| | | const throttleMs = Number(options.throttleMs) > 0 ? Number(options.throttleMs) : 3000; |
| | | const logPrefix = options.logPrefix || "[version]"; |
| | | let lastVersionCheckAt = 0; |
| | | |
| | | const triggerVersionCheck = (from = "unknown") => { |
| | | const now = Date.now(); |
| | | if (now - lastVersionCheckAt < throttleMs) { |
| | | console.log(`${logPrefix} è·³è¿é夿£æ¥ï¼æ¥æº=${from}`); |
| | | return; |
| | | } |
| | | lastVersionCheckAt = now; |
| | | console.log(`${logPrefix} 触åçæ¬æ£æ¥ï¼æ¥æº=${from}`); |
| | | const currentVersion = getCurrentVersion(logPrefix); |
| | | checkAppVersionUpgrade(logPrefix, currentVersion); |
| | | }; |
| | | |
| | | return { triggerVersionCheck }; |
| | | } |