oa-base/pages/index/index.vue

102 lines
3.5 KiB
Vue
Raw Normal View History

2024-06-18 07:55:32 +00:00
<template>
2024-10-18 02:29:02 +00:00
<!-- <web-view class="webview" @message="webLoad" style="flex: 1;" :src="config.h5Url"></web-view> -->
2024-09-25 07:42:01 +00:00
2024-06-18 07:55:32 +00:00
</template>
<script setup>
2024-09-02 06:36:30 +00:00
import { ref } from 'vue'
2024-08-20 08:44:10 +00:00
import {onExit } from "@dcloudio/uni-app";
2024-10-18 02:29:02 +00:00
import config from "../../config"
const wv = plus.webview.create(config.h5Url,"custom-webview")
const currentPages=getCurrentPages()
const currentWebview = currentPages[currentPages.length-1].$getAppWebview()
currentWebview.append(wv)
const {statusBarHeight} = uni.getSystemInfoSync()
wv.setStyle({
top: statusBarHeight,
bottom: 0,
})
2024-09-02 06:36:30 +00:00
import { Communication } from '../../utils/communication.js';
const commun=new Communication()
2024-08-28 06:07:51 +00:00
2024-09-02 06:39:57 +00:00
import {
2024-08-28 06:07:51 +00:00
registerRequestPermissionTipsListener,
unregisterRequestPermissionTipsListener,
setRequestPermissionTips
} from "@/uni_modules/uni-registerRequestPermissionTips"
const PermissionTips = {
2024-09-25 07:42:01 +00:00
"android.permission.READ_PHONE_STATE": "<h4 style=\"font-size:40px;\">正在读取网络状态权限</h4><font color=#cccccc>通讯录权限不会获取任何信息,请注意通讯录权限不会获取任何信息,请注意通讯录权限不会获取任何信息,请注意</font>",
"android.permission.CAMERA": "<h4 style=\"font-size:40px;\">正在访问相机权限</h4><font color=#cccccc>需要扫描二维码或拍照,是否允许打开相机?</font>",
"android.permission.WRITE_EXTERNAL_STORAGE": "<h4 style=\"font-size:40px;\">正在读取相册权限</h4><font color=#cccccc>我们需要获取访问您设备相册的权限,以便您能够选择并上传图片或视频到我们的应用中。</font>"
2024-08-28 06:07:51 +00:00
}
2024-08-20 08:44:10 +00:00
onExit(()=>{
2024-08-28 06:07:51 +00:00
unregisterRequestPermissionTipsListener()
2024-08-20 08:44:10 +00:00
})
2024-08-28 06:07:51 +00:00
const brand = uni.getSystemInfoSync().deviceBrand
setRequestPermissionTips(PermissionTips)
registerRequestPermissionTipsListener({
onRequest: (e) => {
2024-09-02 06:36:30 +00:00
console.log('onRequest',e)
2024-08-28 06:07:51 +00:00
},
onConfirm: (e) => {
commun.sendToH5('permission-application',{action:'open-permission',data:e});
},
onComplete: (e) => {
commun.sendToH5('permission-application',{action:'close-permission',data:e});
// 华为手机在权限禁止之后,再次申请权限不会出现权限申请框。此时应该引导用户去系统设置开启此权限,不应该频繁申请。
if (brand.toLowerCase() === "huawei") {
const tips = {}
let hasDeniedPermission = false
for (let k in PermissionTips) {
if (e[k] !== "denied") {
tips[k] = PermissionTips[k]
} else {
hasDeniedPermission = true
}
}
setRequestPermissionTips(tips) // 更新弹框提醒,防止华为手机不出现权限申请框时权限提醒框闪烁的情况
if (hasDeniedPermission)
uni.showModal({
content: "权限已经被拒绝,请前往设置中开启"
})
}
}
2024-09-02 06:39:57 +00:00
})
2024-09-02 06:36:30 +00:00
function initializeWebView() {
const currentWebview = getCurrentPages().pop().$getAppWebview()
commun.setWebView(currentWebview.children()[0])
}
//load-complete 注册函数
commun.registerHandler('load-complete',()=>{
initializeWebView()
const {statusBarHeight} = uni.getSystemInfoSync()
commun.webViewObj.setStyle({
top: statusBarHeight,
bottom: 0,
})
2024-08-28 06:07:51 +00:00
2024-09-02 06:36:30 +00:00
})
commun.registerHandler('getLocation',(data)=>{
uni.getLocation({
type:'gcj02',
geocode:true,
isHighAccuracy:true,
...data,
success: (res) => {
console.log('getLocation',res)
commun.sendToH5('getLocation',res);
},
})
})
const webLoad = (e) => {
const message = e.detail.data?.[0] || '';
commun.handleMessage(message);
};
2024-06-18 07:55:32 +00:00
</script>
<style>
</style>