SingleImageCardComponent.ets 3.08 KB
import { Action, CompDTO, Params } from 'wdBean';
import { ExtraDTO } from 'wdBean/src/main/ets/bean/component/extra/ExtraDTO';
import { Logger, DateTimeUtils } from 'wdKit';
import { WDRouterRule } from 'wdRouter';
import { ProcessUtils } from '../../utils/ProcessUtils';

const TAG = 'SingleImageCardComponent';
const FULL_PARENT: string = '100%';

/**
 * 单图卡-3行标题/2行标题
 * 枚举值13
 * ImageCard-03
 * 重磅推荐/精选/电视剧/电影/综艺/短剧/更多>/
 */

@Component
export struct SingleImageCardComponent {
  @State compDTO: CompDTO = {} as CompDTO

  aboutToAppear() {
    //Logger.debug(TAG + "" + JSON.stringify(this.compDTO.operDataList));

  }

  build() {
    Row() {
      Column() {
        Text(this.compDTO.operDataList[0].newsTitle)
          .fontSize(16)
          .fontWeight(FontWeight.Normal)
          .maxLines(3)//
          .alignSelf(ItemAlign.Start)
          .textOverflow({ overflow: TextOverflow.Ellipsis })// 超出的部分显示省略号。
          .height("80%")
        Row() {
          Text(this.compDTO.operDataList[0].source ? this.compDTO.operDataList[0].source : '人民日报')
            .height(40)
            .fontSize(14)
            .fontColor(Color.Gray)
          Image($r('app.media.point'))
            .width(16)
            .height(16)
          Text('45分钟前')
            .height(40)
            .fontSize(14)
            .fontColor(Color.Gray)
          Text(this.compDTO.operDataList[0].visitorComment + '评')
            .height(40)
            .fontSize(14)
            .fontColor(Color.Gray)
            .padding({
              left: 10
            })
        }.alignSelf(ItemAlign.Start)
        .height("20%")
        .justifyContent(FlexAlign.SpaceBetween)
      }
      .alignItems(HorizontalAlign.Start)
      .justifyContent(FlexAlign.SpaceBetween)
      .width('58%')

      Blank(16)
      if (this.compDTO.operDataList[0].coverUrl) {
        Stack() {
          Image(this.compDTO.operDataList[0].coverUrl)
            .borderRadius(5)
            .aspectRatio(3 / 2)
            .height('78vp')
          if (this.compDTO.operDataList[0].videoInfo) {
            Row() {
              Image($r('app.media.iv_card_play_yellow_flag'))
                .width(22)
                .height(18)
              Text(DateTimeUtils.getFormattedDuration(this.compDTO.operDataList[0].videoInfo.videoDuration * 1000))
                .fontSize($r('app.float.font_size_13'))
                .fontWeight(400)
                .fontColor($r('app.color.color_fff'))
            }
            .alignItems(VerticalAlign.Bottom)
            .height(18)
            .padding({ right: 4 })
            .margin({
              right: 4,
              bottom: 4
            })
            .backgroundColor($r('app.color.color_4d000000'))
          }
        }.alignContent(Alignment.BottomEnd)
      }
    }
    .onClick((event: ClickEvent) => {
      ProcessUtils.processPage(this.compDTO?.operDataList[0])
    })
    .padding(
      { top: 16, bottom: 16, left: 14, right: 14 })
    .width(FULL_PARENT)
    .height('127vp')
    .justifyContent(FlexAlign.SpaceBetween)
  }
}