feat(ai): 优化 AI 文档页面并添加分享功能
-重构 ApiBean 类,增加分页相关字段 - 更新 AIDocumentView 页面布局和样式 - 添加文档分享功能 - 优化 HomeBannerModel 和 ArticleDetailView - 更新 XWebview 页面,支持自定义点击菜单
这个提交包含在:
父节点
791e3b74fc
当前提交
47b8b26564
@ -4,13 +4,14 @@ import { router, WebHeader } from '@kit.ArkUI';
|
||||
import { XDialogController } from '../dialog/XDialogController';
|
||||
import { XDialogList } from '../dialog/XDialogList';
|
||||
import { picker } from '@kit.CoreFileKit';
|
||||
import { BusinessError } from '@kit.BasicServicesKit';
|
||||
import { BusinessError, pasteboard } from '@kit.BasicServicesKit';
|
||||
import { ToolsHelper } from '../utils/ToolsHelper';
|
||||
import { JsParams, XWebController, XWebParams } from '../utils/XWebHelper';
|
||||
import { WindowHelper } from '../utils/WindowHelper';
|
||||
import { SZYXLocalStorageHelper } from '../utils/SZYXLocalStorageHelper';
|
||||
import { SZYXLocalStorageKeys } from '../utils/SZYXLocalStorageKeys';
|
||||
import { XWebManager } from '../utils/XWebManager';
|
||||
import { TitleBarBtn } from '../view/SafeView';
|
||||
|
||||
@Entry({ routeName: 'XWebview' })
|
||||
@Component
|
||||
@ -27,6 +28,7 @@ export struct XWebview {
|
||||
// @State xJsController?: XWebController = (router.getParams() as XWebParams).jsController
|
||||
@State closeTag?: string = (router.getParams() as XWebParams).closeTag
|
||||
@State showMenu: boolean = (router.getParams() as XWebParams).showMenu ?? false
|
||||
@State clickMenu?: TitleBarBtn = (router.getParams() as XWebParams).clickMenu
|
||||
@State errorInfo: string | null = null
|
||||
@State progress: number = 0
|
||||
@State _uuid?: string = (router.getParams() as XWebParams)._uuid
|
||||
@ -53,11 +55,6 @@ export struct XWebview {
|
||||
}
|
||||
})
|
||||
}
|
||||
if (this.jsParams?.controller && this._uuidToHtml) {
|
||||
XWebManager.addOnMessageToWeb(this._uuidToHtml, (msg) => {
|
||||
this.controller.runJavaScript(msg)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
aboutToDisappear(): void {
|
||||
@ -74,6 +71,7 @@ export struct XWebview {
|
||||
} catch (error) {
|
||||
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
|
||||
}
|
||||
// this.controller.rele
|
||||
}
|
||||
|
||||
onBackPress(): boolean | void {
|
||||
@ -120,14 +118,32 @@ export struct XWebview {
|
||||
})
|
||||
|
||||
Button({ buttonStyle: ButtonStyleMode.TEXTUAL }) {
|
||||
Image($r('sys.media.ohos_ic_public_more'))
|
||||
.width(26).height(26)
|
||||
if (this.clickMenu?.img) {
|
||||
Image(this.clickMenu?.img)
|
||||
.width(15).height(15)
|
||||
} else if (this.clickMenu?.text) {
|
||||
Text(this.clickMenu.text)
|
||||
.fontColor(this.clickMenu?.color ?? '#17171A')
|
||||
.fontSize(13)
|
||||
.textAlign(TextAlign.Center)
|
||||
.ellipsisMode(EllipsisMode.END)
|
||||
.textOverflow({
|
||||
overflow: TextOverflow.Ellipsis
|
||||
})
|
||||
} else {
|
||||
Image($r('sys.media.ohos_ic_public_more'))
|
||||
.width(26).height(26)
|
||||
}
|
||||
}.width(65)
|
||||
.onClick(() => {
|
||||
if (this.clickMenu) {
|
||||
this.clickMenu.onClick()
|
||||
return
|
||||
}
|
||||
if (this.dialogController != null) {
|
||||
this.dialogController.open()
|
||||
}
|
||||
}).visibility(this.showMenu ? Visibility.Visible : Visibility.Hidden)
|
||||
}).visibility(this.showMenu || this.clickMenu ? Visibility.Visible : Visibility.Hidden)
|
||||
}
|
||||
.width('100%')
|
||||
.height(45)
|
||||
@ -221,6 +237,11 @@ export struct XWebview {
|
||||
this.controller.postMessage('__init_port__', [this.ports[0]], '*');
|
||||
})
|
||||
.onControllerAttached(() => {
|
||||
if (this.jsParams?.controller && this._uuidToHtml) {
|
||||
XWebManager.addOnMessageToWeb(this._uuidToHtml, (msg) => {
|
||||
this.controller.runJavaScript(msg)
|
||||
})
|
||||
}
|
||||
if (this.content) {
|
||||
try {
|
||||
this.controller.loadData(this.content,
|
||||
@ -338,18 +359,23 @@ export struct XWebview {
|
||||
// 标题(可选)
|
||||
title: '选择您的操作',
|
||||
// 选择内容列表
|
||||
values: ['刷新', '浏览器打开', '分享', '复制地址'],
|
||||
values: ['刷新', '浏览器打开', '复制地址'],
|
||||
// 用户选择事件
|
||||
onSelected: (index: number, value: string) => {
|
||||
if (index === 0) {
|
||||
this.controller.refresh()
|
||||
} else if (index === 1) {
|
||||
|
||||
} else {
|
||||
ToolsHelper.showMessage(`用户选择了第${index}个,内容为:${value}`)
|
||||
pasteboard.getSystemPasteboard()
|
||||
.setData(pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, this.controller.getUrl()), () => {
|
||||
ToolsHelper.showMessage('已复制到剪切板')
|
||||
})
|
||||
}
|
||||
},
|
||||
// 用户取消事件
|
||||
onCancel: () => {
|
||||
ToolsHelper.showMessage('用户取消操作')
|
||||
// ToolsHelper.showMessage('用户取消操作')
|
||||
},
|
||||
// 是否可取消(点击空白处,或者物理返回键)
|
||||
autoCancel: true
|
||||
|
||||
@ -2,6 +2,7 @@ import { router, WebHeader } from '@kit.ArkUI';
|
||||
import { BusinessError } from '@kit.BasicServicesKit';
|
||||
import { LogHelper, SZYXLocalStorageHelper } from '../../../../Index';
|
||||
import { baseEncode } from '../util/base64Util';
|
||||
import { TitleBarBtn } from '../view/SafeView';
|
||||
import { ToolsHelper } from './ToolsHelper';
|
||||
import { XWebManager } from './XWebManager';
|
||||
|
||||
@ -33,6 +34,7 @@ export interface XWebParams {
|
||||
closeTag?: string
|
||||
headers?: Array<WebHeader>
|
||||
onMessage?: (message: string) => void
|
||||
clickMenu?: TitleBarBtn
|
||||
controller?: XWebController
|
||||
zoomAccess?: boolean
|
||||
_uuid?: string
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户