ImageAndTextWebComponent.ets 2.86 KB
import {
  Action,
  ContentDetailDTO,
  H5ReceiveDataExtraBean,
  H5ReceiveDataJsonBean,
  H5ReceiveDetailBean,
  ResponseBean
} from 'wdBean';
import { Logger } from 'wdKit';
import { WdWebComponent } from 'wdWebComponent';
import { BridgeWebViewControl } from '../../../../../wdWebComponent/oh_modules/wdJsBridge/Index';

@Component
export struct ImageAndTextWebComponent {
  webviewControl: BridgeWebViewControl = new BridgeWebViewControl()
  action: Action = {} as Action
  @State reload: number = 0;
  @Prop @Watch('onDetailDataUpdated') detailData: ContentDetailDTO = {} as ContentDetailDTO

  onDetailDataUpdated() {
    if (this.action) {
      let contentId: string = ''
      let contentType: string = ''
      let topicId: string = ''
      let channelId: string = ''
      let compId: string = ''
      let sourcePage: string = '5'
      if (this.action.params) {
        if (this.action.params.contentID) {
          contentId = this.action.params?.contentID
        }
        if (this.action.params.extra) {
          if (this.action.params.extra.contentType) {
            contentType = this.action.params.extra.contentType
          }
          if (this.action.params.extra.topicId) {
            topicId = this.action.params.extra.topicId
          }
          if (this.action.params.extra.channelId) {
            channelId = this.action.params.extra.channelId
          }
          if (this.action.params.extra.compId) {
            compId = this.action.params.extra.compId
          }
          if (this.action.params.extra.sourcePage) {
            sourcePage = this.action.params.extra.sourcePage
          }
        }

      }

      let h5ReceiveAppData: H5ReceiveDetailBean = { dataSource: '2' } as H5ReceiveDetailBean
      let h5ReceiveDataExtraBean: H5ReceiveDataExtraBean = { creatorId: '', isLogin: '0' } as H5ReceiveDataExtraBean
      let h5ReceiveDataJsonBean: H5ReceiveDataJsonBean = {
        contentId: contentId,
        contentType: contentType
      } as H5ReceiveDataJsonBean
      h5ReceiveDataJsonBean.topicId = topicId
      h5ReceiveDataJsonBean.channelId = channelId
      h5ReceiveDataJsonBean.compId = compId
      h5ReceiveDataJsonBean.sourcePage = sourcePage
      h5ReceiveDataJsonBean.netError = '0'
      let response: ResponseBean = {} as ResponseBean
      response.data = this.detailData
      h5ReceiveDataJsonBean.responseMap = response
      h5ReceiveAppData.dataJson = h5ReceiveDataJsonBean
      h5ReceiveAppData.dataExt = h5ReceiveDataExtraBean
      this.webviewControl.callHandle("jsCall_receiveAppData", JSON.stringify(h5ReceiveAppData), (data: string) => {
        Logger.info("from js data = " + data);
      })
    }

  }

  build() {
    Column() {
      WdWebComponent({
        type: 0,
        webviewControl: this.webviewControl,
        webResource: $rawfile('apph5/index.html'),
        backVisibility: false,
        reload: this.reload
      })
    }
  }
}