From 44dd9c4eb8a2489c63a5eb53fd4254bbb3510e95 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 18 Jun 2026 09:14:57 +0800
Subject: [PATCH] Merge branch 'feature/v9.0/9.0.4'
---
src/components/WebViewPlus.vue | 125 ++++++++++++++++++++++++++++++++++-------
1 files changed, 103 insertions(+), 22 deletions(-)
diff --git a/src/components/WebViewPlus.vue b/src/components/WebViewPlus.vue
index 13eaff8..d7506f0 100644
--- a/src/components/WebViewPlus.vue
+++ b/src/components/WebViewPlus.vue
@@ -1,40 +1,121 @@
<template>
- <web-view :src="src" @message="viewMessage"/>
+ <web-view :src="src" @message="viewMessage" :allow="allow"/>
</template>
+
<script setup>
-const src = defineModel('src')
-const emit = defineEmits(['webMessage'])
+
+const allow = "accelerometer;ambient-light-sensor;autoplay;battery;camera;clipboard-read;clipboard-write;cross-origin-isolated;display-capture;document-domain;encrypted-media;execution-while-not-rendered;execution-while-out-of-viewport;fullscreen;gamepad;geolocation;gyroscope;hid;idle-detection;local-fonts;magnetometer;microphone;midi;payment;picture-in-picture;publickey-credentials-get;screen-wake-lock;serial;speaker-selection;storage-access;sync-xhr;usb;web-share;xr-spatial-tracking"
+const src = defineModel("src");
+const emit = defineEmits(["webMessage"]);
function viewMessage(event) {
messageFun({
- data: {data: {arg: event.detail.data[0]}},
- type: 'WEB_INVOKE_APPSERVICE'
+ data: {
+ data: {
+ arg: event.detail.data[0],
+ },
+ type: "WEB_INVOKE_APPSERVICE",
+ },
+ });
+}
+
+// WEB_INVOKE_APPSERVICE
+
+
+// 下载图片一次
+function oneImageDownload(url) {
+ return new Promise((resolve, reject) => {
+ wx.downloadFile({
+ url,
+ success: (res) => {
+ wx.saveImageToPhotosAlbum({
+ filePath: res.tempFilePath,
+ success: function (res) {
+ resolve()
+ },
+ });
+ },
+ });
})
}
-// WEB_INVOKE_APPSERVICE
-function messageFun(e) {
- if(e.data.type === 'WEB_INVOKE_APPSERVICE'){
- if (e.data.data.arg.type === 'tokenExpired'){
- return uni.redirectTo({
- url: '/pages/login/index'
- })
+
+// 多次图片下载
+function multipleImageDownloads(all){
+ // const downloadUrlList = [
+ // // 'https://wrj.shuixiongit.com/aiskyminioTwo/cloud-bucket//089a4039-9c98-4441-abb7-1f9ac56caa8c/DJI_202604270944_002_089a4039-9c98-4441-abb7-1f9ac56caa8c/%E8%BD%A6AI20260427100047007.jpeg',
+ // // 'https://aisky.org.cn/command-center-dashboard/assets/zhddpt-BgsJ8s7S.png',
+ // 'https://wrj.shuixiongit.com/aiskyminioTwo/cloud-bucket/8d9ba6b4-d255-4f49-b3f8-bdeaf99773b4/DJI_202602121039_002_8d9ba6b4-d255-4f49-b3f8-bdeaf99773b4-flyto/DJI_20260212104641_0003_V.mp4'
+ // ]
+ const downloadUrlList = all.map(item => {
+ return item.replace('aiskyminio', 'aiskyminioTwo')
+ })
+ const async = ['https://aisky.org.cn/command-center-dashboard/assets/zhddpt-BgsJ8s7S.png'].map(item => oneImageDownload(item))
+ return Promise.all(async)
+}
+
+// 公共图片下载
+function publicImageDownloads(data) {
+ wx.getSetting({
+ success(res) {
+ if (res?.authSetting?.['scope.writePhotosAlbum']) {
+ multipleImageDownloads(data.urlList)
+ }else{
+ wx.authorize({
+ scope: 'scope.writePhotosAlbum',
+ success() {
+ multipleImageDownloads(data.urlList)
+ }
+ })
+ }
}
- emit('webMessage', e.data.data.arg)
+ })
+}
+
+
+// 公共定位
+function publicPosit(data) {
+ wx.openLocation({
+ latitude: data.latitude,
+ longitude: data.longitude,
+ name: data.name,
+ address: data.name,
+ scale: 18
+ })
+}
+
+
+function messageFun(e) {
+ if (e.data.type === "WEB_INVOKE_APPSERVICE") {
+ const {type,data} = e.data.data.arg
+ if (type === "tokenExpired") {
+ uni.reLaunch({url: "/pages/login/index"});
+ }else if(type === "wxImageDownload"){
+ publicImageDownloads(data)
+ }else if(type === "wxOpenLocation"){
+ publicPosit(data)
+ }else{
+ emit("webMessage", e.data.data.arg);
+ }
}
}
+
+onLoad((obj) => {
+ // const h5Params = obj?.cs && JSON.parse(obj?.cs)
+ // console.log('h5Params', h5Params)
+ // h5Params && viewMessage({detail: {data: [h5Params.data]}})
+})
+
onShow(() => {
- window.addEventListener('message', messageFun)
-})
+ if (window && window.addEventListener)
+ window.addEventListener("message", messageFun);
+});
onHide(() => {
- window.removeEventListener('message', messageFun)
-})
-
-
+ if (window && window.removeEventListener)
+ window.removeEventListener("message", messageFun);
+});
</script>
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>
--
Gitblit v1.9.3