张善主

fix(早晚报/版面):分享

... ... @@ -100,6 +100,8 @@ export class ContentDTO implements BaseDTO {
本地辅助字段
*/
liveRoomDataBean : LiveRoomDataBean = {} as LiveRoomDataBean// 批查获取到的直播观看人数
//本地字段:时间轴专题页节点组件时间;【如果开启模糊则显示时间->左右;0:否,1:是】
timeBlurred:number = 0
static clone(old: ContentDTO): ContentDTO {
let content = new ContentDTO();
... ...
import { ArrayList } from '@kit.ArkTS';
import { SharePosterItemBean } from './SharePosterItemBean';
export interface ShareInfoDTO {
shareCoverUrl: string;
shareOpen: number;
//海报图片地址
sharePosterCoverUrl: string;
//海报报分享开关 0:关闭,1:开启
sharePosterOpen: number;
shareSummary: string;
//标题
shareTitle: string;
//分享链接
shareUrl: string;
//首发时间
publishTime:string;
//图片
imageUrl:string;
//直播和内容的举报,仅针对人民号发布的才能举报,cms创建的没有举报按钮
showReport:boolean;
//点赞按钮显示 -1:不展示 0:未点赞 1:已点赞
showLike:number;
//0 分享海报关闭,1 分享海报开启
posterShareControl:string;
//是否展示海报 -1-不展示图标
showPoster:number;
//海报展示类型 1:专题、文章、图文、视频、直播 2:人民号 3:评论 4:电子报海报 5:音频专题海报 6:早晚报专题海报 7:榜单H5 8:H5普通文章专题,包含时间链
showPosterType:number;
//接口返回: 内容id、内容类型
contentId:string;
//内容类型,分享的类型 0:不跳转 1:点播,2:直播,3:活动,4:广告,5:专题,6:链接,7:榜单,8:图文,9:组图,10:H5新闻,11:频道,12:组件,13:音频,14动态图文,15动态视频
contentType:string;
//关系id
targetRelId:string;
//关系类型,1.频道关系;2.专题关系
targetRelType:string;
//21:文章专题,22:音频专题,23:直播专题,24:话题专题,25:早晚报专题
topicType:string;
//早晚报;1-早报;2-午报;3-晚报
topicPattern:number;
//是否有头版
isFrontDaily:boolean;
//分享海报简介
posterSummary:string;
sharePosterItemList: SharePosterItemBean[]
//分享海报标题
posterTitle:string;
}
... ...
export interface SharePosterItemBean {
title: string;
duration:number;
imageUrl:string;
timeNode:string;
/**
* 是否显示时间左右
*/
timeBlurred:number;
}
... ...
import { FrontLinkObject } from '../component/FrontLinkObject';
import { ArrayList } from '@kit.ArkTS';
import { ContentDTO } from '../content/ContentDTO';
export interface TopicInfo {
axisColor: string;
... ... @@ -28,8 +30,17 @@ export interface TopicInfo {
topicId: string;
topicPattern: number;
// topicTemplate?: any;
//21:文章专题,22:音频专题,23:直播专题,24:话题专题,25:早晚报专题,26:时间链
topicType: number;
transluceImgUrl: string;
visitorComment: number;
// voteInfo?: any;
//频道、专题页关系id;
relId:string;
//关系类型:1.频道关系;2.专题关系;
relType:string;
//本地字段 --》分享页面需要展示的数据
shareContentList: ContentDTO[]
//专题背景图
backgroundImgUrl: string
}
\ No newline at end of file
... ...
export interface NewspaperShareBean {
shareUrl:string;
sharePosterOpen:number;
sharePosterCoverUrl:string;
}
\ No newline at end of file
... ...
import { NewspaperListBean, NewspaperListItemBean } from 'wdBean';
import { ContentDetailDTO, NewspaperListBean, NewspaperListItemBean } from 'wdBean';
import { NewspaperViewModel } from '../viewmodel/NewspaperViewModel';
import router from '@ohos.router';
import { ENewspaperItemComponent } from './ENewspaperItemComponent';
... ... @@ -11,7 +11,8 @@ import { RMCalendarBean } from './calendar/RMCalendarBean';
import { newsSkeleton } from './skeleton/newsSkeleton';
import { Logger, ToastUtils, NetworkUtil } from 'wdKit/Index';
import { TrackingContent,TrackConstants, TrackingButton } from 'wdTracking/Index';
import { WDShare } from 'wdShare/Index';
//电子报UI
@Component
export struct ENewspaperPageComponent {
private displayTool = display.getDefaultDisplaySync()
... ... @@ -179,7 +180,7 @@ export struct ENewspaperPageComponent {
})
.id('e_newspaper_share')
.onClick(() => {
ToastUtils.showToast('分享为公共方法,待开发', 1000);
this.share()
})
}
}
... ... @@ -392,4 +393,24 @@ export struct ENewspaperPageComponent {
}
}
share() {
let contentDetailData: ContentDetailDTO = {
shareInfo:{
shareTitle:this.newspaperListBean?.list[this.swiperIndex].pageName,
publishTime:this.newspaperListBean?.list[this.swiperIndex].periodNum,
imageUrl:this.newspaperListBean?.list[this.swiperIndex].pagePic,
shareUrl:this.newspaperListBean?.list[this.swiperIndex].sharePagePic.shareUrl,
sharePosterCoverUrl:this.newspaperListBean?.list[this.swiperIndex].sharePagePic.sharePosterCoverUrl,
showReport:false,
showLike:-1,
shareOpen:1,
sharePosterOpen:1,
posterShareControl:'-1',
showPoster:-1,
showPosterType:4,
}
} as ContentDetailDTO
WDShare.shareContent(contentDetailData,TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage)
}
}
\ No newline at end of file
... ...
... ... @@ -294,7 +294,7 @@ export struct MorningEveningPaperComponent {
@Builder
topPaperTitle(){
Column(){
PaperTitleComponent().margin({top:this.topSafeHeight})
PaperTitleComponent({topicInfo:this.pageInfoBean?.topicInfo}).margin({top:this.topSafeHeight})
}.height(44+this.topSafeHeight).backgroundColor(this.isHasTopView?(this.scrollOffset > 100?this.mixedBgColor:''):this.mixedBgColor)
}
... ...
import router from '@ohos.router';
import { ContentDetailDTO, TopicInfo } from 'wdBean/Index';
import { ToastUtils } from 'wdKit';
import { WDShare } from 'wdShare/Index';
import { TrackConstants } from 'wdTracking/Index';
/**
* 早晚报页面标题bar
... ... @@ -9,7 +12,7 @@ import { ToastUtils } from 'wdKit';
export struct PaperTitleComponent {
@Consume title?: string
@Consume subTitle?: string
topicInfo: TopicInfo = {} as TopicInfo
aboutToAppear() {
}
... ... @@ -105,7 +108,7 @@ export struct PaperTitleComponent {
.id('img_share')
.margin({ right: 16 })
.onClick(() => {
ToastUtils.showToast('分享为公共方法,待开发', 1000)
this.share()
})
}
// .margin({ left: 14, right: 14 })
... ... @@ -149,4 +152,28 @@ export struct PaperTitleComponent {
// }
// .margin({ left: 6 })
}
share() {
let contentDetailData: ContentDetailDTO = {
newsId:Number.parseInt(this.topicInfo.topicId),
shareInfo:{
contentId:this.topicInfo.topicId,
contentType:this.topicInfo.topicType+'',
shareTitle:this.topicInfo.shareTitle,
shareSummary:this.topicInfo.shareSummary,
imageUrl:this.topicInfo.shareCoverUrl,
sharePosterCoverUrl:this.topicInfo.sharePosterCoverUrl,
shareUrl:this.topicInfo.shareUrl,
targetRelId:this.topicInfo.relId,
targetRelType:this.topicInfo.relType,
showReport:false,
showLike:-1,
shareOpen:1,
sharePosterOpen:this.topicInfo.posterFlag,
showPoster:this.topicInfo.posterFlag>0?1:-1,
}
} as ContentDetailDTO
WDShare.setTopicBeanToShareBean(contentDetailData.shareInfo,this.topicInfo)
WDShare.shareContent(contentDetailData,TrackConstants.PageName.Eletronic_Paper,TrackConstants.PageName.Eletronic_Paper)
}
}
\ No newline at end of file
... ...
import { ContentDetailDTO, ContentDTO, PageInfoDTO } from 'wdBean/Index';
import { ContentDetailDTO, ContentDTO, PageInfoDTO, ShareInfoDTO, TopicInfo } from 'wdBean/Index';
import { SharePosterItemBean } from 'wdBean/src/main/ets/bean/detail/SharePosterItemBean';
import { ShareScene, ShareType, WDShareBase } from 'wdShareBase/Index';
import { ShareContentType } from 'wdShareBase/src/main/ets/Constant';
... ... @@ -29,4 +30,58 @@ export class WDShare {
}
//专题分享数据转换
static setTopicBeanToShareBean(shareBean: ShareInfoDTO, topicInfoBean: TopicInfo){
shareBean.topicType = topicInfoBean.topicType+''
//21:文章专题,22:音频专题,23:直播专题,24:话题专题,25:早晚报专题,26:时间链
if(25 == topicInfoBean.topicType){
shareBean.showPosterType = 6
shareBean.topicPattern = topicInfoBean.topicPattern
shareBean.publishTime = topicInfoBean.topicDate
if(topicInfoBean.frontLinkObject == null){
shareBean.isFrontDaily = false
if(topicInfoBean.shareContentList != null && topicInfoBean.shareContentList.length>0){
shareBean.sharePosterItemList = [] as SharePosterItemBean[]
shareBean.sharePosterItemList.length = topicInfoBean.shareContentList.length
for (let index = 0; index < topicInfoBean.shareContentList.length; index++) {
let element = topicInfoBean.shareContentList[index]
if(element != null){
shareBean.sharePosterItemList[index] = {
title:topicInfoBean.shareContentList[index].newsTitle,
imageUrl:topicInfoBean.shareContentList[index].coverUrl,
} as SharePosterItemBean
}
}
}
}else{
shareBean.isFrontDaily = true
shareBean.sharePosterCoverUrl = topicInfoBean.frontLinkObject.coverUrl
shareBean.posterSummary = topicInfoBean.frontLinkObject.summary
}
}else{
//文章/直播/话题专题(H5普通文章专题,包含时间链)
shareBean.showPosterType = 8
//海报的头图
shareBean.sharePosterCoverUrl = topicInfoBean.backgroundImgUrl
shareBean.isFrontDaily = false
shareBean.posterTitle = topicInfoBean.title
shareBean.posterSummary = topicInfoBean.summary
if(topicInfoBean.shareContentList != null && topicInfoBean.shareContentList.length>0){
shareBean.sharePosterItemList = [] as SharePosterItemBean[]
shareBean.sharePosterItemList.length = topicInfoBean.shareContentList.length
for (let index = 0; index < topicInfoBean.shareContentList.length; index++) {
let element = topicInfoBean.shareContentList[index]
if(element != null){
shareBean.sharePosterItemList[index] = {
title:topicInfoBean.shareContentList[index].newsTitle,
imageUrl:topicInfoBean.shareContentList[index].coverUrl,
timeNode:topicInfoBean.shareContentList[index].publishTime,
timeBlurred:topicInfoBean.shareContentList[index].timeBlurred
} as SharePosterItemBean
}
}
}
}
}
}
\ No newline at end of file
... ...
... ... @@ -5,7 +5,7 @@ import window from '@ohos.window';
import { TrackingPageBrowse ,TrackConstants} from 'wdTracking/Index';
const TAG = 'ENewspaper';
//电子报主页面
@Entry
@Component
struct ENewspaper {
... ...