From d4eb5cb9340a3ff3ed803b1973a712fb445060eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 21 Nov 2024 18:22:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(XWebview):=20=E6=B7=BB=E5=8A=A0=E7=BD=91?= =?UTF-8?q?=E9=A1=B5=E9=A2=84=E8=A7=88=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 openPreview 方法实现网页预览功能 - 优化 XWebview 组件,支持缩放和错误处理 - 改进 AuthorizeSignOrderDetailView 中的网页加载逻辑 - 统一错误处理,提高用户体验 --- src/main/ets/pages/XWebview.ets | 47 ++++++++++++++++--------------- src/main/ets/utils/XWebHelper.ets | 19 +++++++++++++ 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/src/main/ets/pages/XWebview.ets b/src/main/ets/pages/XWebview.ets index e376952..b7fe9af 100644 --- a/src/main/ets/pages/XWebview.ets +++ b/src/main/ets/pages/XWebview.ets @@ -15,6 +15,7 @@ import { SZYXLocalStorageKeys } from '../utils/SZYXLocalStorageKeys'; export struct XWebview { // 手机号 @State url?: string = (router.getParams() as XWebParams).url + @State zoomAccess?: boolean = (router.getParams() as XWebParams).zoomAccess @State content?: string = (router.getParams() as XWebParams).content @State title?: string = (router.getParams() as XWebParams).title @State closeTag?: string = (router.getParams() as XWebParams).closeTag @@ -122,7 +123,7 @@ export struct XWebview { .height('100%') .visibility(this.errorInfo == null ? Visibility.Visible : Visibility.None) .mixedMode(MixedMode.All)//允许加载HTTP和HTTPS混合内容 - .zoomAccess(false)//不支持手势进行缩放 + .zoomAccess(this.zoomAccess??false)//不支持手势进行缩放 .mediaPlayGestureAccess(false)//有声视频播放不需要用户手动点击 .cacheMode(CacheMode.Default)//设置缓存模式 .onConfirm((event) => { // 自定义Confirm弹窗 @@ -177,28 +178,28 @@ export struct XWebview { console.log('mimetype:' + event.mimetype) } }) - .onErrorReceive((event) => { // 加载失败 - if (this.progress > 65) { - return - } - if (event) { - this.errorInfo = `错误码:${event.error.getErrorCode()}\n${event.error.getErrorInfo()}` - } else { - this.errorInfo = '错误码:-1\n未知错误' - } - ToolsHelper.log(this.errorInfo) - }) - .onHttpErrorReceive((event) => { // 加载失败 - if (this.progress > 65) { - return - } - if (event) { - this.errorInfo = `错误码:${event.response.getResponseCode()}\n${event.response.getReasonMessage()}` - } else { - this.errorInfo = '错误码:-1\n未知错误' - } - ToolsHelper.log(this.errorInfo) - }) + // .onErrorReceive((event) => { // 加载失败 + // if (this.progress > 65) { + // return + // } + // if (event) { + // this.errorInfo = `错误码:${event.error.getErrorCode()}\n${event.error.getErrorInfo()}` + // } else { + // this.errorInfo = '错误码:-1\n未知错误' + // } + // ToolsHelper.log(JSON.stringify(event),this.url) + // }) + // .onHttpErrorReceive((event) => { // 加载失败 + // if (this.progress > 65) { + // return + // } + // if (event) { + // this.errorInfo = `错误码:${event.response.getResponseCode()}\n${event.response.getReasonMessage()}` + // } else { + // this.errorInfo = '错误码:-1\n未知错误' + // } + // ToolsHelper.log( this.errorInfo,this.url) + // }) .onProgressChange((event) => { // 加载进度 if (event) { console.log('newProgress:' + event.newProgress) diff --git a/src/main/ets/utils/XWebHelper.ets b/src/main/ets/utils/XWebHelper.ets index 7d660a4..2d4b2fb 100644 --- a/src/main/ets/utils/XWebHelper.ets +++ b/src/main/ets/utils/XWebHelper.ets @@ -1,6 +1,7 @@ import { router } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit'; import { LogHelper } from '../../../../Index'; +import { baseEncode } from '../util/base64Util'; import { ToolsHelper } from './ToolsHelper'; const XWebview = import('../pages/XWebview'); @@ -8,10 +9,12 @@ const XWebview = import('../pages/XWebview'); export interface XWebParams { url?: string + zoomAccess?: boolean content?: string title?: string showMenu?: boolean closeTag?: string + watermarkTxt?: string } export class XWebHelper { @@ -37,4 +40,20 @@ export class XWebHelper { }) }) } + public static openPreview(params: XWebParams): Promise { + params.url = `https://mdtdemo.51trust.com/preview/onlinePreview?url=${baseEncode(params.url)}&watermarkTxt=${encodeURI(params.watermarkTxt??'')}` + return new Promise((resolve) => { + router.pushNamedRoute({ + name: 'XWebview', + params: params + }, router.RouterMode.Single).then(() => { + LogHelper.info('Succeeded in jumping to the XWebview page.') + resolve(true) + }).catch((err: BusinessError) => { + resolve(false) + LogHelper.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) + ToolsHelper.showMessage(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`) + }) + }) + } } \ No newline at end of file