Showing
13 changed files
with
499 additions
and
190 deletions
| @@ -61,3 +61,5 @@ export { MpaasUtils } from './src/main/ets/mpaas/MpaasUtils' | @@ -61,3 +61,5 @@ export { MpaasUtils } from './src/main/ets/mpaas/MpaasUtils' | ||
| 61 | export { MpaasUpgradeCheck, UpgradeTipContent } from './src/main/ets/mpaas/MpaasUpgradeCheck' | 61 | export { MpaasUpgradeCheck, UpgradeTipContent } from './src/main/ets/mpaas/MpaasUpgradeCheck' |
| 62 | 62 | ||
| 63 | export { TingyunAPM } from './src/main/ets/tingyunAPM/TingyunAPM' | 63 | export { TingyunAPM } from './src/main/ets/tingyunAPM/TingyunAPM' |
| 64 | + | ||
| 65 | +export { FastClickUtil } from './src/main/ets/utils/FastClickUtil'; |
| 1 | +import systemDateTime from '@ohos.systemDateTime'; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 屏蔽快速点击事件,规定时间内只触发一次 | ||
| 5 | + */ | ||
| 6 | +export class FastClickUtil { | ||
| 7 | + | ||
| 8 | + static MIN_DELAY_TIME = 500 | ||
| 9 | + | ||
| 10 | + static minDelayBeforeTime = 0 | ||
| 11 | + | ||
| 12 | + static async isMinDelayTime(): Promise<boolean> { | ||
| 13 | + let systime = await systemDateTime.getCurrentTime(); | ||
| 14 | + return new Promise<boolean>((success, error) => { | ||
| 15 | + let rtnvalue = systime - FastClickUtil.minDelayBeforeTime <= FastClickUtil.MIN_DELAY_TIME; | ||
| 16 | + this.minDelayBeforeTime = systime; | ||
| 17 | + success(rtnvalue); | ||
| 18 | + }) | ||
| 19 | + } | ||
| 20 | +} | ||
| 21 | + |
| @@ -108,7 +108,11 @@ export class ProcessUtils { | @@ -108,7 +108,11 @@ export class ProcessUtils { | ||
| 108 | break; | 108 | break; |
| 109 | case ContentConstants.TYPE_TELETEXT: | 109 | case ContentConstants.TYPE_TELETEXT: |
| 110 | // 图文详情,跳转h5 | 110 | // 图文详情,跳转h5 |
| 111 | + if(content?.linkUrl){ //有 linkUrl 走专题页展示逻辑 | ||
| 112 | + ProcessUtils.gotoSpecialTopic(content) | ||
| 113 | + }else{ | ||
| 111 | ProcessUtils.gotoWeb(content); | 114 | ProcessUtils.gotoWeb(content); |
| 115 | + } | ||
| 112 | break; | 116 | break; |
| 113 | case ContentConstants.TYPE_LINK: | 117 | case ContentConstants.TYPE_LINK: |
| 114 | ProcessUtils.gotoDefaultWeb(content); | 118 | ProcessUtils.gotoDefaultWeb(content); |
| @@ -455,4 +459,10 @@ export class ProcessUtils { | @@ -455,4 +459,10 @@ export class ProcessUtils { | ||
| 455 | WDRouterRule.jumpWithAction(taskAction) | 459 | WDRouterRule.jumpWithAction(taskAction) |
| 456 | } | 460 | } |
| 457 | 461 | ||
| 462 | + /** | ||
| 463 | + * 跳转到登录页 | ||
| 464 | + */ | ||
| 465 | + public static gotoLoginPage() { | ||
| 466 | + WDRouterRule.jumpWithPage(WDRouterPage.loginPage) | ||
| 467 | + } | ||
| 458 | } | 468 | } |
| @@ -39,14 +39,14 @@ class AppLoginAuthInfo { | @@ -39,14 +39,14 @@ class AppLoginAuthInfo { | ||
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | interface IDataJson { | 41 | interface IDataJson { |
| 42 | - jumpType:number | ||
| 43 | - jumpUrl:string | ||
| 44 | - newsId:string | ||
| 45 | - newsObjectLevel:string | ||
| 46 | - newsObjectType:number | ||
| 47 | - newsRelId:string | ||
| 48 | - newsTitle:string | ||
| 49 | - pageId:string | 42 | + jumpType: number |
| 43 | + jumpUrl: string | ||
| 44 | + newsId: string | ||
| 45 | + newsObjectLevel: string | ||
| 46 | + newsObjectType: number | ||
| 47 | + newsRelId: string | ||
| 48 | + newsTitle: string | ||
| 49 | + pageId: string | ||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | /** | 52 | /** |
| @@ -209,6 +209,11 @@ function handleJsCallAppInnerLinkMethod(data: Message) { | @@ -209,6 +209,11 @@ function handleJsCallAppInnerLinkMethod(data: Message) { | ||
| 209 | let creatorId = urlParams.get('creatorId') || '' | 209 | let creatorId = urlParams.get('creatorId') || '' |
| 210 | ProcessUtils.gotoPeopleShipHomePage(creatorId) | 210 | ProcessUtils.gotoPeopleShipHomePage(creatorId) |
| 211 | break; | 211 | break; |
| 212 | + case 'app': | ||
| 213 | + if (urlParams.get('subType') === 'login') { | ||
| 214 | + ProcessUtils.gotoLoginPage() | ||
| 215 | + } | ||
| 216 | + break; | ||
| 212 | default: | 217 | default: |
| 213 | break; | 218 | break; |
| 214 | } | 219 | } |
| 1 | import { Message } from 'wdJsBridge/src/main/ets/bean/Message'; | 1 | import { Message } from 'wdJsBridge/src/main/ets/bean/Message'; |
| 2 | -import { H5ReceiveDataJsonBean, postBatchAttentionStatusResult } from 'wdBean'; | ||
| 3 | -import { ResponseDTO, WDHttp, HttpUrlUtils } from 'wdNetwork'; | 2 | +import { WDHttp, HttpUrlUtils } from 'wdNetwork'; |
| 4 | 3 | ||
| 5 | const TAG = 'JsCallAppService' | 4 | const TAG = 'JsCallAppService' |
| 6 | 5 | ||
| 7 | 6 | ||
| 8 | export function handleJsCallAppService(data: Message, callback: (res: string) => void) { | 7 | export function handleJsCallAppService(data: Message, callback: (res: string) => void) { |
| 9 | - let url: string = HttpUrlUtils.getHost() + data?.data?.url | ||
| 10 | - | ||
| 11 | - let responseMap: ResponseDTO<postBatchAttentionStatusResult> = {} as ResponseDTO<postBatchAttentionStatusResult> | 8 | + if (data?.data?.method === 'get') { |
| 9 | + let queryString: string = '' | ||
| 10 | + let parameters = data?.data?.parameters | ||
| 11 | + if (parameters) { | ||
| 12 | + queryString = Object.keys(parameters) | ||
| 13 | + .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(parameters?.[key])}`) | ||
| 14 | + .join('&'); | ||
| 15 | + } | ||
| 12 | 16 | ||
| 13 | - let h5ReceiveDataJson: H5ReceiveDataJsonBean<ResponseDTO<postBatchAttentionStatusResult>> = { | 17 | + let url: string = HttpUrlUtils.getHost() + data?.data?.url |
| 18 | + if (queryString) { | ||
| 19 | + url = url + `?${queryString}` | ||
| 20 | + } | ||
| 21 | + console.log('yzl', queryString, url) | ||
| 22 | + WDHttp.get(url).then((res) => { | ||
| 23 | + callback(JSON.stringify({ | ||
| 14 | netError: '0', | 24 | netError: '0', |
| 15 | - responseMap | ||
| 16 | - } as H5ReceiveDataJsonBean<ResponseDTO<postBatchAttentionStatusResult>> | 25 | + responseMap: res |
| 26 | + })) | ||
| 27 | + }) | ||
| 28 | + } | ||
| 29 | + if (data?.data?.method === 'post') { | ||
| 30 | + let url: string = HttpUrlUtils.getHost() + data?.data?.url | ||
| 17 | 31 | ||
| 18 | - // if (data?.data?.method === 'get') { | ||
| 19 | - // WDHttp.get<ResponseDTO<postBatchAttentionStatusResult>>(url, headers).then((res: ResponseDTO<postBatchAttentionStatusResult>) => { | ||
| 20 | - // callback(JSON.stringify(res)) | ||
| 21 | - // }) | ||
| 22 | - // } | ||
| 23 | - if (data?.data?.method === 'post' && data?.data?.url === '/api/rmrb-interact/interact/zh/c/batchAttention/status') { | ||
| 24 | - WDHttp.post<ResponseDTO<postBatchAttentionStatusResult>>(url, data?.data?.parameters).then((res: ResponseDTO<postBatchAttentionStatusResult>) => { | ||
| 25 | - h5ReceiveDataJson.responseMap = res | ||
| 26 | - callback(JSON.stringify(h5ReceiveDataJson)) | 32 | + WDHttp.post(url, data?.data?.parameters).then((res) => { |
| 33 | + callback(JSON.stringify({ | ||
| 34 | + netError: '0', | ||
| 35 | + responseMap: res | ||
| 36 | + })) | ||
| 27 | }) | 37 | }) |
| 28 | } | 38 | } |
| 29 | } | 39 | } |
| @@ -5,7 +5,8 @@ import { | @@ -5,7 +5,8 @@ import { | ||
| 5 | SPHelper, | 5 | SPHelper, |
| 6 | NumberFormatterUtils, | 6 | NumberFormatterUtils, |
| 7 | DisplayUtils, | 7 | DisplayUtils, |
| 8 | - NetworkUtil | 8 | + NetworkUtil, |
| 9 | + FastClickUtil | ||
| 9 | } from 'wdKit'; | 10 | } from 'wdKit'; |
| 10 | import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel'; | 11 | import { MultiPictureDetailViewModel } from '../viewmodel/MultiPictureDetailViewModel'; |
| 11 | import { | 12 | import { |
| @@ -148,7 +149,11 @@ export struct DynamicDetailComponent { | @@ -148,7 +149,11 @@ export struct DynamicDetailComponent { | ||
| 148 | .width($r('app.float.margin_48')) | 149 | .width($r('app.float.margin_48')) |
| 149 | .height($r('app.float.margin_48')) | 150 | .height($r('app.float.margin_48')) |
| 150 | .alignContent(Alignment.Center) | 151 | .alignContent(Alignment.Center) |
| 151 | - .onClick(() => { | 152 | + .onClick(async () => { |
| 153 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 154 | + if(retvalue){ | ||
| 155 | + return | ||
| 156 | + } | ||
| 152 | ProcessUtils.gotoPeopleShipHomePage(this.contentDetailData.rmhInfo == null ? "" : | 157 | ProcessUtils.gotoPeopleShipHomePage(this.contentDetailData.rmhInfo == null ? "" : |
| 153 | this.contentDetailData.rmhInfo.rmhId) | 158 | this.contentDetailData.rmhInfo.rmhId) |
| 154 | }) | 159 | }) |
| @@ -192,7 +197,11 @@ export struct DynamicDetailComponent { | @@ -192,7 +197,11 @@ export struct DynamicDetailComponent { | ||
| 192 | .height($r('app.float.margin_24')) | 197 | .height($r('app.float.margin_24')) |
| 193 | .borderRadius($r('app.float.vp_3')) | 198 | .borderRadius($r('app.float.vp_3')) |
| 194 | .backgroundColor($r('app.color.color_ED2800')) | 199 | .backgroundColor($r('app.color.color_ED2800')) |
| 195 | - .onClick(() => { | 200 | + .onClick(async () => { |
| 201 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 202 | + if(retvalue){ | ||
| 203 | + return | ||
| 204 | + } | ||
| 196 | this.handleAccention() | 205 | this.handleAccention() |
| 197 | }) | 206 | }) |
| 198 | } else { | 207 | } else { |
| @@ -206,7 +215,11 @@ export struct DynamicDetailComponent { | @@ -206,7 +215,11 @@ export struct DynamicDetailComponent { | ||
| 206 | .borderColor($r('app.color.color_CCCCCC_1A')) | 215 | .borderColor($r('app.color.color_CCCCCC_1A')) |
| 207 | .backgroundColor($r('app.color.color_CCCCCC_1A')) | 216 | .backgroundColor($r('app.color.color_CCCCCC_1A')) |
| 208 | .fontColor($r('app.color.color_CCCCCC')) | 217 | .fontColor($r('app.color.color_CCCCCC')) |
| 209 | - .onClick(() => { | 218 | + .onClick(async () => { |
| 219 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 220 | + if(retvalue){ | ||
| 221 | + return | ||
| 222 | + } | ||
| 210 | this.handleAccention() | 223 | this.handleAccention() |
| 211 | }) | 224 | }) |
| 212 | } | 225 | } |
| @@ -275,7 +288,11 @@ export struct DynamicDetailComponent { | @@ -275,7 +288,11 @@ export struct DynamicDetailComponent { | ||
| 275 | 288 | ||
| 276 | } | 289 | } |
| 277 | } | 290 | } |
| 278 | - .onClick((event: ClickEvent) => { | 291 | + .onClick(async (event: ClickEvent) => { |
| 292 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 293 | + if(retvalue){ | ||
| 294 | + return | ||
| 295 | + } | ||
| 279 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) | 296 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) |
| 280 | }) | 297 | }) |
| 281 | } else { | 298 | } else { |
| @@ -292,7 +309,11 @@ export struct DynamicDetailComponent { | @@ -292,7 +309,11 @@ export struct DynamicDetailComponent { | ||
| 292 | item.height = callback?.height || 0; | 309 | item.height = callback?.height || 0; |
| 293 | }) | 310 | }) |
| 294 | } | 311 | } |
| 295 | - .onClick((event: ClickEvent) => { | 312 | + .onClick(async (event: ClickEvent) => { |
| 313 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 314 | + if(retvalue){ | ||
| 315 | + return | ||
| 316 | + } | ||
| 296 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) | 317 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) |
| 297 | }) | 318 | }) |
| 298 | } | 319 | } |
| @@ -304,7 +325,11 @@ export struct DynamicDetailComponent { | @@ -304,7 +325,11 @@ export struct DynamicDetailComponent { | ||
| 304 | .aspectRatio(1) | 325 | .aspectRatio(1) |
| 305 | .borderRadius(this.caclImageRadius(index)) | 326 | .borderRadius(this.caclImageRadius(index)) |
| 306 | } | 327 | } |
| 307 | - .onClick((event: ClickEvent) => { | 328 | + .onClick(async (event: ClickEvent) => { |
| 329 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 330 | + if(retvalue){ | ||
| 331 | + return | ||
| 332 | + } | ||
| 308 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) | 333 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) |
| 309 | }) | 334 | }) |
| 310 | } else { | 335 | } else { |
| @@ -315,7 +340,11 @@ export struct DynamicDetailComponent { | @@ -315,7 +340,11 @@ export struct DynamicDetailComponent { | ||
| 315 | .aspectRatio(1) | 340 | .aspectRatio(1) |
| 316 | .borderRadius(this.caclImageRadius(index)) | 341 | .borderRadius(this.caclImageRadius(index)) |
| 317 | } | 342 | } |
| 318 | - .onClick((event: ClickEvent) => { | 343 | + .onClick(async (event: ClickEvent) => { |
| 344 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 345 | + if(retvalue){ | ||
| 346 | + return | ||
| 347 | + } | ||
| 319 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) | 348 | ProcessUtils.gotoMultiPictureListPage(this.contentDetailData.photoList, index) |
| 320 | }) | 349 | }) |
| 321 | } | 350 | } |
| @@ -372,7 +401,11 @@ export struct DynamicDetailComponent { | @@ -372,7 +401,11 @@ export struct DynamicDetailComponent { | ||
| 372 | left: this.contentDetailData.videoInfo[0].videoLandScape === 1 ? 0 : 25, | 401 | left: this.contentDetailData.videoInfo[0].videoLandScape === 1 ? 0 : 25, |
| 373 | top: $r('app.float.margin_8') | 402 | top: $r('app.float.margin_8') |
| 374 | }) | 403 | }) |
| 375 | - .onClick((event: ClickEvent) => { | 404 | + .onClick(async (event: ClickEvent) => { |
| 405 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 406 | + if(retvalue){ | ||
| 407 | + return | ||
| 408 | + } | ||
| 376 | ProcessUtils.processPage(this.mJumpInfo) | 409 | ProcessUtils.processPage(this.mJumpInfo) |
| 377 | }) | 410 | }) |
| 378 | } | 411 | } |
| @@ -430,7 +463,11 @@ export struct DynamicDetailComponent { | @@ -430,7 +463,11 @@ export struct DynamicDetailComponent { | ||
| 430 | .borderWidth($r('app.float.margin_1')) | 463 | .borderWidth($r('app.float.margin_1')) |
| 431 | .borderColor($r('app.color.color_EDEDED')) | 464 | .borderColor($r('app.color.color_EDEDED')) |
| 432 | .borderRadius($r('app.float.margin_20')) | 465 | .borderRadius($r('app.float.margin_20')) |
| 433 | - .onClick((event: ClickEvent) => { | 466 | + .onClick(async (event: ClickEvent) => { |
| 467 | + let retvalue = await FastClickUtil.isMinDelayTime() | ||
| 468 | + if(retvalue){ | ||
| 469 | + return | ||
| 470 | + } | ||
| 434 | //点赞操作 | 471 | //点赞操作 |
| 435 | this.toggleLikeStatus() | 472 | this.toggleLikeStatus() |
| 436 | }) | 473 | }) |
| @@ -481,6 +518,13 @@ export struct DynamicDetailComponent { | @@ -481,6 +518,13 @@ export struct DynamicDetailComponent { | ||
| 481 | * */ | 518 | * */ |
| 482 | private async getContentDetailData() { | 519 | private async getContentDetailData() { |
| 483 | this.isNetConnected = NetworkUtil.isNetConnected() | 520 | this.isNetConnected = NetworkUtil.isNetConnected() |
| 521 | + this.publishCommentModel.targetId = String(this.contentDetailData?.newsId || '') | ||
| 522 | + this.publishCommentModel.targetRelId = String(this.contentDetailData?.reLInfo?.relId) | ||
| 523 | + this.publishCommentModel.targetTitle = this.contentDetailData?.newsTitle | ||
| 524 | + this.publishCommentModel.targetRelType = String(this.contentDetailData?.reLInfo?.relType) | ||
| 525 | + this.publishCommentModel.targetRelObjectId = String(this.contentDetailData?.reLInfo?.relObjectId) | ||
| 526 | + this.publishCommentModel.keyArticle = String(this.contentDetailData?.keyArticle) | ||
| 527 | + this.publishCommentModel.targetType = String(this.contentDetailData?.newsType) | ||
| 484 | try { | 528 | try { |
| 485 | let data = await MultiPictureDetailViewModel.getDetailData(this.relId, this.contentId, this.relType) | 529 | let data = await MultiPictureDetailViewModel.getDetailData(this.relId, this.contentId, this.relType) |
| 486 | this.isPageEnd = true; | 530 | this.isPageEnd = true; |
| 1 | /** | 1 | /** |
| 2 | * 这里是人民号动态中的顶部信息:人民号logo,名字,描述,关注等 | 2 | * 这里是人民号动态中的顶部信息:人民号logo,名字,描述,关注等 |
| 3 | */ | 3 | */ |
| 4 | +import { | ||
| 5 | + ContentDetailRequest, | ||
| 6 | + postInteractAccentionOperateParams | ||
| 7 | +} from 'wdDetailPlayApi/src/main/ets/request/ContentDetailRequest'; | ||
| 4 | import { RmhInfoDTO } from 'wdBean' | 8 | import { RmhInfoDTO } from 'wdBean' |
| 5 | import { CommonConstants } from 'wdConstant/Index'; | 9 | import { CommonConstants } from 'wdConstant/Index'; |
| 6 | -import { DateTimeUtils, SPHelper } from 'wdKit'; | 10 | +import { DateTimeUtils, SPHelper, Logger, ToastUtils } from 'wdKit'; |
| 7 | import { SpConstants } from 'wdConstant/Index' | 11 | import { SpConstants } from 'wdConstant/Index' |
| 8 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'; | 12 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'; |
| 9 | import router from '@ohos.router' | 13 | import router from '@ohos.router' |
| 14 | +import { postBatchAttentionStatusParams } from 'wdBean/Index'; | ||
| 15 | +import { MultiPictureDetailViewModel } from '../../viewmodel/MultiPictureDetailViewModel' | ||
| 10 | 16 | ||
| 11 | @Component | 17 | @Component |
| 12 | export struct RmhTitle { | 18 | export struct RmhTitle { |
| 13 | @Prop rmhInfo: RmhInfoDTO | 19 | @Prop rmhInfo: RmhInfoDTO |
| 14 | @Prop publishTime: string | undefined | 20 | @Prop publishTime: string | undefined |
| 21 | + /** | ||
| 22 | + * 是否需要隐藏发布时间超过2天的时间展示,默认不隐藏 | ||
| 23 | + */ | ||
| 15 | @Prop hideTime: boolean | 24 | @Prop hideTime: boolean |
| 25 | + /** | ||
| 26 | + * 默认未关注 点击去关注 | ||
| 27 | + */ | ||
| 28 | + @State followStatus: string = '0'; | ||
| 16 | 29 | ||
| 17 | - async appointReq() { | 30 | + /** |
| 31 | + * 关注号主 | ||
| 32 | + */ | ||
| 33 | + async handleAccention() { | ||
| 18 | // 未登录,跳转登录 | 34 | // 未登录,跳转登录 |
| 19 | const user_id = await SPHelper.default.get(SpConstants.USER_ID, '') | 35 | const user_id = await SPHelper.default.get(SpConstants.USER_ID, '') |
| 20 | if (!user_id) { | 36 | if (!user_id) { |
| 21 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) | 37 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) |
| 22 | return | 38 | return |
| 23 | } | 39 | } |
| 40 | + | ||
| 41 | + const params2: postInteractAccentionOperateParams = { | ||
| 42 | + attentionUserType: this.rmhInfo?.userType || '', //被关注用户类型(1 普通用户 2 视频号 3 矩阵号) | ||
| 43 | + attentionUserId: this.rmhInfo?.userId || '', // 被关注用户号主id | ||
| 44 | + attentionCreatorId: this.rmhInfo?.rmhId || '', // 被关注用户号主id | ||
| 45 | + status: this.followStatus == '0' ? 1 : 0, | ||
| 46 | + } | ||
| 47 | + ContentDetailRequest.postInteractAccentionOperate(params2).then(res => { | ||
| 48 | + console.log('rmhTitle-data', JSON.stringify(res.data)) | ||
| 49 | + if (this.followStatus == '1') { | ||
| 50 | + this.followStatus = '0' | ||
| 51 | + } else { | ||
| 52 | + this.followStatus = '1' | ||
| 53 | + // 弹窗样式与何时调用待确认 | ||
| 54 | + ContentDetailRequest.postPointLevelOperate({ operateType: 6 }).then((res) => { | ||
| 55 | + console.log('关注号主获取积分==', JSON.stringify(res.data)) | ||
| 56 | + if (res.data?.showToast) { | ||
| 57 | + ToastUtils.showToast(res.data.ruleName + '+' + res.data.rulePoint + '积分', 1000); | ||
| 58 | + } | ||
| 59 | + }) | ||
| 60 | + } | ||
| 61 | + }) | ||
| 62 | + } | ||
| 63 | + /** | ||
| 64 | + * 查询当前登录用户是否关注作品号主 | ||
| 65 | + * */ | ||
| 66 | + async getBatchAttentionStatus() { | ||
| 67 | + try { | ||
| 68 | + const params: postBatchAttentionStatusParams = { | ||
| 69 | + creatorIds: [{ creatorId: this.rmhInfo?.rmhId ?? '' }] | ||
| 70 | + } | ||
| 71 | + let data = await MultiPictureDetailViewModel.getBatchAttentionStatus(params) | ||
| 72 | + this.followStatus = data[0]?.status; | ||
| 73 | + Logger.info(`rmhTitle-followStatus:${JSON.stringify(this.followStatus)}`) | ||
| 74 | + } catch (exception) { | ||
| 75 | + Logger.info(`rmhTitle-followStatus:${JSON.stringify(exception)}`) | ||
| 76 | + } | ||
| 24 | } | 77 | } |
| 25 | 78 | ||
| 26 | aboutToAppear(): void { | 79 | aboutToAppear(): void { |
| 80 | + this.getBatchAttentionStatus() | ||
| 81 | + | ||
| 27 | let page = router.getState(); | 82 | let page = router.getState(); |
| 28 | if (page.path.includes('/page/PeopleShipHomePage') || page.path.includes('/pages/MainPage')) { | 83 | if (page.path.includes('/page/PeopleShipHomePage') || page.path.includes('/pages/MainPage')) { |
| 29 | this.hideTime = true; | 84 | this.hideTime = true; |
| @@ -88,17 +143,20 @@ export struct RmhTitle { | @@ -88,17 +143,20 @@ export struct RmhTitle { | ||
| 88 | Blank() | 143 | Blank() |
| 89 | if (this.rmhInfo.cnIsAttention) { | 144 | if (this.rmhInfo.cnIsAttention) { |
| 90 | Row() { | 145 | Row() { |
| 146 | + if (Number(this.followStatus) === 0) { | ||
| 91 | Image($r('app.media.rmh_follow')) | 147 | Image($r('app.media.rmh_follow')) |
| 92 | .width(16) | 148 | .width(16) |
| 93 | .height(16) | 149 | .height(16) |
| 94 | - Text('关注') | 150 | + } |
| 151 | + | ||
| 152 | + Text(Number(this.followStatus) === 0 ? '关注' : '已关注') | ||
| 95 | .fontSize($r('app.float.font_size_13')) | 153 | .fontSize($r('app.float.font_size_13')) |
| 96 | .fontColor($r('app.color.color_ED2800')) | 154 | .fontColor($r('app.color.color_ED2800')) |
| 97 | } | 155 | } |
| 98 | .flexShrink(0) | 156 | .flexShrink(0) |
| 99 | .alignSelf(ItemAlign.Center) | 157 | .alignSelf(ItemAlign.Center) |
| 100 | .onClick(() => { | 158 | .onClick(() => { |
| 101 | - this.appointReq(); | 159 | + this.handleAccention(); |
| 102 | }) | 160 | }) |
| 103 | } | 161 | } |
| 104 | } | 162 | } |
| 1 | -import { commentInfo, CompDTO, ContentDTO, Params } from 'wdBean'; | 1 | +import { commentInfo, CompDTO, ContentDTO, Params, batchLikeAndCollectResult } from 'wdBean'; |
| 2 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'; | 2 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'; |
| 3 | -import { DateTimeUtils, SPHelper } from 'wdKit/Index'; | 3 | +import { DateTimeUtils, SPHelper, Logger } from 'wdKit/Index'; |
| 4 | import { ProcessUtils } from 'wdRouter'; | 4 | import { ProcessUtils } from 'wdRouter'; |
| 5 | import { SpConstants } from 'wdConstant/Index' | 5 | import { SpConstants } from 'wdConstant/Index' |
| 6 | +import { | ||
| 7 | + batchLikeAndCollectParams, | ||
| 8 | + ContentDetailRequest, | ||
| 9 | + contentListParams, | ||
| 10 | + postExecuteCollectRecordParams, | ||
| 11 | + postExecuteLikeParams, | ||
| 12 | + postInteractAccentionOperateParams | ||
| 13 | +} from 'wdDetailPlayApi/src/main/ets/request/ContentDetailRequest'; | ||
| 14 | +import { MultiPictureDetailViewModel } from '../../viewmodel/MultiPictureDetailViewModel'; | ||
| 6 | 15 | ||
| 7 | /** | 16 | /** |
| 8 | * 精选评论卡 | 17 | * 精选评论卡 |
| 9 | * Zh_Single_Row-06 | 18 | * Zh_Single_Row-06 |
| 10 | */ | 19 | */ |
| 11 | const TAG = 'Zh_Single_Row-06' | 20 | const TAG = 'Zh_Single_Row-06' |
| 12 | - | ||
| 13 | -// interface commentInfo { | ||
| 14 | -// commentTitle: string, | ||
| 15 | -// newsTitle: string, | ||
| 16 | -// userName: string, | ||
| 17 | -// userHeaderUrl: string, | ||
| 18 | -// publishTime: number | ||
| 19 | -// } | ||
| 20 | -// interface operDataListItem { | ||
| 21 | -// commentInfo: commentInfo | ||
| 22 | -// } | ||
| 23 | -// interface CommentData{ | ||
| 24 | -// operDataList: Array<operDataListItem> | ||
| 25 | -// } | ||
| 26 | - | ||
| 27 | @Entry | 21 | @Entry |
| 28 | @Component | 22 | @Component |
| 29 | export struct ZhSingleRow06 { | 23 | export struct ZhSingleRow06 { |
| 30 | @State compDTO: CompDTO = {} as CompDTO | 24 | @State compDTO: CompDTO = {} as CompDTO |
| 31 | - @State likeBl: boolean = false; | 25 | + @State newsStatusOfUser: batchLikeAndCollectResult = { |
| 26 | + likeStatus: '0' | ||
| 27 | + } as batchLikeAndCollectResult // 点赞、收藏状态 | ||
| 28 | + | ||
| 29 | + aboutToAppear(): void { | ||
| 30 | + this.getInteractDataStatus() | ||
| 31 | + } | ||
| 32 | 32 | ||
| 33 | - async likeAction() { | 33 | + /** |
| 34 | + * 点赞、取消点赞 | ||
| 35 | + */ | ||
| 36 | + async toggleLikeStatus() { | ||
| 37 | + // 未登录,跳转登录 | ||
| 34 | const user_id = await SPHelper.default.get(SpConstants.USER_ID, '') | 38 | const user_id = await SPHelper.default.get(SpConstants.USER_ID, '') |
| 35 | if (!user_id) { | 39 | if (!user_id) { |
| 36 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) | 40 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) |
| 37 | return | 41 | return |
| 38 | } | 42 | } |
| 43 | + const params: postExecuteLikeParams = { | ||
| 44 | + status: this.newsStatusOfUser?.likeStatus === '1' ? '0' : '1', | ||
| 45 | + contentId: this.compDTO.operDataList[0]?.commentInfo?.newsId + '', | ||
| 46 | + contentType: this.compDTO.operDataList[0]?.commentInfo?.newsType + '', | ||
| 47 | + } | ||
| 48 | + ContentDetailRequest.postExecuteLike(params).then(res => { | ||
| 49 | + this.newsStatusOfUser.likeStatus = this.newsStatusOfUser?.likeStatus === '1' ? '0' : '1' | ||
| 50 | + }) | ||
| 51 | + } | ||
| 39 | 52 | ||
| 40 | - if (this.likeBl) { | ||
| 41 | - this.likeBl = false; | ||
| 42 | - } else { | ||
| 43 | - this.likeBl = true; | 53 | + // 已登录->查询用户对作品点赞、收藏状态 |
| 54 | + async getInteractDataStatus() { | ||
| 55 | + // 未登录,跳转登录 | ||
| 56 | + const user_id = await SPHelper.default.get(SpConstants.USER_ID, '') | ||
| 57 | + if (!user_id) { | ||
| 58 | + return | ||
| 59 | + } | ||
| 60 | + try { | ||
| 61 | + const params: batchLikeAndCollectParams = { | ||
| 62 | + contentList: [ | ||
| 63 | + { | ||
| 64 | + contentId: this.compDTO.operDataList[0]?.commentInfo?.newsId + '', | ||
| 65 | + contentType: this.compDTO.operDataList[0]?.commentInfo?.newsType + '', | ||
| 66 | + } | ||
| 67 | + ] | ||
| 68 | + } | ||
| 69 | + let data = await MultiPictureDetailViewModel.getInteractDataStatus(params) | ||
| 70 | + console.error(TAG, 'ZhSingleRow06-data', JSON.stringify(data)) | ||
| 71 | + this.newsStatusOfUser = data[0]; | ||
| 72 | + Logger.info(TAG, `ZhSingleRow06-newsStatusOfUser:${JSON.stringify(this.newsStatusOfUser)}`) | ||
| 73 | + } catch (exception) { | ||
| 74 | + console.error(TAG, JSON.stringify(exception)) | ||
| 44 | } | 75 | } |
| 45 | } | 76 | } |
| 46 | 77 | ||
| @@ -95,7 +126,7 @@ export struct ZhSingleRow06 { | @@ -95,7 +126,7 @@ export struct ZhSingleRow06 { | ||
| 95 | .fontColor(0x999999) | 126 | .fontColor(0x999999) |
| 96 | 127 | ||
| 97 | Row(){ | 128 | Row(){ |
| 98 | - Image(this.likeBl ? $r('app.media.icon_like_select') : $r('app.media.icon_like')) | 129 | + Image(this.newsStatusOfUser?.likeStatus == '1' ? $r('app.media.icon_like_select') : $r('app.media.icon_like')) |
| 99 | .width(16) | 130 | .width(16) |
| 100 | .height(16) | 131 | .height(16) |
| 101 | .margin({right: 3}) | 132 | .margin({right: 3}) |
| @@ -103,9 +134,11 @@ export struct ZhSingleRow06 { | @@ -103,9 +134,11 @@ export struct ZhSingleRow06 { | ||
| 103 | Text('点赞') | 134 | Text('点赞') |
| 104 | .fontSize(15) | 135 | .fontSize(15) |
| 105 | .fontColor(0x999999) | 136 | .fontColor(0x999999) |
| 137 | + .onClick(() => { | ||
| 138 | + }) | ||
| 106 | } | 139 | } |
| 107 | .onClick(() => { | 140 | .onClick(() => { |
| 108 | - this.likeAction() | 141 | + this.toggleLikeStatus() |
| 109 | }) | 142 | }) |
| 110 | } | 143 | } |
| 111 | .justifyContent(FlexAlign.SpaceBetween) | 144 | .justifyContent(FlexAlign.SpaceBetween) |
| @@ -42,7 +42,8 @@ export default struct MinePagePersonFunctionUI { | @@ -42,7 +42,8 @@ export default struct MinePagePersonFunctionUI { | ||
| 42 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) | 42 | WDRouterRule.jumpWithPage(WDRouterPage.loginPage) |
| 43 | return | 43 | return |
| 44 | }else { | 44 | }else { |
| 45 | - WDRouterRule.jumpWithPage(WDRouterPage.mineHomePage) | 45 | + let params: Record<string, string> = {'comment': "1"}; |
| 46 | + WDRouterRule.jumpWithPage(WDRouterPage.mineHomePage,params) | ||
| 46 | } | 47 | } |
| 47 | break; | 48 | break; |
| 48 | } | 49 | } |
| 1 | import { SpConstants } from 'wdConstant/Index' | 1 | import { SpConstants } from 'wdConstant/Index' |
| 2 | -import { DateTimeUtils, SPHelper, StringUtils, ToastUtils, UserDataLocal } from 'wdKit/Index' | 2 | +import { SPHelper, StringUtils, ToastUtils, UserDataLocal } from 'wdKit/Index' |
| 3 | import { HttpUtils } from 'wdNetwork/Index' | 3 | import { HttpUtils } from 'wdNetwork/Index' |
| 4 | import { WDRouterRule, WDRouterPage } from 'wdRouter/Index' | 4 | import { WDRouterRule, WDRouterPage } from 'wdRouter/Index' |
| 5 | import MinePageDatasModel from '../../../model/MinePageDatasModel' | 5 | import MinePageDatasModel from '../../../model/MinePageDatasModel' |
| @@ -116,9 +116,14 @@ export struct FollowChildComponent{ | @@ -116,9 +116,14 @@ export struct FollowChildComponent{ | ||
| 116 | }.height('202lpx') | 116 | }.height('202lpx') |
| 117 | .justifyContent(FlexAlign.Start) | 117 | .justifyContent(FlexAlign.Start) |
| 118 | 118 | ||
| 119 | - Text().backgroundColor($r('app.color.color_EDEDED')) | 119 | + // Text().backgroundColor($r('app.color.color_EDEDED')) |
| 120 | + // .width('100%') | ||
| 121 | + // .height('2lpx') | ||
| 122 | + Divider() | ||
| 120 | .width('100%') | 123 | .width('100%') |
| 121 | .height('2lpx') | 124 | .height('2lpx') |
| 125 | + .color($r('app.color.color_F5F5F5')) | ||
| 126 | + .strokeWidth('1lpx') | ||
| 122 | }.width('100%') | 127 | }.width('100%') |
| 123 | 128 | ||
| 124 | }else { | 129 | }else { |
| @@ -230,9 +235,15 @@ export struct FollowChildComponent{ | @@ -230,9 +235,15 @@ export struct FollowChildComponent{ | ||
| 230 | }.height('146lpx') | 235 | }.height('146lpx') |
| 231 | .justifyContent(FlexAlign.Center) | 236 | .justifyContent(FlexAlign.Center) |
| 232 | 237 | ||
| 233 | - Text().backgroundColor($r('app.color.color_EDEDED')) | 238 | + // Text().backgroundColor($r('app.color.color_EDEDED')) |
| 239 | + // .width('100%') | ||
| 240 | + // .height('2lpx') | ||
| 241 | + | ||
| 242 | + Divider() | ||
| 234 | .width('100%') | 243 | .width('100%') |
| 235 | .height('2lpx') | 244 | .height('2lpx') |
| 245 | + .color($r('app.color.color_F5F5F5')) | ||
| 246 | + .strokeWidth('1lpx') | ||
| 236 | }.width('100%') | 247 | }.width('100%') |
| 237 | 248 | ||
| 238 | } | 249 | } |
| @@ -255,12 +266,6 @@ export struct FollowChildComponent{ | @@ -255,12 +266,6 @@ export struct FollowChildComponent{ | ||
| 255 | this.data.status = this.data.status ==="0"?"1":"0" | 266 | this.data.status = this.data.status ==="0"?"1":"0" |
| 256 | 267 | ||
| 257 | UserDataLocal.setUserFollowOperation(this.data.creatorId+","+this.data.status) | 268 | UserDataLocal.setUserFollowOperation(this.data.creatorId+","+this.data.status) |
| 258 | - | ||
| 259 | - // if(this.data.status === "1"){ | ||
| 260 | - // UserDataLocal.setUserFollowOperation(DateTimeUtils.getTimeStamp()+"") | ||
| 261 | - // }else{ | ||
| 262 | - // UserDataLocal.setUserFollowOperation(DateTimeUtils.getTimeStamp()+","+this.data.creatorId) | ||
| 263 | - // } | ||
| 264 | } | 269 | } |
| 265 | } | 270 | } |
| 266 | }) | 271 | }) |
| 1 | -import { ContentDTO, | 1 | +import { |
| 2 | + ContentDTO, | ||
| 2 | contentListParams, | 3 | contentListParams, |
| 3 | - FullColumnImgUrlDTO, InteractDataDTO, | 4 | + FullColumnImgUrlDTO, |
| 5 | + InteractDataDTO, | ||
| 4 | Params, | 6 | Params, |
| 5 | - RmhInfoDTO, VideoInfoDTO } from 'wdBean/Index' | 7 | + RmhInfoDTO, |
| 8 | + VideoInfoDTO | ||
| 9 | +} from 'wdBean/Index' | ||
| 6 | import { LiveInfoDTO } from 'wdBean/src/main/ets/bean/detail/LiveInfoDTO' | 10 | import { LiveInfoDTO } from 'wdBean/src/main/ets/bean/detail/LiveInfoDTO' |
| 7 | import { VoiceInfoDTO } from 'wdBean/src/main/ets/bean/detail/VoiceInfoDTO' | 11 | import { VoiceInfoDTO } from 'wdBean/src/main/ets/bean/detail/VoiceInfoDTO' |
| 8 | -import { LazyDataSource, Logger, StringUtils, ToastUtils } from 'wdKit/Index' | 12 | +import { LazyDataSource, Logger, StringUtils, ToastUtils, UserDataLocal } from 'wdKit/Index' |
| 9 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' | 13 | import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' |
| 14 | +import MinePageDatasModel from '../../model/MinePageDatasModel' | ||
| 10 | import SearcherAboutDataModel from '../../model/SearcherAboutDataModel' | 15 | import SearcherAboutDataModel from '../../model/SearcherAboutDataModel' |
| 11 | import { CreatorDetailRequestItem } from '../../viewmodel/CreatorDetailRequestItem' | 16 | import { CreatorDetailRequestItem } from '../../viewmodel/CreatorDetailRequestItem' |
| 17 | +import { FollowListDetailItem } from '../../viewmodel/FollowListDetailItem' | ||
| 18 | +import { FollowListStatusRequestItem } from '../../viewmodel/FollowListStatusRequestItem' | ||
| 19 | +import { QueryListIsFollowedItem } from '../../viewmodel/QueryListIsFollowedItem' | ||
| 12 | import { SearchResultContentData } from '../../viewmodel/SearchResultContentData' | 20 | import { SearchResultContentData } from '../../viewmodel/SearchResultContentData' |
| 13 | import { SearchResultContentItem, SearchRmhDescription } from '../../viewmodel/SearchResultContentItem' | 21 | import { SearchResultContentItem, SearchRmhDescription } from '../../viewmodel/SearchResultContentItem' |
| 14 | import { CardParser } from '../CardParser' | 22 | import { CardParser } from '../CardParser' |
| 23 | +import { FollowChildComponent } from '../mine/follow/FollowChildComponent' | ||
| 15 | import { ListHasNoMoreDataUI } from '../reusable/ListHasNoMoreDataUI' | 24 | import { ListHasNoMoreDataUI } from '../reusable/ListHasNoMoreDataUI' |
| 16 | import { ActivityItemComponent } from './ActivityItemComponent' | 25 | import { ActivityItemComponent } from './ActivityItemComponent' |
| 17 | import { SearchCreatorComponent } from './SearchCreatorComponent' | 26 | import { SearchCreatorComponent } from './SearchCreatorComponent' |
| @@ -19,27 +28,28 @@ import { SearchCreatorComponent } from './SearchCreatorComponent' | @@ -19,27 +28,28 @@ import { SearchCreatorComponent } from './SearchCreatorComponent' | ||
| 19 | const TAG = "SearchResultContentComponent" | 28 | const TAG = "SearchResultContentComponent" |
| 20 | 29 | ||
| 21 | @Component | 30 | @Component |
| 22 | -export struct SearchResultContentComponent{ | ||
| 23 | - @State keywords:string = "" | ||
| 24 | - @State searchType:string = "" | 31 | +export struct SearchResultContentComponent { |
| 32 | + @State keywords: string = "" | ||
| 33 | + @State searchType: string = "" | ||
| 25 | @State data: LazyDataSource<ContentDTO> = new LazyDataSource(); | 34 | @State data: LazyDataSource<ContentDTO> = new LazyDataSource(); |
| 26 | @State data_rmh: SearchRmhDescription[] = [] | 35 | @State data_rmh: SearchRmhDescription[] = [] |
| 27 | - @State count:number = -1; | ||
| 28 | - @State isLoading:boolean = false | ||
| 29 | - @State hasMore:boolean = true | ||
| 30 | - curPageNum:number = 1; | ||
| 31 | - | 36 | + @State count: number = -1; |
| 37 | + @State isLoading: boolean = false | ||
| 38 | + @State hasMore: boolean = true | ||
| 39 | + curPageNum: number = 1; | ||
| 40 | + @State bean: FollowListDetailItem = new FollowListDetailItem("", "", "", "", "", "", "", "", "", -1, -1, "") | ||
| 41 | + scroller: Scroller = new Scroller() | ||
| 32 | 42 | ||
| 33 | aboutToAppear(): void { | 43 | aboutToAppear(): void { |
| 34 | - if(this.searchType == "全部"){ | 44 | + if (this.searchType == "全部") { |
| 35 | this.searchType = "all" | 45 | this.searchType = "all" |
| 36 | - }else if(this.searchType == "精选"){ | 46 | + } else if (this.searchType == "精选") { |
| 37 | this.searchType = "cms" | 47 | this.searchType = "cms" |
| 38 | - }else if(this.searchType == "人民号"){ | 48 | + } else if (this.searchType == "人民号") { |
| 39 | this.searchType = "rmh" | 49 | this.searchType = "rmh" |
| 40 | - }else if(this.searchType == "视频"){ | 50 | + } else if (this.searchType == "视频") { |
| 41 | this.searchType = "video" | 51 | this.searchType = "video" |
| 42 | - }else if(this.searchType == "活动"){ | 52 | + } else if (this.searchType == "活动") { |
| 43 | this.searchType = "activity" | 53 | this.searchType = "activity" |
| 44 | } | 54 | } |
| 45 | 55 | ||
| @@ -47,93 +57,135 @@ export struct SearchResultContentComponent{ | @@ -47,93 +57,135 @@ export struct SearchResultContentComponent{ | ||
| 47 | this.getNewSearchResultData() | 57 | this.getNewSearchResultData() |
| 48 | } | 58 | } |
| 49 | 59 | ||
| 50 | - getNewSearchResultData(){ | 60 | + getNewSearchResultData() { |
| 51 | this.isLoading = true | 61 | this.isLoading = true |
| 52 | - if(this.hasMore){ | ||
| 53 | - SearcherAboutDataModel.getSearchResultListData("20",`${this.curPageNum}`,this.searchType,this.keywords,getContext(this)).then((value)=>{ | ||
| 54 | - if (!this.data || value.list.length == 0){ | 62 | + if (this.hasMore) { |
| 63 | + SearcherAboutDataModel.getSearchResultListData("15", `${this.curPageNum}`, this.searchType, this.keywords, | ||
| 64 | + getContext(this)).then((value) => { | ||
| 65 | + if (!this.data || value.list.length == 0) { | ||
| 55 | this.hasMore = false | 66 | this.hasMore = false |
| 56 | this.isLoading = false | 67 | this.isLoading = false |
| 57 | - this.count = this.count===-1?0:this.count | ||
| 58 | - }else{ | ||
| 59 | - if(value.list[0].dataList!=null){ | 68 | + this.count = this.count === -1 ? 0 : this.count |
| 69 | + } else { | ||
| 70 | + if (value.list[0].dataList != null) { | ||
| 60 | let data_temp: SearchRmhDescription[] = [] | 71 | let data_temp: SearchRmhDescription[] = [] |
| 72 | + | ||
| 61 | data_temp = value.list[0].dataList | 73 | data_temp = value.list[0].dataList |
| 62 | 74 | ||
| 63 | //TODO 查询创作者详情接口 | 75 | //TODO 查询创作者详情接口 |
| 64 | let request = new CreatorDetailRequestItem() | 76 | let request = new CreatorDetailRequestItem() |
| 65 | 77 | ||
| 66 | - data_temp.forEach((data)=>{ | 78 | + data_temp.forEach((data) => { |
| 67 | request.creatorIdList.push(data.creatorId) | 79 | request.creatorIdList.push(data.creatorId) |
| 68 | }) | 80 | }) |
| 69 | 81 | ||
| 70 | - SearcherAboutDataModel.getCreatorDetailListData(request).then((value)=>{ | ||
| 71 | - if(value!=null && value.length>0){ | ||
| 72 | - data_temp.forEach((data)=>{ | ||
| 73 | - value.forEach((item)=>{ | ||
| 74 | - if(data.creatorId == item.creatorId){ | 82 | + SearcherAboutDataModel.getCreatorDetailListData(request).then((value) => { |
| 83 | + if (value != null && value.length > 0) { | ||
| 84 | + data_temp.forEach((data) => { | ||
| 85 | + value.forEach((item) => { | ||
| 86 | + if (data.creatorId == item.creatorId) { | ||
| 75 | data.headerPhotoUrl = item.headPhotoUrl.split("?")[0] | 87 | data.headerPhotoUrl = item.headPhotoUrl.split("?")[0] |
| 76 | - data.mainControl = item.mainControl+"" | 88 | + data.mainControl = item.mainControl + "" |
| 89 | + | ||
| 90 | + if(data_temp.length === 1){ | ||
| 91 | + this.bean.headPhotoUrl = item.headPhotoUrl.split("?")[0] | ||
| 92 | + this.bean.cnUserName = item.userName | ||
| 93 | + this.bean.creatorId = item.creatorId | ||
| 94 | + this.bean.authIcon = item.authIcon | ||
| 95 | + | ||
| 96 | + if (value[0].fansNum > 10000) { | ||
| 97 | + let temp = (value[0].fansNum / 10000) + "" | ||
| 98 | + let index = temp.indexOf('.') | ||
| 99 | + if (index != -1) { | ||
| 100 | + temp = temp.substring(0, index + 2) | ||
| 101 | + } else { | ||
| 102 | + temp = temp | ||
| 103 | + } | ||
| 104 | + this.bean.cnFansNum = temp + "万" | ||
| 105 | + } else { | ||
| 106 | + this.bean.cnFansNum = item.fansNum + "" | ||
| 107 | + } | ||
| 108 | + this.bean.introduction = item.introduction | ||
| 109 | + this.bean.mainControl = item.mainControl | ||
| 110 | + this.bean.banControl = item.banControl | ||
| 111 | + this.bean.cnUserType = item.userType | ||
| 112 | + this.bean.cnUserId = item.userId | ||
| 113 | + } | ||
| 77 | } | 114 | } |
| 78 | }) | 115 | }) |
| 79 | }) | 116 | }) |
| 80 | } | 117 | } |
| 81 | - data_temp.forEach((data)=>{ | 118 | + data_temp.forEach((data) => { |
| 82 | this.data_rmh.push(data) | 119 | this.data_rmh.push(data) |
| 83 | }) | 120 | }) |
| 84 | 121 | ||
| 85 | - }).catch((err:Error)=>{ | ||
| 86 | - console.log(TAG,JSON.stringify(err)) | 122 | + //只有一条创作者,获取 创作者信息 |
| 123 | + if (this.data_rmh.length === 1) { | ||
| 124 | + if(StringUtils.isNotEmpty(UserDataLocal.getUserId())){ | ||
| 125 | + //查询是否被关注 | ||
| 126 | + let status = new FollowListStatusRequestItem() | ||
| 127 | + status.creatorIds.push(new QueryListIsFollowedItem(this.data_rmh[0].creatorId)) | ||
| 128 | + MinePageDatasModel.getFollowListStatusData(status, getContext(this)).then((newValue) => { | ||
| 129 | + this.bean.status = newValue[0].status | ||
| 130 | + }).catch((err: Error) => { | ||
| 131 | + console.log(TAG, "请求失败") | ||
| 132 | + }) | ||
| 133 | + }else{ | ||
| 134 | + this.bean.status = "" | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | + }).catch((err: Error) => { | ||
| 138 | + console.log(TAG, JSON.stringify(err)) | ||
| 87 | }) | 139 | }) |
| 88 | } | 140 | } |
| 89 | this.getInteractData(value) | 141 | this.getInteractData(value) |
| 90 | } | 142 | } |
| 91 | - }).catch((err:Error)=>{ | ||
| 92 | - console.log(TAG,JSON.stringify(err)) | 143 | + }).catch((err: Error) => { |
| 144 | + console.log(TAG, JSON.stringify(err)) | ||
| 93 | this.isLoading = false | 145 | this.isLoading = false |
| 94 | - this.count = this.count===-1?0:this.count | 146 | + this.count = this.count === -1 ? 0 : this.count |
| 95 | }) | 147 | }) |
| 96 | } | 148 | } |
| 97 | } | 149 | } |
| 98 | 150 | ||
| 99 | - getInteractData(resultData:SearchResultContentData){ | ||
| 100 | - if(resultData.list[0].dataList!=null){ | ||
| 101 | - resultData.list.splice(0,1) | 151 | + getInteractData(resultData: SearchResultContentData) { |
| 152 | + if (resultData.list[0].dataList != null) { | ||
| 153 | + resultData.list.splice(0, 1) | ||
| 102 | } | 154 | } |
| 103 | 155 | ||
| 104 | - let data : contentListParams = { | 156 | + let data: contentListParams = { |
| 105 | contentList: [] | 157 | contentList: [] |
| 106 | } | 158 | } |
| 107 | - resultData.list.forEach((item)=>{ | 159 | + resultData.list.forEach((item) => { |
| 108 | data.contentList.push({ | 160 | data.contentList.push({ |
| 109 | contentId: item.data.id + '', | 161 | contentId: item.data.id + '', |
| 110 | contentType: Number.parseInt(item.data.type) | 162 | contentType: Number.parseInt(item.data.type) |
| 111 | }) | 163 | }) |
| 112 | }) | 164 | }) |
| 113 | 165 | ||
| 114 | - SearcherAboutDataModel.getInteractListData(data,getContext(this)).then((newValue)=>{ | ||
| 115 | - newValue.forEach((item)=>{ | ||
| 116 | - resultData.list.forEach((data)=>{ | 166 | + SearcherAboutDataModel.getInteractListData(data, getContext(this)).then((newValue) => { |
| 167 | + newValue.forEach((item) => { | ||
| 168 | + resultData.list.forEach((data) => { | ||
| 117 | if (item.contentId == data.data.id) { | 169 | if (item.contentId == data.data.id) { |
| 118 | - data.data.collectNum = item.collectNum+"" | ||
| 119 | - data.data.commentNum = item.commentNum+"" | ||
| 120 | - data.data.likeNum = item.likeNum+"" | ||
| 121 | - data.data.readNum = item.readNum+"" | ||
| 122 | - data.data.shareNum = item.shareNum+"" | 170 | + data.data.collectNum = item.collectNum + "" |
| 171 | + data.data.commentNum = item.commentNum + "" | ||
| 172 | + data.data.likeNum = item.likeNum + "" | ||
| 173 | + data.data.readNum = item.readNum + "" | ||
| 174 | + data.data.shareNum = item.shareNum + "" | ||
| 123 | } | 175 | } |
| 124 | }) | 176 | }) |
| 125 | }) | 177 | }) |
| 126 | 178 | ||
| 127 | - resultData.list.forEach((value)=>{ | ||
| 128 | - let photos:FullColumnImgUrlDTO[] = [] | ||
| 129 | - if(value.data.appStyle === 4){ | ||
| 130 | - value.data.appStyleImages.split("&&").forEach((value)=>{ | ||
| 131 | - photos.push({url:value} as FullColumnImgUrlDTO) | 179 | + resultData.list.forEach((value) => { |
| 180 | + let photos: FullColumnImgUrlDTO[] = [] | ||
| 181 | + if (value.data.appStyle === 4) { | ||
| 182 | + value.data.appStyleImages.split("&&").forEach((value) => { | ||
| 183 | + photos.push({ url: value } as FullColumnImgUrlDTO) | ||
| 132 | }) | 184 | }) |
| 133 | } | 185 | } |
| 134 | 186 | ||
| 135 | - let contentDTO = this.dataTransform(value,photos); | ||
| 136 | - if(contentDTO.appStyle != "13"){ | 187 | + let contentDTO = this.dataTransform(value, photos); |
| 188 | + if (contentDTO.appStyle != "13") { | ||
| 137 | this.data.push(contentDTO) | 189 | this.data.push(contentDTO) |
| 138 | } | 190 | } |
| 139 | 191 | ||
| @@ -142,74 +194,128 @@ export struct SearchResultContentComponent{ | @@ -142,74 +194,128 @@ export struct SearchResultContentComponent{ | ||
| 142 | this.count = this.data.totalCount() | 194 | this.count = this.data.totalCount() |
| 143 | if (this.data.totalCount() < resultData.totalCount) { | 195 | if (this.data.totalCount() < resultData.totalCount) { |
| 144 | this.curPageNum++ | 196 | this.curPageNum++ |
| 145 | - }else { | 197 | + } else { |
| 146 | this.hasMore = false | 198 | this.hasMore = false |
| 147 | } | 199 | } |
| 148 | this.isLoading = false | 200 | this.isLoading = false |
| 149 | 201 | ||
| 150 | - if(this.count === 0 && resultData.list.length > 0){ | 202 | + if (this.count === 0 && resultData.list.length > 0) { |
| 151 | this.count = -1 | 203 | this.count = -1 |
| 152 | - if(!this.isLoading){ | 204 | + if (!this.isLoading) { |
| 153 | //加载分页数据 | 205 | //加载分页数据 |
| 154 | this.getNewSearchResultData() | 206 | this.getNewSearchResultData() |
| 155 | } | 207 | } |
| 156 | - }else if(this.count <= 20 && resultData.list.length > 0){ | ||
| 157 | - if(!this.isLoading){ | 208 | + } else if (this.count <= 10 && resultData.list.length > 0) { |
| 209 | + if (!this.isLoading) { | ||
| 158 | //加载分页数据 | 210 | //加载分页数据 |
| 159 | this.getNewSearchResultData() | 211 | this.getNewSearchResultData() |
| 160 | } | 212 | } |
| 161 | } | 213 | } |
| 162 | - }).catch((err:Error)=>{ | ||
| 163 | - console.log(TAG,"请求失败") | 214 | + }).catch((err: Error) => { |
| 215 | + console.log(TAG, "请求失败") | ||
| 164 | this.isLoading = false | 216 | this.isLoading = false |
| 165 | - this.count = this.count===-1?0:this.count | 217 | + this.count = this.count === -1 ? 0 : this.count |
| 166 | }) | 218 | }) |
| 167 | } | 219 | } |
| 168 | 220 | ||
| 169 | build() { | 221 | build() { |
| 170 | Column() { | 222 | Column() { |
| 171 | - if(this.count == 0){ | ||
| 172 | - ListHasNoMoreDataUI({style:2}) | 223 | + if (this.count == 0) { |
| 224 | + ListHasNoMoreDataUI({ style: 2 }) | ||
| 225 | + } else { | ||
| 226 | + List() { | ||
| 227 | + if (this.data_rmh != null && this.data_rmh.length > 0){ | ||
| 228 | + if (this.data_rmh.length === 1){ | ||
| 229 | + ListItem(){ | ||
| 230 | + FollowChildComponent({ data: this.bean, type: 1 }) | ||
| 231 | + }.padding({left:"31lpx",right:"31lpx"}) | ||
| 173 | }else{ | 232 | }else{ |
| 233 | + ListItem(){ | ||
| 174 | Column(){ | 234 | Column(){ |
| 175 | - if (this.data_rmh!=null && this.data_rmh.length > 0) { | ||
| 176 | - //List | ||
| 177 | - List({space:'8lpx'}) { | ||
| 178 | - ForEach(this.data_rmh, (item: SearchRmhDescription, index: number) => { | 235 | + this.SearchListUI() |
| 236 | + } | ||
| 237 | + } | ||
| 238 | + } | ||
| 239 | + } | ||
| 240 | + LazyForEach(this.data, (item: ContentDTO, index: number) => { | ||
| 179 | ListItem() { | 241 | ListItem() { |
| 180 | - SearchCreatorComponent({item:item}) | ||
| 181 | - }.onClick(()=>{ | ||
| 182 | - //TODO 跳转 | 242 | + Column() { |
| 243 | + if (this.searchType == "activity") { | ||
| 244 | + ActivityItemComponent({ contentDTO: item }) | ||
| 245 | + } else { | ||
| 246 | + CardParser({ contentDTO: item }) | ||
| 247 | + } | ||
| 248 | + if (index != this.data.totalCount() - 1) { | ||
| 249 | + Divider() | ||
| 250 | + .width('100%') | ||
| 251 | + .height('1lpx') | ||
| 252 | + .color($r('app.color.color_F5F5F5')) | ||
| 253 | + .strokeWidth('1lpx') | ||
| 254 | + } | ||
| 255 | + } | ||
| 256 | + } | ||
| 257 | + }, (item: ContentDTO, index: number) => index.toString()) | ||
| 258 | + | ||
| 259 | + //没有更多数据 显示提示 | ||
| 260 | + if (!this.hasMore && this.data.totalCount() > 0) { | ||
| 261 | + ListItem() { | ||
| 262 | + ListHasNoMoreDataUI() | ||
| 263 | + } | ||
| 264 | + } | ||
| 265 | + }.cachedCount(10) | ||
| 266 | + .edgeEffect(EdgeEffect.None) | ||
| 267 | + .scrollBar(BarState.Off) | ||
| 268 | + .onReachEnd(() => { | ||
| 269 | + console.log(TAG, "触底了"); | ||
| 270 | + if (!this.isLoading) { | ||
| 271 | + //加载分页数据 | ||
| 272 | + this.getNewSearchResultData() | ||
| 273 | + } | ||
| 183 | }) | 274 | }) |
| 275 | + } | ||
| 276 | + } | ||
| 277 | + .backgroundColor($r('app.color.white')) | ||
| 278 | + .width('100%') | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + @Builder | ||
| 282 | + multiCreatorUI() { | ||
| 283 | + Column() { | ||
| 284 | + List() { | ||
| 285 | + ForEach(this.data_rmh, (item: SearchRmhDescription, index: number) => { | ||
| 286 | + ListItem() { | ||
| 287 | + SearchCreatorComponent({ item: item }) | ||
| 288 | + } | ||
| 184 | .width('150lpx') | 289 | .width('150lpx') |
| 185 | .height('100%') | 290 | .height('100%') |
| 186 | }) | 291 | }) |
| 187 | 292 | ||
| 188 | - ListItem(){ | ||
| 189 | - Column(){ | 293 | + ListItem() { |
| 294 | + Column() { | ||
| 190 | Text("查看更多") | 295 | Text("查看更多") |
| 191 | .width('19lpx') | 296 | .width('19lpx') |
| 192 | .fontSize('19lpx') | 297 | .fontSize('19lpx') |
| 193 | .fontWeight('400lpx') | 298 | .fontWeight('400lpx') |
| 194 | .lineHeight('27lpx') | 299 | .lineHeight('27lpx') |
| 195 | .fontColor($r('app.color.color_9E9E9E')) | 300 | .fontColor($r('app.color.color_9E9E9E')) |
| 196 | - }.borderRadius({topLeft:'4lpx',bottomLeft:'4lpx'}) | 301 | + } |
| 302 | + .borderRadius({ topLeft: '4lpx', bottomLeft: '4lpx' }) | ||
| 197 | .height('180lpx') | 303 | .height('180lpx') |
| 198 | .width('77lpx') | 304 | .width('77lpx') |
| 199 | .backgroundColor($r('app.color.color_EDEDED')) | 305 | .backgroundColor($r('app.color.color_EDEDED')) |
| 200 | .justifyContent(FlexAlign.Center) | 306 | .justifyContent(FlexAlign.Center) |
| 201 | 307 | ||
| 202 | }.height('100%') | 308 | }.height('100%') |
| 203 | - .margin({left:'23lpx'}) | ||
| 204 | - .onClick(()=>{ | 309 | + .margin({ left: '23lpx' }) |
| 310 | + .onClick(() => { | ||
| 205 | let params: Params = { | 311 | let params: Params = { |
| 206 | pageID: this.keywords | 312 | pageID: this.keywords |
| 207 | } | 313 | } |
| 208 | - WDRouterRule.jumpWithPage(WDRouterPage.searchCreatorPage,params) | 314 | + WDRouterRule.jumpWithPage(WDRouterPage.searchCreatorPage, params) |
| 209 | }) | 315 | }) |
| 210 | } | 316 | } |
| 211 | .cachedCount(6) | 317 | .cachedCount(6) |
| 212 | - .edgeEffect(EdgeEffect.Spring) | 318 | + .edgeEffect(EdgeEffect.None) |
| 213 | .scrollBar(BarState.Off) | 319 | .scrollBar(BarState.Off) |
| 214 | .listDirection(Axis.Horizontal) | 320 | .listDirection(Axis.Horizontal) |
| 215 | .width('100%') | 321 | .width('100%') |
| @@ -221,50 +327,54 @@ export struct SearchResultContentComponent{ | @@ -221,50 +327,54 @@ export struct SearchResultContentComponent{ | ||
| 221 | .color($r('app.color.color_F5F5F5')) | 327 | .color($r('app.color.color_F5F5F5')) |
| 222 | .strokeWidth('12lpx') | 328 | .strokeWidth('12lpx') |
| 223 | } | 329 | } |
| 224 | - //List | ||
| 225 | - List({ space: '6lpx' }) { | ||
| 226 | - LazyForEach(this.data, (item: ContentDTO, index: number) => { | ||
| 227 | - ListItem() { | ||
| 228 | - Column(){ | ||
| 229 | - if(this.searchType == "activity"){ | ||
| 230 | - ActivityItemComponent({contentDTO:item}) | ||
| 231 | - }else{ | ||
| 232 | - CardParser({contentDTO:item}) | ||
| 233 | - } | ||
| 234 | - if(index != this.data.totalCount()-1 ){ | ||
| 235 | - Divider() | ||
| 236 | - .width('100%') | ||
| 237 | - .height('1lpx') | ||
| 238 | - .color($r('app.color.color_F5F5F5')) | ||
| 239 | - .strokeWidth('1lpx') | ||
| 240 | - } | ||
| 241 | } | 330 | } |
| 331 | + | ||
| 332 | + @Builder | ||
| 333 | + SearchListUI() { | ||
| 334 | + List({space:'8lpx'}) { | ||
| 335 | + ForEach(this.data_rmh, (item: SearchRmhDescription, index: number) => { | ||
| 336 | + ListItem() { | ||
| 337 | + SearchCreatorComponent({item:item}) | ||
| 242 | } | 338 | } |
| 243 | - }, (item: ContentDTO, index: number) => index.toString()) | 339 | + .width('150lpx') |
| 340 | + .height('100%') | ||
| 341 | + }) | ||
| 244 | 342 | ||
| 245 | - //没有更多数据 显示提示 | ||
| 246 | - if(!this.hasMore && this.data.totalCount() > 0){ | ||
| 247 | ListItem(){ | 343 | ListItem(){ |
| 248 | - ListHasNoMoreDataUI() | 344 | + Column(){ |
| 345 | + Text("查看更多") | ||
| 346 | + .width('19lpx') | ||
| 347 | + .fontSize('19lpx') | ||
| 348 | + .fontWeight('400lpx') | ||
| 349 | + .lineHeight('27lpx') | ||
| 350 | + .fontColor($r('app.color.color_9E9E9E')) | ||
| 351 | + }.borderRadius({topLeft:'4lpx',bottomLeft:'4lpx'}) | ||
| 352 | + .height('180lpx') | ||
| 353 | + .width('77lpx') | ||
| 354 | + .backgroundColor($r('app.color.color_EDEDED')) | ||
| 355 | + .justifyContent(FlexAlign.Center) | ||
| 356 | + | ||
| 357 | + }.height('100%') | ||
| 358 | + .margin({left:'23lpx'}) | ||
| 359 | + .onClick(()=>{ | ||
| 360 | + let params: Params = { | ||
| 361 | + pageID: this.keywords | ||
| 249 | } | 362 | } |
| 363 | + WDRouterRule.jumpWithPage(WDRouterPage.searchCreatorPage,params) | ||
| 364 | + }) | ||
| 250 | } | 365 | } |
| 251 | - }.cachedCount(6) | 366 | + .cachedCount(6) |
| 252 | .edgeEffect(EdgeEffect.None) | 367 | .edgeEffect(EdgeEffect.None) |
| 253 | .scrollBar(BarState.Off) | 368 | .scrollBar(BarState.Off) |
| 254 | - .layoutWeight(1) | ||
| 255 | - .onReachEnd(()=>{ | ||
| 256 | - console.log(TAG,"触底了"); | ||
| 257 | - if(!this.isLoading){ | ||
| 258 | - //加载分页数据 | ||
| 259 | - this.getNewSearchResultData() | ||
| 260 | - } | ||
| 261 | - }) | ||
| 262 | - }.layoutWeight(1) | ||
| 263 | - } | ||
| 264 | - } | ||
| 265 | - .backgroundColor($r('app.color.white')) | ||
| 266 | - .layoutWeight(1) | 369 | + .listDirection(Axis.Horizontal) |
| 267 | .width('100%') | 370 | .width('100%') |
| 371 | + .height('219lpx') | ||
| 372 | + | ||
| 373 | + Divider() | ||
| 374 | + .width('100%') | ||
| 375 | + .height('12lpx') | ||
| 376 | + .color($r('app.color.color_F5F5F5')) | ||
| 377 | + .strokeWidth('12lpx') | ||
| 268 | } | 378 | } |
| 269 | 379 | ||
| 270 | private dataTransform(value: SearchResultContentItem, photos: FullColumnImgUrlDTO[]): ContentDTO { | 380 | private dataTransform(value: SearchResultContentItem, photos: FullColumnImgUrlDTO[]): ContentDTO { |
| @@ -31,10 +31,19 @@ struct MineHomePage { | @@ -31,10 +31,19 @@ struct MineHomePage { | ||
| 31 | registTime:number = 0//账号注册时间 | 31 | registTime:number = 0//账号注册时间 |
| 32 | @State registerTimeForDay:number = 0 | 32 | @State registerTimeForDay:number = 0 |
| 33 | scroller: Scroller = new Scroller(); | 33 | scroller: Scroller = new Scroller(); |
| 34 | + @State params:Record<string, string> = router.getParams() as Record<string, string>; | ||
| 35 | + @State isCommentEnter:string = ""; | ||
| 34 | 36 | ||
| 35 | onPageShow(): void { | 37 | onPageShow(): void { |
| 36 | this.getUserInfo() | 38 | this.getUserInfo() |
| 37 | 39 | ||
| 40 | + let intervalID = setInterval(() => { | ||
| 41 | + this.isCommentEnter = this.params?.['comment']; | ||
| 42 | + if(StringUtils.isNotEmpty(this.isCommentEnter)){ | ||
| 43 | + this.scroller.scrollEdge(Edge.Bottom) | ||
| 44 | + } | ||
| 45 | + clearInterval(intervalID); | ||
| 46 | + }, 200); | ||
| 38 | } | 47 | } |
| 39 | 48 | ||
| 40 | build() { | 49 | build() { |
-
Please register or login to post a comment