RmhTitle.ets 3.35 KB
/**
 * 这里是人民号动态中的顶部信息:人民号logo,名字,描述,关注等
 */
import { RmhInfoDTO } from 'wdBean'
import { CommonConstants } from 'wdConstant/Index';
import { DateTimeUtils, SPHelper } from 'wdKit';
import { SpConstants } from 'wdConstant/Index'
import { WDRouterPage, WDRouterRule } from 'wdRouter/Index';
import router from '@ohos.router'

@Component
export struct RmhTitle {
  @Prop rmhInfo: RmhInfoDTO
  @Prop publishTime: string | undefined
  @Prop hideTime: boolean

  async appointReq() {
    // 未登录,跳转登录
    const user_id = await SPHelper.default.get(SpConstants.USER_ID, '')
    if (!user_id) {
      WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
      return
    }
  }

  aboutToAppear(): void {
    let page = router.getState();
    if (page.path.includes('/page/PeopleShipHomePage')) {
      this.hideTime = true;
    }
  }

  getDaysBetweenDates(date: number) {
    const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
    const time1 = new Date().getTime(); // 今天日期的时间戳
    const time2 = new Date(date).getTime(); // 要比较日期的时间戳
    const diffDays = Math.round(Math.abs((time1 - time2) / oneDay)); // 两个日期时间戳差值除以一天的毫秒数得到天数,取绝对值并四舍五入
    return Math.ceil(diffDays);
  }

  build() {
    Flex() {
      Stack() {
        Image(this.rmhInfo.rmhHeadUrl)
          .width(36)
          .height(36).borderRadius(50)
        Image(this.rmhInfo.authIcon)
          .width(14)
          .height(14)
          .borderRadius(50)
      }
      .margin({ right: 8 })
      .alignContent(Alignment.BottomEnd)
      .flexShrink(0)

      Column() {
        Text(this.rmhInfo.rmhName)
          .fontSize($r('app.float.font_size_13'))
          .fontColor($r('app.color.color_222222'))
          .fontWeight(600)
          .alignSelf(ItemAlign.Start)
        Flex({alignContent: FlexAlign.Start, wrap: FlexWrap.NoWrap}) {
          Row() {
            if (!(this.hideTime && this.getDaysBetweenDates(Number(this.publishTime)) > 2)) {
              if (this.publishTime) {
                Text(DateTimeUtils.getCommentTime(Number.parseFloat(this.publishTime)))
                  .fontSize($r("app.float.font_size_12"))
                  .fontColor($r("app.color.color_B0B0B0"))
              }
              if (this.publishTime && this.rmhInfo.rmhDesc) {
                Image($r('app.media.point'))
                  .width(16)
                  .height(16)
              }
            }
            Text(this.rmhInfo.rmhDesc)
              .fontSize($r("app.float.font_size_12"))
              .fontColor($r("app.color.color_B0B0B0"))
              .maxLines(1)
              .alignSelf(ItemAlign.Start)
              .textOverflow({ overflow: TextOverflow.Ellipsis })
              .textAlign(TextAlign.Start)
          }
          .width('75%')
        }
      }

      Blank()
      if (this.rmhInfo.cnIsAttention) {
        Row() {
          Image($r('app.media.rmh_follow'))
            .width(16)
            .height(16)
          Text('关注')
            .fontSize($r('app.float.font_size_13'))
            .fontColor($r('app.color.color_ED2800'))
        }
        .flexShrink(0)
        .alignSelf(ItemAlign.Center)
        .onClick(() => {
          this.appointReq();
        })
      }
    }
    .width(CommonConstants.FULL_WIDTH)
    .margin({ bottom: 10 })
  }
}