Index.ets 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import web_webview from '@ohos.web.webview';
  2. import process from '@ohos.process'
  3. import picker from '@ohos.file.picker';
  4. import { BusinessError } from '@ohos.base';
  5. import common from '@ohos.app.ability.common';
  6. import request from '@ohos.request'
  7. interface DownStartModel {
  8. url: string;
  9. userAgent: string;
  10. contentDisposition: string;
  11. mimetype: string
  12. contentLength: number
  13. }
  14. interface BridgeParams {
  15. path?: string
  16. token?: string
  17. method?: "get" | "post"
  18. data?: Record<string, string> //其他参数
  19. }
  20. const TAG = "openHarmonyBridge" //webview和vue沟通的名称
  21. const baseUrl = "http://10.88.11.200:10000"
  22. const proxyPrefix = "/mes-server"
  23. class BridgeModel {
  24. constructor() {
  25. }
  26. // this.controller.registerJavaScriptProxy 这个里面要对应
  27. download(params: string): string {
  28. // download(value: string, params: BridgeParams): string {
  29. // let downloadUrl: string = baseUrl + proxyPrefix + params.path
  30. // console.info(TAG, `download:`, downloadUrl);
  31. console.info(TAG, `params:`, params);
  32. return 'ArkTS收到了下载的请求';
  33. }
  34. }
  35. @Entry
  36. @Component
  37. struct Index {
  38. controller: web_webview.WebviewController = new web_webview.WebviewController();
  39. @State mode: MixedMode = MixedMode.All
  40. UIAbilityContext: common.UIAbilityContext = getContext(this) as common.UIAbilityContext
  41. // 声明需要注册的对象
  42. @State bridgeObj: BridgeModel = new BridgeModel();
  43. aboutToAppear() {
  44. setTimeout(() => {
  45. this.controller.registerJavaScriptProxy(this.bridgeObj, TAG, ["download"])
  46. this.controller.refresh()
  47. }, 2000)
  48. }
  49. build() {
  50. Column() {
  51. Stack() {
  52. // 组件创建时,加载www.example.com
  53. // Web({ src: $rawfile('download.html'), controller: this.controller })//测试下载proxy互相传值
  54. // Web({ src: $rawfile('local.html'), controller: this.controller }) //测试webview里面选择文件
  55. // Web({
  56. // src: 'http://10.88.11.200:10000/login',
  57. // controller: this.controller
  58. // })
  59. // Web({ src: 'http://apm.jgiot.com:7012/login', controller: this.controller})
  60. Web({
  61. src: 'http://10.88.20.88:3006/login',
  62. controller: this.controller
  63. })// Web({ src: 'http://10.88.11.200:11000/login', controller: this.controller})
  64. .mixedMode(this.mode)
  65. .onlineImageAccess(true)
  66. .javaScriptAccess(true)
  67. .overviewModeAccess(true)
  68. .databaseAccess(true)
  69. .domStorageAccess(true)
  70. .onShowFileSelector((event) => {
  71. console.log('MyFileUploader onShowFileSelector', JSON.stringify(event))
  72. const documentSelectOptions = new picker.DocumentSelectOptions();
  73. let uri: string | null = null;
  74. const documentViewPicker = new picker.DocumentViewPicker();
  75. documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => {
  76. uri = documentSelectResult[0];
  77. console.info('documentViewPicker.select to file succeed and uri is:' + uri);
  78. if (event) {
  79. event.result.handleFileList([uri]);
  80. }
  81. }).catch((err: BusinessError) => {
  82. console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
  83. })
  84. return true
  85. })
  86. // .onDownloadStart((event: DownStartModel) => {
  87. // console.log('onDownloadStart url:' + event.url)
  88. // console.log('onDownloadStart userAgent:' + event.userAgent)
  89. // console.log('onDownloadStart contentDisposition:' + event.contentDisposition)
  90. // console.log('onDownloadStart contentLength:' + event.contentLength)
  91. // console.log('onDownloadStart mimetype:' + event.mimetype)
  92. //
  93. //
  94. // })
  95. // .onConsole((e) => {
  96. // console.log(TAG, JSON.stringify(e))
  97. // return true
  98. // })
  99. // 退出程序
  100. Row() {
  101. Image($r('app.media.shutdown'))
  102. .width(px2vp(80))
  103. .height(px2vp(80))
  104. .onClick(() => {
  105. let pro = new process.ProcessManager();
  106. pro.exit(0);
  107. })
  108. }.width(px2vp(1920))
  109. .height(px2vp(80))
  110. .justifyContent(FlexAlign.End)
  111. }.width(px2vp(1920))
  112. .height(px2vp(1080))
  113. .align(Alignment.BottomEnd)
  114. }
  115. .width(px2vp(1920))
  116. .height(px2vp(1080))
  117. }
  118. }
  119. // downloadFile(url: string) {
  120. //
  121. // let filePath = this.UIAbilityContext.filesDir + '/' + "fileName";
  122. //
  123. // try {
  124. // request.downloadFile(this.UIAbilityContext, {
  125. // url: url,
  126. // filePath: filePath
  127. // }).then((data) => {
  128. // // 监听下载完成
  129. // data.on('complete', () => {
  130. // console.info('downloadFile task completed.');
  131. // // 安装应用
  132. // // this.installApp(filePath);
  133. // });
  134. // // 监听下载失败
  135. // data.on('fail', (err) => {
  136. // console.info('downloadFile task failed. Cause:' + err);
  137. // });
  138. // }).catch(() => {
  139. // console.error('downloadFile to request the download. Cause: ');
  140. //
  141. // })
  142. // } catch (err) {
  143. // // err.message: bad file path Download File already exists
  144. // console.error('downloadFile.code : ' + err.code + ', err.message : ' + err.message);
  145. //
  146. // }
  147. // }