陈剑华

Merge remote-tracking branch 'origin/main'

Showing 26 changed files with 489 additions and 128 deletions
@@ -68,6 +68,7 @@ export class WDRouterPage { @@ -68,6 +68,7 @@ export class WDRouterPage {
68 static loginPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginPage"); 68 static loginPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginPage");
69 static oneKeyLoginPage = new WDRouterPage("wdLogin", "ets/pages/login/OneKeyLoginPage"); 69 static oneKeyLoginPage = new WDRouterPage("wdLogin", "ets/pages/login/OneKeyLoginPage");
70 static forgetPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/ForgetPasswordPage"); 70 static forgetPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/ForgetPasswordPage");
  71 + static verifyPhoneNumberPage = new WDRouterPage("wdLogin", "ets/pages/login/VerifyPhoneNumberPage");
71 static changeBindPhonePage = new WDRouterPage("wdLogin", "ets/pages/login/ChangeBindPhonePage"); 72 static changeBindPhonePage = new WDRouterPage("wdLogin", "ets/pages/login/ChangeBindPhonePage");
72 static modifyPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/ModifyPasswordPage"); 73 static modifyPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/ModifyPasswordPage");
73 //我的 预约 74 //我的 预约
@@ -49,6 +49,7 @@ const PATTERN_DATE_CN_RN: string = 'yyyy年MM月dd日 HH:mm'; @@ -49,6 +49,7 @@ const PATTERN_DATE_CN_RN: string = 'yyyy年MM月dd日 HH:mm';
49 49
50 50
51 /** 51 /**
  52 + * 动态详情页UI
52 * @author wd-zsz 53 * @author wd-zsz
53 * */ 54 * */
54 // @Preview 55 // @Preview
@@ -533,6 +534,8 @@ export struct DynamicDetailComponent { @@ -533,6 +534,8 @@ export struct DynamicDetailComponent {
533 } 534 }
534 //点赞操作 535 //点赞操作
535 this.toggleLikeStatus() 536 this.toggleLikeStatus()
  537 + //内容点赞/取消点赞埋点
  538 +
536 }) 539 })
537 540
538 // 评论 541 // 评论
1 import { ContentDTO, NewspaperListItemBean, NewspaperPositionItemBean, Params } from 'wdBean'; 1 import { ContentDTO, NewspaperListItemBean, NewspaperPositionItemBean, Params } from 'wdBean';
2 import { StringUtils } from 'wdKit'; 2 import { StringUtils } from 'wdKit';
3 import { ProcessUtils } from 'wdRouter'; 3 import { ProcessUtils } from 'wdRouter';
  4 +import { TrackingContent,TrackConstants } from 'wdTracking/Index';
4 import { newsSkeleton } from './skeleton/newsSkeleton'; 5 import { newsSkeleton } from './skeleton/newsSkeleton';
5 6
6 @Component 7 @Component
@@ -13,6 +14,20 @@ export struct ENewspaperItemComponent { @@ -13,6 +14,20 @@ export struct ENewspaperItemComponent {
13 private itemBeanClicked: NewspaperPositionItemBean = {} as NewspaperPositionItemBean 14 private itemBeanClicked: NewspaperPositionItemBean = {} as NewspaperPositionItemBean
14 @State isShowSkeleton: boolean = true 15 @State isShowSkeleton: boolean = true
15 16
  17 + aboutToAppear(): void {
  18 + for (let index = 0; index < this.newspaperListItemBean.items.length; index++) {
  19 + const element = this.newspaperListItemBean.items[index];
  20 + TrackingContent.common(TrackConstants.EventType.Show,TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  21 + ,{
  22 + 'contentName':element.title,
  23 + 'contentType':element.newsType,
  24 + 'contentId':element.newsId,
  25 + 'panelNumber':this.newspaperListItemBean.pageNum,
  26 + 'panelName':this.newspaperListItemBean.pageName,
  27 + 'readMode':'1',
  28 + })
  29 + }
  30 + }
16 build() { 31 build() {
17 Stack() { 32 Stack() {
18 newsSkeleton() 33 newsSkeleton()
@@ -70,6 +85,16 @@ export struct ENewspaperItemComponent { @@ -70,6 +85,16 @@ export struct ENewspaperItemComponent {
70 relType:this.itemBeanClicked.relType ?? '0' 85 relType:this.itemBeanClicked.relType ?? '0'
71 } as ContentDTO 86 } as ContentDTO
72 ProcessUtils.processPage(content) 87 ProcessUtils.processPage(content)
  88 + //内容点击
  89 + TrackingContent.commentClickWithEvent('current_Number_Panel_content_click',TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  90 + ,{
  91 + 'contentName':this.itemBeanClicked.title,
  92 + 'contentType':this.itemBeanClicked.newsType,
  93 + 'contentId':this.itemBeanClicked.newsId,
  94 + 'panelNumber':this.newspaperListItemBean.pageNum,
  95 + 'panelName':this.newspaperListItemBean.pageName,
  96 + 'readMode':'1',
  97 + })
73 this.itemBeanClicked = {} as NewspaperPositionItemBean 98 this.itemBeanClicked = {} as NewspaperPositionItemBean
74 } 99 }
75 } 100 }
@@ -10,7 +10,7 @@ import { ENewspaperPageDialog } from '../dialog/ENewspaperPageDialog'; @@ -10,7 +10,7 @@ import { ENewspaperPageDialog } from '../dialog/ENewspaperPageDialog';
10 import { RMCalendarBean } from './calendar/RMCalendarBean'; 10 import { RMCalendarBean } from './calendar/RMCalendarBean';
11 import { newsSkeleton } from './skeleton/newsSkeleton'; 11 import { newsSkeleton } from './skeleton/newsSkeleton';
12 import { Logger, ToastUtils, NetworkUtil } from 'wdKit/Index'; 12 import { Logger, ToastUtils, NetworkUtil } from 'wdKit/Index';
13 -import { promptAction } from '@kit.ArkUI'; 13 +import { TrackingContent,TrackConstants, TrackingButton } from 'wdTracking/Index';
14 14
15 @Component 15 @Component
16 export struct ENewspaperPageComponent { 16 export struct ENewspaperPageComponent {
@@ -34,6 +34,15 @@ export struct ENewspaperPageComponent { @@ -34,6 +34,15 @@ export struct ENewspaperPageComponent {
34 let _swiperIndex = Number.parseInt(this.currentPageNum) 34 let _swiperIndex = Number.parseInt(this.currentPageNum)
35 console.log("ENewspaperPageComponent-onCurrentPageNumUpdated", "_swiperIndex:", _swiperIndex) 35 console.log("ENewspaperPageComponent-onCurrentPageNumUpdated", "_swiperIndex:", _swiperIndex)
36 this.swiperIndex = _swiperIndex > 0 ? _swiperIndex - 1 : _swiperIndex 36 this.swiperIndex = _swiperIndex > 0 ? _swiperIndex - 1 : _swiperIndex
  37 +
  38 + //电子报--版面序号选择点击
  39 + TrackingContent.commentClickWithEvent('panel_number_selection_click',TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  40 + ,{
  41 + 'panelNumber':this.newspaperListBean?.list[this.swiperIndex].pageNum,
  42 + 'panelName':this.newspaperListBean?.list[this.swiperIndex].pageName,
  43 + 'currentPanelDate':this.selectDate.toDateString(),
  44 + 'currentNumber':this.swiperIndex,
  45 + })
37 } 46 }
38 47
39 //日历选择弹框 48 //日历选择弹框
@@ -51,6 +60,14 @@ export struct ENewspaperPageComponent { @@ -51,6 +60,14 @@ export struct ENewspaperPageComponent {
51 this.selectDate = 60 this.selectDate =
52 new Date(date.fullYear ? date.fullYear : 0, date.month ? date.month : 0, date.date ? date.date : 0) 61 new Date(date.fullYear ? date.fullYear : 0, date.month ? date.month : 0, date.date ? date.date : 0)
53 } 62 }
  63 + //日历选择点击
  64 + TrackingContent.commentClickWithEvent('date_selection_click',TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  65 + ,{
  66 + 'panelNumber':this.newspaperListBean?.list[this.swiperIndex].pageNum,
  67 + 'panelName':this.newspaperListBean?.list[this.swiperIndex].pageName,
  68 + 'currentPanelDate':this.selectDate.toDateString(),
  69 + 'currentNumber':this.swiperIndex,
  70 + })
54 } 71 }
55 }), 72 }),
56 alignment: DialogAlignment.Top, 73 alignment: DialogAlignment.Top,
@@ -190,7 +207,7 @@ export struct ENewspaperPageComponent { @@ -190,7 +207,7 @@ export struct ENewspaperPageComponent {
190 if (this.newspaperListBean && this.newspaperListBean.list && this.newspaperListBean.list.length > 0) { 207 if (this.newspaperListBean && this.newspaperListBean.list && this.newspaperListBean.list.length > 0) {
191 Swiper(this.swiperController) { 208 Swiper(this.swiperController) {
192 ForEach(this.newspaperListBean?.list, (item: NewspaperListItemBean, index: number) => { 209 ForEach(this.newspaperListBean?.list, (item: NewspaperListItemBean, index: number) => {
193 - ENewspaperItemComponent({ newspaperListItemBean: item }) 210 + ENewspaperItemComponent({ newspaperListItemBean: item})
194 }) 211 })
195 } 212 }
196 .index(this.swiperIndex) 213 .index(this.swiperIndex)
@@ -245,6 +262,12 @@ export struct ENewspaperPageComponent { @@ -245,6 +262,12 @@ export struct ENewspaperPageComponent {
245 .id('e_newspaper_next') 262 .id('e_newspaper_next')
246 .onClick((event: ClickEvent) => { 263 .onClick((event: ClickEvent) => {
247 this.swiperController.showNext() 264 this.swiperController.showNext()
  265 + // 电子报--滑动查看下一版
  266 + TrackingButton.click('panelPageViewNextPanel',TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  267 + ,{
  268 + 'panelNumber':this.newspaperListBean?.list[this.swiperIndex].pageNum,
  269 + 'panelName':this.newspaperListBean?.list[this.swiperIndex].pageName,
  270 + })
248 }) 271 })
249 } 272 }
250 273
@@ -316,6 +339,14 @@ export struct ENewspaperPageComponent { @@ -316,6 +339,14 @@ export struct ENewspaperPageComponent {
316 } 339 }
317 if (this.newspaperListBean.list && this.newspaperListBean.list.length > 0) { 340 if (this.newspaperListBean.list && this.newspaperListBean.list.length > 0) {
318 this.isOpenListDialog = true 341 this.isOpenListDialog = true
  342 + //电子报--读报纸点击
  343 + TrackingContent.commentClickWithEvent('read_newspaper_click',TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage
  344 + ,{
  345 + 'panelNumber':this.newspaperListBean?.list[this.swiperIndex].pageNum,
  346 + 'panelName':this.newspaperListBean?.list[this.swiperIndex].pageName,
  347 + 'currentPanelDate':this.selectDate.toDateString(),
  348 + 'currentNumber':this.swiperIndex,
  349 + })
319 }else { 350 }else {
320 ToastUtils.showToast('暂无数据', 1000) 351 ToastUtils.showToast('暂无数据', 1000)
321 } 352 }
@@ -10,7 +10,7 @@ import { BusinessError } from '@kit.BasicServicesKit'; @@ -10,7 +10,7 @@ import { BusinessError } from '@kit.BasicServicesKit';
10 import { router } from '@kit.ArkUI'; 10 import { router } from '@kit.ArkUI';
11 import { CommonConstants } from 'wdConstant/Index'; 11 import { CommonConstants } from 'wdConstant/Index';
12 import { ProcessUtils } from 'wdRouter/Index'; 12 import { ProcessUtils } from 'wdRouter/Index';
13 -import { TrackingPageBrowse } from 'wdTracking/Index'; 13 +import { TrackConstants, TrackingButton, TrackingPageBrowse } from 'wdTracking/Index';
14 14
15 const TAG = 'FeedBackActivity' 15 const TAG = 'FeedBackActivity'
16 16
@@ -22,8 +22,6 @@ const TAG = 'FeedBackActivity' @@ -22,8 +22,6 @@ const TAG = 'FeedBackActivity'
22 @Component 22 @Component
23 export struct FeedBackActivity { 23 export struct FeedBackActivity {
24 pageShowTime:number = 0; 24 pageShowTime:number = 0;
25 - pageId:string = 'feedbackPage';  
26 - pageName:string=this.pageId;  
27 @State canSubmit: boolean = false; 25 @State canSubmit: boolean = false;
28 @State textNumLabel: string = '0/500'; 26 @State textNumLabel: string = '0/500';
29 contact: string = ""; 27 contact: string = "";
@@ -66,6 +64,11 @@ export struct FeedBackActivity { @@ -66,6 +64,11 @@ export struct FeedBackActivity {
66 .onChange((select) => { 64 .onChange((select) => {
67 feedbackTypeBean.isSelect = select 65 feedbackTypeBean.isSelect = select
68 this.canSubmit = this.checkSubmit() 66 this.canSubmit = this.checkSubmit()
  67 +
  68 + TrackingButton.click('submit_feedback',TrackConstants.PageName.FeedbackPage,TrackConstants.PageName.FeedbackPage,{
  69 + 'feedback_type':feedbackTypeBean.id+''
  70 + })
  71 +
69 }) 72 })
70 Text(feedbackTypeBean.classifyName) 73 Text(feedbackTypeBean.classifyName)
71 .fontColor($r('app.color.color_222222')) 74 .fontColor($r('app.color.color_222222'))
@@ -342,9 +345,13 @@ export struct FeedBackActivity { @@ -342,9 +345,13 @@ export struct FeedBackActivity {
342 }) 345 })
343 if(!StringUtils.isEmpty(selectType)){ 346 if(!StringUtils.isEmpty(selectType)){
344 selectType = selectType.substring(0,selectType.length-1) 347 selectType = selectType.substring(0,selectType.length-1)
  348 + TrackingButton.click('feedbackPageSubmitFeedback',TrackConstants.PageName.FeedbackPage,TrackConstants.PageName.FeedbackPage,{
  349 + 'feedbackTypeId':selectType
  350 + })
345 }else{ 351 }else{
346 // 352 //
347 ToastUtils.shortToast($r('app.string.feedback_opinion_type')) 353 ToastUtils.shortToast($r('app.string.feedback_opinion_type'))
  354 + TrackingButton.click('feedbackPageSubmitFeedback',TrackConstants.PageName.FeedbackPage,TrackConstants.PageName.FeedbackPage)
348 return 355 return
349 } 356 }
350 //内容必填 357 //内容必填
@@ -389,7 +396,7 @@ export struct FeedBackActivity { @@ -389,7 +396,7 @@ export struct FeedBackActivity {
389 } 396 }
390 onPageHide() { 397 onPageHide() {
391 //页面浏览 398 //页面浏览
392 - TrackingPageBrowse.trackCommonPageExposureEnd(this.pageId,this.pageName,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000)) 399 + TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.FeedbackPage,TrackConstants.PageName.FeedbackPage,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000))
393 400
394 } 401 }
395 } 402 }
@@ -144,7 +144,8 @@ export struct MorningEveningPaperComponent { @@ -144,7 +144,8 @@ export struct MorningEveningPaperComponent {
144 144
145 Logger.info(TAG, "pageInfoBean dateTime = " + dateTime) 145 Logger.info(TAG, "pageInfoBean dateTime = " + dateTime)
146 Logger.info(TAG, "pageInfoBean subTitle = " + this.subTitle) 146 Logger.info(TAG, "pageInfoBean subTitle = " + this.subTitle)
147 - this.setComponentBgColor(pageInfoBean.backgroundImgUrl) 147 +
  148 + this.setComponentBgColor(this.pageInfoBean?.topicInfo?.frontLinkObject?.coverUrl as string)
148 149
149 let compInfoBean = await MorningEveningViewModel.getMorningEveningCompInfo(pageInfoBean?.id, pageInfoBean?.groups[0]?.id, currentTime + "", pageInfoBean?.topicInfo?.topicId) 150 let compInfoBean = await MorningEveningViewModel.getMorningEveningCompInfo(pageInfoBean?.id, pageInfoBean?.groups[0]?.id, currentTime + "", pageInfoBean?.topicInfo?.topicId)
150 // this.compInfoBean = compInfoBean 151 // this.compInfoBean = compInfoBean
@@ -223,8 +224,7 @@ export struct MorningEveningPaperComponent { @@ -223,8 +224,7 @@ export struct MorningEveningPaperComponent {
223 effectKit.createColorPicker(pixelMap, (err, colorPicker) => { 224 effectKit.createColorPicker(pixelMap, (err, colorPicker) => {
224 let color = colorPicker.getMainColorSync(); 225 let color = colorPicker.getMainColorSync();
225 Logger.debug(TAG, "compInfoBean compStyle = " + color) 226 Logger.debug(TAG, "compInfoBean compStyle = " + color)
226 -  
227 - color = ColorUtils.getMorningEveningPaperRgb({red:color.red,green:color.green,blue:color.blue,alpha:color.alpha}) 227 + // color = ColorUtils.getMorningEveningPaperRgb({red:color.red,green:color.green,blue:color.blue,alpha:color.alpha})
228 // 将取色器选取的color示例转换为十六进制颜色代码 228 // 将取色器选取的color示例转换为十六进制颜色代码
229 this.mixedBgColor = "#" + color.alpha.toString(16) + color.red.toString(16) + color.green.toString(16) + color.blue.toString(16); 229 this.mixedBgColor = "#" + color.alpha.toString(16) + color.red.toString(16) + color.green.toString(16) + color.blue.toString(16);
230 Logger.debug(TAG, "compInfoBean compStyle = " + this.mixedBgColor) 230 Logger.debug(TAG, "compInfoBean compStyle = " + this.mixedBgColor)
@@ -272,18 +272,17 @@ export struct MorningEveningPaperComponent { @@ -272,18 +272,17 @@ export struct MorningEveningPaperComponent {
272 } 272 }
273 .height(`calc(100% - ${this.bottomSafeHeight + this.topSafeHeight + 'vp'})`).scrollBar(BarState.Off) 273 .height(`calc(100% - ${this.bottomSafeHeight + this.topSafeHeight + 'vp'})`).scrollBar(BarState.Off)
274 274
275 - PaperTitleComponent() 275 + PaperTitleComponent().margin({top:this.topSafeHeight})
276 } 276 }
277 .width('100%') 277 .width('100%')
278 .height('100%') 278 .height('100%')
279 - .padding({  
280 - top: this.topSafeHeight,  
281 - bottom: this.bottomSafeHeight  
282 - }) 279 + // .padding({
  280 + // top: this.topSafeHeight,
  281 + // bottom: this.bottomSafeHeight
  282 + // })
283 // .backgroundColor(Color.Black) 283 // .backgroundColor(Color.Black)
284 // .backgroundColor(this.pageInfoBean?.backgroundColor ?? Color.Black) 284 // .backgroundColor(this.pageInfoBean?.backgroundColor ?? Color.Black)
285 .backgroundColor(this.mixedBgColor ?? Color.Black) 285 .backgroundColor(this.mixedBgColor ?? Color.Black)
286 -  
287 } 286 }
288 287
289 @Builder 288 @Builder
@@ -32,36 +32,37 @@ export struct topicInfoView { @@ -32,36 +32,37 @@ export struct topicInfoView {
32 }) 32 })
33 .id('img_cover') 33 .id('img_cover')
34 34
35 - Row() {  
36 - Text("查看详情")  
37 - .fontSize(14)  
38 - .fontColor($r('app.color.white'))  
39 - .maxLines(1)  
40 - .borderRadius(2)  
41 - .padding({ left: 6, top: 4, bottom: 4 }) 35 + if (this.frontLinkObject) {
  36 + Row() {
  37 + Text("查看详情")
  38 + .fontSize(14)
  39 + .fontColor($r('app.color.white'))
  40 + .maxLines(1)
  41 + .borderRadius(2)
  42 + .padding({ left: 6, top: 4, bottom: 4 })
42 43
43 - Image($r('app.media.more_w'))// .height($r('app.float.top_arrow_size'))  
44 - .width(12)  
45 - .height(12)  
46 - .margin({ left: 4, right: 7 })  
47 - }  
48 - .backgroundColor($r('app.color.color_99636363'))  
49 - .margin({ top: 8, left: 16, right: 16, bottom: 16 })  
50 - .borderRadius(2)  
51 - .onClick(()=>{  
52 - if (this.frontLinkObject) { 44 + Image($r('app.media.more_w'))// .height($r('app.float.top_arrow_size'))
  45 + .width(12)
  46 + .height(12)
  47 + .margin({ left: 4, right: 7 })
  48 + }
  49 + .backgroundColor($r('app.color.color_99636363'))
  50 + .margin({ top: 8, left: 16, right: 16, bottom: 16 })
  51 + .borderRadius(2)
  52 + .onClick(()=>{
53 let contentDTO :ContentDTO = new ContentDTO(); 53 let contentDTO :ContentDTO = new ContentDTO();
54 contentDTO.objectType = this.frontLinkObject?.newsType.toString() 54 contentDTO.objectType = this.frontLinkObject?.newsType.toString()
55 contentDTO.objectId = this.frontLinkObject?.newsId 55 contentDTO.objectId = this.frontLinkObject?.newsId
56 contentDTO.linkUrl = this.frontLinkObject?.linkUrl 56 contentDTO.linkUrl = this.frontLinkObject?.linkUrl
57 ProcessUtils.processPage(contentDTO) 57 ProcessUtils.processPage(contentDTO)
58 - }  
59 - }).width(80)  
60 - .alignRules({  
61 - left: { anchor: "__container__", align: HorizontalAlign.Start },  
62 - bottom: { anchor: "__container__", align: VerticalAlign.Bottom }  
63 - })  
64 - .id('row_detail') 58 +
  59 + }).width(80)
  60 + .alignRules({
  61 + left: { anchor: "__container__", align: HorizontalAlign.Start },
  62 + bottom: { anchor: "__container__", align: VerticalAlign.Bottom }
  63 + })
  64 + .id('row_detail')
  65 + }
65 66
66 Text(this.frontLinkObject?.summary ?? "") 67 Text(this.frontLinkObject?.summary ?? "")
67 .margin({ top: 10 }) 68 .margin({ top: 10 })
@@ -50,17 +50,27 @@ export struct Card2Component { @@ -50,17 +50,27 @@ export struct Card2Component {
50 Column() { 50 Column() {
51 Column() { 51 Column() {
52 Stack() { 52 Stack() {
  53 + // if(this.contentDTO.objectType == '5'){
  54 + // Notes({ objectType: this.contentDTO.objectType }).height(30).align(Alignment.Center)
  55 + // }else if(this.contentDTO.objectType == '2'){
  56 + // if(this.contentDTO.seoTags){
  57 + // Notes({ newTags: this.contentDTO.seoTags }).height(30).align(Alignment.Center)
  58 + // }else if(this.contentDTO.newTags){
  59 + // Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center)
  60 + //
  61 + // }
  62 + // }else {
  63 + // if(this.contentDTO.newTags){
  64 + // Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center)
  65 + // }
  66 + // }
53 if(this.contentDTO.objectType == '5'){ 67 if(this.contentDTO.objectType == '5'){
54 Notes({ objectType: this.contentDTO.objectType }).height(30).align(Alignment.Center) 68 Notes({ objectType: this.contentDTO.objectType }).height(30).align(Alignment.Center)
55 - }else if(this.contentDTO.objectType == '2'){  
56 - if(this.contentDTO.seoTags){  
57 - Notes({ newTags: this.contentDTO.seoTags }).height(30).align(Alignment.Center)  
58 - }else if(this.contentDTO.newTags){  
59 - Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center)  
60 - 69 + } else {
  70 + if (this.contentDTO.seoTags) {
  71 + Notes({ newTags: this.contentDTO.seoTags }).height(30).align(Alignment.Center)
61 } 72 }
62 - }else {  
63 - if(this.contentDTO.newTags){ 73 + if (this.contentDTO.newTags) {
64 Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center) 74 Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center)
65 } 75 }
66 } 76 }
@@ -89,8 +99,9 @@ export struct Card2Component { @@ -89,8 +99,9 @@ export struct Card2Component {
89 .lineHeight(27) 99 .lineHeight(27)
90 .textOverflow({ overflow: TextOverflow.Ellipsis }) // 超出的部分显示省略号。 100 .textOverflow({ overflow: TextOverflow.Ellipsis }) // 超出的部分显示省略号。
91 .align(Alignment.Start) 101 .align(Alignment.Start)
92 - .textIndent( (this.contentDTO.objectType === '2' && (this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) > 2 && (this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) < 5) ? 58 :  
93 - (this.contentDTO.objectType === '2' && (this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) > 0 || this.contentDTO.objectType === '5') ? 35 : 102 + .textIndent((this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) > 2 &&
  103 + (this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) < 5 ? 58 :
  104 + ((this.contentDTO.newTags?.length > 0 || this.contentDTO.seoTags?.length > 0) || this.contentDTO.objectType == '5') ? 35 :
94 0 ) 105 0 )
95 }.alignContent(Alignment.TopStart) 106 }.alignContent(Alignment.TopStart)
96 107
@@ -32,19 +32,6 @@ export struct Card6Component { @@ -32,19 +32,6 @@ export struct Card6Component {
32 this.loadImg = await onlyWifiLoadImg(); 32 this.loadImg = await onlyWifiLoadImg();
33 this.clicked = hasClicked(this.contentDTO.objectId) 33 this.clicked = hasClicked(this.contentDTO.objectId)
34 } 34 }
35 - calculateTextIndent() {  
36 - if (this.contentDTO?.newTags?.length < 5 && this.contentDTO?.newTags?.length > 2) {  
37 - return 58;  
38 - } else if ((this.contentDTO.newTags?.length !== 0) || (this.contentDTO.seoTags?.length !== 0)) {  
39 - // 当newTags或seoTags存在时,应用相同的缩进  
40 - return 35;  
41 - } else if (this.contentDTO.objectType == '5') {  
42 - return 35;  
43 - } else {  
44 - return 0;  
45 - }  
46 - }  
47 -  
48 titleInit() { 35 titleInit() {
49 if (this.contentDTO.title?.includes('<em>') && this.contentDTO.title?.includes('</em>')) { 36 if (this.contentDTO.title?.includes('<em>') && this.contentDTO.title?.includes('</em>')) {
50 this.titleMarked = true; 37 this.titleMarked = true;
@@ -74,7 +61,8 @@ export struct Card6Component { @@ -74,7 +61,8 @@ export struct Card6Component {
74 } else { 61 } else {
75 if (this.contentDTO.seoTags) { 62 if (this.contentDTO.seoTags) {
76 Notes({ newTags: this.contentDTO.seoTags }).height(30).align(Alignment.Center) 63 Notes({ newTags: this.contentDTO.seoTags }).height(30).align(Alignment.Center)
77 - } else if (this.contentDTO.newTags) { 64 + }
  65 + if (this.contentDTO.newTags) {
78 Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center) 66 Notes({ newTags: this.contentDTO.newTags }).height(30).align(Alignment.Center)
79 } 67 }
80 } 68 }
@@ -97,7 +85,10 @@ export struct Card6Component { @@ -97,7 +85,10 @@ export struct Card6Component {
97 .maxLines(3) 85 .maxLines(3)
98 .alignSelf(ItemAlign.Start) 86 .alignSelf(ItemAlign.Start)
99 .textOverflow({ overflow: TextOverflow.Ellipsis }) // 超出的部分显示省略号。 87 .textOverflow({ overflow: TextOverflow.Ellipsis }) // 超出的部分显示省略号。
100 - .textIndent(this.calculateTextIndent()) 88 + .textIndent((this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) > 2 &&
  89 + (this.contentDTO.newTags?.length || this.contentDTO.seoTags?.length) < 5 ? 58 :
  90 + ((this.contentDTO.newTags?.length > 0 || this.contentDTO.seoTags?.length > 0) || this.contentDTO.objectType == '5') ? 35 :
  91 + 0 )
101 }.alignContent(Alignment.TopStart) 92 }.alignContent(Alignment.TopStart)
102 93
103 } 94 }
@@ -279,6 +279,7 @@ export struct CommentComponent { @@ -279,6 +279,7 @@ export struct CommentComponent {
279 279
280 if (commentListModel && commentListModel.list && commentListModel.list.length > 0) { 280 if (commentListModel && commentListModel.list && commentListModel.list.length > 0) {
281 281
  282 + this.allDatas.clearAllData() // 防止数据重复问题
282 commentListModel.list.forEach(element => { 283 commentListModel.list.forEach(element => {
283 element.hasMore = Number.parseInt(element.childCommentNum) ? true : false 284 element.hasMore = Number.parseInt(element.childCommentNum) ? true : false
284 let newModel = commentViewModel.deepCopyCommentItemModel(element) 285 let newModel = commentViewModel.deepCopyCommentItemModel(element)
1 -import { DisplayUtils, EmitterEventId, EmitterUtils } from 'wdKit/Index' 1 +import { DisplayUtils, EmitterEventId, EmitterUtils, ToastUtils } from 'wdKit/Index'
2 import { publishCommentModel } from '../model/PublishCommentModel' 2 import { publishCommentModel } from '../model/PublishCommentModel'
3 import { CommentCustomDialog } from './CommentCustomDialog' 3 import { CommentCustomDialog } from './CommentCustomDialog'
4 import measure from '@ohos.measure' 4 import measure from '@ohos.measure'
5 import { ContentDetailDTO } from 'wdBean/Index' 5 import { ContentDetailDTO } from 'wdBean/Index'
  6 +import { HttpUtils } from 'wdNetwork/Index'
  7 +import { WDRouterPage, WDRouterRule } from 'wdRouter/Index'
6 8
7 @Preview 9 @Preview
8 @Component 10 @Component
@@ -120,6 +122,21 @@ export struct CommentTabComponent { @@ -120,6 +122,21 @@ export struct CommentTabComponent {
120 if(this.contentDetail.appstyle === 9) return 122 if(this.contentDetail.appstyle === 9) return
121 this.onCommentFocus && this.onCommentFocus() 123 this.onCommentFocus && this.onCommentFocus()
122 124
  125 + // 未登录,游客评论未打开 则先登录
  126 + if (!HttpUtils.isLogin()) {
  127 + if (this.contentDetail.visitorComment != 1) {
  128 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  129 + return
  130 + }
  131 + }
  132 +
  133 + if (this.contentDetail.openComment != 1 && this.contentDetail.commentDisplay != 1) {
  134 + ToastUtils.showToast("暂时无法评论", 3000)
  135 + return
  136 + }
  137 +
  138 + //TODO: 用户被禁言 也不能评论
  139 +
123 this.publishCommentModel.rootCommentId = '-1'; 140 this.publishCommentModel.rootCommentId = '-1';
124 this.publishCommentModel.parentId = '-1'; 141 this.publishCommentModel.parentId = '-1';
125 this.publishCommentModel.placeHolderText = "说两句..." 142 this.publishCommentModel.placeHolderText = "说两句..."
1 import { ViewType } from 'wdConstant/Index' 1 import { ViewType } from 'wdConstant/Index'
2 -import { DateTimeUtils, LazyDataSource, ToastUtils, WindowModel } from 'wdKit/Index' 2 +import { DateTimeUtils, LazyDataSource, Logger, ToastUtils, WindowModel } from 'wdKit/Index'
3 import { commentItemModel } from '../model/CommentModel' 3 import { commentItemModel } from '../model/CommentModel'
4 import commentViewModel from '../viewmodel/CommentViewModel' 4 import commentViewModel from '../viewmodel/CommentViewModel'
5 import { router, window } from '@kit.ArkUI' 5 import { router, window } from '@kit.ArkUI'
@@ -106,8 +106,13 @@ export struct QualityCommentsComponent { @@ -106,8 +106,13 @@ export struct QualityCommentsComponent {
106 // .aspectRatio(375 / 283); 106 // .aspectRatio(375 / 283);
107 } 107 }
108 .onAreaChange((oldValue: Area, newValue: Area) => { 108 .onAreaChange((oldValue: Area, newValue: Area) => {
109 -  
110 - let persent = Math.abs(Number(newValue.globalPosition.y)) / 150 109 + if (Number(oldValue.globalPosition.y) == 0 && Number(newValue.globalPosition.y) > 30) {
  110 + this.firstPositionY = Number(newValue.globalPosition.y)
  111 + return
  112 + }
  113 + Logger.debug(TAG, "oldValue.globalPosition.y : " + oldValue.globalPosition.y)
  114 + Logger.debug(TAG, "newValue.globalPosition.y : " + newValue.globalPosition.y + `,this.topSafeHeight : ` + this.topSafeHeight)
  115 + let persent = Math.abs(Number(newValue.globalPosition.y) - this.firstPositionY ) / 150 //- this.topSafeHeight) / 283
111 if (persent > 1) { 116 if (persent > 1) {
112 persent = 1 117 persent = 1
113 } 118 }
@@ -130,16 +135,17 @@ export struct QualityCommentsComponent { @@ -130,16 +135,17 @@ export struct QualityCommentsComponent {
130 center: { anchor: "__container__", align: VerticalAlign.Center }, 135 center: { anchor: "__container__", align: VerticalAlign.Center },
131 left: { anchor: "__container__", align: HorizontalAlign.Start } 136 left: { anchor: "__container__", align: HorizontalAlign.Start }
132 }) 137 })
133 - .offset({  
134 - y: (this.topSafeHeight / 2) + 'px'  
135 - }) 138 + // .offset({
  139 + // y: (this.topSafeHeight / 2) + 'px'
  140 + // })
136 .margin({ left: 16 }) 141 .margin({ left: 16 })
137 .onClick(() => { 142 .onClick(() => {
138 router.back() 143 router.back()
139 }) 144 })
140 } 145 }
141 .visibility(this.tileOpacity > 0 ? 1 : 0) 146 .visibility(this.tileOpacity > 0 ? 1 : 0)
142 - .height(this.topSafeHeight + vp2px(44) + 'px') 147 + // .height(this.topSafeHeight + vp2px(44) + 'px')
  148 + .height(44)
143 .width('100%') 149 .width('100%')
144 .backgroundColor($r('app.color.color_transparent')) 150 .backgroundColor($r('app.color.color_transparent'))
145 .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP]) 151 .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
@@ -159,9 +165,9 @@ export struct QualityCommentsComponent { @@ -159,9 +165,9 @@ export struct QualityCommentsComponent {
159 center: { anchor: "__container__", align: VerticalAlign.Center }, 165 center: { anchor: "__container__", align: VerticalAlign.Center },
160 left: { anchor: "__container__", align: HorizontalAlign.Start } 166 left: { anchor: "__container__", align: HorizontalAlign.Start }
161 }) 167 })
162 - .offset({  
163 - y: (this.topSafeHeight / 2) + 'px'  
164 - }) 168 + // .offset({
  169 + // y: (this.topSafeHeight / 2) + 'px'
  170 + // })
165 .margin({ left: 16 }) 171 .margin({ left: 16 })
166 .onClick(() => { 172 .onClick(() => {
167 router.back() 173 router.back()
@@ -178,16 +184,17 @@ export struct QualityCommentsComponent { @@ -178,16 +184,17 @@ export struct QualityCommentsComponent {
178 center: { anchor: "__container__", align: VerticalAlign.Center }, 184 center: { anchor: "__container__", align: VerticalAlign.Center },
179 middle: { anchor: "__container__", align: HorizontalAlign.Center } 185 middle: { anchor: "__container__", align: HorizontalAlign.Center }
180 }) 186 })
181 - .offset({  
182 - y: (this.topSafeHeight / 2) + 'px'  
183 - }) 187 + // .offset({
  188 + // y: (this.topSafeHeight / 2) + 'px'
  189 + // })
184 } 190 }
185 .visibility(this.tileOpacity > 0 ? 0 : 1) 191 .visibility(this.tileOpacity > 0 ? 0 : 1)
186 .opacity(this.tileOpacity) 192 .opacity(this.tileOpacity)
187 - .height(this.topSafeHeight + vp2px(44) + 'px') 193 + // .height(this.topSafeHeight + vp2px(44) + 'px')
  194 + .height(44)
188 .width('100%') 195 .width('100%')
189 .backgroundColor($r('app.color.white')) 196 .backgroundColor($r('app.color.white'))
190 - .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP]) 197 + // .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
191 } 198 }
192 199
193 build() { 200 build() {
@@ -212,7 +219,7 @@ export struct QualityCommentsComponent { @@ -212,7 +219,7 @@ export struct QualityCommentsComponent {
212 .friction(0.6) 219 .friction(0.6)
213 .scrollBar(BarState.Off) 220 .scrollBar(BarState.Off)
214 .edgeEffect(EdgeEffect.None) 221 .edgeEffect(EdgeEffect.None)
215 - .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) 222 + // .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
216 223
217 this.TabbarTransparent() 224 this.TabbarTransparent()
218 this.TabbarNormal() 225 this.TabbarNormal()
1 -import { CompDTO, ContentDTO, } from 'wdBean'; 1 +import { CompDTO, ContentDTO } from 'wdBean';
2 import { BreakpointConstants, CommonConstants } from 'wdConstant'; 2 import { BreakpointConstants, CommonConstants } from 'wdConstant';
3 import { BreakPointType, Logger } from 'wdKit'; 3 import { BreakPointType, Logger } from 'wdKit';
4 import { CompUtils } from '../../utils/CompUtils'; 4 import { CompUtils } from '../../utils/CompUtils';
@@ -11,6 +11,7 @@ import { InfomationCardClick } from '../../utils/infomationCardClick' @@ -11,6 +11,7 @@ import { InfomationCardClick } from '../../utils/infomationCardClick'
11 11
12 const TAG = 'Zh_Carousel_Layout-01'; 12 const TAG = 'Zh_Carousel_Layout-01';
13 13
  14 +
14 /** 15 /**
15 * 轮播组件,即Banner/轮播大图/焦点图/自动滑动 16 * 轮播组件,即Banner/轮播大图/焦点图/自动滑动
16 * 样式: 17 * 样式:
@@ -47,9 +48,11 @@ export struct ZhCarouselLayout01 { @@ -47,9 +48,11 @@ export struct ZhCarouselLayout01 {
47 @StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string = 48 @StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string =
48 BreakpointConstants.BREAKPOINT_XS; 49 BreakpointConstants.BREAKPOINT_XS;
49 @State compDTO: CompDTO = {} as CompDTO 50 @State compDTO: CompDTO = {} as CompDTO
  51 +
50 @State firstWd: number = 0 52 @State firstWd: number = 0
51 @State SecondWd: number = 0 53 @State SecondWd: number = 0
52 @State swiperIndex: number = 0 54 @State swiperIndex: number = 0
  55 +
53 private data: MyDataSource = new MyDataSource([]) 56 private data: MyDataSource = new MyDataSource([])
54 57
55 watchCurrentBreakpoint() { 58 watchCurrentBreakpoint() {
@@ -75,6 +78,7 @@ export struct ZhCarouselLayout01 { @@ -75,6 +78,7 @@ export struct ZhCarouselLayout01 {
75 } 78 }
76 79
77 build() { 80 build() {
  81 +
78 if (this.compDTO?.operDataList?.length) { 82 if (this.compDTO?.operDataList?.length) {
79 Stack() { 83 Stack() {
80 Swiper() { 84 Swiper() {
@@ -206,9 +210,19 @@ struct CarouselLayout01CardView { @@ -206,9 +210,19 @@ struct CarouselLayout01CardView {
206 Blank() 210 Blank()
207 // 文本信息 211 // 文本信息
208 Stack() { 212 Stack() {
209 - if (this.item.objectType == '5' || this.item.objectType == '6') { 213 + if(this.item.objectType == '5'){
210 Notes({ objectType: this.item.objectType }) 214 Notes({ objectType: this.item.objectType })
  215 + } else {
  216 + if (this.item.seoTags) {
  217 + Notes({ newTags: this.item.seoTags })
  218 + }
  219 + if (this.item.newTags) {
  220 + Notes({ newTags: this.item.newTags })
  221 + }
211 } 222 }
  223 + // if (this.item.objectType == '5' || this.item.objectType == '6') {
  224 + // Notes({ objectType: this.item.objectType })
  225 + // }
212 Text(`${this.item.corner}${this.item.newsTitle}`) 226 Text(`${this.item.corner}${this.item.newsTitle}`)
213 .width(CommonConstants.FULL_PARENT) 227 .width(CommonConstants.FULL_PARENT)
214 .fontColor(Color.White) 228 .fontColor(Color.White)
@@ -218,7 +232,10 @@ struct CarouselLayout01CardView { @@ -218,7 +232,10 @@ struct CarouselLayout01CardView {
218 .align(Alignment.Bottom) 232 .align(Alignment.Bottom)
219 .maxLines(CompUtils.MAX_LINES_2) 233 .maxLines(CompUtils.MAX_LINES_2)
220 .textOverflow({ overflow: TextOverflow.Ellipsis }) 234 .textOverflow({ overflow: TextOverflow.Ellipsis })
221 - .textIndent(this.item.objectType == '5' ? 35 : 0) 235 + .textIndent((this.item.newTags?.length || this.item.seoTags?.length) > 2 &&
  236 + (this.item.newTags?.length ||this.item.seoTags?.length) < 5 ? 58 :
  237 + ((this.item.newTags?.length > 0 || this.item.seoTags?.length > 0) ||this.item.objectType == '5') ? 35 :
  238 + 0 )
222 } 239 }
223 // .height(39) 240 // .height(39)
224 .padding({ 241 .padding({
@@ -213,8 +213,7 @@ export struct AccountAndSecurityLayout { @@ -213,8 +213,7 @@ export struct AccountAndSecurityLayout {
213 WDRouterRule.jumpWithPage(WDRouterPage.modifyPasswordPage) 213 WDRouterRule.jumpWithPage(WDRouterPage.modifyPasswordPage)
214 }else{ 214 }else{
215 //设置密码 215 //设置密码
216 - let pageType = {'pageType': 1} as Record<string, number>;  
217 - WDRouterRule.jumpWithPage(WDRouterPage.forgetPasswordPage, pageType) 216 + WDRouterRule.jumpWithPage(WDRouterPage.verifyPhoneNumberPage)
218 } 217 }
219 }else if (index == 3) { 218 }else if (index == 3) {
220 trackButtonClick("accountManagementPageAccountCancellation") 219 trackButtonClick("accountManagementPageAccountCancellation")
@@ -177,9 +177,9 @@ export class ColorUtils { @@ -177,9 +177,9 @@ export class ColorUtils {
177 177
178 public static getMorningEveningPaperRgb(color: ColorRgb): ColorRgb{ 178 public static getMorningEveningPaperRgb(color: ColorRgb): ColorRgb{
179 // RGB颜色取值范围是0~255,需要转换为0~1的浮点数 179 // RGB颜色取值范围是0~255,需要转换为0~1的浮点数
180 - const red: number = color.red / MAX_RGB_VALUE;  
181 - const green: number = color.green / MAX_RGB_VALUE;  
182 - const blue: number = color.blue / MAX_RGB_VALUE; 180 + const red: number = color.red ;
  181 + const green: number = color.green ;
  182 + const blue: number = color.blue;
183 183
184 const max: number = Math.max(red, green, blue); 184 const max: number = Math.max(red, green, blue);
185 const min: number = Math.min(red, green, blue); 185 const min: number = Math.min(red, green, blue);
@@ -10,7 +10,7 @@ export struct LoginInputComponent { @@ -10,7 +10,7 @@ export struct LoginInputComponent {
10 @Link isCodeSend: boolean //验证码控件是否点击 默认没有 发送接口 10 @Link isCodeSend: boolean //验证码控件是否点击 默认没有 发送接口
11 @Link isSubmit: boolean //是否可以提交 11 @Link isSubmit: boolean //是否可以提交
12 isFirst:boolean=true//是否第一次获取验证码 12 isFirst:boolean=true//是否第一次获取验证码
13 - pageType?:number; //0、登录->忘记密码 1、设置->重置密码 3、设置->更换手机号页面2 13 + pageType?:number; //0、登录->忘记密码 3、设置->更换手机号页面2
14 lastTime: number = 0 14 lastTime: number = 0
15 @Link @Watch('startCount') codeStateSuccess: boolean //验证码获取成功与否回调 成功显示倒计时 15 @Link @Watch('startCount') codeStateSuccess: boolean //验证码获取成功与否回调 成功显示倒计时
16 @Watch('onCheckChange') @Prop protocolState: boolean = false //协议勾选状态 16 @Watch('onCheckChange') @Prop protocolState: boolean = false //协议勾选状态
@@ -33,9 +33,6 @@ export struct LoginInputComponent { @@ -33,9 +33,6 @@ export struct LoginInputComponent {
33 } 33 }
34 34
35 async aboutToAppear(){ 35 async aboutToAppear(){
36 - if (this.pageType == 1 ) {  
37 - this.phoneContent = await SPHelper.default.get(SpConstants.USER_PHONE,"") as string;  
38 - }  
39 if(this.pageType == 0 ){ 36 if(this.pageType == 0 ){
40 let phone = await SPHelper.default.get(SpConstants.USER_PHONE,"") as string 37 let phone = await SPHelper.default.get(SpConstants.USER_PHONE,"") as string
41 if(StringUtils.isNotEmpty(phone)){ 38 if(StringUtils.isNotEmpty(phone)){
@@ -43,29 +40,9 @@ export struct LoginInputComponent { @@ -43,29 +40,9 @@ export struct LoginInputComponent {
43 } 40 }
44 } 41 }
45 } 42 }
  43 +
46 @Builder 44 @Builder
47 addCodeLayout() { 45 addCodeLayout() {
48 - if (this.pageType == 1){  
49 - TextInput({ text: this.securityPhone(this.phoneContent) })  
50 - .placeholderColor("#CCCCCC")  
51 - .fontSize(16)  
52 - .height(48)  
53 - .maxLength(11)  
54 - .margin({ top: 36 })  
55 - .backgroundColor("#F5F5F5")  
56 - .borderRadius(4)  
57 - .enabled(false)  
58 - .type(InputType.PhoneNumber)  
59 - .onChange((content) => {  
60 - this.phoneContent = content  
61 - this.isSubmit = (this.phoneContent.length >= 11 && this.codeContent.length >= 4)  
62 - if (content.length >= 11) {  
63 - this.codeBtnState = true  
64 - } else {  
65 - this.codeBtnState = false  
66 - }  
67 - })  
68 - }else{  
69 //修改密码 里面的 忘记密码(已登录) 46 //修改密码 里面的 忘记密码(已登录)
70 if(StringUtils.isNotEmpty(this.phoneContent) && this.phoneContent.indexOf("****")!=-1 && this.pageType == 0){ 47 if(StringUtils.isNotEmpty(this.phoneContent) && this.phoneContent.indexOf("****")!=-1 && this.pageType == 0){
71 TextInput({ text: this.securityPhone(this.phoneContent) }) 48 TextInput({ text: this.securityPhone(this.phoneContent) })
@@ -115,7 +92,6 @@ export struct LoginInputComponent { @@ -115,7 +92,6 @@ export struct LoginInputComponent {
115 } 92 }
116 }) 93 })
117 } 94 }
118 - }  
119 95
120 96
121 Row() { 97 Row() {
@@ -378,6 +378,7 @@ struct LoginPage { @@ -378,6 +378,7 @@ struct LoginPage {
378 TrackingButton.click("loginPageLoginButton",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page) 378 TrackingButton.click("loginPageLoginButton",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page)
379 this.loginViewModel.appLogin(this.phoneContent, 2, this.codeContent).then((data) => { 379 this.loginViewModel.appLogin(this.phoneContent, 2, this.codeContent).then((data) => {
380 Logger.debug(TAG, "requestLogin: " + data.jwtToken) 380 Logger.debug(TAG, "requestLogin: " + data.jwtToken)
  381 + this.showToastTip('登录成功')
381 ///同步兴趣tag 382 ///同步兴趣tag
382 let interestsModel = new InterestsHobbiesModel() 383 let interestsModel = new InterestsHobbiesModel()
383 interestsModel.updateInterests() 384 interestsModel.updateInterests()
@@ -29,10 +29,12 @@ struct LoginProtocolWebview { @@ -29,10 +29,12 @@ struct LoginProtocolWebview {
29 this.contentID = params.contentID 29 this.contentID = params.contentID
30 } 30 }
31 if (params.contentID == "1") { //"人民日报客户端网络服务使用协议" 31 if (params.contentID == "1") { //"人民日报客户端网络服务使用协议"
  32 + this.webUrl = this.userProtocol
32 this.webUrl = await SPHelper.default.get(SpConstants.NET_SERVICE_PROTOCOL, this.userProtocol) as string 33 this.webUrl = await SPHelper.default.get(SpConstants.NET_SERVICE_PROTOCOL, this.userProtocol) as string
33 this.webviewController.loadUrl(this.webUrl) 34 this.webviewController.loadUrl(this.webUrl)
34 35
35 } else if(params.contentID == "2"){ //"人民日报客户端用户隐私协议" 36 } else if(params.contentID == "2"){ //"人民日报客户端用户隐私协议"
  37 + this.webUrl = this.privateProtocol
36 this.webUrl = await SPHelper.default.get(SpConstants.PRIVATE_PROTOCOL, this.privateProtocol) as string 38 this.webUrl = await SPHelper.default.get(SpConstants.PRIVATE_PROTOCOL, this.privateProtocol) as string
37 this.webviewController.loadUrl(this.webUrl) 39 this.webviewController.loadUrl(this.webUrl)
38 }else if(params.contentID == "3"){ //注销协议 40 }else if(params.contentID == "3"){ //注销协议
  1 +import { CustomToast, DateTimeUtils, Logger, SPHelper } from 'wdKit/Index'
  2 +import { WDRouterRule, WDRouterPage } from 'wdRouter/Index'
  3 +import { LoginViewModel } from './LoginViewModel'
  4 +import { SettingPasswordParams } from './SettingPasswordLayout'
  5 +import { router } from '@kit.ArkUI'
  6 +import { SpConstants } from 'wdConstant/Index'
  7 +import { TrackingPageBrowse, TrackConstants, TrackingButton } from 'wdTracking/Index'
  8 +
  9 +const TAG = 'VerifyPhoneNumberPage'
  10 +//设置密码(第一次) 验证当前手机号 页面
  11 +@Entry
  12 +@Component
  13 +struct VerifyPhoneNumberPage {
  14 + @State phoneContent: string = ''
  15 + @State codeContent: string = ''
  16 + @State isSubmit: boolean = false //是否可以提交 默认不可以
  17 + loginViewModel: LoginViewModel = new LoginViewModel()
  18 + @State @Watch('onCodeSend') isCodeSend: boolean = false //验证码点击发送事件
  19 + @State pageTitle:string = '验证当前手机号';
  20 + @State @Watch('startCount') codeStateSuccess:boolean=false
  21 + lastTime: number = 0
  22 + @State codeBtnState: boolean = false
  23 + @State timeCount: number = 60
  24 + isFirst:boolean=true//是否第一次获取验证码
  25 + pageShowTime:number = 0;
  26 + pageHideTime:number = 0;
  27 +
  28 + onCodeSend() {
  29 + if (this.isCodeSend) {
  30 + TrackingButton.click("checkingPhoneNumberPageSendVerificationCode",TrackConstants.PageName.Checking_PhoneNum,TrackConstants.PageName.Checking_PhoneNum)
  31 + this.sendVerifyCode()
  32 + }
  33 + }
  34 +
  35 + onPageShow() {
  36 + this.pageShowTime = DateTimeUtils.getTimeStamp()
  37 + }
  38 +
  39 + onPageHide(): void {
  40 + this.pageHideTime = DateTimeUtils.getTimeStamp()
  41 + let duration = 0
  42 + duration = Math.floor((this.pageHideTime - this.pageShowTime)/1000)
  43 + TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.Checking_PhoneNum,TrackConstants.PageName.Checking_PhoneNum,duration)
  44 + }
  45 +
  46 + async aboutToAppear(): Promise<void> {
  47 + this.phoneContent = await SPHelper.default.get(SpConstants.USER_PHONE,"") as string;
  48 + }
  49 +
  50 + @State toastText:string = ""
  51 + dialogToast: CustomDialogController = new CustomDialogController({
  52 + builder: CustomToast({
  53 + msg: this.toastText,
  54 + }),
  55 + autoCancel: false,
  56 + alignment: DialogAlignment.Center,
  57 + customStyle: true,
  58 + maskColor:"#00000000"
  59 + })
  60 +
  61 +
  62 + build() {
  63 + Column() {
  64 + Image($r('app.media.login_back_icon')).width(24).height(24).margin({ left: 15, top: 10 }).onClick(() => {
  65 + router.back()
  66 + })
  67 +
  68 + Text(this.pageTitle).fontSize(22).fontColor('#333333').fontWeight(FontWeight.Bold).margin({ left: 25, top: 112 })
  69 +
  70 + Column() {
  71 + TextInput({ text: this.securityPhone(this.phoneContent) })
  72 + .placeholderColor("#CCCCCC")
  73 + .fontSize(16)
  74 + .height(48)
  75 + .maxLength(11)
  76 + .margin({ top: 36 })
  77 + .backgroundColor("#F5F5F5")
  78 + .borderRadius(4)
  79 + .enabled(false)
  80 + .type(InputType.PhoneNumber)
  81 + .onChange((content) => {
  82 + this.phoneContent = content
  83 + this.isSubmit = (this.phoneContent.length >= 11 && this.codeContent.length >= 4)
  84 + if (content.length >= 11) {
  85 + this.codeBtnState = true
  86 + } else {
  87 + this.codeBtnState = false
  88 + }
  89 + })
  90 +
  91 + Row() {
  92 + TextInput({ text: this.codeContent,placeholder: "验证码" })
  93 + .placeholderColor("#CCCCCC")
  94 + .layoutWeight(1)
  95 + .fontSize(16)
  96 + .height(48)
  97 + .type(InputType.Number)
  98 + .fontColor("#222222")
  99 + .backgroundColor("#00000000")
  100 + .borderRadius({ topLeft: 4, bottomLeft: 4 })
  101 + .onChange((value) => {
  102 + this.codeContent = value
  103 + this.isSubmit = (this.phoneContent.length >= 11 && this.codeContent.length >= 4)
  104 + })
  105 +
  106 + Text(this.codeStateSuccess ? this.timeCount + "s" : this.isFirst?"发送验证码":'重新获取')
  107 + .fontColor(this.codeBtnState?'#ED2800':'#80ED2800')
  108 + .width(110)
  109 + .fontSize(14)
  110 + .fontWeight( FontWeight.Bold)
  111 + .height(48)
  112 + .textAlign(TextAlign.Center)
  113 + .enabled(this.codeStateSuccess?false:true)
  114 + .onClick(() => {
  115 + if (this.phoneContent.length < 11) {
  116 + return
  117 + }
  118 +
  119 + let currentTime = DateTimeUtils.getTimeStamp()
  120 + if (currentTime - this.lastTime < 500) {
  121 + return
  122 + }
  123 + this.lastTime = currentTime;
  124 + this.isCodeSend = true
  125 +
  126 + })
  127 +
  128 +
  129 + }.margin({ top: 12 })
  130 + .height(48)
  131 + .alignItems(VerticalAlign.Center)
  132 + .justifyContent(FlexAlign.Start)
  133 + .backgroundImage($r('app.media.code_login_bg'))
  134 + .backgroundImageSize({width:'100%',height:48})
  135 +
  136 +
  137 +
  138 + }.width('100%').padding({ left: 25, right: 25 })
  139 +
  140 + Row() {
  141 + Text("确认")
  142 + .layoutWeight(1)
  143 + .fontColor(this.isSubmit ?"#FFFFFFFF":"#66FFFFFF")
  144 + .borderRadius(4)
  145 + .fontSize(18)
  146 + .textAlign(TextAlign.Center)
  147 + .fontWeight(FontWeight.Medium)
  148 + .margin({ top: 26 })
  149 + .height(44)
  150 + .backgroundColor(this.isSubmit ?"#ED2800":"#99ED2800")
  151 + .enabled(this.isSubmit ? true : false)
  152 + .onClick(() => {
  153 + this.checkVerifyCode()
  154 + })
  155 + }.padding({ left: 25, right: 25 }).width('100%')
  156 +
  157 + }.width('100%').height('100%').alignItems(HorizontalAlign.Start)
  158 + }
  159 +
  160 + //发送验证码
  161 + sendVerifyCode() {
  162 + if (this.isEmpty(this.phoneContent)) {
  163 + return
  164 + }
  165 +
  166 + this.loginViewModel.sendVerifyCodeByToken().then(()=>{
  167 + this.showToastTip("已发送")
  168 + this.codeStateSuccess=true
  169 + this.isCodeSend=false
  170 + }).catch((message: string)=>{
  171 + this.showToastTip(message)
  172 + this.codeStateSuccess=false
  173 + this.isCodeSend=false
  174 + })
  175 + }
  176 +
  177 +
  178 + //校验验证码
  179 + checkVerifyCode() {
  180 + TrackingButton.click("checkingPhoneNumberPageConfirm",TrackConstants.PageName.Checking_PhoneNum,TrackConstants.PageName.Checking_PhoneNum)
  181 + if (!this.isSubmit) {
  182 + return
  183 + }
  184 + if (this.isEmpty(this.phoneContent)) {
  185 + return
  186 + }
  187 + if (this.isEmpty(this.codeContent)) {
  188 + return
  189 + }
  190 +
  191 + this.loginViewModel.checkVerifyCodeByToken(this.codeContent).then(()=>{
  192 + let params: SettingPasswordParams = {
  193 + pageID:'1',
  194 + phoneContent:this.phoneContent,
  195 + codeContent:this.codeContent,
  196 + pageType:1
  197 + }
  198 + WDRouterRule.jumpWithPage(WDRouterPage.settingPasswordPage, params)
  199 + }).catch((message: string)=>{
  200 + this.showToastTip(message)
  201 + })
  202 + }
  203 +
  204 + isEmpty(obj: undefined|null|string): boolean {
  205 + return (obj == undefined || obj == null || obj == '');
  206 + }
  207 +
  208 + showToastTip(msg:string){
  209 + this.toastText = msg
  210 + this.dialogToast.open()
  211 + }
  212 +
  213 + securityPhone(phoneNum:string):string{
  214 + let securityNum:string;
  215 + let needSecurityString = phoneNum.substring(3, phoneNum.length - 4);
  216 + securityNum = phoneNum.replace(needSecurityString,'****')
  217 + return securityNum;
  218 + }
  219 +
  220 + startCount() {
  221 + this.isFirst = false
  222 + let time = setInterval(() => {
  223 + Logger.debug("倒计时:" + this.timeCount)
  224 + this.timeCount--
  225 + if (this.timeCount < 1) {
  226 + this.codeStateSuccess = false
  227 + this.timeCount = 60
  228 + clearInterval(time)
  229 + }
  230 + }, 1000)
  231 + }
  232 +}
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 "pages/guide/GuidePages", 9 "pages/guide/GuidePages",
10 "pages/login/OneKeyLoginPage", 10 "pages/login/OneKeyLoginPage",
11 "pages/login/ModifyPasswordPage", 11 "pages/login/ModifyPasswordPage",
12 - "pages/login/ChangeBindPhonePage" 12 + "pages/login/ChangeBindPhonePage",
  13 + "pages/login/VerifyPhoneNumberPage"
13 ] 14 ]
14 } 15 }
@@ -2,7 +2,8 @@ export namespace TrackConstants { @@ -2,7 +2,8 @@ export namespace TrackConstants {
2 2
3 export enum EventType { 3 export enum EventType {
4 Show = 0, 4 Show = 0,
5 - Click = 1 5 + Click = 1,
  6 + CurrentNumberPanelContentExposure = 2,
6 } 7 }
7 8
8 // 行为类型 9 // 行为类型
@@ -24,7 +25,8 @@ export namespace TrackConstants { @@ -24,7 +25,8 @@ export namespace TrackConstants {
24 UnSubscribe = "unSubscribe", 25 UnSubscribe = "unSubscribe",
25 CloseInterestCard = "closeInterestCard", 26 CloseInterestCard = "closeInterestCard",
26 SelectInterestCard = "selectInterestCard", 27 SelectInterestCard = "selectInterestCard",
27 - 28 + //电子报当前页曝光
  29 + CurrentNumberPanelContentExposure = "current_Number_Panel_content_exposure",
28 } 30 }
29 31
30 // 分享聚道 32 // 分享聚道
@@ -208,5 +210,11 @@ export namespace TrackConstants { @@ -208,5 +210,11 @@ export namespace TrackConstants {
208 210
209 ///兴趣偏好页 211 ///兴趣偏好页
210 Interest = "preferenceSelectionPage", 212 Interest = "preferenceSelectionPage",
  213 + //意见反馈
  214 + FeedbackPage = 'feedbackPage',
  215 + //动态详情
  216 + DynamicDetailPage = 'dynamicDetailPage',
  217 + //早晚报
  218 + NewsPaperPage = 'newsPaperPage',
211 } 219 }
212 } 220 }
@@ -22,7 +22,15 @@ export class TrackParamConvert { @@ -22,7 +22,15 @@ export class TrackParamConvert {
22 22
23 static pageCompProgram(pageInfo?: PageInfoDTO, comp?: CompInfoBean, program?: ContentDTO) : ParamType { 23 static pageCompProgram(pageInfo?: PageInfoDTO, comp?: CompInfoBean, program?: ContentDTO) : ParamType {
24 let params = TrackingUtils.generateParams() 24 let params = TrackingUtils.generateParams()
25 - 25 + if (program) {
  26 + params["contentType"] = program.objectType
  27 + params["contentId"] = program.objectId
  28 + params["contentName"] = program.newsTitle
  29 + params["channelSourceId"] = program.channelId
  30 + params["rmhPlatform"] = program.rmhPlatform
  31 +
  32 + TrackParamConvert.appendRecommend(program, params)
  33 + }
26 //TODO: 转换参数 34 //TODO: 转换参数
27 35
28 return params 36 return params
@@ -29,6 +29,10 @@ export class TrackingContent { @@ -29,6 +29,10 @@ export class TrackingContent {
29 params["action"] = TrackConstants.ActionType.Show 29 params["action"] = TrackConstants.ActionType.Show
30 TrackingUtils.fillPositionWith(params) 30 TrackingUtils.fillPositionWith(params)
31 Tracking.event("content_exposure", params) 31 Tracking.event("content_exposure", params)
  32 + }else if(eventType === TrackConstants.EventType.CurrentNumberPanelContentExposure){
  33 + params["action"] = TrackConstants.ActionType.Show
  34 + TrackingUtils.fillPositionWith(params)
  35 + Tracking.event(TrackConstants.ActionType.CurrentNumberPanelContentExposure, params)
32 } 36 }
33 } 37 }
34 38
@@ -82,6 +86,10 @@ export class TrackingContent { @@ -82,6 +86,10 @@ export class TrackingContent {
82 } 86 }
83 87
84 static commentClick(pageId: string, pageName: string, extParams?: ParamType) { 88 static commentClick(pageId: string, pageName: string, extParams?: ParamType) {
  89 + TrackingContent.commentClickWithEvent("content_comment_click",pageId,pageName,extParams);
  90 + }
  91 +
  92 + static commentClickWithEvent(event: string,pageId: string, pageName: string, extParams?: ParamType) {
85 let params = TrackingUtils.generateParams(extParams) 93 let params = TrackingUtils.generateParams(extParams)
86 if (pageId.length) { 94 if (pageId.length) {
87 params["pageId"] = pageId 95 params["pageId"] = pageId
@@ -91,7 +99,7 @@ export class TrackingContent { @@ -91,7 +99,7 @@ export class TrackingContent {
91 } 99 }
92 params["action"] =TrackConstants.ActionType.Comment 100 params["action"] =TrackConstants.ActionType.Comment
93 TrackingUtils.fillPositionWith(params) 101 TrackingUtils.fillPositionWith(params)
94 - Tracking.event("content_comment_click", params) 102 + Tracking.event(event, params)
95 } 103 }
96 104
97 static commentShare(pageId: string, pageName: string, extParams?: ParamType) { 105 static commentShare(pageId: string, pageName: string, extParams?: ParamType) {
@@ -2,7 +2,7 @@ import { ENewspaperPageComponent } from 'wdComponent'; @@ -2,7 +2,7 @@ import { ENewspaperPageComponent } from 'wdComponent';
2 import { DateTimeUtils, Logger } from 'wdKit'; 2 import { DateTimeUtils, Logger } from 'wdKit';
3 import common from '@ohos.app.ability.common'; 3 import common from '@ohos.app.ability.common';
4 import window from '@ohos.window'; 4 import window from '@ohos.window';
5 -import { TrackingPageBrowse } from 'wdTracking/Index'; 5 +import { TrackingPageBrowse ,TrackConstants} from 'wdTracking/Index';
6 6
7 const TAG = 'ENewspaper'; 7 const TAG = 'ENewspaper';
8 8
@@ -10,8 +10,6 @@ const TAG = 'ENewspaper'; @@ -10,8 +10,6 @@ const TAG = 'ENewspaper';
10 @Component 10 @Component
11 struct ENewspaper { 11 struct ENewspaper {
12 pageShowTime:number = 0; 12 pageShowTime:number = 0;
13 - pageId:string = 'newsPaperPage';  
14 - pageName:string=this.pageId;  
15 // 获取UIAbility上下文 13 // 获取UIAbility上下文
16 context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext 14 context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext
17 15
@@ -59,7 +57,7 @@ struct ENewspaper { @@ -59,7 +57,7 @@ struct ENewspaper {
59 this.setSystemBar('#FFFFFFFF','#00000000', '#000000') 57 this.setSystemBar('#FFFFFFFF','#00000000', '#000000')
60 Logger.info(TAG, 'onPageHide'); 58 Logger.info(TAG, 'onPageHide');
61 //页面浏览 59 //页面浏览
62 - TrackingPageBrowse.trackCommonPageExposureEnd(this.pageId,this.pageName,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000)) 60 + TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.NewsPaperPage,TrackConstants.PageName.NewsPaperPage,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000))
63 } 61 }
64 62
65 onBackPress() { 63 onBackPress() {
@@ -2,15 +2,13 @@ import { DateTimeUtils, Logger } from 'wdKit'; @@ -2,15 +2,13 @@ import { DateTimeUtils, Logger } from 'wdKit';
2 import { DynamicDetailComponent } from 'wdComponent'; 2 import { DynamicDetailComponent } from 'wdComponent';
3 import router from '@ohos.router'; 3 import router from '@ohos.router';
4 import { Params, Action } from 'wdBean'; 4 import { Params, Action } from 'wdBean';
5 -import { TrackingPageBrowse } from 'wdTracking/Index'; 5 +import { TrackingPageBrowse,TrackConstants } from 'wdTracking/Index';
6 6
7 const TAG = 'DynamicDetailPage'; 7 const TAG = 'DynamicDetailPage';
8 @Entry 8 @Entry
9 @Component 9 @Component
10 struct DynamicDetailPage { 10 struct DynamicDetailPage {
11 pageShowTime:number = 0; 11 pageShowTime:number = 0;
12 - pageId:string = 'dynamicDetailPage';  
13 - pageName:string=this.pageId;  
14 @State relId: string = '' 12 @State relId: string = ''
15 @State contentId: string = '' 13 @State contentId: string = ''
16 @State relType: string = '' 14 @State relType: string = ''
@@ -39,7 +37,7 @@ struct DynamicDetailPage { @@ -39,7 +37,7 @@ struct DynamicDetailPage {
39 } 37 }
40 onPageHide() { 38 onPageHide() {
41 //页面浏览 39 //页面浏览
42 - TrackingPageBrowse.trackCommonPageExposureEnd(this.pageId,this.pageName,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000)) 40 + TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.DynamicDetailPage,TrackConstants.PageName.DynamicDetailPage,Math.floor((DateTimeUtils.getTimeStamp() - this.pageShowTime)/1000))
43 41
44 } 42 }
45 } 43 }
@@ -4,6 +4,7 @@ import { WDRouterPage } from 'wdRouter'; @@ -4,6 +4,7 @@ import { WDRouterPage } from 'wdRouter';
4 import { SPHelper } from 'wdKit/Index'; 4 import { SPHelper } from 'wdKit/Index';
5 import { SpConstants } from 'wdConstant/Index'; 5 import { SpConstants } from 'wdConstant/Index';
6 import { ButtonOptions, promptAction } from '@kit.ArkUI'; 6 import { ButtonOptions, promptAction } from '@kit.ArkUI';
  7 +import { ParamType, TrackConstants, TrackingContent } from 'wdTracking/Index';
7 8
8 @Entry 9 @Entry
9 @Component 10 @Component
@@ -34,6 +35,8 @@ struct LaunchInterestsHobbiesPage { @@ -34,6 +35,8 @@ struct LaunchInterestsHobbiesPage {
34 //直接跳过到首页 35 //直接跳过到首页
35 //跳转首页 36 //跳转首页
36 WDRouterRule.jumpWithReplacePage(WDRouterPage.mainPage) 37 WDRouterRule.jumpWithReplacePage(WDRouterPage.mainPage)
  38 +
  39 + this.trackingLaunchJumpOver(false)
37 }) 40 })
38 } 41 }
39 .width('100%') 42 .width('100%')
@@ -148,6 +151,9 @@ struct LaunchInterestsHobbiesPage { @@ -148,6 +151,9 @@ struct LaunchInterestsHobbiesPage {
148 this.saveTagIds() 151 this.saveTagIds()
149 //跳转首页 152 //跳转首页
150 WDRouterRule.jumpWithReplacePage(WDRouterPage.mainPage) 153 WDRouterRule.jumpWithReplacePage(WDRouterPage.mainPage)
  154 +
  155 + this.trackingLaunchJumpOver(true)
  156 +
151 }) 157 })
152 } 158 }
153 .width('100%') 159 .width('100%')
@@ -185,4 +191,17 @@ struct LaunchInterestsHobbiesPage { @@ -185,4 +191,17 @@ struct LaunchInterestsHobbiesPage {
185 } 191 }
186 SPHelper.default.saveSync(SpConstants.PUBLICVISUTORMODE_INTERESTTAGS,tags) 192 SPHelper.default.saveSync(SpConstants.PUBLICVISUTORMODE_INTERESTTAGS,tags)
187 } 193 }
  194 +
  195 + trackingLaunchJumpOver(selectOrJump:boolean){
  196 + let tags = SPHelper.default.getSync(SpConstants.PUBLICVISUTORMODE_INTERESTTAGS,'') as string
  197 + let action = selectOrJump?TrackConstants.ActionType.SelectInterestCard:TrackConstants.ActionType.CloseInterestCard
  198 + let pageParam: ParamType = {
  199 + 'interestContentOptions':tags,
  200 + 'itemId':tags,
  201 + 'action':action,
  202 + 'sceneId':'9999',
  203 + 'cnsTraceId':'selfHold',
  204 + }
  205 + TrackingContent.common(TrackConstants.EventType.Click,TrackConstants.PageName.Interest,TrackConstants.PageName.Interest,pageParam)
  206 + }
188 } 207 }