Card5Component.ets 2.24 KB
import { ContentDTO } from 'wdBean';
import { CommonConstants } from 'wdConstant';
import { ProcessUtils } from 'wdRouter';
import { onlyWifiLoadImg } from '../../utils/lazyloadImg';
import { Notes } from './notes';

const TAG: string = 'Card5Component';

/**
 * 卡片样式:"appStyle":"5" 头图卡
 */
@Component
export struct Card5Component {
  @State contentDTO: ContentDTO = new ContentDTO();
  @Prop titleShowPolicy: number | string
  @State loadImg: boolean = false;
  @State clicked: boolean = false;

  async aboutToAppear(): Promise<void> {
    this.loadImg = await onlyWifiLoadImg();
  }

  build() {
    Stack() {
      Image(this.loadImg ? this.contentDTO.coverUrl : '')
        .backgroundColor(0xf5f5f5)
        .width(CommonConstants.FULL_WIDTH)
        .autoResize(true)
        .borderRadius($r('app.float.image_border_radius'))
      if (this.titleShowPolicy === 1 || this.titleShowPolicy === null) {
        Row()
          .width(CommonConstants.FULL_WIDTH)
          .height(59)
          .linearGradient({
            colors: [
              ['rgba(0, 0, 0, 0.0)', 0.0], ['rgba(0, 0, 0, 0.3)', 1.0]
            ]
          })
        Row() {
          Stack() {
            if (this.contentDTO.objectType == '5') {
              Notes({ objectType: this.contentDTO.objectType })
            }

            Text(this.contentDTO.newsTitle)
              .width(CommonConstants.FULL_WIDTH)
              .fontColor(Color.White)
              .fontSize($r('app.float.normal_text_size'))
              .fontWeight(FontWeight.Bold)
              .maxLines(2)
              .align(Alignment.TopStart)
              .textIndent(this.contentDTO.objectType == '5' ? 35 : 0)
          }.alignContent(Alignment.TopStart)
        }
        .justifyContent(FlexAlign.Start)
        .margin({ left: 12, bottom: 10, right: 12 })

      }
    }
    .alignContent(Alignment.Bottom)
    .width(CommonConstants.FULL_WIDTH)
    .padding({
      left: $r('app.float.card_comp_pagePadding_lf'),
      right: $r('app.float.card_comp_pagePadding_lf'),
      top: $r('app.float.card_comp_pagePadding_tb'),
      bottom: $r('app.float.card_comp_pagePadding_tb')
    })
    .onClick((event: ClickEvent) => {
      this.clicked = true;
      ProcessUtils.processPage(this.contentDTO)
    })

  }
}