yangsunyue_wd
Showing 50 changed files with 1988 additions and 139 deletions
@@ -28,6 +28,6 @@ export const enum CompStyle { @@ -28,6 +28,6 @@ export const enum CompStyle {
28 ZhGrid_Layout_03 = 'Zh_Grid_Layout-03', //金刚位卡 28 ZhGrid_Layout_03 = 'Zh_Grid_Layout-03', //金刚位卡
29 Album_Card_01 = '17', //图卡集 29 Album_Card_01 = '17', //图卡集
30 Zh_Single_Row_04 = 'Zh_Single_Row-04', // 地方精选卡 30 Zh_Single_Row_04 = 'Zh_Single_Row-04', // 地方精选卡
31 - CompStyle_09 = 9, // 时间链卡  
32 - CompStyle_10 = 10, // 大专题卡 31 + CompStyle_09 = '9', // 时间链卡
  32 + CompStyle_10 = '10', // 大专题卡
33 } 33 }
@@ -122,6 +122,14 @@ export class HttpUrlUtils { @@ -122,6 +122,14 @@ export class HttpUrlUtils {
122 */ 122 */
123 static readonly OTHER_USER_DETAIL_DATA_PATH: string = "/api/rmrb-contact/contact/zh/c/master/detail"; 123 static readonly OTHER_USER_DETAIL_DATA_PATH: string = "/api/rmrb-contact/contact/zh/c/master/detail";
124 /** 124 /**
  125 + * 个人中心 其他用户的评论列表
  126 + */
  127 + static readonly OTHER_COMMENT_LIST_DATA_PATH: string = "/api/rmrb-comment/comment/zh/c/othersCommentList";
  128 + /**
  129 + * 个人中心 我的关注列表
  130 + */
  131 + static readonly OTHER_USER_FOLLOW_LIST_DATA_PATH: string = "/api/rmrb-interact/interact/zh/c/userAttention/list";
  132 + /**
125 * 早晚报列表 133 * 早晚报列表
126 * 根据页面id获取页面楼层列表 134 * 根据页面id获取页面楼层列表
127 * https://pdapis.pdnews.cn/api/rmrb-bff-display-zh/display/zh/c/pageInfo?pageId=28927 135 * https://pdapis.pdnews.cn/api/rmrb-bff-display-zh/display/zh/c/pageInfo?pageId=28927
@@ -295,7 +303,7 @@ export class HttpUrlUtils { @@ -295,7 +303,7 @@ export class HttpUrlUtils {
295 return '8a81226a-cabd-3e1b-b630-b51db4a720ed'; 303 return '8a81226a-cabd-3e1b-b630-b51db4a720ed';
296 } 304 }
297 305
298 - private static getUserId() { 306 + public static getUserId() {
299 // TODO 对接登录 307 // TODO 对接登录
300 let userid = SPHelper.default.getSync(SpConstants.USER_ID,"") 308 let userid = SPHelper.default.getSync(SpConstants.USER_ID,"")
301 if(StringUtils.isNotEmpty(userid)) { 309 if(StringUtils.isNotEmpty(userid)) {
@@ -414,6 +422,17 @@ export class HttpUrlUtils { @@ -414,6 +422,17 @@ export class HttpUrlUtils {
414 return url 422 return url
415 } 423 }
416 424
  425 + static getOtherCommentListDataUrl() {
  426 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.OTHER_COMMENT_LIST_DATA_PATH
  427 + return url
  428 + }
  429 +
  430 + static getOtherUserFollowListDataUrl() {
  431 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.OTHER_USER_FOLLOW_LIST_DATA_PATH
  432 + return url
  433 + }
  434 +
  435 +
417 436
418 static getYcgCommonHeaders(): HashMap<string, string> { 437 static getYcgCommonHeaders(): HashMap<string, string> {
419 let headers: HashMap<string, string> = new HashMap<string, string>() 438 let headers: HashMap<string, string> = new HashMap<string, string>()
@@ -23,7 +23,7 @@ export { Pic } from './src/main/ets/bean/content/Pic' @@ -23,7 +23,7 @@ export { Pic } from './src/main/ets/bean/content/Pic'
23 23
24 export { InteractDataDTO } from './src/main/ets/bean/content/InteractDataDTO'; 24 export { InteractDataDTO } from './src/main/ets/bean/content/InteractDataDTO';
25 25
26 -export { InteractDataStatusDTO } from './src/main/ets/bean/detail/MultiPictureDetailPageDTO'; 26 +export { InteractDataStatusBean, PhotoListBean } from './src/main/ets/bean/detail/MultiPictureDetailPageDTO';
27 27
28 export { InteractParam, ContentBean } from './src/main/ets/bean/content/InteractParam'; 28 export { InteractParam, ContentBean } from './src/main/ets/bean/content/InteractParam';
29 29
@@ -91,3 +91,4 @@ export { OperDataList } from './src/main/ets/bean/morningevening/OperDataList'; @@ -91,3 +91,4 @@ export { OperDataList } from './src/main/ets/bean/morningevening/OperDataList';
91 91
92 export { ShareInfo } from './src/main/ets/bean/morningevening/ShareInfo'; 92 export { ShareInfo } from './src/main/ets/bean/morningevening/ShareInfo';
93 93
  94 +export { slideShows } from './src/main/ets/bean/morningevening/slideShows';
@@ -2,6 +2,8 @@ import { FullColumnImgUrlDTO } from '../detail/FullColumnImgUrlDTO'; @@ -2,6 +2,8 @@ import { FullColumnImgUrlDTO } from '../detail/FullColumnImgUrlDTO';
2 import { LiveInfoDTO } from '../detail/LiveInfoDTO'; 2 import { LiveInfoDTO } from '../detail/LiveInfoDTO';
3 import { VideoInfoDTO } from '../detail/VideoInfoDTO'; 3 import { VideoInfoDTO } from '../detail/VideoInfoDTO';
4 import { InteractDataDTO } from './InteractDataDTO'; 4 import { InteractDataDTO } from './InteractDataDTO';
  5 +import { slideShows } from '../morningevening/slideShows'
  6 +
5 7
6 export interface ContentDTO { 8 export interface ContentDTO {
7 cityCode: string; 9 cityCode: string;
@@ -58,4 +60,7 @@ export interface ContentDTO { @@ -58,4 +60,7 @@ export interface ContentDTO {
58 60
59 // 二次请求接口,返回的数据,这里组装到content里;TODO 后续优化 61 // 二次请求接口,返回的数据,这里组装到content里;TODO 后续优化
60 interactData:InteractDataDTO; 62 interactData:InteractDataDTO;
  63 +
  64 + hasMore: number,
  65 + slideShows: slideShows[]
61 } 66 }
@@ -11,7 +11,7 @@ import { UserInfoDTO } from './UserInfoDTO' @@ -11,7 +11,7 @@ import { UserInfoDTO } from './UserInfoDTO'
11 * http://192.168.1.3:3300/project/3802/interface/api/200915 11 * http://192.168.1.3:3300/project/3802/interface/api/200915
12 */ 12 */
13 export interface ContentDetailDTO { 13 export interface ContentDetailDTO {
14 - newsId: string; 14 + newsId: number;
15 newsTitle: string; 15 newsTitle: string;
16 newsShortTitle: string; 16 newsShortTitle: string;
17 newsDownTitle: string; 17 newsDownTitle: string;
@@ -42,8 +42,8 @@ export interface ContentDetailDTO { @@ -42,8 +42,8 @@ export interface ContentDetailDTO {
42 videoInfo: VideoInfoDTO[]; 42 videoInfo: VideoInfoDTO[];
43 liveInfo?: any; 43 liveInfo?: any;
44 voteInfo?: any; 44 voteInfo?: any;
45 - rmhInfo?: RmhInfoDTO;  
46 - userInfo?: UserInfoDTO; 45 + rmhInfo?: RmhInfoDTO | null;
  46 + userInfo?: UserInfoDTO | null;
47 openLikes: number; 47 openLikes: number;
48 openComment: number; 48 openComment: number;
49 likesStyle: number; 49 likesStyle: number;
@@ -68,4 +68,7 @@ export interface ContentDetailDTO { @@ -68,4 +68,7 @@ export interface ContentDetailDTO {
68 timeline?: any; 68 timeline?: any;
69 traceInfo: string; 69 traceInfo: string;
70 viewCount: number; 70 viewCount: number;
  71 + isNewspaper: boolean;
  72 + oldNewsId: string;
  73 + serials: any;
71 } 74 }
@@ -2,7 +2,7 @@ export interface FullColumnImgUrlDTO { @@ -2,7 +2,7 @@ export interface FullColumnImgUrlDTO {
2 format?: any; 2 format?: any;
3 height: number; 3 height: number;
4 landscape: number; 4 landscape: number;
5 - size: number; 5 + size: number | null;
6 url: string; 6 url: string;
7 weight: number; 7 weight: number;
8 } 8 }
@@ -2,11 +2,19 @@ @@ -2,11 +2,19 @@
2 * 多图(图集)详情 2 * 多图(图集)详情
3 * */ 3 * */
4 // 批量查询内容当前用户点赞、收藏状态 4 // 批量查询内容当前用户点赞、收藏状态
5 -export interface InteractDataStatusDTO { 5 +export interface InteractDataStatusBean {
6 contentId: string; 6 contentId: string;
7 contentType: number; 7 contentType: number;
8 contentRelId: string; 8 contentRelId: string;
9 relType: number; 9 relType: number;
10 likeStatus: number; 10 likeStatus: number;
11 collectStatus: number; 11 collectStatus: number;
  12 +}
  13 +
  14 +// 【图文、图集稿件正文图片】图片信息数组
  15 +export interface PhotoListBean {
  16 + height: number;
  17 + width: number;
  18 + picPath: string;
  19 + picDesc: number;
12 } 20 }
  1 +import { ReLInfo } from './ReLInfo';
  2 +
  3 +export interface AudioDataList {
  4 + audioUrl: string;
  5 + coverUrl: string;
  6 + duration: number;
  7 + objectId: number;
  8 + objectType: number;
  9 + reLInfo: ReLInfo;
  10 + title: string;
  11 +}
  1 +import { AudioDataList } from './AudioDataList';
1 import { OperDataList } from './OperDataList'; 2 import { OperDataList } from './OperDataList';
2 3
3 export interface CompList { 4 export interface CompList {
4 - // audioDataList: any[]; 5 + audioDataList: AudioDataList[];
5 backgroundImgUrl: string; 6 backgroundImgUrl: string;
  7 +
6 // bottomNavId?: any; 8 // bottomNavId?: any;
7 cardItemId: string; 9 cardItemId: string;
  10 +
8 // cardUpdateStrategy?: any; 11 // cardUpdateStrategy?: any;
9 compStyle: string; 12 compStyle: string;
10 compType: string; 13 compType: string;
11 dataSourceType: string; 14 dataSourceType: string;
12 expIds: string; 15 expIds: string;
13 extraData: string; 16 extraData: string;
  17 +
14 // fullColumnImgUrls: any[]; 18 // fullColumnImgUrls: any[];
15 hasMore: number; 19 hasMore: number;
16 id: number; 20 id: number;
  21 +
17 // imageScale?: any; 22 // imageScale?: any;
18 imgSize: string; 23 imgSize: string;
19 itemId: string; 24 itemId: string;
20 itemType: string; 25 itemType: string;
21 itemTypeCode: string; 26 itemTypeCode: string;
22 linkUrl: string; 27 linkUrl: string;
  28 +
23 // localGovernance?: any; 29 // localGovernance?: any;
24 name: string; 30 name: string;
25 objectId: string; 31 objectId: string;
@@ -27,13 +33,16 @@ export interface CompList { @@ -27,13 +33,16 @@ export interface CompList {
27 objectSummary: string; 33 objectSummary: string;
28 objectTitle: string; 34 objectTitle: string;
29 objectType: string; 35 objectType: string;
  36 +
30 // openComment?: any; 37 // openComment?: any;
31 // openLikes?: any; 38 // openLikes?: any;
32 operDataList: OperDataList[]; 39 operDataList: OperDataList[];
33 pageId: string; 40 pageId: string;
  41 +
34 // position?: any; 42 // position?: any;
35 posterSize: string; 43 posterSize: string;
36 posterUrl: string; 44 posterUrl: string;
  45 +
37 // questionSection?: any; 46 // questionSection?: any;
38 recommend: number; 47 recommend: number;
39 relId: number; 48 relId: number;
@@ -41,8 +50,10 @@ export interface CompList { @@ -41,8 +50,10 @@ export interface CompList {
41 sortValue: number; 50 sortValue: number;
42 subSceneId: string; 51 subSceneId: string;
43 summaryName: string; 52 summaryName: string;
  53 +
44 // tabOperDataList: any[]; 54 // tabOperDataList: any[];
45 titleShowPolicy: number; 55 titleShowPolicy: number;
  56 +
46 // topicTemplate?: any; 57 // topicTemplate?: any;
47 traceId: string; 58 traceId: string;
48 traceInfo: string; 59 traceInfo: string;
  1 +export interface ReLInfo {
  2 + channelId?: string;
  3 + relId: string;
  4 + relObjectId: number;
  5 + relType: string;
  6 +}
  1 +import { FullColumnImgUrlDTO } from '../detail/FullColumnImgUrlDTO';
  2 +export interface slideShows {
  3 + fullColumnImgUrls: FullColumnImgUrlDTO[];
  4 + linkUrl?: string;
  5 + newsId?: string;
  6 + newsTitle?: string;
  7 + newsTitleColor?: string;
  8 + objectLevel?: string;
  9 + objectType?: string;
  10 + pageId?: string;
  11 + photoNum?: string;
  12 + publishTime: number;
  13 + relId?: string;
  14 + source?: string;
  15 + timeBlurred?: string;
  16 + videoDuration?: string;
  17 + videoLandscape?: string;
  18 + videoUrl?: string;
  19 + voiceDuration?: string;
  20 +}
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 "wdBean": "file:../../features/wdBean", 13 "wdBean": "file:../../features/wdBean",
14 "wdRouter": "file:../../commons/wdRouter", 14 "wdRouter": "file:../../commons/wdRouter",
15 "wdNetwork": "file:../../commons/wdNetwork", 15 "wdNetwork": "file:../../commons/wdNetwork",
  16 + "wdPlayer": "file:../../features/wdPlayer",
16 "wdLogin": "file:../../features/wdLogin" 17 "wdLogin": "file:../../features/wdLogin"
17 } 18 }
18 } 19 }
1 -import { CompDTO, ContentDTO } from 'wdBean'; 1 +import { CompDTO, ContentDTO , slideShows} from 'wdBean';
2 import { CommonConstants, CompStyle } from 'wdConstant'; 2 import { CommonConstants, CompStyle } from 'wdConstant';
3 import { BannerComponent } from './view/BannerComponent'; 3 import { BannerComponent } from './view/BannerComponent';
4 import { LabelComponent } from './view/LabelComponent'; 4 import { LabelComponent } from './view/LabelComponent';
@@ -16,10 +16,10 @@ import { @@ -16,10 +16,10 @@ import {
16 import { 16 import {
17 HorizontalStrokeCardThreeTwoRadioForOneComponent 17 HorizontalStrokeCardThreeTwoRadioForOneComponent
18 } from './view/HorizontalStrokeCardThreeTwoRadioForOneComponent'; 18 } from './view/HorizontalStrokeCardThreeTwoRadioForOneComponent';
19 -import {  
20 - HorizontalStrokeCardThreeTwoRadioForTwoComponent  
21 -} from './view/HorizontalStrokeCardThreeTwoRadioForTwoComponent';  
22 import { AlbumCardComponent } from './view/AlbumCardComponent'; 19 import { AlbumCardComponent } from './view/AlbumCardComponent';
  20 +import { ZhSingleRow04 } from './view/ZhSingleRow04'
  21 +import { CompStyle_09 } from './view/CompStyle_09'
  22 +import { CompStyle_10 } from './view/CompStyle_10'
23 23
24 /** 24 /**
25 * comp适配器. 25 * comp适配器.
@@ -126,8 +126,12 @@ export struct CompParser { @@ -126,8 +126,12 @@ export struct CompParser {
126 ZhGridLayoutComponent({ compDTO: compDTO }) 126 ZhGridLayoutComponent({ compDTO: compDTO })
127 } else if (compDTO.compStyle === CompStyle.Album_Card_01) { 127 } else if (compDTO.compStyle === CompStyle.Album_Card_01) {
128 AlbumCardComponent({ compDTO: compDTO }) 128 AlbumCardComponent({ compDTO: compDTO })
129 - } else if (compDTO.compStyle === CompStyle.Single_Row_02) {  
130 - 129 + } else if (compDTO.compStyle === CompStyle.Zh_Single_Row_04) {
  130 + ZhSingleRow04({ compDTO: compDTO})
  131 + } else if (compDTO.compStyle === CompStyle.CompStyle_09) {
  132 + CompStyle_09({ compDTO: compDTO})
  133 + } else if (compDTO.compStyle === CompStyle.CompStyle_10) {
  134 + CompStyle_10({ compDTO: compDTO})
131 } 135 }
132 else { 136 else {
133 // todo:组件未实现 / Component Not Implemented 137 // todo:组件未实现 / Component Not Implemented
1 import { AudioDTO } from 'wdBean'; 1 import { AudioDTO } from 'wdBean';
  2 +import { Logger } from 'wdKit/Index';
2 3
3 /** 4 /**
4 * 早晚报页面音频bar 5 * 早晚报页面音频bar
5 */ 6 */
6 -@Entry 7 +// @Entry
7 @Component 8 @Component
8 export struct AudioBarView { 9 export struct AudioBarView {
9 @State audioDataList?: AudioDTO[] = [] 10 @State audioDataList?: AudioDTO[] = []
  11 + @Consume isAudioPlaying?: boolean
10 12
11 aboutToAppear() { 13 aboutToAppear() {
12 } 14 }
@@ -45,6 +47,11 @@ export struct AudioBarView { @@ -45,6 +47,11 @@ export struct AudioBarView {
45 .height(24) 47 .height(24)
46 .margin({ left: 10 })// .alignSelf(ItemAlign.Center) 48 .margin({ left: 10 })// .alignSelf(ItemAlign.Center)
47 .objectFit(ImageFit.Contain) 49 .objectFit(ImageFit.Contain)
  50 + .onClick(() => {
  51 + Logger.info("TAG", "cj compInfoBean onClick1 = " + this.isAudioPlaying)
  52 + this.isAudioPlaying = !this.isAudioPlaying
  53 + Logger.info("TAG", "cj compInfoBean onClick2 = " + this.isAudioPlaying)
  54 + })
48 } 55 }
49 // .aspectRatio(7 / 4) 56 // .aspectRatio(7 / 4)
50 .height('100%') 57 .height('100%')
1 // import { FrontLinkObject, MorningEveningPaperDTO, PageInfoBean } from 'wdBean'; 1 // import { FrontLinkObject, MorningEveningPaperDTO, PageInfoBean } from 'wdBean';
2 import { CompList, PageInfoBean } from 'wdBean'; 2 import { CompList, PageInfoBean } from 'wdBean';
3 import { DateTimeUtils, Logger } from 'wdKit/Index'; 3 import { DateTimeUtils, Logger } from 'wdKit/Index';
  4 +import { PaperReaderSimpleDialog } from '../../dialog/PaperReaderDialog';
4 import { MorningEveningViewModel } from '../../viewmodel/MorningEveningViewModel'; 5 import { MorningEveningViewModel } from '../../viewmodel/MorningEveningViewModel';
5 -import { AudioBarView } from './AudioBarView'; 6 +// import { AudioBarView } from './AudioBarView';
6 import { PaperTitleComponent } from './PaperTitleComponent'; 7 import { PaperTitleComponent } from './PaperTitleComponent';
7 import { SingleColumn999Component } from './SingleColumn999Component'; 8 import { SingleColumn999Component } from './SingleColumn999Component';
8 import { topicInfoView } from './topicInfoView'; 9 import { topicInfoView } from './topicInfoView';
  10 +import { WDPlayerController } from 'wdPlayer';
9 11
10 const TAG = 'MorningEveningPaperComponent'; 12 const TAG = 'MorningEveningPaperComponent';
11 13
@@ -17,6 +19,7 @@ export struct MorningEveningPaperComponent { @@ -17,6 +19,7 @@ export struct MorningEveningPaperComponent {
17 @State pageInfoBean: PageInfoBean = {} as PageInfoBean 19 @State pageInfoBean: PageInfoBean = {} as PageInfoBean
18 // @State compInfoBean: CompInfoBean = {} as CompInfoBean 20 // @State compInfoBean: CompInfoBean = {} as CompInfoBean
19 @State compListItem: CompList = {} as CompList 21 @State compListItem: CompList = {} as CompList
  22 + @State audioPlayUrl: string = ""
20 // @Provide compListItem: CompList = {} as CompList 23 // @Provide compListItem: CompList = {} as CompList
21 // @State morningEveningPaperDTO: MorningEveningPaperDTO = { 24 // @State morningEveningPaperDTO: MorningEveningPaperDTO = {
22 // name: "新闻夜读", 25 // name: "新闻夜读",
@@ -36,6 +39,16 @@ export struct MorningEveningPaperComponent { @@ -36,6 +39,16 @@ export struct MorningEveningPaperComponent {
36 // } as MorningEveningPaperDTO 39 // } as MorningEveningPaperDTO
37 @Provide title: string = '' 40 @Provide title: string = ''
38 @Provide subTitle: string = '' 41 @Provide subTitle: string = ''
  42 + @Provide isAudioPlaying: boolean = false
  43 + private playerController: WDPlayerController = new WDPlayerController();
  44 + private xComponentController: XComponentController = new XComponentController();
  45 + simpleAudioDialog: CustomDialogController = new CustomDialogController({
  46 + builder: PaperReaderSimpleDialog(),
  47 + autoCancel: false,
  48 + customStyle: true,
  49 + alignment: DialogAlignment.CenterStart,
  50 + offset: { dx: 12, dy: -150 }
  51 + })
39 52
40 async aboutToAppear() { 53 async aboutToAppear() {
41 console.info(TAG, `aboutToAppear`) 54 console.info(TAG, `aboutToAppear`)
@@ -44,7 +57,7 @@ export struct MorningEveningPaperComponent { @@ -44,7 +57,7 @@ export struct MorningEveningPaperComponent {
44 Logger.info(TAG, "currentTime = " + currentTime) 57 Logger.info(TAG, "currentTime = " + currentTime)
45 Logger.info(TAG, `currentTime = ${currentTime}`) 58 Logger.info(TAG, `currentTime = ${currentTime}`)
46 try { 59 try {
47 - let pageInfoBean = await MorningEveningViewModel.getMorningEveningPageInfo("28949") 60 + let pageInfoBean = await MorningEveningViewModel.getMorningEveningPageInfo("25091")
48 this.pageInfoBean = pageInfoBean; 61 this.pageInfoBean = pageInfoBean;
49 this.title = this.pageInfoBean?.topicInfo?.title 62 this.title = this.pageInfoBean?.topicInfo?.title
50 let dateTime = DateTimeUtils.parseDate(this.pageInfoBean?.topicInfo?.topicDate ?? '', DateTimeUtils.PATTERN_DATE_HYPHEN); 63 let dateTime = DateTimeUtils.parseDate(this.pageInfoBean?.topicInfo?.topicDate ?? '', DateTimeUtils.PATTERN_DATE_HYPHEN);
@@ -59,9 +72,13 @@ export struct MorningEveningPaperComponent { @@ -59,9 +72,13 @@ export struct MorningEveningPaperComponent {
59 // this.compInfoBean = compInfoBean 72 // this.compInfoBean = compInfoBean
60 if (compInfoBean?.compList[0]) { 73 if (compInfoBean?.compList[0]) {
61 this.compListItem = compInfoBean?.compList[0] 74 this.compListItem = compInfoBean?.compList[0]
  75 + if (compInfoBean?.compList[0].audioDataList) {
  76 + this.audioPlayUrl = compInfoBean?.compList[0].audioDataList[0].audioUrl
  77 + }
62 } 78 }
63 79
64 Logger.info(TAG, "compInfoBean compStyle = " + compInfoBean.compList[0].compStyle) 80 Logger.info(TAG, "compInfoBean compStyle = " + compInfoBean.compList[0].compStyle)
  81 +
65 } catch (exception) { 82 } catch (exception) {
66 83
67 } 84 }
@@ -77,12 +94,15 @@ export struct MorningEveningPaperComponent { @@ -77,12 +94,15 @@ export struct MorningEveningPaperComponent {
77 } 94 }
78 95
79 ListItem() { 96 ListItem() {
80 - AudioBarView() 97 + this.AudioBarView(this.simpleAudioDialog)
81 } 98 }
82 } 99 }
83 100
84 ListItem() { 101 ListItem() {
85 - SingleColumn999Component({ compListItem: this.compListItem }).margin({ top: $r('app.float.top_bar_height') }) 102 + SingleColumn999Component({ compListItem: this.compListItem })
  103 + .margin({
  104 + top: this.pageInfoBean?.topicInfo?.frontLinkObject ? 10 : 44
  105 + })
86 } 106 }
87 } 107 }
88 // .backgroundColor('#FFF1F3F5') 108 // .backgroundColor('#FFF1F3F5')
@@ -104,4 +124,63 @@ export struct MorningEveningPaperComponent { @@ -104,4 +124,63 @@ export struct MorningEveningPaperComponent {
104 // .backgroundColor(Color.Black) 124 // .backgroundColor(Color.Black)
105 .backgroundColor(this.pageInfoBean?.backgroundColor ?? Color.Black) 125 .backgroundColor(this.pageInfoBean?.backgroundColor ?? Color.Black)
106 } 126 }
  127 +
  128 + @Builder
  129 + AudioBarView(dialog: CustomDialogController) {
  130 + Row() {
  131 + Stack({ alignContent: Alignment.Start }) {
  132 + Image($r('app.media.listen_left_bg'))
  133 + .width('100%')
  134 + .height('100%')
  135 + .objectFit(ImageFit.Contain)
  136 + Image($r('app.media.icon_listen'))
  137 + .width(24)
  138 + .height(24)
  139 + .margin({ left: 10 })
  140 + .alignSelf(ItemAlign.Start)
  141 +
  142 + Text('晚上好, 请收听今日新闻播报')
  143 + .fontSize(14)
  144 + .margin({ left: 50 })
  145 + .fontColor(Color.Black)
  146 + .maxLines(1)
  147 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  148 + }
  149 + .layoutWeight(1)
  150 + .height('100%')
  151 +
  152 + Stack({ alignContent: Alignment.Center }) {
  153 + Image($r('app.media.listen_right_bg'))
  154 + .width('100%')
  155 + .height('100%')
  156 + .objectFit(ImageFit.Contain)
  157 +
  158 + Image($r('app.media.ic_red_triangle'))
  159 + .width(24)
  160 + .height(24)
  161 + .margin({ left: 10 })// .alignSelf(ItemAlign.Center)
  162 + .objectFit(ImageFit.Contain)
  163 + .onClick(() => {
  164 + Logger.info("TAG", "cj compInfoBean onClick1 = " + this.isAudioPlaying)
  165 + dialog.open()
  166 + this.playerController.firstPlay(this.audioPlayUrl)
  167 + Logger.info("TAG", "cj compInfoBean onClick2 = " + this.isAudioPlaying)
  168 + })
  169 + }
  170 + // .aspectRatio(7 / 4)
  171 + .height('100%')
  172 + // .justifyContent(FlexAlign.Center)
  173 + // .width(94)
  174 + // .width(140)
  175 + .width('20%')
  176 + // .height(56)
  177 + .onClick(() => {
  178 + // console.info(TAG, `onClick listen_right_bg`);
  179 + })
  180 + }
  181 + // .width('100%')
  182 + .height(56)
  183 + .alignItems(VerticalAlign.Center)
  184 + .justifyContent(FlexAlign.SpaceBetween)
  185 + }
107 } 186 }
  1 +import { PhotoListBean } from 'wdBean';
  2 +
  3 +@Component
  4 +export struct MultiPictureDetailItemComponent {
  5 + private newsTitle: string = '';
  6 + private MultiPictureDetailItem: PhotoListBean = {} as PhotoListBean
  7 +
  8 + build() {
  9 + Stack() {
  10 + Image(this.MultiPictureDetailItem.picPath)
  11 + .width('100%')
  12 + .aspectRatio(this.MultiPictureDetailItem.width / this.MultiPictureDetailItem.height)
  13 + .objectFit(ImageFit.Fill)
  14 + }
  15 + .backgroundColor(Color.Black)
  16 + .width('100%')
  17 + }
  18 +}
1 import { Logger } from 'wdKit'; 1 import { Logger } from 'wdKit';
2 -import { ContentDetailDTO } from 'wdBean'; 2 +import { ContentDetailDTO, PhotoListBean } from 'wdBean';
3 import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel'; 3 import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel';
4 import display from '@ohos.display'; 4 import display from '@ohos.display';
5 import font from '@ohos.font'; 5 import font from '@ohos.font';
  6 +import { OperRowListView } from './view/OperRowListView';
  7 +import { MultiPictureDetailItemComponent } from './MultiPictureDetailItemComponent';
6 8
7 const TAG = 'MultiPictureDetailPageComponent'; 9 const TAG = 'MultiPictureDetailPageComponent';
8 10
  11 +@Preview
9 @Component 12 @Component
10 export struct MultiPictureDetailPageComponent { 13 export struct MultiPictureDetailPageComponent {
11 private displayTool = display.getDefaultDisplaySync() 14 private displayTool = display.getDefaultDisplaySync()
@@ -15,7 +18,7 @@ export struct MultiPictureDetailPageComponent { @@ -15,7 +18,7 @@ export struct MultiPictureDetailPageComponent {
15 @State relId: string = '500005189942' 18 @State relId: string = '500005189942'
16 @State contentId: string = '30043715146' 19 @State contentId: string = '30043715146'
17 @State relType: string = '1' 20 @State relType: string = '1'
18 - @State contentDetailData: ContentDetailDTO[] = [{}] as ContentDetailDTO[] 21 + @State contentDetailData: ContentDetailDTO[] = [] as ContentDetailDTO[]
19 @Provide @Watch('onCurrentPageNumUpdated') currentPageNum: string = '01' 22 @Provide @Watch('onCurrentPageNumUpdated') currentPageNum: string = '01'
20 private swiperController: SwiperController = new SwiperController() 23 private swiperController: SwiperController = new SwiperController()
21 @State swiperIndex: number = 0; 24 @State swiperIndex: number = 0;
@@ -48,30 +51,43 @@ export struct MultiPictureDetailPageComponent { @@ -48,30 +51,43 @@ export struct MultiPictureDetailPageComponent {
48 51
49 build() { 52 build() {
50 RelativeContainer() { 53 RelativeContainer() {
51 - if (this.contentDetailData && this.contentDetailData.length > 0) { 54 + if (this.contentDetailData && this.contentDetailData.length > 0 && this.contentDetailData[0].photoList && this.contentDetailData[0].photoList?.length > 0) {
52 Swiper(this.swiperController) { 55 Swiper(this.swiperController) {
53 - ForEach(this.contentDetailData, (item: ContentDetailDTO, index: number) => {  
54 - // ENewspaperItemComponent({ newspaperListItemBean: item }) 56 + ForEach(this.contentDetailData[0].photoList, (item: PhotoListBean, index: number) => {
  57 + MultiPictureDetailItemComponent({ MultiPictureDetailItem: item })
55 }) 58 })
56 } 59 }
57 .index(this.swiperIndex) 60 .index(this.swiperIndex)
58 .width('100%') 61 .width('100%')
59 .height(px2vp(this.picHeight) + 32) 62 .height(px2vp(this.picHeight) + 32)
60 - .vertical(true) 63 + .vertical(false)
61 .autoPlay(false) 64 .autoPlay(false)
62 .cachedCount(3) 65 .cachedCount(3)
63 .indicator(false) 66 .indicator(false)
64 .displayCount(1) 67 .displayCount(1)
65 - .margin({ top: 35, left: 10, right: 10 })  
66 - .id('e_newspaper_content') 68 + .id('e_swiper_content')
67 .alignRules({ 69 .alignRules({
68 - top: { anchor: "e_newspaper_top", align: VerticalAlign.Bottom }, 70 + top: { anchor: "__container__", align: VerticalAlign.Top },
69 middle: { anchor: "__container__", align: HorizontalAlign.Center } 71 middle: { anchor: "__container__", align: HorizontalAlign.Center }
70 }) 72 })
71 .onChange((index: number) => { 73 .onChange((index: number) => {
72 this.swiperIndex = index 74 this.swiperIndex = index
73 }) 75 })
74 - }} 76 + }
  77 + OperRowListView()
  78 + .alignRules({
  79 + bottom: { anchor: "__container__", align: VerticalAlign.Bottom },
  80 + middle: { anchor: "__container__", align: HorizontalAlign.Center }
  81 + })
  82 + .width('100%')
  83 + .height(56)
  84 + .border({ width: {top: 0.5}, color: '#FFFFFF' })
  85 + .id('e_oper_row')
  86 + }
  87 + .width('100%')
  88 + .height('100%')
  89 + .backgroundColor(Color.Black)
  90 + .id('e_picture_container')
75 } 91 }
76 92
77 private async getContentDetailData() { 93 private async getContentDetailData() {
  1 +import { Params } from 'wdBean';
1 import { LazyDataSource, StringUtils } from 'wdKit'; 2 import { LazyDataSource, StringUtils } from 'wdKit';
  3 +import { WDRouterPage, WDRouterRule } from 'wdRouter';
2 import MinePageDatasModel from '../../../model/MinePageDatasModel'; 4 import MinePageDatasModel from '../../../model/MinePageDatasModel';
3 import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem' 5 import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem'
4 import { FollowListDetailRequestItem } from '../../../viewmodel/FollowListDetailRequestItem'; 6 import { FollowListDetailRequestItem } from '../../../viewmodel/FollowListDetailRequestItem';
@@ -72,7 +74,7 @@ export struct FollowListDetailUI{ @@ -72,7 +74,7 @@ export struct FollowListDetailUI{
72 this.hasMore = false 74 this.hasMore = false
73 }else{ 75 }else{
74 value.list.forEach((value)=>{ 76 value.list.forEach((value)=>{
75 - this.data.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1")) 77 + this.data.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1",value.attentionUserId))
76 }) 78 })
77 this.data.notifyDataReload() 79 this.data.notifyDataReload()
78 this.count = this.data.totalCount() 80 this.count = this.data.totalCount()
@@ -90,9 +92,6 @@ export struct FollowListDetailUI{ @@ -90,9 +92,6 @@ export struct FollowListDetailUI{
90 } 92 }
91 }else{ 93 }else{
92 if(this.hasMore){ 94 if(this.hasMore){
93 - if(this.creatorDirectoryId === 120){  
94 - console.log("console");  
95 - }  
96 let object = new FollowListDetailRequestItem(this.creatorDirectoryId,20,this.curPageNum) 95 let object = new FollowListDetailRequestItem(this.creatorDirectoryId,20,this.curPageNum)
97 96
98 MinePageDatasModel.getFollowListDetailData(object,getContext(this)).then((value)=>{ 97 MinePageDatasModel.getFollowListDetailData(object,getContext(this)).then((value)=>{
@@ -115,7 +114,7 @@ export struct FollowListDetailUI{ @@ -115,7 +114,7 @@ export struct FollowListDetailUI{
115 let data : FollowListDetailItem[] = [] 114 let data : FollowListDetailItem[] = []
116 value.list.forEach((item)=>{ 115 value.list.forEach((item)=>{
117 status.creatorIds.push(new QueryListIsFollowedItem(item.creatorId)) 116 status.creatorIds.push(new QueryListIsFollowedItem(item.creatorId))
118 - data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,"0")) 117 + data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,"0",item.attentionUserId))
119 }) 118 })
120 119
121 MinePageDatasModel.getFollowListStatusData(status,getContext(this)).then((newValue)=>{ 120 MinePageDatasModel.getFollowListStatusData(status,getContext(this)).then((newValue)=>{
@@ -128,7 +127,7 @@ export struct FollowListDetailUI{ @@ -128,7 +127,7 @@ export struct FollowListDetailUI{
128 }) 127 })
129 128
130 data.forEach((item)=>{ 129 data.forEach((item)=>{
131 - this.data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,item.status)) 130 + this.data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,item.status,item.attentionUserId))
132 }) 131 })
133 132
134 this.data.notifyDataReload() 133 this.data.notifyDataReload()
@@ -233,5 +232,11 @@ struct ChildComponent { @@ -233,5 +232,11 @@ struct ChildComponent {
233 232
234 }.height('146lpx') 233 }.height('146lpx')
235 .justifyContent(FlexAlign.Center) 234 .justifyContent(FlexAlign.Center)
  235 + .onClick(()=>{
  236 + let params: Params = {
  237 + pageID: this.data.attentionUserId
  238 + }
  239 + WDRouterRule.jumpWithPage(WDRouterPage.otherNormalUserHomePagePage,params)
  240 + })
236 } 241 }
237 } 242 }
@@ -154,7 +154,7 @@ export struct HomePageBottomComponent{ @@ -154,7 +154,7 @@ export struct HomePageBottomComponent{
154 this.hasMore = false 154 this.hasMore = false
155 }else{ 155 }else{
156 value.list.forEach((value)=>{ 156 value.list.forEach((value)=>{
157 - this.data_follow.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1")) 157 + this.data_follow.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1",value.attentionUserId))
158 }) 158 })
159 this.data_follow.notifyDataReload() 159 this.data_follow.notifyDataReload()
160 this.count = this.data_follow.totalCount() 160 this.count = this.data_follow.totalCount()
@@ -179,7 +179,7 @@ export struct HomePageBottomComponent{ @@ -179,7 +179,7 @@ export struct HomePageBottomComponent{
179 this.hasMore = false 179 this.hasMore = false
180 }else{ 180 }else{
181 value.list.forEach((value)=>{ 181 value.list.forEach((value)=>{
182 - this.data_comment.push(new CommentListItem(value.fromUserHeader,value.fromUserName,value.targetTitle,value.createTime,value.commentContent)) 182 + this.data_comment.push(new CommentListItem(value.fromUserHeader,value.fromUserName,value.targetTitle,value.createTime,value.commentContent,value.likeNum,0,value.id))
183 }) 183 })
184 this.data_comment.notifyDataReload() 184 this.data_comment.notifyDataReload()
185 this.count = this.data_comment.totalCount() 185 this.count = this.data_comment.totalCount()
  1 +import { DateTimeUtils, LazyDataSource } from 'wdKit';
  2 +import MinePageDatasModel from '../../../model/MinePageDatasModel';
  3 +import { CommentListItem } from '../../../viewmodel/CommentListItem';
  4 +import { OtherUserCommentListRequestItem } from '../../../viewmodel/OtherUserCommentListRequestItem';
  5 +import { ListHasNoMoreDataUI } from '../../reusable/ListHasNoMoreDataUI';
  6 +import { MineCommentListDetailItem } from '../../../viewmodel/MineCommentListDetailItem';
  7 +import { OtherUserCommentLikeStatusRequestItem } from '../../../viewmodel/OtherUserCommentLikeStatusRequestItem';
  8 +
  9 +const TAG = "HomePageBottomComponent"
  10 +@Component
  11 +export struct OtherHomePageBottomCommentComponent{
  12 + @Prop curUserId: string
  13 + @State data_comment: LazyDataSource<CommentListItem> = new LazyDataSource();
  14 + @State isLoading:boolean = false
  15 + @State hasMore:boolean = true
  16 + curPageNum:number = 1;
  17 + @State count:number = 0;
  18 + @Prop levelHead:string
  19 +
  20 + aboutToAppear(){
  21 + this.getNewPageData()
  22 + }
  23 +
  24 + build(){
  25 + Column(){
  26 + Divider().width('100%')
  27 + .height('2lpx')
  28 + .strokeWidth('1lpx')
  29 + .backgroundColor($r('app.color.color_EDEDED'))
  30 +
  31 + if(this.count === 0){
  32 + ListHasNoMoreDataUI({style:2})
  33 + .height('100%')
  34 + }else{
  35 + List({ space: 3 }) {
  36 + LazyForEach(this.data_comment, (item: CommentListItem, index: number = 0) => {
  37 + ListItem() {
  38 + ChildCommentComponent({data: item,levelHead:this.levelHead})
  39 + }
  40 + .onClick(() => {
  41 + })
  42 + }, (item: CommentListItem, index: number) => index.toString())
  43 +
  44 + //没有更多数据 显示提示
  45 + if(!this.hasMore){
  46 + ListItem(){
  47 + ListHasNoMoreDataUI()
  48 + }
  49 + }
  50 + }.cachedCount(15)
  51 + .layoutWeight(1)
  52 + .scrollBar(BarState.Off)
  53 + .edgeEffect(EdgeEffect.None)
  54 + .nestedScroll({
  55 + scrollForward: NestedScrollMode.PARENT_FIRST,
  56 + scrollBackward: NestedScrollMode.SELF_FIRST
  57 + })
  58 + .onReachEnd(()=>{
  59 + console.log(TAG,"触底了");
  60 + if(!this.isLoading){
  61 + this.isLoading = true
  62 + //加载分页数据
  63 + this.getNewPageData()
  64 + }
  65 + })
  66 + }
  67 + }
  68 + .width('100%')
  69 + }
  70 +
  71 +
  72 + @Styles
  73 + listStyle() {
  74 + .backgroundColor(Color.White)
  75 + .height(72)
  76 + .width("100%")
  77 + .borderRadius(12)
  78 + }
  79 +
  80 + getNewPageData(){
  81 + this.isLoading = true
  82 + if(this.hasMore){
  83 + let time = encodeURI(DateTimeUtils.getCurDate(DateTimeUtils.PATTERN_DATE_TIME_HYPHEN))
  84 + let object = new OtherUserCommentListRequestItem("",20,this.curPageNum,time,"1",this.curUserId)
  85 +
  86 + MinePageDatasModel.getOtherCommentListData(object,getContext(this)).then((value)=>{
  87 + if (!this.data_comment || value.list.length == 0){
  88 + this.hasMore = false
  89 + }else{
  90 + this.getFollowListStatus(value)
  91 + }
  92 + }).catch((err:Error)=>{
  93 + console.log(TAG,"请求失败")
  94 + this.isLoading = false
  95 + })
  96 + }
  97 + }
  98 +
  99 + getFollowListStatus(value:MineCommentListDetailItem){
  100 +
  101 + let status = new OtherUserCommentLikeStatusRequestItem()
  102 + let data : CommentListItem[] = []
  103 + value.list.forEach((item)=>{
  104 + status.commentIdList.push(item.id)
  105 + data.push(new CommentListItem(item.fromUserHeader,item.fromUserName,item.targetTitle,item.createTime,item.commentContent,item.likeNum,0,item.id))
  106 + })
  107 +
  108 + MinePageDatasModel.getOtherUserCommentLikeStatusData(status,getContext(this)).then((newValue)=>{
  109 + newValue.forEach((item)=>{
  110 + data.forEach((list)=>{
  111 + if (item.commentId == list.id) {
  112 + list.like_status = item.status
  113 + }
  114 + })
  115 + })
  116 +
  117 + data.forEach((item)=>{
  118 + this.data_comment.push(new CommentListItem(item.fromUserHeader,item.fromUserName,item.targetTitle,item.createTime,item.commentContent,item.likeNum,item.like_status,item.id))
  119 + })
  120 +
  121 + this.data_comment.notifyDataReload()
  122 +
  123 + this.count = this.data_comment.totalCount()
  124 + if (this.data_comment.totalCount() < value.totalCount) {
  125 + this.curPageNum++
  126 + }else {
  127 + this.hasMore = false
  128 + }
  129 +
  130 + this.isLoading = false
  131 + }).catch((err:Error)=>{
  132 + console.log(TAG,"请求失败")
  133 + this.isLoading = false
  134 + })
  135 + }
  136 +
  137 +}
  138 +
  139 +@Component
  140 +struct ChildCommentComponent {
  141 + @ObjectLink data: CommentListItem
  142 + @Prop levelHead:string
  143 +
  144 + build() {
  145 + Column(){
  146 + Row() {
  147 + Stack(){
  148 + Image(this.data.fromUserHeader)
  149 + .alt($r('app.media.default_head'))
  150 + .objectFit(ImageFit.Auto)
  151 + .width('69lpx')
  152 + .height('69lpx')
  153 + .margin({right:'15lpx'})
  154 + .borderRadius(50)
  155 + Image(this.levelHead)
  156 + .width('89lpx')
  157 + .height('89lpx')
  158 + .objectFit(ImageFit.Cover)
  159 + .borderRadius(50)
  160 + }
  161 +
  162 + Column(){
  163 + Text(this.data.fromUserName)
  164 + .fontSize('25lpx')
  165 + .lineHeight('35lpx')
  166 + .fontWeight('600lpx')
  167 + .fontColor($r('app.color.color_222222'))
  168 + .margin({bottom:'6lpx'})
  169 + .maxLines(1)
  170 + Text(`${this.data.createTime}`)
  171 + .fontColor($r('app.color.color_B0B0B0'))
  172 + .fontSize('23lpx')
  173 + .lineHeight('31lpx')
  174 + .fontWeight('400lpx')
  175 + .maxLines(1)
  176 + }.layoutWeight(1)
  177 + .alignItems(HorizontalAlign.Start)
  178 +
  179 + Row(){
  180 + Text(this.data.likeNum.toString())
  181 + .fontWeight("500lpx")
  182 + .fontSize("27lpx")
  183 + .lineHeight("31lpx")
  184 + .fontColor(this.data.like_status===0?$r('app.color.color_666666'):$r('app.color.color_ED2800'))
  185 + .margin({right:'8lpx'})
  186 + Image(this.data.like_status===0?$r('app.media.like_default_status'):$r('app.media.liked_status'))
  187 + .width('31lpx')
  188 + .height('31lpx')
  189 + .objectFit(ImageFit.Auto)
  190 + .interpolation(ImageInterpolation.Medium)
  191 + .borderRadius(50)
  192 + }
  193 +
  194 + }
  195 + .margin({bottom:'10lpx'})
  196 + .width('100%')
  197 + .height('108lpx')
  198 + .padding({left:'31lpx',right:'31lpx'})
  199 +
  200 + Row(){
  201 + Text(this.data.commentContent)
  202 + .maxLines(3)
  203 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  204 + .fontWeight('400lpx')
  205 + .fontSize('31lpx')
  206 + .lineHeight('46lpx')
  207 + .fontColor($r('app.color.color_222222'))
  208 + .margin({bottom:'10lpx'})
  209 + }.padding({left:'31lpx',right:'31lpx'})
  210 + .width('100%')
  211 +
  212 + Row(){
  213 + Text(this.data.targetTitle)
  214 + .fontWeight('400lpx')
  215 + .fontColor($r('app.color.color_222222'))
  216 + .lineHeight('38lpx')
  217 + .fontSize('27lpx')
  218 + .textAlign(TextAlign.Center)
  219 + .margin({right:'4lpx'})
  220 + .maxLines(3)
  221 + .width('616lpx')
  222 + Image($r('app.media.arrow_icon_right'))
  223 + .objectFit(ImageFit.Auto)
  224 + .width('27lpx')
  225 + .height('27lpx')
  226 + }
  227 + .padding({top:'17lpx',bottom:'17lpx',left:'23lpx',right:'23lpx'})
  228 + .width('662lpx')
  229 + .backgroundColor($r('app.color.color_F5F5F5'))
  230 + .margin({top:'19lpx',bottom:'31lpx'})
  231 +
  232 + Divider().width('100%')
  233 + .height('12lpx')
  234 + .strokeWidth('12lpx')
  235 + .backgroundColor($r('app.color.color_F5F5F5'))
  236 +
  237 + }
  238 + .justifyContent(FlexAlign.Center)
  239 + }
  240 +}
  1 +import { Params } from 'wdBean';
  2 +import { LazyDataSource, StringUtils } from 'wdKit';
  3 +import { WDRouterRule, WDRouterPage } from 'wdRouter';
  4 +import MinePageDatasModel from '../../../model/MinePageDatasModel';
  5 +import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem';
  6 +import { FollowListDetailRequestItem } from '../../../viewmodel/FollowListDetailRequestItem';
  7 +import { UserFollowListRequestItem } from '../../../viewmodel/UserFollowListRequestItem';
  8 +import { ListHasNoMoreDataUI } from '../../reusable/ListHasNoMoreDataUI';
  9 +
  10 +const TAG = "HomePageBottomComponent"
  11 +@Component
  12 +export struct OtherHomePageBottomFollowComponent{
  13 + @State data_follow: LazyDataSource<FollowListDetailItem> = new LazyDataSource();
  14 + @State isLoading:boolean = false
  15 + @State hasMore:boolean = true
  16 + curPageNum:number = 1;
  17 + @State count:number = 0;
  18 + @Prop curUserId: string
  19 +
  20 + aboutToAppear(){
  21 + this.getNewPageData()
  22 + }
  23 +
  24 + build(){
  25 + Column(){
  26 + Divider().width('100%')
  27 + .height('2lpx')
  28 + .strokeWidth('1lpx')
  29 + .backgroundColor($r('app.color.color_EDEDED'))
  30 +
  31 + if(this.count === 0){
  32 + ListHasNoMoreDataUI({style:2})
  33 + .height('100%')
  34 + }else{
  35 + List({ space: 3 }) {
  36 +
  37 + ListItem() {
  38 + Row(){
  39 + Text("关注更多人民号")
  40 + .fontWeight('400lpx')
  41 + .fontColor($r('app.color.color_222222'))
  42 + .lineHeight('38lpx')
  43 + .fontSize('27lpx')
  44 + .textAlign(TextAlign.Center)
  45 + .margin({right:'4lpx'})
  46 + Image($r('app.media.arrow_icon_right'))
  47 + .objectFit(ImageFit.Auto)
  48 + .width('27lpx')
  49 + .height('27lpx')
  50 + }.height('69lpx')
  51 + .width('659lpx')
  52 + .alignItems(VerticalAlign.Center)
  53 + .justifyContent(FlexAlign.Center)
  54 + .backgroundColor($r('app.color.color_F5F5F5'))
  55 + .margin({top:'31lpx',bottom:'4lpx'})
  56 + }.onClick(()=>{
  57 + let params: Params = {
  58 + pageID: "1"
  59 + }
  60 + WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
  61 + })
  62 +
  63 + LazyForEach(this.data_follow, (item: FollowListDetailItem, index: number = 0) => {
  64 + ListItem() {
  65 + ChildFollowComponent({data: item})
  66 + }
  67 + .onClick(() => {
  68 + })
  69 + }, (item: FollowListDetailItem, index: number) => index.toString())
  70 +
  71 + //没有更多数据 显示提示
  72 + if(!this.hasMore){
  73 + ListItem(){
  74 + ListHasNoMoreDataUI()
  75 + }
  76 + }
  77 + }.cachedCount(15)
  78 + .padding({left:'31lpx',right:'31lpx'})
  79 + .layoutWeight(1)
  80 + .scrollBar(BarState.Off)
  81 + .edgeEffect(EdgeEffect.None)
  82 + .nestedScroll({
  83 + scrollForward: NestedScrollMode.PARENT_FIRST,
  84 + scrollBackward: NestedScrollMode.SELF_FIRST
  85 + })
  86 + .onReachEnd(()=>{
  87 + console.log(TAG,"触底了");
  88 + if(!this.isLoading){
  89 + this.isLoading = true
  90 + //加载分页数据
  91 + this.getNewPageData()
  92 + }
  93 + })
  94 + }
  95 + }
  96 + .width('100%')
  97 + }
  98 +
  99 +
  100 + @Styles
  101 + listStyle() {
  102 + .backgroundColor(Color.White)
  103 + .height(72)
  104 + .width("100%")
  105 + .borderRadius(12)
  106 + }
  107 +
  108 + getNewPageData(){
  109 + this.isLoading = true
  110 + //我的关注列表
  111 + if(this.hasMore){
  112 + let object = new UserFollowListRequestItem(Number(this.curUserId),20,this.curPageNum,"1")
  113 +
  114 + MinePageDatasModel.getOtherUserFollowListData(object,getContext(this)).then((value)=>{
  115 + if (!this.data_follow || value.list.length == 0){
  116 + this.hasMore = false
  117 + }else{
  118 + value.list.forEach((value)=>{
  119 + this.data_follow.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1",value.attentionUserId))
  120 + })
  121 + this.data_follow.notifyDataReload()
  122 + this.count = this.data_follow.totalCount()
  123 + if (this.data_follow.totalCount() < value.totalCount) {
  124 + this.curPageNum++
  125 + }else {
  126 + this.hasMore = false
  127 + }
  128 + }
  129 + this.isLoading = false
  130 + }).catch((err:Error)=>{
  131 + console.log(TAG,"请求失败")
  132 + this.isLoading = false
  133 + })
  134 + }
  135 + }
  136 +}
  137 +
  138 +@Component
  139 +struct ChildFollowComponent {
  140 + @ObjectLink data: FollowListDetailItem
  141 +
  142 + build() {
  143 + Column(){
  144 + Blank().height('27lpx')
  145 +
  146 + Row() {
  147 + Image(StringUtils.isEmpty(this.data.headPhotoUrl)?$r('app.media.default_head'):this.data.headPhotoUrl)
  148 + .objectFit(ImageFit.Auto)
  149 + .width('92lpx')
  150 + .height('92lpx')
  151 + .margin({right:'15lpx'})
  152 +
  153 + Column(){
  154 + Text(this.data.cnUserName)
  155 + .fontWeight('400lpx')
  156 + .fontSize('31lpx')
  157 + .lineHeight('38lpx')
  158 + .fontColor($r('app.color.color_222222'))
  159 + Text(`粉丝${this.data.cnFansNum}`)
  160 + .fontColor($r('app.color.color_B0B0B0'))
  161 + .fontSize('23lpx')
  162 + .maxLines(1)
  163 + Text(`${this.data.introduction}`)
  164 + .fontColor($r('app.color.color_B0B0B0'))
  165 + .fontSize('23lpx')
  166 + .maxLines(2)
  167 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  168 + }.layoutWeight(1)
  169 + .alignItems(HorizontalAlign.Start)
  170 +
  171 + if(this.data.status == "1"){
  172 + Row(){
  173 + Text(`已关注`)
  174 + .fontColor($r('app.color.color_CCCCCC'))
  175 + .fontSize('23lpx')
  176 + .fontWeight('500lpx')
  177 + .lineHeight('35lpx')
  178 + }.backgroundColor($r('app.color.color_F5F5F5'))
  179 + .borderRadius('6lpx')
  180 + .borderColor($r('app.color.color_F5F5F5'))
  181 + .borderWidth('2lpx')
  182 + .justifyContent(FlexAlign.Center)
  183 + .width('100lpx')
  184 + .height('46lpx')
  185 + .margin({left:'4lpx',top:'23lpx'})
  186 + .onClick(()=>{
  187 + this.data.status = "0"
  188 + })
  189 + }else{
  190 + Row(){
  191 + Image($r('app.media.follow_icon'))
  192 + .margin({right:'4lpx'})
  193 + .width('23lpx')
  194 + .height('23lpx')
  195 + Text(`关注`)
  196 + .fontColor($r('app.color.color_ED2800'))
  197 + .fontSize('23lpx')
  198 + .fontWeight('500lpx')
  199 + .lineHeight('35lpx')
  200 + }.borderColor($r('app.color.color_1AED2800'))
  201 + .borderRadius('6lpx')
  202 + .borderWidth('2lpx')
  203 + .justifyContent(FlexAlign.Center)
  204 + .width('100lpx')
  205 + .height('46lpx')
  206 + .margin({left:'4lpx',top:'23lpx'})
  207 + .onClick(()=>{
  208 + this.data.status = "1"
  209 + })
  210 + }
  211 + }.alignItems(VerticalAlign.Top)
  212 + .width('100%')
  213 + .layoutWeight(1)
  214 +
  215 + Divider().width('100%')
  216 + .height('2lpx')
  217 + .strokeWidth('1lpx')
  218 + .backgroundColor($r('app.color.color_EDEDED'))
  219 +
  220 + }.height('146lpx')
  221 + .justifyContent(FlexAlign.Center)
  222 + }
  223 +}
  1 +import { CompDTO, slideShows } from 'wdBean';
  2 +import { CommonConstants } from 'wdConstant'
  3 +import { DateTimeUtils } from 'wdKit';
  4 +
  5 +/**
  6 + * 时间链卡--CompStyle: 09
  7 + */
  8 +@Component
  9 +export struct CompStyle_09 {
  10 + @State compDTO: CompDTO = {} as CompDTO
  11 +
  12 + build() {
  13 + Column(){
  14 + // 顶部标题,最多两行
  15 + if(this.compDTO.operDataList[0].newsTitle) {
  16 + Text(this.compDTO.operDataList[0].newsTitle)
  17 + .width(CommonConstants.FULL_WIDTH)
  18 + .fontSize($r('app.float.font_size_17'))
  19 + .fontWeight(600)
  20 + .maxLines(2)
  21 + .textOverflow({overflow: TextOverflow.Ellipsis})
  22 + .margin({ bottom: 19 })
  23 + }
  24 + // 大图
  25 + Image(this.compDTO.operDataList[0].coverUrl)
  26 + .width('100%')
  27 + // 时间线--后端返回三个,
  28 + Column(){
  29 + ForEach(this.compDTO.operDataList[0].slideShows, (item:slideShows, index:number) => {
  30 + this.timelineItem(item, index)
  31 + })
  32 + }
  33 + // 底部-查看更多。根据接口返回的isMore判断是否显示查看更多
  34 + if(this.compDTO.operDataList[0].hasMore == 1) {
  35 + Row() {
  36 + Text("查看更多")
  37 + .fontSize($r("app.float.font_size_14"))
  38 + .fontColor($r("app.color.color_222222"))
  39 + .margin({ right: 1 })
  40 + Image($r("app.media.more"))
  41 + .width(14)
  42 + .height(14)
  43 + }
  44 + .backgroundColor($r('app.color.color_F5F5F5'))
  45 + .width(CommonConstants.FULL_WIDTH)
  46 + .height(40)
  47 + .borderRadius(3)
  48 + .justifyContent(FlexAlign.Center)
  49 + .margin({top: 5})
  50 + .onClick(() => {
  51 + // TODO
  52 + console.log('跳转到查看更多的页面')
  53 + })
  54 + }
  55 + }
  56 + .width(CommonConstants.FULL_WIDTH)
  57 + .padding({
  58 + top: 14,
  59 + left: 16,
  60 + right: 16,
  61 + bottom: 14
  62 + })
  63 + .backgroundColor($r("app.color.white"))
  64 + .margin({ bottom: 8 })
  65 + }
  66 +
  67 + @Builder timelineItem (item:slideShows, index:number) {
  68 + Column(){
  69 + Stack() {
  70 + if(index < this.compDTO.operDataList[0].slideShows.length - 1) {
  71 + Line()
  72 + .width(1)
  73 + .startPoint([4, index > 0 ? 0 : 20])
  74 + .endPoint([4, 100])
  75 + .stroke($r('app.color.color_EDEDED'))
  76 + .strokeWidth(1)
  77 + .strokeLineCap(LineCapStyle.Butt)
  78 + }
  79 + Column(){
  80 + Row() {
  81 + // 标题
  82 + Image($r("app.media.point_icon"))
  83 + .width(9)
  84 + .height(6)
  85 + .margin({ right: 5 })
  86 + Text(DateTimeUtils.formatDate(item.publishTime, "MM月dd日 HH:mm"))
  87 + .fontSize($r('app.float.font_size_12'))
  88 + .fontColor($r('app.color.color_222222'))
  89 + .fontWeight(600)
  90 + }
  91 + .width(CommonConstants.FULL_WIDTH)
  92 + .height(32)
  93 + Row() {
  94 + Text(item.newsTitle)
  95 + .fontSize($r('app.float.font_size_17'))
  96 + .fontWeight(400)
  97 + .fontColor($r('app.color.color_222222'))
  98 + .layoutWeight(1)
  99 + .maxLines(2)
  100 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  101 + .alignSelf(ItemAlign.Center)
  102 + .margin({left: 12})
  103 + if(item.fullColumnImgUrls[0] && item.fullColumnImgUrls[0].url) {
  104 + Image(item.fullColumnImgUrls[0].url)
  105 + .width(90)
  106 + .height(60)
  107 + .borderRadius(4)
  108 + }
  109 + }
  110 + }
  111 + }
  112 + .alignContent(Alignment.Start)
  113 + }
  114 + .height(item.fullColumnImgUrls[0] && item.fullColumnImgUrls[0].url ? 100 : 78)
  115 + }
  116 +}
  1 +import { CompDTO, slideShows } from 'wdBean';
  2 +import { CommonConstants } from 'wdConstant'
  3 +import { DateTimeUtils } from 'wdKit';
  4 +
  5 +/**
  6 + * 大专题卡--CompStyle: 10
  7 + */
  8 +@Component
  9 +export struct CompStyle_10 {
  10 + @State compDTO: CompDTO = {} as CompDTO
  11 +
  12 + build() {
  13 + Column(){
  14 + // 顶部标题,最多两行
  15 + if(this.compDTO.operDataList[0].newsTitle) {
  16 + Text(this.compDTO.operDataList[0].newsTitle)
  17 + .width(CommonConstants.FULL_WIDTH)
  18 + .fontSize($r('app.float.font_size_17'))
  19 + .fontWeight(600)
  20 + .maxLines(2)
  21 + .textOverflow({overflow: TextOverflow.Ellipsis})
  22 + .margin({ bottom: 19 })
  23 + }
  24 + // 大图
  25 + Image(this.compDTO.operDataList[0].coverUrl)
  26 + .width('100%')
  27 + // 专题列表--后端返回三个,
  28 + Column(){
  29 + ForEach(this.compDTO.operDataList[0].slideShows, (item:slideShows, index:number) => {
  30 + this.timelineItem(item, index)
  31 + })
  32 + }
  33 + // 底部-查看更多。根据接口返回的isMore判断是否显示查看更多
  34 + if(this.compDTO.operDataList[0].hasMore == 1) {
  35 + Row() {
  36 + Text("查看更多")
  37 + .fontSize($r("app.float.font_size_14"))
  38 + .fontColor($r("app.color.color_222222"))
  39 + .margin({ right: 1 })
  40 + Image($r("app.media.more"))
  41 + .width(14)
  42 + .height(14)
  43 + }
  44 + .backgroundColor($r('app.color.color_F5F5F5'))
  45 + .width(CommonConstants.FULL_WIDTH)
  46 + .height(40)
  47 + .borderRadius(3)
  48 + .justifyContent(FlexAlign.Center)
  49 + .margin({top: 5})
  50 + .onClick(() => {
  51 + // TODO
  52 + console.log('跳转到查看更多的页面')
  53 + })
  54 + }
  55 + }
  56 + .width(CommonConstants.FULL_WIDTH)
  57 + .padding({
  58 + top: 14,
  59 + left: 16,
  60 + right: 16,
  61 + bottom: 14
  62 + })
  63 + .backgroundColor($r("app.color.white"))
  64 + .margin({ bottom: 8 })
  65 + }
  66 +
  67 + @Builder timelineItem (item:slideShows, index:number) {
  68 + Column(){
  69 + Row() {
  70 + Column(){
  71 + Text(item.newsTitle)
  72 + .fontSize($r('app.float.font_size_17'))
  73 + .fontWeight(400)
  74 + .fontColor($r('app.color.color_222222'))
  75 + .maxLines(2)
  76 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  77 + .alignSelf(ItemAlign.Center)
  78 + Row(){
  79 + // 展示发稿人
  80 + Text(item.source)
  81 + .fontSize($r('app.float.font_size_12'))
  82 + .fontColor($r('app.color.color_B0B0B0'))
  83 + .layoutWeight(1)
  84 + .textOverflow({overflow: TextOverflow.Ellipsis})
  85 + .maxLines(1)
  86 + Image($r('app.media.point'))
  87 + .width(16)
  88 + .height(16)
  89 + Text(DateTimeUtils.getCommentTime(Number.parseFloat(String(item.publishTime))))
  90 + .fontSize($r("app.float.font_size_12"))
  91 + .fontColor($r("app.color.color_B0B0B0"))
  92 + }
  93 + .margin({top: 12})
  94 + }
  95 + .layoutWeight(1)
  96 + .alignItems(HorizontalAlign.Start)
  97 +
  98 + // 右侧图片
  99 + if(item.fullColumnImgUrls[0] && item.fullColumnImgUrls[0].url) {
  100 + Image(item.fullColumnImgUrls[0].url)
  101 + .width(117)
  102 + .height(78)
  103 + .objectFit(ImageFit.Cover)
  104 + .borderRadius(4)
  105 + .margin({left: 12})
  106 + }
  107 + }
  108 + .padding({top: 10, bottom: 10})
  109 + }
  110 + }
  111 +}
@@ -2,17 +2,12 @@ import { ToastUtils, Logger } from 'wdKit'; @@ -2,17 +2,12 @@ import { ToastUtils, Logger } from 'wdKit';
2 2
3 export interface OperationItem { 3 export interface OperationItem {
4 icon: Resource; 4 icon: Resource;
5 -  
6 - // icon_selected: Resource;  
7 text: string | Resource; 5 text: string | Resource;
8 num?: number; // 个数 6 num?: number; // 个数
9 } 7 }
10 8
11 -const FULL_PARENT: string = '100%';  
12 -  
13 const TAG = 'OperRowListView'; 9 const TAG = 'OperRowListView';
14 10
15 -@Entry  
16 @Component 11 @Component
17 export struct OperRowListView { 12 export struct OperRowListView {
18 @State operationList: OperationItem[] = [ 13 @State operationList: OperationItem[] = [
@@ -41,32 +36,16 @@ export struct OperRowListView { @@ -41,32 +36,16 @@ export struct OperRowListView {
41 } 36 }
42 37
43 build() { 38 build() {
44 - // List({ space: 0, initialIndex: 0 }) {  
45 - // ForEach(this.operationList, (item: OperationItem, index: number) => {  
46 - // ListItem() {  
47 - // this.buildOperationItem(item, index)  
48 - // }  
49 - // }, (item: OperationItem, index: number) => JSON.stringify(item))  
50 - // }  
51 - // .width(48)  
52 - // .height(250)  
53 - // // .margin({ bottom: 100 })  
54 - // .backgroundColor(Color.Red)  
55 - // // .listDirection(Axis.Vertical) // 默认值:Axis.Vertical  
56 - // // .lanes(this.buildLanes()) // 行/列数,一列 // 默认值:1  
57 - // .cachedCount(2)  
58 - // .scrollBar(BarState.Off)  
59 - // .nestedScroll({  
60 - // scrollForward: NestedScrollMode.PARENT_FIRST,  
61 - // scrollBackward: NestedScrollMode.SELF_FIRST  
62 - // })  
63 39
64 - Column() { 40 + Row() {
65 ForEach(this.operationList, (item: OperationItem, index: number) => { 41 ForEach(this.operationList, (item: OperationItem, index: number) => {
66 this.buildOperationItem(item, index) 42 this.buildOperationItem(item, index)
67 }, (item: OperationItem, index: number) => JSON.stringify(item)) 43 }, (item: OperationItem, index: number) => JSON.stringify(item))
68 } 44 }
69 - .width(48) 45 + .width('100%')
  46 + .height('100%')
  47 + .alignItems(VerticalAlign.Center)
  48 + .justifyContent(FlexAlign.Center)
70 } 49 }
71 50
72 /** 51 /**
@@ -78,21 +57,11 @@ export struct OperRowListView { @@ -78,21 +57,11 @@ export struct OperRowListView {
78 buildOperationItem(item: OperationItem, index: number) { 57 buildOperationItem(item: OperationItem, index: number) {
79 Column() { 58 Column() {
80 Image(item.icon) 59 Image(item.icon)
81 - .width('100%') 60 + .width(24)
  61 + .height(24)
82 .aspectRatio(1) 62 .aspectRatio(1)
83 - // .borderRadius(6)  
84 -  
85 - Text(item.text)  
86 - .width('100%')// .margin({ top: 4, left: 6, right: 6 })// .backgroundColor(Color.Brown)  
87 - .fontWeight(FontWeight.Normal)  
88 - .textAlign(TextAlign.Center)  
89 - .fontSize(13)  
90 - .fontColor('#FFFFFF')  
91 - .maxLines(1)  
92 - .textOverflow({ overflow: TextOverflow.Ellipsis })  
93 } 63 }
94 .margin(5) 64 .margin(5)
95 - // .backgroundColor(Color.Black)  
96 .alignItems(HorizontalAlign.Center) 65 .alignItems(HorizontalAlign.Center)
97 .hoverEffect(HoverEffect.Scale) 66 .hoverEffect(HoverEffect.Scale)
98 .onClick((event: ClickEvent) => { 67 .onClick((event: ClickEvent) => {
@@ -67,6 +67,9 @@ export struct ZhSingleRow04 { @@ -67,6 +67,9 @@ export struct ZhSingleRow04 {
67 Text(item.source) 67 Text(item.source)
68 .fontSize($r('app.float.font_size_12')) 68 .fontSize($r('app.float.font_size_12'))
69 .fontColor($r('app.color.color_B0B0B0')) 69 .fontColor($r('app.color.color_B0B0B0'))
  70 + .layoutWeight(1)
  71 + .textOverflow({overflow: TextOverflow.Ellipsis})
  72 + .maxLines(1)
70 Image($r("app.media.point")) 73 Image($r("app.media.point"))
71 .width(16) 74 .width(16)
72 .height(16) 75 .height(16)
  1 +/**
  2 + * 简易音频对话框
  3 + * */
  4 +@CustomDialog
  5 +export struct PaperReaderSimpleDialog {
  6 + private controllerSimple?: CustomDialogController;
  7 +
  8 + build() {
  9 + Row() {
  10 + Image($r("app.media.icon_audio_pause"))
  11 + .objectFit(ImageFit.Contain)
  12 + .margin(18)
  13 + .width(24)
  14 + .height(24)
  15 + }
  16 + .width(60)
  17 + .height(60)
  18 + .backgroundColor(Color.White)
  19 + .onClick(() => {
  20 + if (this.controllerSimple) {
  21 + this.controllerSimple.close()
  22 + }
  23 +
  24 + })
  25 +
  26 + }
  27 +}
  28 +
  29 +/**
  30 + * 图文音频对话框
  31 + * */
  32 +@CustomDialog
  33 +export struct PaperReaderDialog {
  34 + controllerDetail?: CustomDialogController
  35 +
  36 + build() {
  37 + Stack() {
  38 + Column() { //标题 时间 进度条
  39 + Marquee({
  40 + start: true,
  41 + step: 50,
  42 + loop: Number.POSITIVE_INFINITY,
  43 + fromStart: true,
  44 + src: "Running Marquee starts rolling"
  45 + })
  46 + .width("60%")
  47 + .height(20)
  48 + .fontColor($r("app.color.color_222222"))
  49 + .fontSize(14)
  50 + .margin({ top: 10 })
  51 + .onStart(() => {
  52 + console.info('Marquee animation complete onStart')
  53 + })
  54 + .onBounce(() => {
  55 + console.info('Marquee animation complete onBounce')
  56 + })
  57 + .onFinish(() => {
  58 + console.info('Marquee animation complete onFinish')
  59 + })
  60 +
  61 + Row() {
  62 + Text("00:00")
  63 + .fontSize($r('app.float.font_size_12'))
  64 + .fontColor($r('app.color.color_999999'))
  65 + .width("49%")
  66 + .height("100%")
  67 + Text("/00:00")
  68 + .fontSize($r('app.float.font_size_12'))
  69 + .fontColor($r('app.color.color_999999'))
  70 + .width("51%")
  71 + .height("100%")
  72 +
  73 + }
  74 + .width("100%")
  75 + .height(16)
  76 + .margin({ top: 4 })
  77 + }
  78 + .width("100%")
  79 + .height("100%")
  80 +
  81 + Progress({ value: 0, total: 100, type: ProgressType.Linear })
  82 + .color($r('app.color.color_ED2800'))
  83 + .width("100%")
  84 + .height(3)
  85 +
  86 + Image($r("app.media.icon_audio_pause"))
  87 + .objectFit(ImageFit.Auto)
  88 + .align(Alignment.End)
  89 + .margin({ right: 12 })
  90 +
  91 + Image($r("app.media.icon_audio_close"))
  92 + .objectFit(ImageFit.Auto)
  93 + .align(Alignment.End)
  94 + .margin({ right: 48 })
  95 + .onClick(() => {
  96 + if (this.controllerDetail) {
  97 + this.controllerDetail.close()
  98 + }
  99 + })
  100 + }
  101 + .width("65%")
  102 + .height(60)
  103 + .backgroundColor(Color.White)
  104 + .borderRadius(5)
  105 + }
  106 +}
@@ -16,6 +16,10 @@ import { MineCommentListDetailItem } from '../viewmodel/MineCommentListDetailIte @@ -16,6 +16,10 @@ import { MineCommentListDetailItem } from '../viewmodel/MineCommentListDetailIte
16 import { MineUserLevelItem } from '../viewmodel/MineUserLevelItem'; 16 import { MineUserLevelItem } from '../viewmodel/MineUserLevelItem';
17 import { MineUserDetailItem } from '../viewmodel/MineUserDetailItem'; 17 import { MineUserDetailItem } from '../viewmodel/MineUserDetailItem';
18 import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem'; 18 import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem';
  19 +import { OtherUserCommentListRequestItem } from '../viewmodel/OtherUserCommentListRequestItem';
  20 +import { OtherUserCommentLikeStatusRequestItem } from '../viewmodel/OtherUserCommentLikeStatusRequestItem';
  21 +import { QueryCommentListIsLikedItem } from '../viewmodel/QueryCommentListIsLikedItem';
  22 +import { UserFollowListRequestItem } from '../viewmodel/UserFollowListRequestItem';
19 23
20 const TAG = "MinePageDatasModel" 24 const TAG = "MinePageDatasModel"
21 25
@@ -495,7 +499,128 @@ class MinePageDatasModel{ @@ -495,7 +499,128 @@ class MinePageDatasModel{
495 return compRes.data 499 return compRes.data
496 } 500 }
497 501
  502 + /**
  503 + * 其他用户的评论列表
  504 + * @param params
  505 + * @param context
  506 + * @returns
  507 + */
  508 + getOtherCommentListData(params:OtherUserCommentListRequestItem,context: Context): Promise<MineCommentListDetailItem> {
  509 + return new Promise<MineCommentListDetailItem>((success, error) => {
  510 + Logger.info(TAG, `getAppointmentList start`);
  511 + this.fetchOtherCommentListData(params).then((navResDTO: ResponseDTO<MineCommentListDetailItem>) => {
  512 + if (!navResDTO || navResDTO.code != 0) {
  513 + success(this.getOtherCommentListDataLocal(context))
  514 + return
  515 + }
  516 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  517 + let navigationBean = navResDTO.data as MineCommentListDetailItem
  518 + success(navigationBean);
  519 + }).catch((err: Error) => {
  520 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  521 + success(this.getOtherCommentListDataLocal(context))
  522 + })
  523 + })
  524 + }
  525 +
  526 + fetchOtherCommentListData(object:OtherUserCommentListRequestItem) {
  527 + let url = HttpUrlUtils.getOtherCommentListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}&creatorId=${object.creatorId}&time=${object.time}&userType=${object.userType}&userId=${object.userId}`
  528 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  529 + return WDHttp.get<ResponseDTO<MineCommentListDetailItem>>(url, headers)
  530 + };
  531 +
  532 + async getOtherCommentListDataLocal(context: Context): Promise<MineCommentListDetailItem> {
  533 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  534 + let compRes: ResponseDTO<MineCommentListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineCommentListDetailItem>>(context,'other_user512157124138245_comment_list_data.json' );
  535 + if (!compRes || !compRes.data) {
  536 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  537 + return new MineCommentListDetailItem()
  538 + }
  539 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  540 + return compRes.data
  541 + }
  542 +
  543 + /**
  544 + * 查询是否点赞了这条评论
  545 + * @param params
  546 + * @param context
  547 + * @returns
  548 + */
  549 + getOtherUserCommentLikeStatusData(params:OtherUserCommentLikeStatusRequestItem,context: Context): Promise<QueryCommentListIsLikedItem[]> {
  550 + return new Promise<QueryCommentListIsLikedItem[]>((success, error) => {
  551 + Logger.info(TAG, `getAppointmentList start`);
  552 + this.fetchOtherUserCommentLikeStatusData(params).then((navResDTO: ResponseDTO<QueryCommentListIsLikedItem[]>) => {
  553 + if (!navResDTO || navResDTO.code != 0) {
  554 + success(this.getOtherUserCommentLikeStatusDataLocal(context))
  555 + return
  556 + }
  557 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  558 + let navigationBean = navResDTO.data as QueryCommentListIsLikedItem[]
  559 + success(navigationBean);
  560 + }).catch((err: Error) => {
  561 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  562 + success(this.getOtherUserCommentLikeStatusDataLocal(context))
  563 + })
  564 + })
  565 + }
  566 +
  567 + fetchOtherUserCommentLikeStatusData(object:OtherUserCommentLikeStatusRequestItem) {
  568 + let url = HttpUrlUtils.getFollowListStatusDataUrl()
  569 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  570 + return WDHttp.post<ResponseDTO<QueryCommentListIsLikedItem[]>>(url,object, headers)
  571 + };
  572 +
  573 + async getOtherUserCommentLikeStatusDataLocal(context: Context): Promise<QueryCommentListIsLikedItem[]> {
  574 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  575 + let compRes: ResponseDTO<QueryCommentListIsLikedItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<QueryCommentListIsLikedItem[]>>(context,'other_user512157124138245_comment_list_liked_data.json' );
  576 + if (!compRes || !compRes.data) {
  577 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  578 + return []
  579 + }
  580 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  581 + return compRes.data
  582 + }
  583 +
  584 + /**
  585 + * 其他用户的关注列表
  586 + * @param params
  587 + * @param context
  588 + * @returns
  589 + */
  590 + getOtherUserFollowListData(params:UserFollowListRequestItem,context: Context): Promise<MineFollowListItem> {
  591 + return new Promise<MineFollowListItem>((success, error) => {
  592 + Logger.info(TAG, `getAppointmentList start`);
  593 + this.fetchOtherUserFollowListData(params).then((navResDTO: ResponseDTO<MineFollowListItem>) => {
  594 + if (!navResDTO || navResDTO.code != 0) {
  595 + success(this.getOtherUserFollowListDataLocal(context))
  596 + return
  597 + }
  598 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  599 + let navigationBean = navResDTO.data as MineFollowListItem
  600 + success(navigationBean);
  601 + }).catch((err: Error) => {
  602 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  603 + success(this.getOtherUserFollowListDataLocal(context))
  604 + })
  605 + })
  606 + }
498 607
  608 + fetchOtherUserFollowListData(object:UserFollowListRequestItem) {
  609 + let url = HttpUrlUtils.getOtherUserFollowListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}&queryUserId=${object.queryUserId}&userType=${object.userType}&userId=${HttpUrlUtils.getUserId()}`
  610 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  611 + return WDHttp.get<ResponseDTO<MineFollowListItem>>(url, headers)
  612 + };
  613 +
  614 + async getOtherUserFollowListDataLocal(context: Context): Promise<MineFollowListItem> {
  615 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  616 + let compRes: ResponseDTO<MineFollowListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListItem>>(context,'other_user_follow_list_data.json' );
  617 + if (!compRes || !compRes.data) {
  618 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  619 + return new MineFollowListItem()
  620 + }
  621 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  622 + return compRes.data
  623 + }
499 624
500 625
501 } 626 }
@@ -67,7 +67,7 @@ struct MineHomePage { @@ -67,7 +67,7 @@ struct MineHomePage {
67 .borderRadius(50) 67 .borderRadius(50)
68 }.onClick(()=>{ 68 }.onClick(()=>{
69 let params: Params = { 69 let params: Params = {
70 - pageID: "-1" 70 + pageID: "512157124138245"
71 } 71 }
72 WDRouterRule.jumpWithPage(WDRouterPage.otherNormalUserHomePagePage,params) 72 WDRouterRule.jumpWithPage(WDRouterPage.otherNormalUserHomePagePage,params)
73 }) 73 })
1 import router from '@ohos.router' 1 import router from '@ohos.router'
2 import { Params } from 'wdBean'; 2 import { Params } from 'wdBean';
3 import { StringUtils } from 'wdKit'; 3 import { StringUtils } from 'wdKit';
4 -import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent'; 4 +import { OtherHomePageBottomCommentComponent } from '../components/mine/home/OtherHomePageBottomCommentComponent';
  5 +import { OtherHomePageBottomFollowComponent } from '../components/mine/home/OtherHomePageBottomFollowComponent';
5 import MinePageDatasModel from '../model/MinePageDatasModel'; 6 import MinePageDatasModel from '../model/MinePageDatasModel';
6 import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem'; 7 import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem';
7 8
@@ -31,6 +32,7 @@ struct OtherNormalUserHomePage { @@ -31,6 +32,7 @@ struct OtherNormalUserHomePage {
31 @State browseNum:number = 0//阅读数 32 @State browseNum:number = 0//阅读数
32 @State commentNum:number = 0//评论数 33 @State commentNum:number = 0//评论数
33 @State attentionNum:number = 0//关注数 34 @State attentionNum:number = 0//关注数
  35 + @State desc:string = ""
34 36
35 aboutToAppear(){ 37 aboutToAppear(){
36 this.getUserInfo() 38 this.getUserInfo()
@@ -145,17 +147,36 @@ struct OtherNormalUserHomePage { @@ -145,17 +147,36 @@ struct OtherNormalUserHomePage {
145 .width('100%') 147 .width('100%')
146 .padding({ left: '35lpx' }) 148 .padding({ left: '35lpx' })
147 149
148 - //间隔符 150 + //用户简介区域
  151 + Column() {
  152 + Row() {
  153 + Text(this.desc)
  154 + .fontSize('27lpx')
  155 + .maxLines(3)
  156 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  157 + .lineHeight('40lpx')
  158 + .fontWeight('400lpx')
  159 + .fontColor($r('app.color.color_222222'))
  160 + .textAlign(TextAlign.Start)
  161 +
  162 + }
  163 + }.padding({ left: '31lpx',right:'31lpx',top:'19lpx',bottom:'31lpx'})
  164 + .alignItems(HorizontalAlign.Start)
  165 + .justifyContent(FlexAlign.Center)
  166 + .width('100%')
  167 + .backgroundColor($r('app.color.white'))
  168 + .visibility(StringUtils.isEmpty(this.desc)?Visibility.Hidden:Visibility.Visible)
149 169
  170 + //间隔符
150 Divider().width('100%').height('12lpx').color($r('app.color.color_F5F5F5')).strokeWidth('12lpx') 171 Divider().width('100%').height('12lpx').color($r('app.color.color_F5F5F5')).strokeWidth('12lpx')
151 172
152 //tab 页面 173 //tab 页面
153 Tabs({controller: this.controller}) { 174 Tabs({controller: this.controller}) {
154 TabContent() { 175 TabContent() {
155 - HomePageBottomComponent({style:0}) 176 + OtherHomePageBottomCommentComponent({curUserId:this.curUserId,levelHead:this.levelHead})
156 }.tabBar(this.TabBuilder(0,"评论")) 177 }.tabBar(this.TabBuilder(0,"评论"))
157 TabContent() { 178 TabContent() {
158 - HomePageBottomComponent({style:1}) 179 + OtherHomePageBottomFollowComponent({curUserId:this.curUserId})
159 }.tabBar(this.TabBuilder(1,"关注")) 180 }.tabBar(this.TabBuilder(1,"关注"))
160 } 181 }
161 .backgroundColor($r('app.color.white')) 182 .backgroundColor($r('app.color.white'))
@@ -287,7 +308,9 @@ struct OtherNormalUserHomePage { @@ -287,7 +308,9 @@ struct OtherNormalUserHomePage {
287 if(value!=null){ 308 if(value!=null){
288 this.userName = value.userName 309 this.userName = value.userName
289 this.headPhotoUrl = value.headPhotoUrl 310 this.headPhotoUrl = value.headPhotoUrl
290 - 311 + if(StringUtils.isNotEmpty(value.introduction)){
  312 + this.desc = value.introduction
  313 + }
291 this.browseNum = StringUtils.isEmpty(value.browseNum)?0:value.browseNum 314 this.browseNum = StringUtils.isEmpty(value.browseNum)?0:value.browseNum
292 this.commentNum = StringUtils.isEmpty(value.commentNum)?0:value.commentNum 315 this.commentNum = StringUtils.isEmpty(value.commentNum)?0:value.commentNum
293 this.attentionNum = StringUtils.isEmpty(value.attentionNum)?0:value.attentionNum 316 this.attentionNum = StringUtils.isEmpty(value.attentionNum)?0:value.attentionNum
@@ -5,7 +5,7 @@ import { @@ -5,7 +5,7 @@ import {
5 CompInfoBean, 5 CompInfoBean,
6 ContentDetailDTO, 6 ContentDetailDTO,
7 InteractDataDTO, 7 InteractDataDTO,
8 - InteractDataStatusDTO, 8 + InteractDataStatusBean,
9 MorningEveningPaperDTO, 9 MorningEveningPaperDTO,
10 NavigationBodyDTO, 10 NavigationBodyDTO,
11 NewspaperListBean, 11 NewspaperListBean,
@@ -172,7 +172,7 @@ export class PageRepository { @@ -172,7 +172,7 @@ export class PageRepository {
172 static fetchInteractDataStatus(param: object) { 172 static fetchInteractDataStatus(param: object) {
173 let url = PageRepository.getInteractDataStatusUrl() 173 let url = PageRepository.getInteractDataStatusUrl()
174 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders(); 174 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
175 - return WDHttp.post<ResponseDTO<InteractDataStatusDTO[]>>(url, param, headers) 175 + return WDHttp.post<ResponseDTO<InteractDataStatusBean[]>>(url, param, headers)
176 }; 176 };
177 177
178 // 浏览历史新增、删除接口 178 // 浏览历史新增、删除接口
@@ -7,12 +7,18 @@ export class CommentListItem{ @@ -7,12 +7,18 @@ export class CommentListItem{
7 commentContent:string = "" 7 commentContent:string = ""
8 targetTitle:string = "" 8 targetTitle:string = ""
9 createTime:string = "" 9 createTime:string = ""
  10 + likeNum:number = 0
  11 + like_status:number = 0
  12 + id:number = 0
10 13
11 - constructor(fromUserHeader:string,fromUserName:string,targetTitle:string,createTime:string,commentContent:string ) { 14 + constructor(fromUserHeader:string,fromUserName:string,targetTitle:string,createTime:string,commentContent:string,likeNum:number,like_status:number,id:number) {
12 this.fromUserHeader = fromUserHeader 15 this.fromUserHeader = fromUserHeader
13 this.fromUserName = fromUserName 16 this.fromUserName = fromUserName
14 this.commentContent = commentContent 17 this.commentContent = commentContent
15 this.targetTitle = targetTitle 18 this.targetTitle = targetTitle
16 this.createTime = createTime 19 this.createTime = createTime
  20 + this.likeNum = likeNum
  21 + this.like_status = like_status
  22 + this.id = id
17 } 23 }
18 } 24 }
@@ -67,6 +67,7 @@ export class FollowListDetailItem{ @@ -67,6 +67,7 @@ export class FollowListDetailItem{
67 introduction:string //介绍 67 introduction:string //介绍
68 status:string = "0" //是否已经关注 68 status:string = "0" //是否已经关注
69 creatorId:string = "" 69 creatorId:string = ""
  70 + attentionUserId:string = ""
70 71
71 attentionCreatorId:string = "" 72 attentionCreatorId:string = ""
72 attentionHeadPhotoUrl:string = "" 73 attentionHeadPhotoUrl:string = ""
@@ -74,12 +75,13 @@ export class FollowListDetailItem{ @@ -74,12 +75,13 @@ export class FollowListDetailItem{
74 fansNum :number = 0 75 fansNum :number = 0
75 76
76 77
77 - constructor(headPhotoUrl:string,cnUserName:string,cnFansNum:number,introduction:string,creatorId:string,status:string ) { 78 + constructor(headPhotoUrl:string,cnUserName:string,cnFansNum:number,introduction:string,creatorId:string,status:string,attentionUserId:string) {
78 this.headPhotoUrl = headPhotoUrl 79 this.headPhotoUrl = headPhotoUrl
79 this.cnUserName = cnUserName 80 this.cnUserName = cnUserName
80 this.cnFansNum = cnFansNum 81 this.cnFansNum = cnFansNum
81 this.introduction = introduction 82 this.introduction = introduction
82 this.creatorId = creatorId 83 this.creatorId = creatorId
83 this.status = status 84 this.status = status
  85 + this.attentionUserId = attentionUserId
84 } 86 }
85 } 87 }
  1 +export class OtherUserCommentLikeStatusRequestItem{
  2 + commentIdList:number[] = []
  3 +}
  1 +export class OtherUserCommentListRequestItem {
  2 + creatorId: string = ""
  3 + pageSize: number = 20
  4 + pageNum: number = 1
  5 + time: string = ""
  6 + userType: string = "1"
  7 + userId: string = ""
  8 +
  9 + constructor(creatorId: string, pageSize: number,
  10 + pageNum: number,
  11 + time: string,
  12 + userType: string,
  13 + userId: string) {
  14 + this.creatorId = creatorId
  15 + this.pageSize = pageSize
  16 + this.pageNum = pageNum
  17 + this.time = time
  18 + this.userType = userType
  19 + this.userId = userId
  20 + }
  21 +}
  1 +
  2 +
  3 +export class QueryCommentListIsLikedItem{
  4 + commentId:number = 0
  5 + status:number = 0
  6 +
  7 +}
  1 +export class UserFollowListRequestItem{
  2 + queryUserId:number = -1
  3 + pageSize:number = 20
  4 + pageNum:number = 1
  5 + userType:string = "1"
  6 +
  7 + constructor(queryUserId:number, pageSize:number, pageNum:number, userType:string) {
  8 + this.queryUserId = queryUserId
  9 + this.pageSize = pageSize
  10 + this.pageNum = pageNum
  11 + this.userType = userType
  12 + }
  13 +}
@@ -33,14 +33,14 @@ export struct DetailPlayShortVideoPage { @@ -33,14 +33,14 @@ export struct DetailPlayShortVideoPage {
33 @Provide newsSourceName?: string = '' 33 @Provide newsSourceName?: string = ''
34 @Provide newsTitle?: string = '' 34 @Provide newsTitle?: string = ''
35 @Provide editorName?: string = '' 35 @Provide editorName?: string = ''
36 - @Provide rmhInfo?: RmhInfoDTO = undefined  
37 - @Provide userInfo?: UserInfoDTO = undefined 36 + @Provide rmhInfo?: RmhInfoDTO | null = null
  37 + @Provide userInfo?: UserInfoDTO | null = null
38 @Provide message?: string = '' 38 @Provide message?: string = ''
39 @Provide newsSummary?: string = '' 39 @Provide newsSummary?: string = ''
40 @Provide progressVal: number = 0; 40 @Provide progressVal: number = 0;
41 @Provide videoLandScape?: number = 1; // 视频朝向, 横屏视频:1;竖屏视频:2 41 @Provide videoLandScape?: number = 1; // 视频朝向, 横屏视频:1;竖屏视频:2
42 42
43 - playVMChanged(name: string) { 43 + playVMChanged() {
44 this.url = this.playVM.url 44 this.url = this.playVM.url
45 this.newsSourceName = this.playVM.newsSourceName 45 this.newsSourceName = this.playVM.newsSourceName
46 this.newsTitle = this.playVM.newsTitle 46 this.newsTitle = this.playVM.newsTitle
@@ -98,7 +98,7 @@ export struct DetailPlayShortVideoPage { @@ -98,7 +98,7 @@ export struct DetailPlayShortVideoPage {
98 WDPlayerRenderView({ 98 WDPlayerRenderView({
99 playerController: this.playerController, 99 playerController: this.playerController,
100 onLoad: async () => { 100 onLoad: async () => {
101 - console.log('onload==') 101 + console.log('onload==', this.contentId, this.relId, this.relType)
102 // this.playVM.playWithContentId(this.contentId ?? "846899373") 102 // this.playVM.playWithContentId(this.contentId ?? "846899373")
103 this.playVM.playWithIds(this.contentId ?? "846899373", 103 this.playVM.playWithIds(this.contentId ?? "846899373",
104 this.relId ?? "500000301942", this.relType ?? "1") 104 this.relId ?? "500000301942", this.relType ?? "1")
@@ -155,7 +155,7 @@ export struct DetailPlayShortVideoPage { @@ -155,7 +155,7 @@ export struct DetailPlayShortVideoPage {
155 this.playerController.continue = undefined; 155 this.playerController.continue = undefined;
156 } 156 }
157 157
158 - urlChanged(name: string) { 158 + urlChanged() {
159 if (this.url) { 159 if (this.url) {
160 console.log("url:" + this.url); 160 console.log("url:" + this.url);
161 this.status = PlayerConstants.STATUS_START; 161 this.status = PlayerConstants.STATUS_START;
@@ -90,57 +90,66 @@ export struct PlayerTitleComment { @@ -90,57 +90,66 @@ export struct PlayerTitleComment {
90 .width('100%') 90 .width('100%')
91 .alignItems(VerticalAlign.Bottom) 91 .alignItems(VerticalAlign.Bottom)
92 92
93 - Slider({  
94 - value: this.progressVal,  
95 - step: 1,  
96 - style: SliderStyle.OutSet  
97 - })  
98 - .blockColor(Color.White)  
99 - .trackColor($r('app.color.track_color'))  
100 - .selectedColor($r('app.color.index_tab_selected_font_color'))  
101 - .trackThickness(1)  
102 - .width('100%')  
103 - .onChange((value: number, mode: SliderChangeMode) => {  
104 - this.playerController?.setSeekTime(value, mode);  
105 - })  
106 -  
107 Row() { 93 Row() {
108 - Image($r('app.media.ic_back'))  
109 - .width(44)  
110 - .aspectRatio(1)  
111 - .padding(13)  
112 - .onClick(() => {  
113 - if (this.isFullScreen) {  
114 - if (deviceInfo.deviceType != "phone") {  
115 - WindowModel.shared.getWindowSize().then((size) => {  
116 - if (size.width > size.height) {  
117 - router.back(); 94 + Column() {
  95 + Slider({
  96 + value: this.progressVal,
  97 + step: 1,
  98 + style: SliderStyle.OutSet
  99 + })
  100 + .blockColor(Color.White)
  101 + .trackColor($r('app.color.track_color'))
  102 + .selectedColor($r('app.color.index_tab_selected_font_color'))
  103 + .trackThickness(1)
  104 + .width('100%')
  105 + .onChange((value: number, mode: SliderChangeMode) => {
  106 + this.playerController?.setSeekTime(value, mode);
  107 + })
  108 +
  109 + Row() {
  110 + Image($r('app.media.ic_back'))
  111 + .width(24)
  112 + .height(24)
  113 + .aspectRatio(1)
  114 + .onClick(() => {
  115 + if (this.isFullScreen) {
  116 + if (deviceInfo.deviceType != "phone") {
  117 + WindowModel.shared.getWindowSize().then((size) => {
  118 + if (size.width > size.height) {
  119 + router.back();
  120 + } else {
  121 + this.isFullScreen = !this.isFullScreen;
  122 + WindowModel.shared.setPreferredOrientation(window.Orientation.PORTRAIT);
  123 + devicePLSensorManager.devicePLSensorOn(window.Orientation.PORTRAIT);
  124 + }
  125 + })
118 } else { 126 } else {
119 this.isFullScreen = !this.isFullScreen; 127 this.isFullScreen = !this.isFullScreen;
120 WindowModel.shared.setPreferredOrientation(window.Orientation.PORTRAIT); 128 WindowModel.shared.setPreferredOrientation(window.Orientation.PORTRAIT);
121 devicePLSensorManager.devicePLSensorOn(window.Orientation.PORTRAIT); 129 devicePLSensorManager.devicePLSensorOn(window.Orientation.PORTRAIT);
122 } 130 }
123 - })  
124 - } else {  
125 - this.isFullScreen = !this.isFullScreen;  
126 - WindowModel.shared.setPreferredOrientation(window.Orientation.PORTRAIT);  
127 - devicePLSensorManager.devicePLSensorOn(window.Orientation.PORTRAIT);  
128 - }  
129 - } else {  
130 - router.back();  
131 - }  
132 - }) 131 + } else {
  132 + router.back();
  133 + }
  134 + })
  135 +
  136 + TextInput({ placeholder: '说两句...', text: this.comment })
  137 +
  138 + .placeholderColor(Color.White)
  139 + .placeholderFont({ size: 14 })
  140 + .fontColor(Color.White)
  141 + .fontSize(14)
  142 + .maxLines(1)
  143 + .layoutWeight(1)
  144 + .backgroundColor('#1a1a1a')
  145 + .borderRadius(2)
  146 + .margin({ left: 12 })
  147 + }
  148 + .alignItems(VerticalAlign.Center)
  149 + .padding({ left: 16, right: 16, top: 11, bottom: 11 })
  150 + }
  151 + }.backgroundColor(Color.Black)
133 152
134 - TextInput({ placeholder: '说两句...', text: this.comment })  
135 - .placeholderColor(Color.White)  
136 - .placeholderFont({ size: 14 })  
137 - .fontColor(Color.White)  
138 - .fontSize(14)  
139 - .maxLines(1)  
140 - .layoutWeight(1)  
141 - .backgroundColor('#ccc')  
142 - .borderRadius(2)  
143 - }.alignItems(VerticalAlign.Center)  
144 } 153 }
145 .width('100%') 154 .width('100%')
146 // .height('40%') 155 // .height('40%')
@@ -15,8 +15,8 @@ export class PlayViewModel { @@ -15,8 +15,8 @@ export class PlayViewModel {
15 newsTitle?: string 15 newsTitle?: string
16 editorName?: string 16 editorName?: string
17 newsSummary?: string 17 newsSummary?: string
18 - rmhInfo?: RmhInfoDTO  
19 - userInfo?: UserInfoDTO 18 + rmhInfo?: RmhInfoDTO | null
  19 + userInfo?: UserInfoDTO | null
20 url?: string 20 url?: string
21 // 视频朝向, 21 // 视频朝向,
22 // 横屏视频:1(进入竖屏,立即展示半屏播放窗口,当切换横屏时,再展示全部播放窗口;后续可再转换到竖屏): 22 // 横屏视频:1(进入竖屏,立即展示半屏播放窗口,当切换横屏时,再展示全部播放窗口;后续可再转换到竖屏):
  1 +{
  2 + "lockfileVersion": 2,
  3 + "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
  4 + "specifiers": {
  5 + "@ohos/axios@^2.1.1": "@ohos/axios@2.2.0"
  6 + },
  7 + "packages": {
  8 + "@ohos/axios@2.2.0": {
  9 + "resolved": "https://repo.harmonyos.com/ohpm/@ohos/axios/-/axios-2.2.0.har",
  10 + "integrity": "sha512-v1QBWk6DfcN8wUW3D0ieFbHTR1taSI5cOgxp5l6B5cegXuNYhSc8ggKlAIXe6h/14LsfM+NW0ZGfSXcNEIM5yA==",
  11 + "registryType": "ohpm"
  12 + }
  13 + }
  14 +}
@@ -61,7 +61,10 @@ export class WDPlayerController { @@ -61,7 +61,10 @@ export class WDPlayerController {
61 this.avPlayer.url = this.url; 61 this.avPlayer.url = this.url;
62 break; 62 break;
63 case AVPlayerStatus.INITIALIZED: 63 case AVPlayerStatus.INITIALIZED:
64 - this.avPlayer.surfaceId = this.surfaceId; 64 + if (this.surfaceId) {
  65 + this.avPlayer.surfaceId = this.surfaceId;
  66 + }
  67 +
65 this.avPlayer?.prepare(); 68 this.avPlayer?.prepare();
66 break; 69 break;
67 case AVPlayerStatus.PREPARED: 70 case AVPlayerStatus.PREPARED:
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "hasNext": 0,
  5 + "list": [
  6 + {
  7 + "avatarFrame": "",
  8 + "checkStatus": 2,
  9 + "commentContent": "方法就是\\ud83d\\udc4d",
  10 + "commentContentSensitive": "",
  11 + "commentLevel": 1,
  12 + "commentPics": "",
  13 + "commentSensitive": "",
  14 + "commentType": "2",
  15 + "createTime": "2024-02-19 14:14:16",
  16 + "fromCreatorId": "",
  17 + "fromDeviceId": "F0B98E7F-6479-462C-BA25-5FC574511C8A",
  18 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  19 + "fromUserId": "512157124138245",
  20 + "fromUserName": "树下🍑 1122334",
  21 + "fromUserType": 1,
  22 + "h5Url": "",
  23 + "id": 403445,
  24 + "keyArticle": 0,
  25 + "likeNum": 3,
  26 + "pageId": null,
  27 + "parentCommentVo": null,
  28 + "parentId": -1,
  29 + "rootCommentId": 403445,
  30 + "sensitiveExist": 0,
  31 + "sensitiveShow": 1,
  32 + "shareInfo": {
  33 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231012/image/content/7f1a342a809d4276aa975ba9e7fe2313.png",
  34 + "shareSummary": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是",
  35 + "shareTitle": "这是一个开始、请持续关注这是一个开始、请",
  36 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000633703-500000008559"
  37 + },
  38 + "targetId": "30000633703",
  39 + "targetRelId": "500000008559",
  40 + "targetRelObjectId": "2002",
  41 + "targetRelType": 1,
  42 + "targetStatus": 0,
  43 + "targetTitle": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注",
  44 + "targetType": 8,
  45 + "topicType": null,
  46 + "uuid": "5901a353-79aa-4b81-81d7-f6f13f0a6817"
  47 + },
  48 + {
  49 + "avatarFrame": "",
  50 + "checkStatus": 2,
  51 + "commentContent": "毕业",
  52 + "commentContentSensitive": "",
  53 + "commentLevel": 1,
  54 + "commentPics": "",
  55 + "commentSensitive": "",
  56 + "commentType": "2",
  57 + "createTime": "2024-01-29 17:39:04",
  58 + "fromCreatorId": "",
  59 + "fromDeviceId": "",
  60 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  61 + "fromUserId": "512157124138245",
  62 + "fromUserName": "树下🍑 1122334",
  63 + "fromUserType": 1,
  64 + "h5Url": "",
  65 + "id": 303318,
  66 + "keyArticle": 0,
  67 + "likeNum": 0,
  68 + "pageId": null,
  69 + "parentCommentVo": null,
  70 + "parentId": -1,
  71 + "rootCommentId": 303318,
  72 + "sensitiveExist": 0,
  73 + "sensitiveShow": 1,
  74 + "shareInfo": {
  75 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20230923/image/content/4b8f615d1b134546aa4903300c38fb5b.png",
  76 + "shareSummary": "人民日报,有品质的新闻",
  77 + "shareTitle": "【广东爱情故事】人在广东已经漂泊十年",
  78 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000627490-500000007811"
  79 + },
  80 + "targetId": "30000627490",
  81 + "targetRelId": "500000007811",
  82 + "targetRelObjectId": "10000002083",
  83 + "targetRelType": 2,
  84 + "targetStatus": 0,
  85 + "targetTitle": "【广东爱情故事】人在广东已经漂泊十年",
  86 + "targetType": 13,
  87 + "topicType": null,
  88 + "uuid": "59339983-a9ee-4054-98aa-0eddbc6275a1"
  89 + },
  90 + {
  91 + "avatarFrame": "",
  92 + "checkStatus": 2,
  93 + "commentContent": "索尼👍",
  94 + "commentContentSensitive": "",
  95 + "commentLevel": 1,
  96 + "commentPics": "",
  97 + "commentSensitive": "",
  98 + "commentType": "2",
  99 + "createTime": "2024-01-29 17:38:56",
  100 + "fromCreatorId": "",
  101 + "fromDeviceId": "",
  102 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  103 + "fromUserId": "512157124138245",
  104 + "fromUserName": "树下🍑 1122334",
  105 + "fromUserType": 1,
  106 + "h5Url": "",
  107 + "id": 303317,
  108 + "keyArticle": 0,
  109 + "likeNum": 0,
  110 + "pageId": null,
  111 + "parentCommentVo": null,
  112 + "parentId": -1,
  113 + "rootCommentId": 303317,
  114 + "sensitiveExist": 0,
  115 + "sensitiveShow": 1,
  116 + "shareInfo": {
  117 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20230923/image/content/4b8f615d1b134546aa4903300c38fb5b.png",
  118 + "shareSummary": "人民日报,有品质的新闻",
  119 + "shareTitle": "【广东爱情故事】人在广东已经漂泊十年",
  120 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000627490-500000007811"
  121 + },
  122 + "targetId": "30000627490",
  123 + "targetRelId": "500000007811",
  124 + "targetRelObjectId": "10000002083",
  125 + "targetRelType": 2,
  126 + "targetStatus": 0,
  127 + "targetTitle": "【广东爱情故事】人在广东已经漂泊十年",
  128 + "targetType": 13,
  129 + "topicType": null,
  130 + "uuid": "8808cffa-6496-4dc9-ac79-a65c8ada09d2"
  131 + },
  132 + {
  133 + "avatarFrame": "",
  134 + "checkStatus": 2,
  135 + "commentContent": "游客评论苹果",
  136 + "commentContentSensitive": "",
  137 + "commentLevel": 1,
  138 + "commentPics": "",
  139 + "commentSensitive": "",
  140 + "commentType": "2",
  141 + "createTime": "2024-01-27 15:00:24",
  142 + "fromCreatorId": "",
  143 + "fromDeviceId": "F0B98E7F-6479-462C-BA25-5FC574511C8A",
  144 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  145 + "fromUserId": "512157124138245",
  146 + "fromUserName": "树下🍑 1122334",
  147 + "fromUserType": 1,
  148 + "h5Url": "",
  149 + "id": 403426,
  150 + "keyArticle": 0,
  151 + "likeNum": 1,
  152 + "pageId": null,
  153 + "parentCommentVo": null,
  154 + "parentId": -1,
  155 + "rootCommentId": 403426,
  156 + "sensitiveExist": 0,
  157 + "sensitiveShow": 1,
  158 + "shareInfo": {
  159 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231012/image/content/7f1a342a809d4276aa975ba9e7fe2313.png",
  160 + "shareSummary": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是",
  161 + "shareTitle": "这是一个开始、请持续关注这是一个开始、请",
  162 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000633703-500000008559"
  163 + },
  164 + "targetId": "30000633703",
  165 + "targetRelId": "500000008559",
  166 + "targetRelObjectId": "2002",
  167 + "targetRelType": 1,
  168 + "targetStatus": 0,
  169 + "targetTitle": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注",
  170 + "targetType": 8,
  171 + "topicType": null,
  172 + "uuid": "a272d091-3697-44ca-95e6-532028eee776"
  173 + },
  174 + {
  175 + "avatarFrame": "",
  176 + "checkStatus": 2,
  177 + "commentContent": "游客账号评论安卓",
  178 + "commentContentSensitive": "",
  179 + "commentLevel": 1,
  180 + "commentPics": "",
  181 + "commentSensitive": "",
  182 + "commentType": "2",
  183 + "createTime": "2024-01-27 15:00:15",
  184 + "fromCreatorId": "",
  185 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  186 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  187 + "fromUserId": "512157124138245",
  188 + "fromUserName": "树下🍑 1122334",
  189 + "fromUserType": 1,
  190 + "h5Url": "",
  191 + "id": 403425,
  192 + "keyArticle": 0,
  193 + "likeNum": 0,
  194 + "pageId": null,
  195 + "parentCommentVo": null,
  196 + "parentId": -1,
  197 + "rootCommentId": 403425,
  198 + "sensitiveExist": 0,
  199 + "sensitiveShow": 1,
  200 + "shareInfo": {
  201 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231012/image/content/7f1a342a809d4276aa975ba9e7fe2313.png",
  202 + "shareSummary": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是",
  203 + "shareTitle": "这是一个开始、请持续关注这是一个开始、请",
  204 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000633703-500000008559"
  205 + },
  206 + "targetId": "30000633703",
  207 + "targetRelId": "500000008559",
  208 + "targetRelObjectId": "2002",
  209 + "targetRelType": 1,
  210 + "targetStatus": 0,
  211 + "targetTitle": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注",
  212 + "targetType": 8,
  213 + "topicType": null,
  214 + "uuid": "62225e7a-9afd-4b8c-b9b6-71a5d610997d"
  215 + },
  216 + {
  217 + "avatarFrame": "",
  218 + "checkStatus": 2,
  219 + "commentContent": "你理解吗",
  220 + "commentContentSensitive": "",
  221 + "commentLevel": 1,
  222 + "commentPics": "",
  223 + "commentSensitive": "",
  224 + "commentType": "2",
  225 + "createTime": "2024-01-27 14:45:21",
  226 + "fromCreatorId": "",
  227 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  228 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  229 + "fromUserId": "512157124138245",
  230 + "fromUserName": "树下🍑 1122334",
  231 + "fromUserType": 1,
  232 + "h5Url": "",
  233 + "id": 403422,
  234 + "keyArticle": 0,
  235 + "likeNum": 0,
  236 + "pageId": null,
  237 + "parentCommentVo": null,
  238 + "parentId": -1,
  239 + "rootCommentId": 403422,
  240 + "sensitiveExist": 0,
  241 + "sensitiveShow": 1,
  242 + "shareInfo": {
  243 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231130/image/content/09ee931569d34781b9bbe85f5348873f.jpg",
  244 + "shareSummary": "人民日报,有品质的新闻",
  245 + "shareTitle": "点亮香港“小航天迷”的“太空梦”——内地航天专家走进香港中小学校园",
  246 + "shareUrl": "https://pd-people-sit.pdnews.cn/rmhphotos/30000650925"
  247 + },
  248 + "targetId": "30000650925",
  249 + "targetRelId": "500000013228",
  250 + "targetRelObjectId": "2058",
  251 + "targetRelType": 1,
  252 + "targetStatus": 0,
  253 + "targetTitle": "点亮香港“小航天迷”的“太空梦”——内地航天专家走进香港中小学校园",
  254 + "targetType": 9,
  255 + "topicType": null,
  256 + "uuid": "cc6b2322-ffa4-4a59-a7af-5e4a18afcbd3"
  257 + },
  258 + {
  259 + "avatarFrame": "",
  260 + "checkStatus": 2,
  261 + "commentContent": "你好我是游客",
  262 + "commentContentSensitive": "",
  263 + "commentLevel": 1,
  264 + "commentPics": "",
  265 + "commentSensitive": "",
  266 + "commentType": "2",
  267 + "createTime": "2024-01-27 14:40:19",
  268 + "fromCreatorId": "",
  269 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  270 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  271 + "fromUserId": "512157124138245",
  272 + "fromUserName": "树下🍑 1122334",
  273 + "fromUserType": 1,
  274 + "h5Url": "",
  275 + "id": 303306,
  276 + "keyArticle": 0,
  277 + "likeNum": 0,
  278 + "pageId": null,
  279 + "parentCommentVo": null,
  280 + "parentId": -1,
  281 + "rootCommentId": 303306,
  282 + "sensitiveExist": 0,
  283 + "sensitiveShow": 1,
  284 + "shareInfo": {
  285 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231130/image/content/09ee931569d34781b9bbe85f5348873f.jpg",
  286 + "shareSummary": "人民日报,有品质的新闻",
  287 + "shareTitle": "点亮香港“小航天迷”的“太空梦”——内地航天专家走进香港中小学校园",
  288 + "shareUrl": "https://pd-people-sit.pdnews.cn/rmhphotos/30000650925"
  289 + },
  290 + "targetId": "30000650925",
  291 + "targetRelId": "500000013228",
  292 + "targetRelObjectId": "2058",
  293 + "targetRelType": 1,
  294 + "targetStatus": 0,
  295 + "targetTitle": "点亮香港“小航天迷”的“太空梦”——内地航天专家走进香港中小学校园",
  296 + "targetType": 9,
  297 + "topicType": null,
  298 + "uuid": "9fac53da-603f-444a-8807-4f5feacf55bb"
  299 + },
  300 + {
  301 + "avatarFrame": "",
  302 + "checkStatus": 2,
  303 + "commentContent": "你好我是游客",
  304 + "commentContentSensitive": "",
  305 + "commentLevel": 1,
  306 + "commentPics": "",
  307 + "commentSensitive": "",
  308 + "commentType": "2",
  309 + "createTime": "2024-01-27 14:34:30",
  310 + "fromCreatorId": "",
  311 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  312 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  313 + "fromUserId": "512157124138245",
  314 + "fromUserName": "树下🍑 1122334",
  315 + "fromUserType": 1,
  316 + "h5Url": "",
  317 + "id": 403420,
  318 + "keyArticle": 0,
  319 + "likeNum": 0,
  320 + "pageId": null,
  321 + "parentCommentVo": null,
  322 + "parentId": -1,
  323 + "rootCommentId": 403420,
  324 + "sensitiveExist": 0,
  325 + "sensitiveShow": 1,
  326 + "shareInfo": {
  327 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/image/creator/2024012911/f2f9fe93ca464d05bc0407a385ad877b.png",
  328 + "shareSummary": "爸爸角色扮演医生,在宝蓝比赛摔倒的时候悉心照顾,其他小朋友也要注意呀!",
  329 + "shareTitle": "爸爸角色扮演医生,在宝蓝比赛摔倒的时候悉心照顾,其他小朋友也要注意呀!",
  330 + "shareUrl": "https://pd-people-sit.pdnews.cn/rmhvideo/30000716043"
  331 + },
  332 + "targetId": "30000716043",
  333 + "targetRelId": "500000030952",
  334 + "targetRelObjectId": "2058",
  335 + "targetRelType": 1,
  336 + "targetStatus": 0,
  337 + "targetTitle": "爸爸角色扮演医生,在宝蓝比赛摔倒的时候悉心照顾,其他小朋友也要注意呀!",
  338 + "targetType": 1,
  339 + "topicType": null,
  340 + "uuid": "31305151-6b9c-49ea-8e5b-9e4b8fffe79d"
  341 + },
  342 + {
  343 + "avatarFrame": "",
  344 + "checkStatus": 2,
  345 + "commentContent": "游客账号",
  346 + "commentContentSensitive": "",
  347 + "commentLevel": 1,
  348 + "commentPics": "",
  349 + "commentSensitive": "",
  350 + "commentType": "2",
  351 + "createTime": "2024-01-27 14:27:52",
  352 + "fromCreatorId": "",
  353 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  354 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  355 + "fromUserId": "512157124138245",
  356 + "fromUserName": "树下🍑 1122334",
  357 + "fromUserType": 1,
  358 + "h5Url": "",
  359 + "id": 403417,
  360 + "keyArticle": 0,
  361 + "likeNum": 0,
  362 + "pageId": null,
  363 + "parentCommentVo": null,
  364 + "parentId": -1,
  365 + "rootCommentId": 403417,
  366 + "sensitiveExist": 0,
  367 + "sensitiveShow": 1,
  368 + "shareInfo": {
  369 + "shareCoverUrl": "",
  370 + "shareSummary": "人民日报,有品质的新闻",
  371 + "shareTitle": "跟着习主席看世界|同舟共济 打造人类卫生健康共同体",
  372 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000628337-500000004210"
  373 + },
  374 + "targetId": "30000628337",
  375 + "targetRelId": "500000004210",
  376 + "targetRelObjectId": "2002",
  377 + "targetRelType": 1,
  378 + "targetStatus": 0,
  379 + "targetTitle": "跟着习主席看世界|同舟共济 打造人类卫生健康共同体",
  380 + "targetType": 8,
  381 + "topicType": null,
  382 + "uuid": "034911cc-34ca-4209-add2-46f48f4b2104"
  383 + },
  384 + {
  385 + "avatarFrame": "",
  386 + "checkStatus": 2,
  387 + "commentContent": "我是游客",
  388 + "commentContentSensitive": "",
  389 + "commentLevel": 1,
  390 + "commentPics": "",
  391 + "commentSensitive": "",
  392 + "commentType": "2",
  393 + "createTime": "2024-01-27 14:25:34",
  394 + "fromCreatorId": "",
  395 + "fromDeviceId": "F0B98E7F-6479-462C-BA25-5FC574511C8A",
  396 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  397 + "fromUserId": "512157124138245",
  398 + "fromUserName": "树下🍑 1122334",
  399 + "fromUserType": 1,
  400 + "h5Url": "",
  401 + "id": 303305,
  402 + "keyArticle": 0,
  403 + "likeNum": 0,
  404 + "pageId": null,
  405 + "parentCommentVo": null,
  406 + "parentId": -1,
  407 + "rootCommentId": 303305,
  408 + "sensitiveExist": 0,
  409 + "sensitiveShow": 1,
  410 + "shareInfo": {
  411 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20240127/image/content/e8d93872483a48c7a4eaa48f70211ab1.png",
  412 + "shareSummary": "人民日报,有品质的新闻",
  413 + "shareTitle": "“大学也有家长群",
  414 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000723442-500000031275"
  415 + },
  416 + "targetId": "30000723442",
  417 + "targetRelId": "500000031275",
  418 + "targetRelObjectId": "2002",
  419 + "targetRelType": 1,
  420 + "targetStatus": 0,
  421 + "targetTitle": "“大学也有家长群",
  422 + "targetType": 8,
  423 + "topicType": null,
  424 + "uuid": "0b0aa5ef-b2de-4d01-9f5a-274c5122560f"
  425 + },
  426 + {
  427 + "avatarFrame": "",
  428 + "checkStatus": 2,
  429 + "commentContent": "你好,我是游客动态",
  430 + "commentContentSensitive": "",
  431 + "commentLevel": 1,
  432 + "commentPics": "",
  433 + "commentSensitive": "",
  434 + "commentType": "2",
  435 + "createTime": "2024-01-27 14:24:56",
  436 + "fromCreatorId": "",
  437 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  438 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  439 + "fromUserId": "512157124138245",
  440 + "fromUserName": "树下🍑 1122334",
  441 + "fromUserType": 1,
  442 + "h5Url": "",
  443 + "id": 303304,
  444 + "keyArticle": 0,
  445 + "likeNum": 0,
  446 + "pageId": null,
  447 + "parentCommentVo": null,
  448 + "parentId": -1,
  449 + "rootCommentId": 303304,
  450 + "sensitiveExist": 0,
  451 + "sensitiveShow": 1,
  452 + "shareInfo": {
  453 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231130/image/content/3e0cce06724740f0807ff0731c4a1d03/C4BC1C53-2B9C-4A54-BF95-044242D78260.jpg",
  454 + "shareSummary": "发布动态带活动13",
  455 + "shareTitle": "发布动态带活动13",
  456 + "shareUrl": "https://pd-people-sit.pdnews.cn/rmhmoments/30000650969"
  457 + },
  458 + "targetId": "30000650969",
  459 + "targetRelId": "500000013237",
  460 + "targetRelObjectId": "2058",
  461 + "targetRelType": 1,
  462 + "targetStatus": 0,
  463 + "targetTitle": "发布动态带活动13",
  464 + "targetType": 14,
  465 + "topicType": null,
  466 + "uuid": "ae2b2ece-d036-4b01-91e7-9708b0b5fe1c"
  467 + },
  468 + {
  469 + "avatarFrame": "",
  470 + "checkStatus": 2,
  471 + "commentContent": "你好我是游客",
  472 + "commentContentSensitive": "",
  473 + "commentLevel": 1,
  474 + "commentPics": "",
  475 + "commentSensitive": "",
  476 + "commentType": "2",
  477 + "createTime": "2024-01-27 14:24:19",
  478 + "fromCreatorId": "",
  479 + "fromDeviceId": "23c43f15-37e9-3f2d-9999-bd1abbb7e0ed",
  480 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  481 + "fromUserId": "512157124138245",
  482 + "fromUserName": "树下🍑 1122334",
  483 + "fromUserType": 1,
  484 + "h5Url": "",
  485 + "id": 303302,
  486 + "keyArticle": 0,
  487 + "likeNum": 0,
  488 + "pageId": null,
  489 + "parentCommentVo": null,
  490 + "parentId": -1,
  491 + "rootCommentId": 303302,
  492 + "sensitiveExist": 0,
  493 + "sensitiveShow": 1,
  494 + "shareInfo": {
  495 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20240127/image/content/e8d93872483a48c7a4eaa48f70211ab1.png",
  496 + "shareSummary": "人民日报,有品质的新闻",
  497 + "shareTitle": "“大学也有家长群",
  498 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000723442-500000031275"
  499 + },
  500 + "targetId": "30000723442",
  501 + "targetRelId": "500000031275",
  502 + "targetRelObjectId": "2002",
  503 + "targetRelType": 1,
  504 + "targetStatus": 0,
  505 + "targetTitle": "“大学也有家长群",
  506 + "targetType": 8,
  507 + "topicType": null,
  508 + "uuid": "766a6bac-aa1d-4e88-a798-f19bade201ee"
  509 + }
  510 + ],
  511 + "pageNum": 1,
  512 + "pageSize": 20,
  513 + "totalCommentNum": 12,
  514 + "totalCount": 12
  515 + },
  516 + "message": "Success",
  517 + "meta": null,
  518 + "requestId": "",
  519 + "success": true,
  520 + "timestamp": 1711440876958
  521 +}
  1 +{
  2 + "code": "0",
  3 + "data": [
  4 + {
  5 + "commentId": 403445,
  6 + "status": 1
  7 + },
  8 + {
  9 + "commentId": 303318,
  10 + "status": 0
  11 + },
  12 + {
  13 + "commentId": 303317,
  14 + "status": 0
  15 + },
  16 + {
  17 + "commentId": 403426,
  18 + "status": 1
  19 + },
  20 + {
  21 + "commentId": 403425,
  22 + "status": 0
  23 + },
  24 + {
  25 + "commentId": 403422,
  26 + "status": 0
  27 + },
  28 + {
  29 + "commentId": 303306,
  30 + "status": 0
  31 + },
  32 + {
  33 + "commentId": 403420,
  34 + "status": 0
  35 + },
  36 + {
  37 + "commentId": 403417,
  38 + "status": 0
  39 + },
  40 + {
  41 + "commentId": 303305,
  42 + "status": 0
  43 + },
  44 + {
  45 + "commentId": 303304,
  46 + "status": 0
  47 + },
  48 + {
  49 + "commentId": 303302,
  50 + "status": 0
  51 + }
  52 + ],
  53 + "message": "Success",
  54 + "meta": null,
  55 + "requestId": "",
  56 + "success": true,
  57 + "timestamp": 1711440877105
  58 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "hasNext": 0,
  5 + "list": [
  6 + {
  7 + "attentionCreatorId": "3259284",
  8 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202401/20240127161739536/eUj.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  9 + "attentionNum": 0,
  10 + "attentionUserId": "535571576006021",
  11 + "attentionUserName": "斯特的7778",
  12 + "attentionUserType": 2,
  13 + "authIcon": "",
  14 + "authId": 0,
  15 + "authPersional": "",
  16 + "authTitle": "",
  17 + "banControl": 0,
  18 + "categoryAuth": "",
  19 + "cnLiveCommentControl": 1,
  20 + "cnLiveGiftControl": 1,
  21 + "cnLiveLikeControl": 1,
  22 + "cnLiveShareControl": 1,
  23 + "cnShareControl": 1,
  24 + "collectNum": 1,
  25 + "commentNum": 0,
  26 + "createTime": 1706344099000,
  27 + "fansNum": 1,
  28 + "honoraryIcon": "",
  29 + "honoraryTitle": "",
  30 + "id": 100703,
  31 + "introduction": "暗黑世界顶级",
  32 + "isAttention": 0,
  33 + "isComment": 1,
  34 + "isLike": 1,
  35 + "isVisiable": 1,
  36 + "likeNum": 0,
  37 + "liveCommentControl": 1,
  38 + "liveGiftControl": 1,
  39 + "liveLikeControl": 1,
  40 + "liveShareControl": 1,
  41 + "mainControl": 1,
  42 + "posterShareControl": 0,
  43 + "registTime": 1706343790000,
  44 + "shareControl": 1,
  45 + "shareNum": 7,
  46 + "status": 1,
  47 + "subjectType": null,
  48 + "updateTime": 1706344099000,
  49 + "userId": "512157124138245",
  50 + "userType": 1
  51 + }
  52 + ],
  53 + "pageNum": 1,
  54 + "pageSize": 20,
  55 + "totalCount": 1
  56 + },
  57 + "message": "Success",
  58 + "meta": null,
  59 + "requestId": "",
  60 + "success": true,
  61 + "timestamp": 1711441048304
  62 +}