王士厅
Showing 108 changed files with 4443 additions and 466 deletions
1 1
2 import { FollowFirstTabsComponent } from 'wdComponent' 2 import { FollowFirstTabsComponent } from 'wdComponent'
  3 +import router from '@ohos.router';
  4 +import { Params } from 'wdComponent/src/main/ets/repository/bean/Params';
3 5
4 @Entry 6 @Entry
5 @Component 7 @Component
6 struct FollowListPage { 8 struct FollowListPage {
7 9
  10 + @State params:Params = router.getParams() as Params;
  11 + @State curIndex: string = '0';
  12 +
  13 + onPageShow() {
  14 + this.curIndex = "1";
  15 + }
  16 +
8 build() { 17 build() {
9 Column() { 18 Column() {
10 //Tab 详情 19 //Tab 详情
11 - FollowFirstTabsComponent() 20 + FollowFirstTabsComponent({changeIndex:Number(this.curIndex)})
12 } 21 }
13 .backgroundColor($r('app.color.color_F9F9F9')) 22 .backgroundColor($r('app.color.color_F9F9F9'))
14 .height('100%') 23 .height('100%')
  1 +import { MyHomeComponent } from 'wdComponent'
  2 +@Entry
  3 +@Component
  4 +struct MyHomePage {
  5 +
  6 + build() {
  7 + Column() {
  8 + MyHomeComponent()
  9 + }
  10 + .height('100%')
  11 + .width('100%')
  12 + }
  13 +}
@@ -4,11 +4,12 @@ @@ -4,11 +4,12 @@
4 "pages/MainPage", 4 "pages/MainPage",
5 "pages/ColumnPage", 5 "pages/ColumnPage",
6 "pages/TestPage", 6 "pages/TestPage",
7 - "components/page/SettingPage",  
8 - "components/page/PrivacySettingPage",  
9 - "components/page/SettingAboutPage", 7 + "pages/SettingPage",
  8 + "pages/PrivacySettingPage",
  9 + "pages/SettingAboutPage",
10 "pages/AppointmentListPage", 10 "pages/AppointmentListPage",
11 - "components/page/SettingPasswordPage",  
12 - "pages/FollowListPage" 11 + "pages/SettingPasswordPage",
  12 + "pages/FollowListPage",
  13 + "pages/MyHomePage"
13 ] 14 ]
14 } 15 }
1 { 1 {
2 "code": "0", 2 "code": "0",
3 "data": { 3 "data": {
4 - "list": [{ 4 + "list": [
  5 + {
5 "attentionNum": 0, 6 "attentionNum": 0,
6 "authIcon": "", 7 "authIcon": "",
7 "authId": 0, 8 "authId": 0,
@@ -58,7 +59,8 @@ @@ -58,7 +59,8 @@
58 "userName": "QACrawler2115", 59 "userName": "QACrawler2115",
59 "userType": "2", 60 "userType": "2",
60 "waresSwitch": 1 61 "waresSwitch": 1
61 - }, { 62 + },
  63 + {
62 "attentionNum": 0, 64 "attentionNum": 0,
63 "authIcon": "", 65 "authIcon": "",
64 "authId": 0, 66 "authId": 0,
@@ -115,7 +117,8 @@ @@ -115,7 +117,8 @@
115 "userName": "一休哥", 117 "userName": "一休哥",
116 "userType": "2", 118 "userType": "2",
117 "waresSwitch": 1 119 "waresSwitch": 1
118 - }, { 120 + },
  121 + {
119 "attentionNum": 0, 122 "attentionNum": 0,
120 "authIcon": "", 123 "authIcon": "",
121 "authId": 0, 124 "authId": 0,
@@ -172,41 +175,42 @@ @@ -172,41 +175,42 @@
172 "userName": "0921媒体", 175 "userName": "0921媒体",
173 "userType": "3", 176 "userType": "3",
174 "waresSwitch": 1 177 "waresSwitch": 1
175 - }, { 178 + },
  179 + {
176 "attentionNum": 0, 180 "attentionNum": 0,
177 - "authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/blue.png",  
178 - "authId": 1, 181 + "authIcon": "",
  182 + "authId": 0,
179 "authPersonal": "", 183 "authPersonal": "",
180 - "authTitle": "黄袍加身V",  
181 - "categoryAuth": "黄袍加身V",  
182 - "city": "340100",  
183 - "cnAttentionNum": 9, 184 + "authTitle": "",
  185 + "categoryAuth": "",
  186 + "city": "110100",
  187 + "cnAttentionNum": 0,
184 "cnCollectNum": 0, 188 "cnCollectNum": 0,
185 - "cnCommentNum": 3, 189 + "cnCommentNum": 0,
186 "cnFansNum": 9, 190 "cnFansNum": 9,
187 "cnIsAttention": 1, 191 "cnIsAttention": 1,
188 "cnIsComment": 1, 192 "cnIsComment": 1,
189 "cnIsLike": 1, 193 "cnIsLike": 1,
190 - "cnLikeNum": 7, 194 + "cnLikeNum": 6,
191 "cnLiveCommentControl": 1, 195 "cnLiveCommentControl": 1,
192 "cnLiveGiftControl": 1, 196 "cnLiveGiftControl": 1,
193 "cnLiveLikeControl": 1, 197 "cnLiveLikeControl": 1,
194 "cnLiveShareControl": 1, 198 "cnLiveShareControl": 1,
195 "cnMainControl": 1, 199 "cnMainControl": 1,
196 - "cnRegistTime": 1695260417000, 200 + "cnRegistTime": 1695201858000,
197 "cnShareControl": 1, 201 "cnShareControl": 1,
198 "cnShareNum": 0, 202 "cnShareNum": 0,
199 - "cnUserId": "444776025830725",  
200 - "cnUserName": "李智恩3", 203 + "cnUserId": "444296355502149",
  204 + "cnUserName": "0920个人",
201 "cnUserType": "2", 205 "cnUserType": "2",
202 "collectNum": 0, 206 "collectNum": 0,
203 - "creatorId": "3004855",  
204 - "district": "340102", 207 + "creatorId": "3004851",
  208 + "district": "110101",
205 "fansNum": 0, 209 "fansNum": 0,
206 - "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th094010643/N5o.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",  
207 - "honoraryIcon": "",  
208 - "honoraryTitle": "",  
209 - "introduction": "IU", 210 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We172415100/h2j.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  211 + "honoraryIcon": "https://cdn.aikan.pdnews.cn/image/picture/202312/20231223173451966FdV.png",
  212 + "honoraryTitle": "快乐星球",
  213 + "introduction": "账号简介",
210 "isAttention": 1, 214 "isAttention": 1,
211 "isComment": 1, 215 "isComment": 1,
212 "isLike": 1, 216 "isLike": 1,
@@ -216,31 +220,32 @@ @@ -216,31 +220,32 @@
216 "liveGiftControl": 1, 220 "liveGiftControl": 1,
217 "liveLikeControl": 1, 221 "liveLikeControl": 1,
218 "liveShareControl": 1, 222 "liveShareControl": 1,
219 - "posterShareControl": 0,  
220 - "province": "340000", 223 + "posterShareControl": 1,
  224 + "province": "110000",
221 "publishNum": 0, 225 "publishNum": 0,
222 - "region": "安徽", 226 + "region": "上海",
223 "shareControl": 1, 227 "shareControl": 1,
224 "shareNum": 0, 228 "shareNum": 0,
225 - "shopOpen": 1, 229 + "shopOpen": 0,
226 "storeUrl": "", 230 "storeUrl": "",
227 - "subjectType": 1, 231 + "subjectType": 0,
228 "userId": "", 232 "userId": "",
229 - "userName": "李智恩3", 233 + "userName": "0920个人",
230 "userType": "2", 234 "userType": "2",
231 - "waresSwitch": 0  
232 - }, { 235 + "waresSwitch": 1
  236 + },
  237 + {
233 "attentionNum": 0, 238 "attentionNum": 0,
234 - "authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/yellow.png",  
235 - "authId": 2, 239 + "authIcon": "",
  240 + "authId": 0,
236 "authPersonal": "", 241 "authPersonal": "",
237 - "authTitle": "黄VV",  
238 - "categoryAuth": "黄VV", 242 + "authTitle": "",
  243 + "categoryAuth": "",
239 "city": "120100", 244 "city": "120100",
240 - "cnAttentionNum": 1,  
241 - "cnCollectNum": 1,  
242 - "cnCommentNum": 7,  
243 - "cnFansNum": 13, 245 + "cnAttentionNum": 0,
  246 + "cnCollectNum": 0,
  247 + "cnCommentNum": 0,
  248 + "cnFansNum": 10,
244 "cnIsAttention": 1, 249 "cnIsAttention": 1,
245 "cnIsComment": 1, 250 "cnIsComment": 1,
246 "cnIsLike": 1, 251 "cnIsLike": 1,
@@ -250,20 +255,20 @@ @@ -250,20 +255,20 @@
250 "cnLiveLikeControl": 1, 255 "cnLiveLikeControl": 1,
251 "cnLiveShareControl": 1, 256 "cnLiveShareControl": 1,
252 "cnMainControl": 1, 257 "cnMainControl": 1,
253 - "cnRegistTime": 1695202406000, 258 + "cnRegistTime": 1695190066000,
254 "cnShareControl": 1, 259 "cnShareControl": 1,
255 "cnShareNum": 0, 260 "cnShareNum": 0,
256 - "cnUserId": "444300764043333",  
257 - "cnUserName": "创作者账号7777", 261 + "cnUserId": "444200272593477",
  262 + "cnUserName": "zhuaqu005",
258 "cnUserType": "2", 263 "cnUserType": "2",
259 "collectNum": 0, 264 "collectNum": 0,
260 - "creatorId": "3004853", 265 + "creatorId": "3004849",
261 "district": "120101", 266 "district": "120101",
262 "fansNum": 0, 267 "fansNum": 0,
263 - "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/image/creator/2023092715/4727ab5db7604dbbac9ffb94ed03614e.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg", 268 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We140931534/CIX.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
264 "honoraryIcon": "", 269 "honoraryIcon": "",
265 "honoraryTitle": "", 270 "honoraryTitle": "",
266 - "introduction": "协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作", 271 + "introduction": "aaa",
267 "isAttention": 1, 272 "isAttention": 1,
268 "isComment": 1, 273 "isComment": 1,
269 "isLike": 1, 274 "isLike": 1,
@@ -273,54 +278,55 @@ @@ -273,54 +278,55 @@
273 "liveGiftControl": 1, 278 "liveGiftControl": 1,
274 "liveLikeControl": 1, 279 "liveLikeControl": 1,
275 "liveShareControl": 1, 280 "liveShareControl": 1,
276 - "posterShareControl": 0, 281 + "posterShareControl": 1,
277 "province": "120000", 282 "province": "120000",
278 "publishNum": 0, 283 "publishNum": 0,
279 - "region": "安徽", 284 + "region": "上海",
280 "shareControl": 1, 285 "shareControl": 1,
281 "shareNum": 0, 286 "shareNum": 0,
282 - "shopOpen": 1, 287 + "shopOpen": 0,
283 "storeUrl": "", 288 "storeUrl": "",
284 "subjectType": 0, 289 "subjectType": 0,
285 "userId": "", 290 "userId": "",
286 - "userName": "创作者账号7777", 291 + "userName": "zhuaqu005",
287 "userType": "2", 292 "userType": "2",
288 - "waresSwitch": 0  
289 - }, { 293 + "waresSwitch": 1
  294 + },
  295 + {
290 "attentionNum": 0, 296 "attentionNum": 0,
291 - "authIcon": "",  
292 - "authId": 0, 297 + "authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/yellow.png",
  298 + "authId": 2,
293 "authPersonal": "", 299 "authPersonal": "",
294 - "authTitle": "",  
295 - "categoryAuth": "",  
296 - "city": "110100",  
297 - "cnAttentionNum": 0,  
298 - "cnCollectNum": 0,  
299 - "cnCommentNum": 0,  
300 - "cnFansNum": 9, 300 + "authTitle": "黄VV",
  301 + "categoryAuth": "黄VV",
  302 + "city": "120100",
  303 + "cnAttentionNum": 1,
  304 + "cnCollectNum": 1,
  305 + "cnCommentNum": 7,
  306 + "cnFansNum": 13,
301 "cnIsAttention": 1, 307 "cnIsAttention": 1,
302 "cnIsComment": 1, 308 "cnIsComment": 1,
303 "cnIsLike": 1, 309 "cnIsLike": 1,
304 - "cnLikeNum": 6, 310 + "cnLikeNum": 0,
305 "cnLiveCommentControl": 1, 311 "cnLiveCommentControl": 1,
306 "cnLiveGiftControl": 1, 312 "cnLiveGiftControl": 1,
307 "cnLiveLikeControl": 1, 313 "cnLiveLikeControl": 1,
308 "cnLiveShareControl": 1, 314 "cnLiveShareControl": 1,
309 "cnMainControl": 1, 315 "cnMainControl": 1,
310 - "cnRegistTime": 1695201858000, 316 + "cnRegistTime": 1695202406000,
311 "cnShareControl": 1, 317 "cnShareControl": 1,
312 "cnShareNum": 0, 318 "cnShareNum": 0,
313 - "cnUserId": "444296355502149",  
314 - "cnUserName": "0920个人", 319 + "cnUserId": "444300764043333",
  320 + "cnUserName": "创作者账号7777",
315 "cnUserType": "2", 321 "cnUserType": "2",
316 "collectNum": 0, 322 "collectNum": 0,
317 - "creatorId": "3004851",  
318 - "district": "110101", 323 + "creatorId": "3004853",
  324 + "district": "120101",
319 "fansNum": 0, 325 "fansNum": 0,
320 - "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We172415100/h2j.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",  
321 - "honoraryIcon": "https://cdn.aikan.pdnews.cn/image/picture/202312/20231223173451966FdV.png",  
322 - "honoraryTitle": "快乐星球",  
323 - "introduction": "账号简介", 326 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/image/creator/2023092715/4727ab5db7604dbbac9ffb94ed03614e.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  327 + "honoraryIcon": "",
  328 + "honoraryTitle": "",
  329 + "introduction": "协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作",
324 "isAttention": 1, 330 "isAttention": 1,
325 "isComment": 1, 331 "isComment": 1,
326 "isLike": 1, 332 "isLike": 1,
@@ -330,54 +336,55 @@ @@ -330,54 +336,55 @@
330 "liveGiftControl": 1, 336 "liveGiftControl": 1,
331 "liveLikeControl": 1, 337 "liveLikeControl": 1,
332 "liveShareControl": 1, 338 "liveShareControl": 1,
333 - "posterShareControl": 1,  
334 - "province": "110000", 339 + "posterShareControl": 0,
  340 + "province": "120000",
335 "publishNum": 0, 341 "publishNum": 0,
336 - "region": "上海", 342 + "region": "安徽",
337 "shareControl": 1, 343 "shareControl": 1,
338 "shareNum": 0, 344 "shareNum": 0,
339 - "shopOpen": 0, 345 + "shopOpen": 1,
340 "storeUrl": "", 346 "storeUrl": "",
341 "subjectType": 0, 347 "subjectType": 0,
342 "userId": "", 348 "userId": "",
343 - "userName": "0920个人", 349 + "userName": "创作者账号7777",
344 "userType": "2", 350 "userType": "2",
345 - "waresSwitch": 1  
346 - }, { 351 + "waresSwitch": 0
  352 + },
  353 + {
347 "attentionNum": 0, 354 "attentionNum": 0,
348 - "authIcon": "",  
349 - "authId": 0, 355 + "authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/blue.png",
  356 + "authId": 1,
350 "authPersonal": "", 357 "authPersonal": "",
351 - "authTitle": "",  
352 - "categoryAuth": "",  
353 - "city": "120100",  
354 - "cnAttentionNum": 0, 358 + "authTitle": "黄袍加身V",
  359 + "categoryAuth": "黄袍加身V",
  360 + "city": "340100",
  361 + "cnAttentionNum": 9,
355 "cnCollectNum": 0, 362 "cnCollectNum": 0,
356 - "cnCommentNum": 0,  
357 - "cnFansNum": 10, 363 + "cnCommentNum": 3,
  364 + "cnFansNum": 9,
358 "cnIsAttention": 1, 365 "cnIsAttention": 1,
359 "cnIsComment": 1, 366 "cnIsComment": 1,
360 "cnIsLike": 1, 367 "cnIsLike": 1,
361 - "cnLikeNum": 0, 368 + "cnLikeNum": 7,
362 "cnLiveCommentControl": 1, 369 "cnLiveCommentControl": 1,
363 "cnLiveGiftControl": 1, 370 "cnLiveGiftControl": 1,
364 "cnLiveLikeControl": 1, 371 "cnLiveLikeControl": 1,
365 "cnLiveShareControl": 1, 372 "cnLiveShareControl": 1,
366 "cnMainControl": 1, 373 "cnMainControl": 1,
367 - "cnRegistTime": 1695190066000, 374 + "cnRegistTime": 1695260417000,
368 "cnShareControl": 1, 375 "cnShareControl": 1,
369 "cnShareNum": 0, 376 "cnShareNum": 0,
370 - "cnUserId": "444200272593477",  
371 - "cnUserName": "zhuaqu005", 377 + "cnUserId": "444776025830725",
  378 + "cnUserName": "李智恩3",
372 "cnUserType": "2", 379 "cnUserType": "2",
373 "collectNum": 0, 380 "collectNum": 0,
374 - "creatorId": "3004849",  
375 - "district": "120101", 381 + "creatorId": "3004855",
  382 + "district": "340102",
376 "fansNum": 0, 383 "fansNum": 0,
377 - "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We140931534/CIX.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg", 384 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th094010643/N5o.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
378 "honoraryIcon": "", 385 "honoraryIcon": "",
379 "honoraryTitle": "", 386 "honoraryTitle": "",
380 - "introduction": "aaa", 387 + "introduction": "IU",
381 "isAttention": 1, 388 "isAttention": 1,
382 "isComment": 1, 389 "isComment": 1,
383 "isLike": 1, 390 "isLike": 1,
@@ -387,25 +394,26 @@ @@ -387,25 +394,26 @@
387 "liveGiftControl": 1, 394 "liveGiftControl": 1,
388 "liveLikeControl": 1, 395 "liveLikeControl": 1,
389 "liveShareControl": 1, 396 "liveShareControl": 1,
390 - "posterShareControl": 1,  
391 - "province": "120000", 397 + "posterShareControl": 0,
  398 + "province": "340000",
392 "publishNum": 0, 399 "publishNum": 0,
393 - "region": "上海", 400 + "region": "安徽",
394 "shareControl": 1, 401 "shareControl": 1,
395 "shareNum": 0, 402 "shareNum": 0,
396 - "shopOpen": 0, 403 + "shopOpen": 1,
397 "storeUrl": "", 404 "storeUrl": "",
398 - "subjectType": 0, 405 + "subjectType": 1,
399 "userId": "", 406 "userId": "",
400 - "userName": "zhuaqu005", 407 + "userName": "李智恩3",
401 "userType": "2", 408 "userType": "2",
402 - "waresSwitch": 1  
403 - }], 409 + "waresSwitch": 0
  410 + }
  411 + ],
404 "pageNum": 1, 412 "pageNum": 1,
405 "pageSize": 20, 413 "pageSize": 20,
406 "totalCount": 7 414 "totalCount": 7
407 }, 415 },
408 "message": "Success", 416 "message": "Success",
409 "success": true, 417 "success": true,
410 - "timestamp": 1710742034894 418 + "timestamp": 1710989443354
411 } 419 }
  1 +{
  2 + "code": "0",
  3 + "data": [
  4 + {
  5 + "creatorId": "3004862",
  6 + "status": "0",
  7 + "userId": "567387477063621"
  8 + },
  9 + {
  10 + "creatorId": "3004861",
  11 + "status": "0",
  12 + "userId": "567387477063621"
  13 + },
  14 + {
  15 + "creatorId": "3004860",
  16 + "status": "0",
  17 + "userId": "567387477063621"
  18 + },
  19 + {
  20 + "creatorId": "3004851",
  21 + "status": "1",
  22 + "userId": "567387477063621"
  23 + },
  24 + {
  25 + "creatorId": "3004849",
  26 + "status": "1",
  27 + "userId": "567387477063621"
  28 + },
  29 + {
  30 + "creatorId": "3004853",
  31 + "status": "1",
  32 + "userId": "567387477063621"
  33 + },
  34 + {
  35 + "creatorId": "3004855",
  36 + "status": "0",
  37 + "userId": "567387477063621"
  38 + }
  39 + ],
  40 + "message": "Success",
  41 + "meta": null,
  42 + "requestId": "",
  43 + "success": true,
  44 + "timestamp": 1710989443648
  45 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "hasNext": 0,
  5 + "list": [
  6 + {
  7 + "avatarFrame": "",
  8 + "checkStatus": 0,
  9 + "commentContent": "车得修,歌也得唱不唱心里那口气儿就没了你哥我以前心里也有这股劲儿那时候我想的是什么想的是每天什么时候开始现在心里这股劲儿泄了我想的是每天什么时候结束心里有这股劲儿的时候你哥也摇滚过现在这股劲儿没了我天天想的都是这个是这个但你不能这样只要咱们继续唱大吉他就还在不唱就真的没了——《缝纫机乐队》",
  10 + "commentContentSensitive": "",
  11 + "commentLevel": 1,
  12 + "commentPics": "",
  13 + "commentSensitive": "",
  14 + "commentType": "2",
  15 + "createTime": "2024-03-21 13:37:13",
  16 + "fromCreatorId": "",
  17 + "fromDeviceId": "",
  18 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  19 + "fromUserId": "567387477063621",
  20 + "fromUserName": "人民日报网友aPrtq5",
  21 + "fromUserType": 1,
  22 + "h5Url": "",
  23 + "id": 303323,
  24 + "keyArticle": 0,
  25 + "likeNum": 0,
  26 + "parentCommentVo": null,
  27 + "parentId": -1,
  28 + "rootCommentId": 303323,
  29 + "sensitiveExist": 0,
  30 + "sensitiveShow": 1,
  31 + "shareInfo": {
  32 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231012/image/content/7f1a342a809d4276aa975ba9e7fe2313.png",
  33 + "shareSummary": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是",
  34 + "shareTitle": "这是一个开始、请持续关注这是一个开始、请",
  35 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000633703-500000008559"
  36 + },
  37 + "targetId": "30000633703",
  38 + "targetRelId": "500000008559",
  39 + "targetRelObjectId": "2002",
  40 + "targetRelType": 1,
  41 + "targetStatus": 0,
  42 + "targetTitle": "这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注这是一个开始、请持续关注",
  43 + "targetType": 8,
  44 + "topicType": null,
  45 + "uuid": "a1944aa3-e598-44ea-b2c5-45a4fe0ba91f"
  46 + },
  47 + {
  48 + "avatarFrame": "",
  49 + "checkStatus": 0,
  50 + "commentContent": "我们都很好",
  51 + "commentContentSensitive": "",
  52 + "commentLevel": 1,
  53 + "commentPics": "",
  54 + "commentSensitive": "",
  55 + "commentType": "2",
  56 + "createTime": "2024-03-14 17:56:14",
  57 + "fromCreatorId": "",
  58 + "fromDeviceId": "",
  59 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  60 + "fromUserId": "567387477063621",
  61 + "fromUserName": "人民日报网友aPrtq5",
  62 + "fromUserType": 1,
  63 + "h5Url": "",
  64 + "id": 403449,
  65 + "keyArticle": 0,
  66 + "likeNum": 0,
  67 + "parentCommentVo": null,
  68 + "parentId": -1,
  69 + "rootCommentId": 403449,
  70 + "sensitiveExist": 0,
  71 + "sensitiveShow": 1,
  72 + "shareInfo": {
  73 + "shareCoverUrl": "",
  74 + "shareSummary": "人民日报,有品质的新闻",
  75 + "shareTitle": "丝路之美",
  76 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000654108-500000017213"
  77 + },
  78 + "targetId": "30000654108",
  79 + "targetRelId": "500000017213",
  80 + "targetRelObjectId": "2002",
  81 + "targetRelType": 1,
  82 + "targetStatus": 0,
  83 + "targetTitle": "丝路之美",
  84 + "targetType": 8,
  85 + "topicType": null,
  86 + "uuid": "1706ec91-8fb3-4704-bde3-fb454386e419"
  87 + },
  88 + {
  89 + "avatarFrame": "",
  90 + "checkStatus": 0,
  91 + "commentContent": "大家好",
  92 + "commentContentSensitive": "",
  93 + "commentLevel": 1,
  94 + "commentPics": "",
  95 + "commentSensitive": "",
  96 + "commentType": "2",
  97 + "createTime": "2024-03-14 17:56:04",
  98 + "fromCreatorId": "",
  99 + "fromDeviceId": "",
  100 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  101 + "fromUserId": "567387477063621",
  102 + "fromUserName": "人民日报网友aPrtq5",
  103 + "fromUserType": 1,
  104 + "h5Url": "",
  105 + "id": 403448,
  106 + "keyArticle": 0,
  107 + "likeNum": 0,
  108 + "parentCommentVo": null,
  109 + "parentId": -1,
  110 + "rootCommentId": 403448,
  111 + "sensitiveExist": 0,
  112 + "sensitiveShow": 1,
  113 + "shareInfo": {
  114 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231012/image/content/b7170ff0d0954b389e7e9f8c3c1d777a.png",
  115 + "shareSummary": "人民日报,有品质的新闻",
  116 + "shareTitle": "展示发",
  117 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000633589-500000008382"
  118 + },
  119 + "targetId": "30000633589",
  120 + "targetRelId": "500000008382",
  121 + "targetRelObjectId": "2002",
  122 + "targetRelType": 1,
  123 + "targetStatus": 0,
  124 + "targetTitle": "展示发",
  125 + "targetType": 13,
  126 + "topicType": null,
  127 + "uuid": "17c5a8d9-622c-4b7a-bcd2-afc792fb8fb7"
  128 + },
  129 + {
  130 + "avatarFrame": "",
  131 + "checkStatus": 0,
  132 + "commentContent": "你好",
  133 + "commentContentSensitive": "",
  134 + "commentLevel": 1,
  135 + "commentPics": "",
  136 + "commentSensitive": "",
  137 + "commentType": "2",
  138 + "createTime": "2024-03-14 17:55:55",
  139 + "fromCreatorId": "",
  140 + "fromDeviceId": "",
  141 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  142 + "fromUserId": "567387477063621",
  143 + "fromUserName": "人民日报网友aPrtq5",
  144 + "fromUserType": 1,
  145 + "h5Url": "",
  146 + "id": 403447,
  147 + "keyArticle": 0,
  148 + "likeNum": 0,
  149 + "parentCommentVo": null,
  150 + "parentId": -1,
  151 + "rootCommentId": 403447,
  152 + "sensitiveExist": 0,
  153 + "sensitiveShow": 1,
  154 + "shareInfo": {
  155 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231103/image/content/046db0ef912f43dda639009e2b78a774.png",
  156 + "shareSummary": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然-导读",
  157 + "shareTitle": "复测-坐船观鸟,骑行散步,通州125处湿",
  158 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000637972-500000010900"
  159 + },
  160 + "targetId": "30000637972",
  161 + "targetRelId": "500000010900",
  162 + "targetRelObjectId": "2002",
  163 + "targetRelType": 1,
  164 + "targetStatus": 0,
  165 + "targetTitle": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然",
  166 + "targetType": 8,
  167 + "topicType": null,
  168 + "uuid": "f809d73f-a66c-4dd6-a4cf-99e3a9c9621e"
  169 + },
  170 + {
  171 + "avatarFrame": "",
  172 + "checkStatus": 0,
  173 + "commentContent": "你好",
  174 + "commentContentSensitive": "",
  175 + "commentLevel": 1,
  176 + "commentPics": "",
  177 + "commentSensitive": "",
  178 + "commentType": "2",
  179 + "createTime": "2024-03-14 17:55:55",
  180 + "fromCreatorId": "",
  181 + "fromDeviceId": "",
  182 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  183 + "fromUserId": "567387477063621",
  184 + "fromUserName": "人民日报网友aPrtq5",
  185 + "fromUserType": 1,
  186 + "h5Url": "",
  187 + "id": 403447,
  188 + "keyArticle": 0,
  189 + "likeNum": 0,
  190 + "parentCommentVo": null,
  191 + "parentId": -1,
  192 + "rootCommentId": 403447,
  193 + "sensitiveExist": 0,
  194 + "sensitiveShow": 1,
  195 + "shareInfo": {
  196 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231103/image/content/046db0ef912f43dda639009e2b78a774.png",
  197 + "shareSummary": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然-导读",
  198 + "shareTitle": "复测-坐船观鸟,骑行散步,通州125处湿",
  199 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000637972-500000010900"
  200 + },
  201 + "targetId": "30000637972",
  202 + "targetRelId": "500000010900",
  203 + "targetRelObjectId": "2002",
  204 + "targetRelType": 1,
  205 + "targetStatus": 0,
  206 + "targetTitle": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然",
  207 + "targetType": 8,
  208 + "topicType": null,
  209 + "uuid": "f809d73f-a66c-4dd6-a4cf-99e3a9c9621e"
  210 + },
  211 + {
  212 + "avatarFrame": "",
  213 + "checkStatus": 0,
  214 + "commentContent": "你好",
  215 + "commentContentSensitive": "",
  216 + "commentLevel": 1,
  217 + "commentPics": "",
  218 + "commentSensitive": "",
  219 + "commentType": "2",
  220 + "createTime": "2024-03-14 17:55:55",
  221 + "fromCreatorId": "",
  222 + "fromDeviceId": "",
  223 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  224 + "fromUserId": "567387477063621",
  225 + "fromUserName": "人民日报网友aPrtq5",
  226 + "fromUserType": 1,
  227 + "h5Url": "",
  228 + "id": 403447,
  229 + "keyArticle": 0,
  230 + "likeNum": 0,
  231 + "parentCommentVo": null,
  232 + "parentId": -1,
  233 + "rootCommentId": 403447,
  234 + "sensitiveExist": 0,
  235 + "sensitiveShow": 1,
  236 + "shareInfo": {
  237 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231103/image/content/046db0ef912f43dda639009e2b78a774.png",
  238 + "shareSummary": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然-导读",
  239 + "shareTitle": "复测-坐船观鸟,骑行散步,通州125处湿",
  240 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000637972-500000010900"
  241 + },
  242 + "targetId": "30000637972",
  243 + "targetRelId": "500000010900",
  244 + "targetRelObjectId": "2002",
  245 + "targetRelType": 1,
  246 + "targetStatus": 0,
  247 + "targetTitle": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然",
  248 + "targetType": 8,
  249 + "topicType": null,
  250 + "uuid": "f809d73f-a66c-4dd6-a4cf-99e3a9c9621e"
  251 + },
  252 + {
  253 + "avatarFrame": "",
  254 + "checkStatus": 0,
  255 + "commentContent": "你好",
  256 + "commentContentSensitive": "",
  257 + "commentLevel": 1,
  258 + "commentPics": "",
  259 + "commentSensitive": "",
  260 + "commentType": "2",
  261 + "createTime": "2024-03-14 17:55:55",
  262 + "fromCreatorId": "",
  263 + "fromDeviceId": "",
  264 + "fromUserHeader": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png?x-oss-process=image/resize,l_100/auto-orient,1/quality,q_90/format,jpg",
  265 + "fromUserId": "567387477063621",
  266 + "fromUserName": "人民日报网友aPrtq5",
  267 + "fromUserType": 1,
  268 + "h5Url": "",
  269 + "id": 403447,
  270 + "keyArticle": 0,
  271 + "likeNum": 0,
  272 + "parentCommentVo": null,
  273 + "parentId": -1,
  274 + "rootCommentId": 403447,
  275 + "sensitiveExist": 0,
  276 + "sensitiveShow": 1,
  277 + "shareInfo": {
  278 + "shareCoverUrl": "http://sitcontentjdcdn.aikan.pdnews.cn/zhbj-20231103/image/content/046db0ef912f43dda639009e2b78a774.png",
  279 + "shareSummary": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然-导读",
  280 + "shareTitle": "复测-坐船观鸟,骑行散步,通州125处湿",
  281 + "shareUrl": "https://pd-people-sit.pdnews.cn/column/30000637972-500000010900"
  282 + },
  283 + "targetId": "30000637972",
  284 + "targetRelId": "500000010900",
  285 + "targetRelObjectId": "2002",
  286 + "targetRelType": 1,
  287 + "targetStatus": 0,
  288 + "targetTitle": "复测-坐船观鸟,骑行散步,通州125处湿地邀您亲近自然",
  289 + "targetType": 8,
  290 + "topicType": null,
  291 + "uuid": "f809d73f-a66c-4dd6-a4cf-99e3a9c9621e"
  292 + }
  293 + ],
  294 + "pageNum": 1,
  295 + "pageSize": 20,
  296 + "totalCommentNum": 4,
  297 + "totalCount": 4
  298 + },
  299 + "message": "Success",
  300 + "meta": null,
  301 + "requestId": "",
  302 + "success": true,
  303 + "timestamp": 1711092987342
  304 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "hasNext": 0,
  5 + "list": [
  6 + {
  7 + "attentionCreatorId": "3214877",
  8 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/ueditor/image/20231227/a_924511395855200256.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  9 + "attentionNum": 0,
  10 + "attentionUserId": "508051203257158",
  11 + "attentionUserName": "北京交通运输职业学院",
  12 + "attentionUserType": 2,
  13 + "authIcon": "",
  14 + "authId": 0,
  15 + "authPersional": "",
  16 + "authTitle": "",
  17 + "banControl": 0,
  18 + "categoryAuth": "",
  19 + "cnLiveCommentControl": 1,
  20 + "cnLiveGiftControl": 1,
  21 + "cnLiveLikeControl": 1,
  22 + "cnLiveShareControl": 1,
  23 + "cnShareControl": 1,
  24 + "collectNum": 0,
  25 + "commentNum": 0,
  26 + "createTime": 1710742365000,
  27 + "fansNum": 1,
  28 + "honoraryIcon": "",
  29 + "honoraryTitle": "",
  30 + "id": 100704,
  31 + "introduction": "北京交通运输职业学院",
  32 + "isAttention": null,
  33 + "isComment": 1,
  34 + "isLike": 1,
  35 + "isVisiable": 1,
  36 + "likeNum": 0,
  37 + "liveCommentControl": 1,
  38 + "liveGiftControl": 1,
  39 + "liveLikeControl": 1,
  40 + "liveShareControl": 1,
  41 + "mainControl": 1,
  42 + "posterShareControl": 1,
  43 + "registTime": 1599214346000,
  44 + "shareControl": 1,
  45 + "shareNum": 0,
  46 + "status": 1,
  47 + "subjectType": null,
  48 + "updateTime": 1710742365000,
  49 + "userId": "567387477063621",
  50 + "userType": 1
  51 + },
  52 + {
  53 + "attentionCreatorId": "3092827",
  54 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/user_app/201907/rmrb_Mw5PyAQe1563349003.jpg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  55 + "attentionNum": 0,
  56 + "attentionUserId": "507982569927494",
  57 + "attentionUserName": "3G楼市周刊合肥站",
  58 + "attentionUserType": 5,
  59 + "authIcon": "",
  60 + "authId": 0,
  61 + "authPersional": "",
  62 + "authTitle": "",
  63 + "banControl": 0,
  64 + "categoryAuth": "",
  65 + "cnLiveCommentControl": 1,
  66 + "cnLiveGiftControl": 1,
  67 + "cnLiveLikeControl": 1,
  68 + "cnLiveShareControl": 1,
  69 + "cnShareControl": 1,
  70 + "collectNum": 0,
  71 + "commentNum": 0,
  72 + "createTime": 1710410008000,
  73 + "fansNum": 1,
  74 + "honoraryIcon": "",
  75 + "honoraryTitle": "",
  76 + "id": 200711,
  77 + "introduction": "3G楼市周刊合肥站官方",
  78 + "isAttention": null,
  79 + "isComment": 1,
  80 + "isLike": 1,
  81 + "isVisiable": 1,
  82 + "likeNum": 0,
  83 + "liveCommentControl": 1,
  84 + "liveGiftControl": 1,
  85 + "liveLikeControl": 1,
  86 + "liveShareControl": 1,
  87 + "mainControl": 0,
  88 + "posterShareControl": 1,
  89 + "registTime": 1559098504000,
  90 + "shareControl": 1,
  91 + "shareNum": 0,
  92 + "status": 1,
  93 + "subjectType": null,
  94 + "updateTime": 1710410008000,
  95 + "userId": "567387477063621",
  96 + "userType": 1
  97 + },
  98 + {
  99 + "attentionCreatorId": "3022148",
  100 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/zw/bjh_image/1550310502_bb68cf1fc0ba566b3bdd77bb8648d7a8.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  101 + "attentionNum": 0,
  102 + "attentionUserId": "504980189045893",
  103 + "attentionUserName": "庐州房产网",
  104 + "attentionUserType": 2,
  105 + "authIcon": "",
  106 + "authId": 0,
  107 + "authPersional": "",
  108 + "authTitle": "",
  109 + "banControl": 0,
  110 + "categoryAuth": "",
  111 + "cnLiveCommentControl": 1,
  112 + "cnLiveGiftControl": 1,
  113 + "cnLiveLikeControl": 1,
  114 + "cnLiveShareControl": 1,
  115 + "cnShareControl": 1,
  116 + "collectNum": 0,
  117 + "commentNum": 0,
  118 + "createTime": 1710410008000,
  119 + "fansNum": 1,
  120 + "honoraryIcon": "",
  121 + "honoraryTitle": "",
  122 + "id": 200709,
  123 + "introduction": "专注古城庐州楼市资讯",
  124 + "isAttention": null,
  125 + "isComment": 1,
  126 + "isLike": 1,
  127 + "isVisiable": 1,
  128 + "likeNum": 0,
  129 + "liveCommentControl": 1,
  130 + "liveGiftControl": 1,
  131 + "liveLikeControl": 1,
  132 + "liveShareControl": 1,
  133 + "mainControl": 1,
  134 + "posterShareControl": 1,
  135 + "registTime": 1550310442000,
  136 + "shareControl": 1,
  137 + "shareNum": 0,
  138 + "status": 1,
  139 + "subjectType": null,
  140 + "updateTime": 1710410008000,
  141 + "userId": "567387477063621",
  142 + "userType": 1
  143 + },
  144 + {
  145 + "attentionCreatorId": "3214944",
  146 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/article_resource/image/1562575034_a1790012453b8d5e937e.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  147 + "attentionNum": 0,
  148 + "attentionUserId": "508051247641414",
  149 + "attentionUserName": "民警李建国",
  150 + "attentionUserType": 5,
  151 + "authIcon": "",
  152 + "authId": 0,
  153 + "authPersional": "",
  154 + "authTitle": "",
  155 + "banControl": 0,
  156 + "categoryAuth": "",
  157 + "cnLiveCommentControl": 1,
  158 + "cnLiveGiftControl": 1,
  159 + "cnLiveLikeControl": 1,
  160 + "cnLiveShareControl": 1,
  161 + "cnShareControl": 1,
  162 + "collectNum": 0,
  163 + "commentNum": 0,
  164 + "createTime": 1710410006000,
  165 + "fansNum": 1,
  166 + "honoraryIcon": "",
  167 + "honoraryTitle": "",
  168 + "id": 200708,
  169 + "introduction": "常州市公安局新北分局民警",
  170 + "isAttention": null,
  171 + "isComment": 1,
  172 + "isLike": 1,
  173 + "isVisiable": 1,
  174 + "likeNum": 0,
  175 + "liveCommentControl": 1,
  176 + "liveGiftControl": 1,
  177 + "liveLikeControl": 1,
  178 + "liveShareControl": 1,
  179 + "mainControl": 0,
  180 + "posterShareControl": 1,
  181 + "registTime": 1560152360000,
  182 + "shareControl": 1,
  183 + "shareNum": 0,
  184 + "status": 1,
  185 + "subjectType": null,
  186 + "updateTime": 1710410006000,
  187 + "userId": "567387477063621",
  188 + "userType": 1
  189 + },
  190 + {
  191 + "attentionCreatorId": "3215205",
  192 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/zw/bjh_image/1561779596_b5cdde910817d66e7561cf35cdb3b896.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  193 + "attentionNum": 0,
  194 + "attentionUserId": "504980472120453",
  195 + "attentionUserName": "日语酱",
  196 + "attentionUserType": 2,
  197 + "authIcon": "",
  198 + "authId": 0,
  199 + "authPersional": "",
  200 + "authTitle": "",
  201 + "banControl": 0,
  202 + "categoryAuth": "",
  203 + "cnLiveCommentControl": 1,
  204 + "cnLiveGiftControl": 1,
  205 + "cnLiveLikeControl": 1,
  206 + "cnLiveShareControl": 1,
  207 + "cnShareControl": 1,
  208 + "collectNum": 0,
  209 + "commentNum": 0,
  210 + "createTime": 1710410006000,
  211 + "fansNum": 1,
  212 + "honoraryIcon": "",
  213 + "honoraryTitle": "",
  214 + "id": 200707,
  215 + "introduction": "付出不亚于任何人的努力",
  216 + "isAttention": null,
  217 + "isComment": 1,
  218 + "isLike": 1,
  219 + "isVisiable": 1,
  220 + "likeNum": 0,
  221 + "liveCommentControl": 1,
  222 + "liveGiftControl": 1,
  223 + "liveLikeControl": 1,
  224 + "liveShareControl": 1,
  225 + "mainControl": 1,
  226 + "posterShareControl": 1,
  227 + "registTime": 1560474105000,
  228 + "shareControl": 1,
  229 + "shareNum": 0,
  230 + "status": 1,
  231 + "subjectType": null,
  232 + "updateTime": 1710410006000,
  233 + "userId": "567387477063621",
  234 + "userType": 1
  235 + },
  236 + {
  237 + "attentionCreatorId": "3258463",
  238 + "attentionHeadPhotoUrl": "",
  239 + "attentionNum": 0,
  240 + "attentionUserId": "508670671396102",
  241 + "attentionUserName": "西北大学4e82",
  242 + "attentionUserType": 5,
  243 + "authIcon": "",
  244 + "authId": 0,
  245 + "authPersional": "",
  246 + "authTitle": "",
  247 + "banControl": 0,
  248 + "categoryAuth": "",
  249 + "cnLiveCommentControl": 1,
  250 + "cnLiveGiftControl": 1,
  251 + "cnLiveLikeControl": 1,
  252 + "cnLiveShareControl": 1,
  253 + "cnShareControl": 1,
  254 + "collectNum": 0,
  255 + "commentNum": 0,
  256 + "createTime": 1710409996000,
  257 + "fansNum": 1,
  258 + "honoraryIcon": "",
  259 + "honoraryTitle": "",
  260 + "id": 200706,
  261 + "introduction": "西北大学",
  262 + "isAttention": null,
  263 + "isComment": 1,
  264 + "isLike": 1,
  265 + "isVisiable": 1,
  266 + "likeNum": 0,
  267 + "liveCommentControl": 1,
  268 + "liveGiftControl": 1,
  269 + "liveLikeControl": 1,
  270 + "liveShareControl": 1,
  271 + "mainControl": 0,
  272 + "posterShareControl": 1,
  273 + "registTime": 1555554106000,
  274 + "shareControl": 1,
  275 + "shareNum": 0,
  276 + "status": 1,
  277 + "subjectType": null,
  278 + "updateTime": 1710409996000,
  279 + "userId": "567387477063621",
  280 + "userType": 1
  281 + },
  282 + {
  283 + "attentionCreatorId": "3258486",
  284 + "attentionHeadPhotoUrl": "",
  285 + "attentionNum": 0,
  286 + "attentionUserId": "508670696660230",
  287 + "attentionUserName": "扬州大学93ba",
  288 + "attentionUserType": 5,
  289 + "authIcon": "",
  290 + "authId": 0,
  291 + "authPersional": "",
  292 + "authTitle": "",
  293 + "banControl": 0,
  294 + "categoryAuth": "",
  295 + "cnLiveCommentControl": 1,
  296 + "cnLiveGiftControl": 1,
  297 + "cnLiveLikeControl": 1,
  298 + "cnLiveShareControl": 1,
  299 + "cnShareControl": 1,
  300 + "collectNum": 0,
  301 + "commentNum": 0,
  302 + "createTime": 1710409996000,
  303 + "fansNum": 1,
  304 + "honoraryIcon": "",
  305 + "honoraryTitle": "",
  306 + "id": 200705,
  307 + "introduction": "扬州大学",
  308 + "isAttention": null,
  309 + "isComment": 1,
  310 + "isLike": 1,
  311 + "isVisiable": 1,
  312 + "likeNum": 0,
  313 + "liveCommentControl": 1,
  314 + "liveGiftControl": 1,
  315 + "liveLikeControl": 1,
  316 + "liveShareControl": 1,
  317 + "mainControl": 0,
  318 + "posterShareControl": 1,
  319 + "registTime": 1555659355000,
  320 + "shareControl": 1,
  321 + "shareNum": 0,
  322 + "status": 1,
  323 + "subjectType": null,
  324 + "updateTime": 1710409996000,
  325 + "userId": "567387477063621",
  326 + "userType": 1
  327 + },
  328 + {
  329 + "attentionCreatorId": "3258575",
  330 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/zw/bjh_image/1539067744_5149cb078d4ed272af470630be272023.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  331 + "attentionNum": 0,
  332 + "attentionUserId": "509369589284102",
  333 + "attentionUserName": "旅途",
  334 + "attentionUserType": 2,
  335 + "authIcon": "",
  336 + "authId": 0,
  337 + "authPersional": "",
  338 + "authTitle": "",
  339 + "banControl": 0,
  340 + "categoryAuth": "",
  341 + "cnLiveCommentControl": 1,
  342 + "cnLiveGiftControl": 1,
  343 + "cnLiveLikeControl": 1,
  344 + "cnLiveShareControl": 1,
  345 + "cnShareControl": 1,
  346 + "collectNum": 0,
  347 + "commentNum": 0,
  348 + "createTime": 1710409989000,
  349 + "fansNum": 1,
  350 + "honoraryIcon": "",
  351 + "honoraryTitle": "",
  352 + "id": 200704,
  353 + "introduction": "背包、骑车、旅行、一个人目睹沿途的风景~",
  354 + "isAttention": null,
  355 + "isComment": 1,
  356 + "isLike": 1,
  357 + "isVisiable": 1,
  358 + "likeNum": 0,
  359 + "liveCommentControl": 1,
  360 + "liveGiftControl": 1,
  361 + "liveLikeControl": 1,
  362 + "liveShareControl": 1,
  363 + "mainControl": 1,
  364 + "posterShareControl": 1,
  365 + "registTime": 1528884167000,
  366 + "shareControl": 1,
  367 + "shareNum": 0,
  368 + "status": 1,
  369 + "subjectType": null,
  370 + "updateTime": 1710409989000,
  371 + "userId": "567387477063621",
  372 + "userType": 1
  373 + },
  374 + {
  375 + "attentionCreatorId": "3258577",
  376 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/rmh/image/201905/201905160519269845.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  377 + "attentionNum": 0,
  378 + "attentionUserId": "509369595993350",
  379 + "attentionUserName": "陇海在线",
  380 + "attentionUserType": 2,
  381 + "authIcon": "",
  382 + "authId": 0,
  383 + "authPersional": "",
  384 + "authTitle": "",
  385 + "banControl": 0,
  386 + "categoryAuth": "",
  387 + "cnLiveCommentControl": 1,
  388 + "cnLiveGiftControl": 1,
  389 + "cnLiveLikeControl": 1,
  390 + "cnLiveShareControl": 1,
  391 + "cnShareControl": 1,
  392 + "collectNum": 0,
  393 + "commentNum": 0,
  394 + "createTime": 1710409989000,
  395 + "fansNum": 1,
  396 + "honoraryIcon": "",
  397 + "honoraryTitle": "",
  398 + "id": 200703,
  399 + "introduction": "在这里阅读陇海沿线城市暨淮海地区最新生活资讯!",
  400 + "isAttention": null,
  401 + "isComment": 1,
  402 + "isLike": 1,
  403 + "isVisiable": 1,
  404 + "likeNum": 0,
  405 + "liveCommentControl": 1,
  406 + "liveGiftControl": 1,
  407 + "liveLikeControl": 1,
  408 + "liveShareControl": 1,
  409 + "mainControl": 1,
  410 + "posterShareControl": 1,
  411 + "registTime": 1529015167000,
  412 + "shareControl": 1,
  413 + "shareNum": 0,
  414 + "status": 1,
  415 + "subjectType": null,
  416 + "updateTime": 1710409989000,
  417 + "userId": "567387477063621",
  418 + "userType": 1
  419 + },
  420 + {
  421 + "attentionCreatorId": "3258596",
  422 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/rmh/image/201911/201911271018567208.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  423 + "attentionNum": 0,
  424 + "attentionUserId": "509403474238726",
  425 + "attentionUserName": "建筑界",
  426 + "attentionUserType": 2,
  427 + "authIcon": "",
  428 + "authId": 0,
  429 + "authPersional": "",
  430 + "authTitle": "",
  431 + "banControl": 0,
  432 + "categoryAuth": "",
  433 + "cnLiveCommentControl": 1,
  434 + "cnLiveGiftControl": 1,
  435 + "cnLiveLikeControl": 1,
  436 + "cnLiveShareControl": 1,
  437 + "cnShareControl": 1,
  438 + "collectNum": 0,
  439 + "commentNum": 0,
  440 + "createTime": 1710409988000,
  441 + "fansNum": 1,
  442 + "honoraryIcon": "",
  443 + "honoraryTitle": "",
  444 + "id": 200702,
  445 + "introduction": "匠者仁心",
  446 + "isAttention": null,
  447 + "isComment": 1,
  448 + "isLike": 1,
  449 + "isVisiable": 1,
  450 + "likeNum": 0,
  451 + "liveCommentControl": 1,
  452 + "liveGiftControl": 1,
  453 + "liveLikeControl": 1,
  454 + "liveShareControl": 1,
  455 + "mainControl": 1,
  456 + "posterShareControl": 1,
  457 + "registTime": 1550712472000,
  458 + "shareControl": 1,
  459 + "shareNum": 0,
  460 + "status": 1,
  461 + "subjectType": null,
  462 + "updateTime": 1710409988000,
  463 + "userId": "567387477063621",
  464 + "userType": 1
  465 + },
  466 + {
  467 + "attentionCreatorId": "3258601",
  468 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/zw/bjh_image/1552718233_f0290f15dcbbb41d3af7ad9ed3099621.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  469 + "attentionNum": 0,
  470 + "attentionUserId": "509403475746054",
  471 + "attentionUserName": "芳芳喜欢的科技课堂",
  472 + "attentionUserType": 2,
  473 + "authIcon": "",
  474 + "authId": 0,
  475 + "authPersional": "",
  476 + "authTitle": "",
  477 + "banControl": 0,
  478 + "categoryAuth": "",
  479 + "cnLiveCommentControl": 1,
  480 + "cnLiveGiftControl": 1,
  481 + "cnLiveLikeControl": 1,
  482 + "cnLiveShareControl": 1,
  483 + "cnShareControl": 1,
  484 + "collectNum": 0,
  485 + "commentNum": 0,
  486 + "createTime": 1710409987000,
  487 + "fansNum": 1,
  488 + "honoraryIcon": "",
  489 + "honoraryTitle": "",
  490 + "id": 200701,
  491 + "introduction": "每天分享与科技有关的新鲜事儿",
  492 + "isAttention": null,
  493 + "isComment": 1,
  494 + "isLike": 1,
  495 + "isVisiable": 1,
  496 + "likeNum": 0,
  497 + "liveCommentControl": 1,
  498 + "liveGiftControl": 1,
  499 + "liveLikeControl": 1,
  500 + "liveShareControl": 1,
  501 + "mainControl": 1,
  502 + "posterShareControl": 1,
  503 + "registTime": 1552718173000,
  504 + "shareControl": 1,
  505 + "shareNum": 0,
  506 + "status": 1,
  507 + "subjectType": null,
  508 + "updateTime": 1710409987000,
  509 + "userId": "567387477063621",
  510 + "userType": 1
  511 + },
  512 + {
  513 + "attentionCreatorId": "3258611",
  514 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/zw/bjh_image/1551495924_33f73482b19cd64f0f3906b19043113a.jpeg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  515 + "attentionNum": 0,
  516 + "attentionUserId": "509403509734662",
  517 + "attentionUserName": "西平微传媒",
  518 + "attentionUserType": 2,
  519 + "authIcon": "",
  520 + "authId": 0,
  521 + "authPersional": "",
  522 + "authTitle": "",
  523 + "banControl": 0,
  524 + "categoryAuth": "",
  525 + "cnLiveCommentControl": 1,
  526 + "cnLiveGiftControl": 1,
  527 + "cnLiveLikeControl": 1,
  528 + "cnLiveShareControl": 1,
  529 + "cnShareControl": 1,
  530 + "collectNum": 0,
  531 + "commentNum": 0,
  532 + "createTime": 1710409986000,
  533 + "fansNum": 1,
  534 + "honoraryIcon": "",
  535 + "honoraryTitle": "",
  536 + "id": 200700,
  537 + "introduction": "西平县本地信息服务、热点追踪、关注民生。",
  538 + "isAttention": null,
  539 + "isComment": 1,
  540 + "isLike": 1,
  541 + "isVisiable": 1,
  542 + "likeNum": 0,
  543 + "liveCommentControl": 1,
  544 + "liveGiftControl": 1,
  545 + "liveLikeControl": 1,
  546 + "liveShareControl": 1,
  547 + "mainControl": 1,
  548 + "posterShareControl": 1,
  549 + "registTime": 1551495864000,
  550 + "shareControl": 1,
  551 + "shareNum": 0,
  552 + "status": 1,
  553 + "subjectType": null,
  554 + "updateTime": 1710409986000,
  555 + "userId": "567387477063621",
  556 + "userType": 1
  557 + },
  558 + {
  559 + "attentionCreatorId": "3258613",
  560 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//upload/ueditor/image/20191011/a_367272241198526464.jpg?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  561 + "attentionNum": 0,
  562 + "attentionUserId": "504980253394053",
  563 + "attentionUserName": "安庆生活",
  564 + "attentionUserType": 2,
  565 + "authIcon": "",
  566 + "authId": 0,
  567 + "authPersional": "",
  568 + "authTitle": "",
  569 + "banControl": 0,
  570 + "categoryAuth": "",
  571 + "cnLiveCommentControl": 1,
  572 + "cnLiveGiftControl": 1,
  573 + "cnLiveLikeControl": 1,
  574 + "cnLiveShareControl": 1,
  575 + "cnShareControl": 1,
  576 + "collectNum": 0,
  577 + "commentNum": 0,
  578 + "createTime": 1710409985000,
  579 + "fansNum": 1,
  580 + "honoraryIcon": "",
  581 + "honoraryTitle": "",
  582 + "id": 200699,
  583 + "introduction": "传播有价值的声音,记录生活,共享精彩!\n",
  584 + "isAttention": null,
  585 + "isComment": 1,
  586 + "isLike": 1,
  587 + "isVisiable": 1,
  588 + "likeNum": 0,
  589 + "liveCommentControl": 1,
  590 + "liveGiftControl": 1,
  591 + "liveLikeControl": 1,
  592 + "liveShareControl": 1,
  593 + "mainControl": 1,
  594 + "posterShareControl": 1,
  595 + "registTime": 1551433741000,
  596 + "shareControl": 1,
  597 + "shareNum": 0,
  598 + "status": 1,
  599 + "subjectType": null,
  600 + "updateTime": 1710409985000,
  601 + "userId": "567387477063621",
  602 + "userType": 1
  603 + },
  604 + {
  605 + "attentionCreatorId": "3004851",
  606 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We172415100/h2j.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  607 + "attentionNum": 0,
  608 + "attentionUserId": "444296355502149",
  609 + "attentionUserName": "0920个人",
  610 + "attentionUserType": 2,
  611 + "authIcon": "",
  612 + "authId": 0,
  613 + "authPersional": "",
  614 + "authTitle": "",
  615 + "banControl": 0,
  616 + "categoryAuth": "",
  617 + "cnLiveCommentControl": 1,
  618 + "cnLiveGiftControl": 1,
  619 + "cnLiveLikeControl": 1,
  620 + "cnLiveShareControl": 1,
  621 + "cnShareControl": 1,
  622 + "collectNum": 0,
  623 + "commentNum": 0,
  624 + "createTime": 1710409979000,
  625 + "fansNum": 9,
  626 + "honoraryIcon": "https://cdn.aikan.pdnews.cn/image/picture/202312/20231223173451966FdV.png",
  627 + "honoraryTitle": "快乐星球",
  628 + "id": 200698,
  629 + "introduction": "账号简介",
  630 + "isAttention": null,
  631 + "isComment": 1,
  632 + "isLike": 1,
  633 + "isVisiable": 1,
  634 + "likeNum": 6,
  635 + "liveCommentControl": 1,
  636 + "liveGiftControl": 1,
  637 + "liveLikeControl": 1,
  638 + "liveShareControl": 1,
  639 + "mainControl": 1,
  640 + "posterShareControl": 1,
  641 + "registTime": 1695201858000,
  642 + "shareControl": 1,
  643 + "shareNum": 0,
  644 + "status": 1,
  645 + "subjectType": null,
  646 + "updateTime": 1710409979000,
  647 + "userId": "567387477063621",
  648 + "userType": 1
  649 + },
  650 + {
  651 + "attentionCreatorId": "3004853",
  652 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/image/creator/2023092715/4727ab5db7604dbbac9ffb94ed03614e.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  653 + "attentionNum": 1,
  654 + "attentionUserId": "444300764043333",
  655 + "attentionUserName": "创作者账号7777",
  656 + "attentionUserType": 2,
  657 + "authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/yellow.png",
  658 + "authId": 2,
  659 + "authPersional": "",
  660 + "authTitle": "黄VV",
  661 + "banControl": 0,
  662 + "categoryAuth": "黄VV",
  663 + "cnLiveCommentControl": 1,
  664 + "cnLiveGiftControl": 1,
  665 + "cnLiveLikeControl": 1,
  666 + "cnLiveShareControl": 1,
  667 + "cnShareControl": 1,
  668 + "collectNum": 1,
  669 + "commentNum": 7,
  670 + "createTime": 1710409979000,
  671 + "fansNum": 13,
  672 + "honoraryIcon": "",
  673 + "honoraryTitle": "",
  674 + "id": 200697,
  675 + "introduction": "协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作",
  676 + "isAttention": null,
  677 + "isComment": 1,
  678 + "isLike": 1,
  679 + "isVisiable": 1,
  680 + "likeNum": 0,
  681 + "liveCommentControl": 1,
  682 + "liveGiftControl": 1,
  683 + "liveLikeControl": 1,
  684 + "liveShareControl": 1,
  685 + "mainControl": 1,
  686 + "posterShareControl": 0,
  687 + "registTime": 1695202406000,
  688 + "shareControl": 1,
  689 + "shareNum": 0,
  690 + "status": 1,
  691 + "subjectType": null,
  692 + "updateTime": 1710409979000,
  693 + "userId": "567387477063621",
  694 + "userType": 1
  695 + },
  696 + {
  697 + "attentionCreatorId": "3004849",
  698 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We140931534/CIX.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  699 + "attentionNum": 0,
  700 + "attentionUserId": "444200272593477",
  701 + "attentionUserName": "zhuaqu005",
  702 + "attentionUserType": 2,
  703 + "authIcon": "",
  704 + "authId": 0,
  705 + "authPersional": "",
  706 + "authTitle": "",
  707 + "banControl": 0,
  708 + "categoryAuth": "",
  709 + "cnLiveCommentControl": 1,
  710 + "cnLiveGiftControl": 1,
  711 + "cnLiveLikeControl": 1,
  712 + "cnLiveShareControl": 1,
  713 + "cnShareControl": 1,
  714 + "collectNum": 0,
  715 + "commentNum": 0,
  716 + "createTime": 1710409978000,
  717 + "fansNum": 10,
  718 + "honoraryIcon": "",
  719 + "honoraryTitle": "",
  720 + "id": 200696,
  721 + "introduction": "aaa",
  722 + "isAttention": null,
  723 + "isComment": 1,
  724 + "isLike": 1,
  725 + "isVisiable": 1,
  726 + "likeNum": 0,
  727 + "liveCommentControl": 1,
  728 + "liveGiftControl": 1,
  729 + "liveLikeControl": 1,
  730 + "liveShareControl": 1,
  731 + "mainControl": 1,
  732 + "posterShareControl": 1,
  733 + "registTime": 1695190066000,
  734 + "shareControl": 1,
  735 + "shareNum": 0,
  736 + "status": 1,
  737 + "subjectType": null,
  738 + "updateTime": 1710409978000,
  739 + "userId": "567387477063621",
  740 + "userType": 1
  741 + },
  742 + {
  743 + "attentionCreatorId": "3004841",
  744 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Tu155358686/Clu.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  745 + "attentionNum": 0,
  746 + "attentionUserId": "443539162419717",
  747 + "attentionUserName": "好主播007",
  748 + "attentionUserType": 2,
  749 + "authIcon": "",
  750 + "authId": 0,
  751 + "authPersional": "",
  752 + "authTitle": "",
  753 + "banControl": 0,
  754 + "categoryAuth": "",
  755 + "cnLiveCommentControl": 1,
  756 + "cnLiveGiftControl": 1,
  757 + "cnLiveLikeControl": 1,
  758 + "cnLiveShareControl": 1,
  759 + "cnShareControl": 1,
  760 + "collectNum": 0,
  761 + "commentNum": 0,
  762 + "createTime": 1710409975000,
  763 + "fansNum": 12,
  764 + "honoraryIcon": "",
  765 + "honoraryTitle": "",
  766 + "id": 200695,
  767 + "introduction": "qqq",
  768 + "isAttention": null,
  769 + "isComment": 1,
  770 + "isLike": 1,
  771 + "isVisiable": 1,
  772 + "likeNum": 0,
  773 + "liveCommentControl": 1,
  774 + "liveGiftControl": 1,
  775 + "liveLikeControl": 1,
  776 + "liveShareControl": 1,
  777 + "mainControl": 0,
  778 + "posterShareControl": 1,
  779 + "registTime": 1695110042000,
  780 + "shareControl": 1,
  781 + "shareNum": 0,
  782 + "status": 1,
  783 + "subjectType": null,
  784 + "updateTime": 1710409975000,
  785 + "userId": "567387477063621",
  786 + "userType": 1
  787 + },
  788 + {
  789 + "attentionCreatorId": "3004835",
  790 + "attentionHeadPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/20230919113007795/7uI.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
  791 + "attentionNum": 0,
  792 + "attentionUserId": "443416920261445",
  793 + "attentionUserName": "随风而起",
  794 + "attentionUserType": 2,
  795 + "authIcon": "",
  796 + "authId": 0,
  797 + "authPersional": "",
  798 + "authTitle": "",
  799 + "banControl": 0,
  800 + "categoryAuth": "",
  801 + "cnLiveCommentControl": 1,
  802 + "cnLiveGiftControl": 1,
  803 + "cnLiveLikeControl": 1,
  804 + "cnLiveShareControl": 1,
  805 + "cnShareControl": 1,
  806 + "collectNum": 0,
  807 + "commentNum": 0,
  808 + "createTime": 1710409975000,
  809 + "fansNum": 2291,
  810 + "honoraryIcon": "",
  811 + "honoraryTitle": "",
  812 + "id": 200694,
  813 + "introduction": "灰度号主",
  814 + "isAttention": null,
  815 + "isComment": 1,
  816 + "isLike": 1,
  817 + "isVisiable": 1,
  818 + "likeNum": 0,
  819 + "liveCommentControl": 1,
  820 + "liveGiftControl": 1,
  821 + "liveLikeControl": 1,
  822 + "liveShareControl": 1,
  823 + "mainControl": 0,
  824 + "posterShareControl": 1,
  825 + "registTime": 1695094442000,
  826 + "shareControl": 1,
  827 + "shareNum": 0,
  828 + "status": 1,
  829 + "subjectType": null,
  830 + "updateTime": 1710409975000,
  831 + "userId": "567387477063621",
  832 + "userType": 1
  833 + }
  834 + ],
  835 + "pageNum": 1,
  836 + "pageSize": 20,
  837 + "totalCount": 18
  838 + },
  839 + "message": "Success",
  840 + "meta": null,
  841 + "requestId": "",
  842 + "success": true,
  843 + "timestamp": 1710989304704
  844 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "articleCreation": 0,
  5 + "attentionNum": 22,
  6 + "authIcon": "",
  7 + "authId": 0,
  8 + "authPersonal": "",
  9 + "authTitle": "",
  10 + "avatarFrame": "",
  11 + "browseNum": 22,
  12 + "categoryAuth": "",
  13 + "city": "",
  14 + "cnContentPublish": 0,
  15 + "cnLivePublish": 0,
  16 + "cnShareControl": 0,
  17 + "collectNum": 4,
  18 + "commentNum": 0,
  19 + "contentPublish": 0,
  20 + "creatorId": "",
  21 + "district": "",
  22 + "dynamicControl": 0,
  23 + "dynamicCreation": 0,
  24 + "fansNum": 0,
  25 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png",
  26 + "honoraryIcon": "",
  27 + "honoraryTitle": "",
  28 + "introduction": "",
  29 + "isComment": 0,
  30 + "isLike": 0,
  31 + "livePublish": 0,
  32 + "liveSwitch": 1,
  33 + "mainControl": 1,
  34 + "originUserId": "",
  35 + "pictureCollectionCreation": 0,
  36 + "posterShareControl": 1,
  37 + "province": "",
  38 + "region": "安徽省",
  39 + "registTime": 1710227567000,
  40 + "reserveNum": 6,
  41 + "shareControl": 0,
  42 + "shareUrl": "",
  43 + "speakControl": 0,
  44 + "subjectType": 0,
  45 + "userId": "567387477063621",
  46 + "userName": "人民日报网友aPrtq5",
  47 + "userType": "1",
  48 + "videoCollectionCreation": 0,
  49 + "videoCreation": 0
  50 + },
  51 + "message": "Success",
  52 + "meta": null,
  53 + "requestId": "",
  54 + "success": true,
  55 + "timestamp": 1711357314033
  56 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "createTime": "2024-03-12 15:12:47",
  5 + "id": 132386,
  6 + "levelHead": "http://rmrb-video-content-sit.oss-cn-beijing.aliyuncs.com/sjbj-20240125/image/display/88c45bf56ac941b883c69bd8ed373164.png",
  7 + "levelId": 2,
  8 + "levelName": "初入武林",
  9 + "levelNum": 155,
  10 + "modifyTime": "2024-03-25 16:35:57",
  11 + "status": 1,
  12 + "userId": 567387477063621
  13 + },
  14 + "message": "Success",
  15 + "success": true,
  16 + "timestamp": 1711357314136
  17 +}
@@ -34,10 +34,12 @@ export { AboutPageUI } from "./components/page/about/AboutPageUI" @@ -34,10 +34,12 @@ export { AboutPageUI } from "./components/page/about/AboutPageUI"
34 34
35 export { PrivacySettingComponents } from "./components/page/PrivacySettingComponents" 35 export { PrivacySettingComponents } from "./components/page/PrivacySettingComponents"
36 36
37 -export { AppointmentListUI } from "./components/page/mine/AppointmentListUI" 37 +export { AppointmentListUI } from "./components/page/mine/appointment/AppointmentListUI"
38 38
39 export { AccountAndSecurityLayout } from "./components/page/AccountAndSecurityLayout" 39 export { AccountAndSecurityLayout } from "./components/page/AccountAndSecurityLayout"
40 40
41 export { SettingPasswordLayout } from "./components/page/SettingPasswordLayout" 41 export { SettingPasswordLayout } from "./components/page/SettingPasswordLayout"
42 42
43 export { FollowFirstTabsComponent } from "./components/page/mine/follow/FollowFirstTabsComponent" 43 export { FollowFirstTabsComponent } from "./components/page/mine/follow/FollowFirstTabsComponent"
  44 +
  45 +export { MyHomeComponent } from "./components/page/mine/MyHomeComponent"
@@ -17,15 +17,14 @@ const TAG = 'MinePageComponent'; @@ -17,15 +17,14 @@ const TAG = 'MinePageComponent';
17 export struct MinePageComponent { 17 export struct MinePageComponent {
18 //是否是创作者 18 //是否是创作者
19 @State isCreator:boolean = false 19 @State isCreator:boolean = false
20 - @State isLogin:boolean = true 20 + @State isLogin:boolean = true //默认 false 测试放开
21 @State personalData:MinePagePersonalFunctionsItem[] = [] 21 @State personalData:MinePagePersonalFunctionsItem[] = []
22 @State creatorData:MinePageCreatorFunctionsItem[] = [] 22 @State creatorData:MinePageCreatorFunctionsItem[] = []
23 @State moreData:MinePageMoreFunctionModel[] = [] 23 @State moreData:MinePageMoreFunctionModel[] = []
24 scroller: Scroller = new Scroller() 24 scroller: Scroller = new Scroller()
25 25
26 aboutToAppear(){ 26 aboutToAppear(){
27 - //登录信息 TODO  
28 - 27 + this.getUserLogin()
29 this.getFunctionData() 28 this.getFunctionData()
30 } 29 }
31 30
@@ -77,4 +76,15 @@ export struct MinePageComponent { @@ -77,4 +76,15 @@ export struct MinePageComponent {
77 .height('100%') 76 .height('100%')
78 } 77 }
79 78
  79 + getUserLogin() {
  80 + // let userid = await SPHelper.default.get(SpConstants.USER_ID,"")
  81 + // if(StringUtils.isNotEmpty(userid)){
  82 + // this.isLogin = true
  83 + // let userName = await SPHelper.default.get(SpConstants.USER_NAME,"") as string
  84 + // this.userName = userName
  85 + // }else{
  86 + // this.isLogin = false
  87 + // }
  88 + }
  89 +
80 } 90 }
@@ -64,7 +64,7 @@ export default struct MinePageCreatorFunctionUI { @@ -64,7 +64,7 @@ export default struct MinePageCreatorFunctionUI {
64 console.log(index+"") 64 console.log(index+"")
65 }).width('169lpx') 65 }).width('169lpx')
66 .height('117lpx') 66 .height('117lpx')
67 - }, item => item) 67 + })
68 } 68 }
69 .rowsTemplate('1fr') 69 .rowsTemplate('1fr')
70 .columnsTemplate('1fr 1fr 1fr 1fr') 70 .columnsTemplate('1fr 1fr 1fr 1fr')
  1 +import MinePageDatasModel from '../../../model/MinePageDatasModel'
1 import RouteManager from '../../../utils/RouteManager' 2 import RouteManager from '../../../utils/RouteManager'
  3 +const TAG = "MinePageUserSimpleInfoUI"
2 4
3 @Component 5 @Component
4 export default struct MinePageUserSimpleInfoUI { 6 export default struct MinePageUserSimpleInfoUI {
5 @Prop isLogin:boolean 7 @Prop isLogin:boolean
  8 + @State userName:string = "登陆注册"
  9 + @State headPhotoUrl:string = ""
  10 + @State levelHead:string = ""
  11 + @State levelId:number = 0
  12 +
  13 +
  14 + aboutToAppear(){
  15 + if(this.isLogin){
  16 + this.getUserInfo()
  17 + this.getUserLevel()
  18 + }
  19 + }
6 20
7 build(){ 21 build(){
8 Row(){ 22 Row(){
9 //头像 23 //头像
10 Stack(){ 24 Stack(){
11 - Button({type:ButtonType.Circle})  
12 - .backgroundColor($r('app.color.main_red'))  
13 - .width('110lpx')  
14 - .height('110lpx')  
15 - Image($r('app.media.mine_head_icon')) 25 + Image(this.headPhotoUrl)
  26 + .alt($r('app.media.default_head'))
16 .width('108lpx') 27 .width('108lpx')
17 .height('108lpx') 28 .height('108lpx')
18 .objectFit(ImageFit.Cover) 29 .objectFit(ImageFit.Cover)
19 .borderRadius(50) 30 .borderRadius(50)
20 - }.width('110lpx')  
21 - .height('110lpx') 31 +
  32 + Image(this.levelHead)
  33 + .width('120lpx')
  34 + .height('120lpx')
  35 + .objectFit(ImageFit.Cover)
  36 + .borderRadius(50)
  37 + }.width('120lpx')
  38 + .height('120lpx')
22 .alignContent(Alignment.Center) 39 .alignContent(Alignment.Center)
23 .onClick(()=>{ 40 .onClick(()=>{
24 - RouteManager.jumpNewPage("pages/TestPage") 41 + if(!this.isLogin){
  42 + // RouteManager.jumpNewPage("pages/SettingAboutPage")
  43 + }else {
  44 + RouteManager.jumpNewPage("pages/MyHomePage")
  45 + }
25 }) 46 })
26 47
27 if(this.isLogin){ 48 if(this.isLogin){
28 //昵称信息 49 //昵称信息
29 Column(){ 50 Column(){
30 Row(){ 51 Row(){
31 - Text("人民日报6G5E3T") 52 + Text(this.userName)
32 .fontColor($r('app.color.color_222222')) 53 .fontColor($r('app.color.color_222222'))
33 .maxLines(1) 54 .maxLines(1)
34 .textOverflow({ overflow: TextOverflow.Ellipsis }) 55 .textOverflow({ overflow: TextOverflow.Ellipsis })
@@ -47,7 +68,7 @@ export default struct MinePageUserSimpleInfoUI { @@ -47,7 +68,7 @@ export default struct MinePageUserSimpleInfoUI {
47 .width('84lpx') 68 .width('84lpx')
48 .height('29lpx') 69 .height('29lpx')
49 .objectFit(ImageFit.Auto) 70 .objectFit(ImageFit.Auto)
50 - Text("等级8") 71 + Text(`等级${this.levelId}`)
51 .textAlign(TextAlign.Center) 72 .textAlign(TextAlign.Center)
52 .fontColor($r('app.color.white')) 73 .fontColor($r('app.color.white'))
53 .fontSize('19lpx') 74 .fontSize('19lpx')
@@ -108,4 +129,25 @@ export default struct MinePageUserSimpleInfoUI { @@ -108,4 +129,25 @@ export default struct MinePageUserSimpleInfoUI {
108 @Styles setFullHeight(){ 129 @Styles setFullHeight(){
109 .height('100%') 130 .height('100%')
110 } 131 }
  132 +
  133 + getUserInfo(){
  134 + MinePageDatasModel.getUserDetailData(getContext(this)).then((value)=>{
  135 + if(value!=null){
  136 + this.userName = value.userName
  137 + this.headPhotoUrl = value.headPhotoUrl
  138 + }
  139 + }).catch((err:Error)=>{
  140 + console.log(TAG,JSON.stringify(err))
  141 + })
  142 + }
  143 + getUserLevel(){
  144 + MinePageDatasModel.getUserLevelData(getContext(this)).then((value)=>{
  145 + if(value!=null){
  146 + this.levelHead = value.levelHead
  147 + this.levelId = value.levelId
  148 + }
  149 + }).catch((err:Error)=>{
  150 + console.log(TAG,JSON.stringify(err))
  151 + })
  152 + }
111 } 153 }
  1 +import router from '@ohos.router';
  2 +import { StringUtils } from 'wdKit/src/main/ets/utils/StringUtils';
  3 +import MinePageDatasModel from '../../../model/MinePageDatasModel';
  4 +import { HomePageBottomComponent } from './home/HomePageBottomComponent';
  5 +
  6 +const TAG = "MyHomeComponent"
  7 +
  8 +@Component
  9 +export struct MyHomeComponent {
  10 + @State tileOpacity: number = 0;
  11 + firstPositionY:number = 0;
  12 + fontColor: string = '#999999'
  13 + selectedFontColor: string = '#000000'
  14 + @State currentIndex: number = 0
  15 + private controller: TabsController = new TabsController()
  16 + isChangeToUserEdit = false;
  17 +
  18 + @State userName:string = ""
  19 + @State headPhotoUrl:string = ""
  20 + @State levelHead:string = ""
  21 + @State levelId:number = 0
  22 + @State desc:string = "点击添加简介,让大家认识你" //text 搞两个样式,如果三行,就显示 另外一个text 没有显示高度的
  23 + @State isHasIntroduction: boolean = false
  24 + @State browseNum:number = 0//阅读数
  25 + @State commentNum:number = 0//评论数
  26 + @State attentionNum:number = 0//关注数
  27 + registTime:number = 0//账号注册时间
  28 + @State registerTimeForDay:number = 0
  29 +
  30 + aboutToAppear(){
  31 + this.getUserInfo()
  32 + this.getUserLevel()
  33 + }
  34 +
  35 + build() {
  36 + Stack({ alignContent: Alignment.Top }){
  37 + Image($r('app.media.title_bg'))
  38 + .width('100%')
  39 + .height('355lpx')
  40 + .objectFit(ImageFit.Cover)
  41 +
  42 + Column(){
  43 + Stack({ alignContent: Alignment.Top }){
  44 + this.MineHomeTitleTransparent()
  45 + this.MineHomeTitleWhite()
  46 + }
  47 +
  48 + Scroll() {
  49 + Column() {
  50 + //用户信息区域
  51 + Row() {
  52 + Stack(){
  53 + Image(this.headPhotoUrl)
  54 + .alt($r('app.media.default_head'))
  55 + .width('115lpx')
  56 + .height('115lpx')
  57 + .objectFit(ImageFit.Cover)
  58 + .borderRadius(50)
  59 + Image(this.levelHead)
  60 + .width('130lpx')
  61 + .height('130lpx')
  62 + .objectFit(ImageFit.Cover)
  63 + .borderRadius(50)
  64 + }
  65 + Column() {
  66 + Row() {
  67 + Text(`${this.userName}`)
  68 + .fontColor($r('app.color.white'))
  69 + .maxLines(1)
  70 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  71 + .fontSize('38lpx')
  72 + .lineHeight('50lpx')
  73 + .fontWeight('500lpx')
  74 +
  75 + Text(`等级${this.levelId}`)
  76 + .textAlign(TextAlign.Center)
  77 + .fontColor($r('app.color.color_ED2800'))
  78 + .backgroundColor($r('app.color.white'))
  79 + .fontSize('19lpx')
  80 + .width('96lpx')
  81 + .height('35lpx')
  82 + .margin({ left: '10lpx' })
  83 + Blank()
  84 + }.width('507lpx')
  85 +
  86 + Row() {
  87 + Row() {
  88 + Text(`${this.browseNum}`)
  89 + .textStyle()
  90 + Text("阅读")
  91 + .textStyle2()
  92 + }
  93 + .margin({ right: '15lpx' })
  94 +
  95 + Divider()
  96 + .height('19lpx')
  97 + .width('2lpx')
  98 + .color($r('app.color.white'))
  99 + .vertical(true)
  100 + .opacity(0.4)
  101 + Row() {
  102 + Text(`${this.commentNum}`)
  103 + .textStyle()
  104 + Text("评论")
  105 + .textStyle2()
  106 + }.margin({ right: '15lpx', left: '15lpx' })
  107 +
  108 + Divider()
  109 + .height('19lpx')
  110 + .width('2lpx')
  111 + .color($r('app.color.white'))
  112 + .vertical(true)
  113 + .opacity(0.4)
  114 + Row() {
  115 + Text(`${this.attentionNum}`)
  116 + .textStyle()
  117 + Text("关注")
  118 + .textStyle2()
  119 + }.margin({ left: '15lpx' })
  120 + }.margin({ top: '23lpx' })
  121 + }.alignItems(HorizontalAlign.Start)
  122 + .margin({ left: '32lpx' })
  123 + }
  124 + .onAreaChange((oldValue: Area, newValue: Area) => {
  125 + if (this.firstPositionY === 0) {
  126 + this.firstPositionY = newValue.globalPosition.y as number
  127 + }else{
  128 + let persent = (this.firstPositionY - Number(newValue.globalPosition.y)) / (this.firstPositionY * 0.3)
  129 + if(persent > 1){
  130 + persent = 1
  131 + }
  132 + this.tileOpacity = persent
  133 + }
  134 + })
  135 + .backgroundColor($r('app.color.color_transparent'))
  136 + .height('184lpx')
  137 + .width('100%')
  138 + .padding({ left: '35lpx' })
  139 + //用户简介区域
  140 + Column() {
  141 + Row() {
  142 + Text(this.desc)
  143 + .fontSize('27lpx')
  144 + .maxLines(3)
  145 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  146 + .lineHeight('40lpx')
  147 + .fontWeight('400lpx')
  148 + .fontColor(this.isHasIntroduction?$r('app.color.color_222222'):$r('app.color.color_999999'))
  149 + .textAlign(TextAlign.Start)
  150 +
  151 + if(!this.isHasIntroduction){
  152 + Image($r('app.media.user_info_edit_icon'))
  153 + .width('27lpx')
  154 + .height('27lpx')
  155 + .objectFit(ImageFit.Auto)
  156 + }
  157 + }
  158 + Text(`来到人民日报${this.registerTimeForDay}天`)
  159 + .fontSize('23lpx')
  160 + .lineHeight('25lpx')
  161 + .fontWeight('400lpx')
  162 + .fontColor($r('app.color.color_999999'))
  163 + .textAlign(TextAlign.Start)
  164 + .margin({ top: '15lpx' })
  165 +
  166 + }.padding({ left: '31lpx',right:'31lpx',top:'19lpx',bottom:'31lpx'})
  167 + .alignItems(HorizontalAlign.Start)
  168 + .justifyContent(FlexAlign.Center)
  169 + .width('100%')
  170 + .backgroundColor($r('app.color.white'))
  171 + //间隔符
  172 +
  173 + Divider().width('100%').height('12lpx').color($r('app.color.color_F5F5F5')).strokeWidth('12lpx')
  174 +
  175 + //tab 页面
  176 + Tabs({controller: this.controller}) {
  177 + TabContent() {
  178 + HomePageBottomComponent({style:0})
  179 + }.tabBar(this.TabBuilder(0,"评论"))
  180 + TabContent() {
  181 + HomePageBottomComponent({style:1})
  182 + }.tabBar(this.TabBuilder(1,"关注"))
  183 + }
  184 + .backgroundColor($r('app.color.white'))
  185 + .animationDuration(0)
  186 + .onChange((index: number) => {
  187 + this.currentIndex = index
  188 + })
  189 + .vertical(false)
  190 + .height("100%")
  191 + }.width("100%")
  192 + }
  193 + .edgeEffect(EdgeEffect.None)
  194 + .scrollBar(BarState.Off)
  195 + .width('100%')
  196 + .height('100%')
  197 + }
  198 + }.width('100%')
  199 + .height('100%')
  200 +
  201 + }
  202 + @Builder MineHomeTitleTransparent() {
  203 + RelativeContainer() {
  204 + //标题栏目
  205 + Image($r('app.media.icon_arrow_left_white') )
  206 + .width('46lpx')
  207 + .height('46lpx')
  208 + .objectFit(ImageFit.Auto)
  209 + .id("back_icon")
  210 + .alignRules({
  211 + center: { anchor: "__container__", align: VerticalAlign.Center },
  212 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  213 + })
  214 + .margin({ left: '31lpx' })
  215 + .onClick(() => {
  216 + router.back()
  217 + })
  218 +
  219 + Text("编辑资料")
  220 + .height('42lpx')
  221 + .maxLines(1)
  222 + .id("rightText")
  223 + .fontSize('35lpx')
  224 + .fontWeight('400lpx')
  225 + .fontColor($r('app.color.white') )
  226 + .lineHeight('42lpx')
  227 + .alignRules({
  228 + center: { anchor: "__container__", align: VerticalAlign.Center },
  229 + right: { anchor: "__container__", align: HorizontalAlign.End }
  230 + })
  231 + .margin({ right: '31lpx' })
  232 + .onClick(()=>{
  233 + this.editUserInfo()
  234 + })
  235 + }
  236 + .visibility(this.tileOpacity > 0 ? 1 : 0)
  237 + .height('84lpx')
  238 + .width('100%')
  239 + .backgroundColor($r('app.color.color_transparent'))
  240 + }
  241 +
  242 +
  243 + @Builder MineHomeTitleWhite() {
  244 + RelativeContainer() {
  245 + //标题栏目
  246 + Image($r('app.media.back_icon'))
  247 + .width('46lpx')
  248 + .height('46lpx')
  249 + .objectFit(ImageFit.Auto)
  250 + .id("back_icon")
  251 + .alignRules({
  252 + center: { anchor: "__container__", align: VerticalAlign.Center },
  253 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  254 + })
  255 + .margin({ left: '31lpx' })
  256 + .onClick(() => {
  257 + router.back()
  258 + })
  259 + Image($r('app.media.default_head'))
  260 + .width('60lpx')
  261 + .height('60lpx')
  262 + .objectFit(ImageFit.Auto)
  263 + .id("head_icon")
  264 + .alignRules({
  265 + center: { anchor: "__container__", align: VerticalAlign.Center },
  266 + left: { anchor: "back_icon", align: HorizontalAlign.End }
  267 + })
  268 + .margin({ left: '31lpx' })
  269 + .onClick(() => {
  270 + router.back()
  271 + })
  272 +
  273 + Text("我的昵称")
  274 + .height('42lpx')
  275 + .maxLines(1)
  276 + .id("title")
  277 + .fontSize('35lpx')
  278 + .fontWeight('400lpx')
  279 + .fontColor($r('app.color.color_222222'))
  280 + .lineHeight('42lpx')
  281 + .alignRules({
  282 + center: { anchor: "__container__", align: VerticalAlign.Center },
  283 + left: { anchor: "head_icon", align: HorizontalAlign.End }
  284 + })
  285 + .margin({ left: '12lpx' })
  286 +
  287 + Text("编辑资料")
  288 + .height('42lpx')
  289 + .maxLines(1)
  290 + .id("rightText")
  291 + .fontSize('35lpx')
  292 + .fontWeight('400lpx')
  293 + .fontColor($r('app.color.color_222222'))
  294 + .lineHeight('42lpx')
  295 + .alignRules({
  296 + center: { anchor: "__container__", align: VerticalAlign.Center },
  297 + right: { anchor: "__container__", align: HorizontalAlign.End }
  298 + })
  299 + .margin({ right: '31lpx' })
  300 + .onClick(()=>{
  301 + this.editUserInfo()
  302 + })
  303 + }
  304 + .visibility(this.tileOpacity > 0 ? 0 : 1)
  305 + .height('84lpx')
  306 + .width('100%')
  307 + .backgroundColor($r('app.color.white'))
  308 + .opacity(this.tileOpacity )
  309 +
  310 + }
  311 +
  312 + @Builder TabBuilder(index: number, title: string) {
  313 + Stack(){
  314 + Text(title)
  315 + .height('38lpx')
  316 + .fontSize('33lpx')
  317 + .fontWeight(this.currentIndex === index ? 600 : 400)
  318 + .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
  319 + .lineHeight('38lpx')
  320 +
  321 + if(this.currentIndex === index){
  322 + Divider()
  323 + .width('31lpx')
  324 + .height('4lpx')
  325 + .color('#ED2800')
  326 + .strokeWidth('4lpx')
  327 + .margin({top:'50lpx'})
  328 + .id("divTag")
  329 + }
  330 + }.onClick(()=>{
  331 + this.currentIndex = index
  332 + this.controller.changeIndex(this.currentIndex)
  333 + })
  334 + .height('100%')
  335 + .width('100%')
  336 + .margin({right:'9lpx'})
  337 + }
  338 +
  339 + /**
  340 + * 跳转编辑资料(防止二次点击)
  341 + */
  342 + editUserInfo(){
  343 + if(!this.isChangeToUserEdit){
  344 + this.isChangeToUserEdit = true;
  345 + let c = setInterval(() => {
  346 + this.isChangeToUserEdit = false
  347 + }, 1000);
  348 + //route 跳转写这里 TODO
  349 + }
  350 + }
  351 +
  352 + getUserInfo(){
  353 + MinePageDatasModel.getUserDetailData(getContext(this)).then((value)=>{
  354 + if(value!=null){
  355 + this.userName = value.userName
  356 + this.headPhotoUrl = value.headPhotoUrl
  357 + if(StringUtils.isNotEmpty(value.introduction)){
  358 + this.desc = value.introduction
  359 + this.isHasIntroduction = true
  360 + }
  361 + this.browseNum = value.browseNum
  362 + this.commentNum = value.commentNum
  363 + this.attentionNum = value.attentionNum
  364 + this.registTime = value.registTime
  365 + this.getRegisterDays()
  366 + }
  367 + }).catch((err:Error)=>{
  368 + console.log(TAG,JSON.stringify(err))
  369 + })
  370 + }
  371 + getUserLevel(){
  372 + MinePageDatasModel.getUserLevelData(getContext(this)).then((value)=>{
  373 + if(value!=null){
  374 + this.levelHead = value.levelHead
  375 + this.levelId = value.levelId
  376 + }
  377 + }).catch((err:Error)=>{
  378 + console.log(TAG,JSON.stringify(err))
  379 + })
  380 + }
  381 + getRegisterDays(){
  382 + if(this.registTime!=null){
  383 + let curDate = new Date()
  384 + this.registerTimeForDay = Math.ceil((curDate.getTime()-this.registTime)/(1000*60*60*24))
  385 + }
  386 + }
  387 +}
  388 +
  389 +@Extend(Text) function textStyle() {
  390 + .fontColor($r('app.color.white'))
  391 + .textStyleDefault()
  392 + .margin({ right: '10lpx' })
  393 +}
  394 +
  395 +@Extend(Text) function textStyle2() {
  396 + .textStyleDefault()
  397 + .fontColor($r('app.color.color_B2FFFFFF'))
  398 +}
  399 +
  400 +@Extend(Text) function textStyleDefault() {
  401 + .textAlign(TextAlign.Start)
  402 + .fontSize('23lpx')
  403 + .fontWeight('400lpx')
  404 + .lineHeight('31lpx')
  405 +}
1 -import { MineAppointmentItem } from '../../../viewmodel/MineAppointmentItem' 1 +import { MineAppointmentItem } from '../../../../viewmodel/MineAppointmentItem'
2 2
3 @Component 3 @Component
4 export struct AppointmentListChildComponent{ 4 export struct AppointmentListChildComponent{
1 -import { AppointmentListChildComponent } from '../mine/AppointmentListChildComponent';  
2 -import { CustomTitleUI } from '../../reusable/CustomTitleUI'  
3 -import { ListHasNoMoreDataUI } from '../../reusable/ListHasNoMoreDataUI';  
4 -import { MineAppointmentItem } from '../../../viewmodel/MineAppointmentItem'; 1 +import { AppointmentListChildComponent } from './AppointmentListChildComponent';
  2 +import { CustomTitleUI } from '../../../reusable/CustomTitleUI'
  3 +import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI';
  4 +import { MineAppointmentItem } from '../../../../viewmodel/MineAppointmentItem';
5 import { LazyDataSource, StringUtils } from 'wdKit'; 5 import { LazyDataSource, StringUtils } from 'wdKit';
6 -import MinePageDatasModel from '../../../model/MinePageDatasModel'; 6 +import MinePageDatasModel from '../../../../model/MinePageDatasModel';
7 const TAG = "AppointmentListUI" 7 const TAG = "AppointmentListUI"
8 8
9 @Component 9 @Component
10 export struct AppointmentListUI{ 10 export struct AppointmentListUI{
11 @State data: LazyDataSource<MineAppointmentItem> = new LazyDataSource(); 11 @State data: LazyDataSource<MineAppointmentItem> = new LazyDataSource();
  12 + @State count:number = 0;
12 @State isLoading:boolean = false 13 @State isLoading:boolean = false
13 @State hasMore:boolean = true 14 @State hasMore:boolean = true
14 curPageNum:number = 1; 15 curPageNum:number = 1;
@@ -21,6 +22,9 @@ export struct AppointmentListUI{ @@ -21,6 +22,9 @@ export struct AppointmentListUI{
21 Column() { 22 Column() {
22 //标题栏目 23 //标题栏目
23 CustomTitleUI({titleName:"预约列表"}) 24 CustomTitleUI({titleName:"预约列表"})
  25 + if(this.count == 0){
  26 + ListHasNoMoreDataUI({style:2})
  27 + }else{
24 //刷新控件 TODO 28 //刷新控件 TODO
25 //List 29 //List
26 List({ space: '6lpx' }) { 30 List({ space: '6lpx' }) {
@@ -40,6 +44,7 @@ export struct AppointmentListUI{ @@ -40,6 +44,7 @@ export struct AppointmentListUI{
40 } 44 }
41 } 45 }
42 }.cachedCount(4) 46 }.cachedCount(4)
  47 + .scrollBar(BarState.Off)
43 .margin({top:'23lpx',left:'23lpx',right:'23lpx'}) 48 .margin({top:'23lpx',left:'23lpx',right:'23lpx'})
44 .layoutWeight(1) 49 .layoutWeight(1)
45 .onReachEnd(()=>{ 50 .onReachEnd(()=>{
@@ -50,6 +55,7 @@ export struct AppointmentListUI{ @@ -50,6 +55,7 @@ export struct AppointmentListUI{
50 } 55 }
51 }) 56 })
52 } 57 }
  58 + }
53 .backgroundColor($r('app.color.color_F9F9F9')) 59 .backgroundColor($r('app.color.color_F9F9F9'))
54 .height('100%') 60 .height('100%')
55 .width('100%') 61 .width('100%')
@@ -71,6 +77,7 @@ export struct AppointmentListUI{ @@ -71,6 +77,7 @@ export struct AppointmentListUI{
71 } 77 }
72 }) 78 })
73 this.data.notifyDataReload() 79 this.data.notifyDataReload()
  80 + this.count = this.data.totalCount()
74 if (this.data.totalCount() < value.totalCount) { 81 if (this.data.totalCount() < value.totalCount) {
75 this.curPageNum++ 82 this.curPageNum++
76 }else { 83 }else {
1 -import { ResourcesUtils } from 'wdKit'  
2 -import { ResponseDTO } from 'wdNetwork' 1 +import MinePageDatasModel from '../../../../model/MinePageDatasModel'
3 import { FollowListItem } from '../../../../viewmodel/FollowListItem' 2 import { FollowListItem } from '../../../../viewmodel/FollowListItem'
4 import { CustomTitleUI } from '../../../reusable/CustomTitleUI' 3 import { CustomTitleUI } from '../../../reusable/CustomTitleUI'
5 import { FollowSecondTabsComponent } from './FollowSecondTabsComponent' 4 import { FollowSecondTabsComponent } from './FollowSecondTabsComponent'
  5 +const TAG = "FollowFirstTabsComponent"
6 6
7 @Component 7 @Component
8 export struct FollowFirstTabsComponent{ 8 export struct FollowFirstTabsComponent{
9 @State currentIndex: number = 0 9 @State currentIndex: number = 0
10 private controller: TabsController = new TabsController() 10 private controller: TabsController = new TabsController()
11 @State data:FollowListItem[] = [] 11 @State data:FollowListItem[] = []
  12 + @Prop changeIndex: number
12 fontColor: string = '#999999' 13 fontColor: string = '#999999'
13 selectedFontColor: string = '#000000' 14 selectedFontColor: string = '#000000'
14 15
15 aboutToAppear(){ 16 aboutToAppear(){
16 - this.data.push(new FollowListItem("我的"))  
17 // let res = JSON.parse(`{"code":"0","data":[{"children":[],"directoryName":"阅读","directoryWeight":99,"id":165,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[{"directoryName":"三二","directoryWeight":2,"id":120,"isShow":1,"level":3,"parentId":118,"rootId":117},{"directoryName":"三级","directoryWeight":1,"id":119,"isShow":1,"level":3,"parentId":118,"rootId":117}],"directoryName":"二级","directoryWeight":1,"id":118,"isShow":1,"level":2,"parentId":117,"rootId":117}],"directoryName":"幽游白书","directoryWeight":33,"id":117,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"推荐","directoryWeight":9,"id":386,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"政务","directoryWeight":9,"id":379,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"推荐","directoryWeight":0,"id":335,"isShow":1,"level":2,"parentId":320,"rootId":320}],"directoryName":"推荐","directoryWeight":9,"id":320,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"媒体","directoryWeight":8,"id":390,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"媒体","directoryWeight":8,"id":323,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"自媒体","directoryWeight":7,"id":329,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"名人","directoryWeight":6,"id":389,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"测试","directoryWeight":0,"id":338,"isShow":1,"level":2,"parentId":324,"rootId":324}],"directoryName":"名人","directoryWeight":6,"id":324,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"2级目录","directoryWeight":0,"id":340,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"3级测试","directoryWeight":0,"id":368,"isShow":1,"level":3,"parentId":339,"rootId":312}],"directoryName":"二级目录","directoryWeight":0,"id":339,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"企业","directoryWeight":1,"id":348,"isShow":1,"level":3,"parentId":336,"rootId":312},{"directoryName":"部委","directoryWeight":0,"id":344,"isShow":1,"level":3,"parentId":336,"rootId":312},{"directoryName":"地方","directoryWeight":0,"id":341,"isShow":1,"level":3,"parentId":336,"rootId":312}],"directoryName":"类型","directoryWeight":0,"id":336,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"贵州省","directoryWeight":0,"id":378,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"西藏自治区","directoryWeight":0,"id":377,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"四川省","directoryWeight":0,"id":376,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"重庆市","directoryWeight":0,"id":375,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"湖南省","directoryWeight":0,"id":374,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"云南省","directoryWeight":0,"id":373,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"广西壮族自治区","directoryWeight":0,"id":372,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"宁夏回族自治区","directoryWeight":0,"id":371,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"湖北省","directoryWeight":0,"id":370,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"青海省","directoryWeight":0,"id":369,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"陕西省","directoryWeight":0,"id":367,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"甘肃省","directoryWeight":0,"id":366,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"吉林省","directoryWeight":0,"id":365,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"广东省","directoryWeight":0,"id":364,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"海南省","directoryWeight":0,"id":363,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"辽宁省","directoryWeight":0,"id":362,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"江苏省","directoryWeight":0,"id":361,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"新疆维吾尔族自治区","directoryWeight":0,"id":360,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"福建省","directoryWeight":0,"id":359,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"山东省","directoryWeight":0,"id":358,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"河南省","directoryWeight":0,"id":357,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"浙江省","directoryWeight":0,"id":356,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"安徽省","directoryWeight":0,"id":355,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"上海市","directoryWeight":0,"id":354,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"河北省","directoryWeight":0,"id":353,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"黑龙江省","directoryWeight":0,"id":352,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"江西省","directoryWeight":0,"id":351,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"内蒙古自治区","directoryWeight":0,"id":350,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"北京市","directoryWeight":0,"id":349,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"山西省","directoryWeight":0,"id":346,"isShow":1,"level":3,"parentId":332,"rootId":312}],"directoryName":"地域","directoryWeight":0,"id":332,"isShow":1,"level":2,"parentId":312,"rootId":312}],"directoryName":"政务","directoryWeight":5,"id":312,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"学校","directoryWeight":4,"id":331,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"机构","directoryWeight":3,"id":330,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[{"directoryName":"新闻联播","directoryWeight":3,"id":79,"isShow":1,"level":3,"parentId":75,"rootId":74},{"directoryName":"第三季","directoryWeight":2,"id":78,"isShow":1,"level":3,"parentId":75,"rootId":74},{"directoryName":"三级","directoryWeight":1,"id":76,"isShow":1,"level":3,"parentId":75,"rootId":74}],"directoryName":"短视频","directoryWeight":1,"id":75,"isShow":1,"level":2,"parentId":74,"rootId":74}],"directoryName":"创作","directoryWeight":3,"id":74,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"教学","directoryWeight":2,"id":72,"isShow":1,"level":2,"parentId":64,"rootId":64},{"children":[],"directoryName":"热门","directoryWeight":1,"id":73,"isShow":1,"level":2,"parentId":64,"rootId":64},{"children":[],"directoryName":"赛事","directoryWeight":1,"id":71,"isShow":1,"level":2,"parentId":64,"rootId":64}],"directoryName":"游戏","directoryWeight":2,"id":64,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"新闻","directoryWeight":1,"id":315,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"趣闻","directoryWeight":6,"id":70,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"时政","directoryWeight":5,"id":69,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"农业","directoryWeight":3,"id":68,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"娱乐","directoryWeight":3,"id":67,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"科技","directoryWeight":2,"id":66,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"国际","directoryWeight":1,"id":65,"isShow":1,"level":2,"parentId":63,"rootId":63}],"directoryName":"新闻","directoryWeight":1,"id":63,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"公安","directoryWeight":0,"id":388,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"dddd","directoryWeight":0,"id":387,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"健康","directoryWeight":0,"id":384,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"综合","directoryWeight":0,"id":328,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"房产","directoryWeight":0,"id":327,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"健康","directoryWeight":0,"id":318,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"历史","directoryWeight":0,"id":310,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"dddd","directoryWeight":0,"id":309,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"aaaa","directoryWeight":1,"id":333,"isShow":1,"level":2,"parentId":308,"rootId":308},{"children":[],"directoryName":"qqq","directoryWeight":0,"id":334,"isShow":1,"level":2,"parentId":308,"rootId":308}],"directoryName":"dddd","directoryWeight":0,"id":308,"isShow":1,"level":1,"parentId":0,"rootId":0}],"message":"Success","success":true,"timestamp":1710741803593}`) as ResponseDTO<FollowListItem[]> 17 // let res = JSON.parse(`{"code":"0","data":[{"children":[],"directoryName":"阅读","directoryWeight":99,"id":165,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[{"directoryName":"三二","directoryWeight":2,"id":120,"isShow":1,"level":3,"parentId":118,"rootId":117},{"directoryName":"三级","directoryWeight":1,"id":119,"isShow":1,"level":3,"parentId":118,"rootId":117}],"directoryName":"二级","directoryWeight":1,"id":118,"isShow":1,"level":2,"parentId":117,"rootId":117}],"directoryName":"幽游白书","directoryWeight":33,"id":117,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"推荐","directoryWeight":9,"id":386,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"政务","directoryWeight":9,"id":379,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"推荐","directoryWeight":0,"id":335,"isShow":1,"level":2,"parentId":320,"rootId":320}],"directoryName":"推荐","directoryWeight":9,"id":320,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"媒体","directoryWeight":8,"id":390,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"媒体","directoryWeight":8,"id":323,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"自媒体","directoryWeight":7,"id":329,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"名人","directoryWeight":6,"id":389,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"测试","directoryWeight":0,"id":338,"isShow":1,"level":2,"parentId":324,"rootId":324}],"directoryName":"名人","directoryWeight":6,"id":324,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"2级目录","directoryWeight":0,"id":340,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"3级测试","directoryWeight":0,"id":368,"isShow":1,"level":3,"parentId":339,"rootId":312}],"directoryName":"二级目录","directoryWeight":0,"id":339,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"企业","directoryWeight":1,"id":348,"isShow":1,"level":3,"parentId":336,"rootId":312},{"directoryName":"部委","directoryWeight":0,"id":344,"isShow":1,"level":3,"parentId":336,"rootId":312},{"directoryName":"地方","directoryWeight":0,"id":341,"isShow":1,"level":3,"parentId":336,"rootId":312}],"directoryName":"类型","directoryWeight":0,"id":336,"isShow":1,"level":2,"parentId":312,"rootId":312},{"children":[{"directoryName":"贵州省","directoryWeight":0,"id":378,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"西藏自治区","directoryWeight":0,"id":377,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"四川省","directoryWeight":0,"id":376,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"重庆市","directoryWeight":0,"id":375,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"湖南省","directoryWeight":0,"id":374,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"云南省","directoryWeight":0,"id":373,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"广西壮族自治区","directoryWeight":0,"id":372,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"宁夏回族自治区","directoryWeight":0,"id":371,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"湖北省","directoryWeight":0,"id":370,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"青海省","directoryWeight":0,"id":369,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"陕西省","directoryWeight":0,"id":367,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"甘肃省","directoryWeight":0,"id":366,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"吉林省","directoryWeight":0,"id":365,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"广东省","directoryWeight":0,"id":364,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"海南省","directoryWeight":0,"id":363,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"辽宁省","directoryWeight":0,"id":362,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"江苏省","directoryWeight":0,"id":361,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"新疆维吾尔族自治区","directoryWeight":0,"id":360,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"福建省","directoryWeight":0,"id":359,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"山东省","directoryWeight":0,"id":358,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"河南省","directoryWeight":0,"id":357,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"浙江省","directoryWeight":0,"id":356,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"安徽省","directoryWeight":0,"id":355,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"上海市","directoryWeight":0,"id":354,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"河北省","directoryWeight":0,"id":353,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"黑龙江省","directoryWeight":0,"id":352,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"江西省","directoryWeight":0,"id":351,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"内蒙古自治区","directoryWeight":0,"id":350,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"北京市","directoryWeight":0,"id":349,"isShow":1,"level":3,"parentId":332,"rootId":312},{"directoryName":"山西省","directoryWeight":0,"id":346,"isShow":1,"level":3,"parentId":332,"rootId":312}],"directoryName":"地域","directoryWeight":0,"id":332,"isShow":1,"level":2,"parentId":312,"rootId":312}],"directoryName":"政务","directoryWeight":5,"id":312,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"学校","directoryWeight":4,"id":331,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"机构","directoryWeight":3,"id":330,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[{"directoryName":"新闻联播","directoryWeight":3,"id":79,"isShow":1,"level":3,"parentId":75,"rootId":74},{"directoryName":"第三季","directoryWeight":2,"id":78,"isShow":1,"level":3,"parentId":75,"rootId":74},{"directoryName":"三级","directoryWeight":1,"id":76,"isShow":1,"level":3,"parentId":75,"rootId":74}],"directoryName":"短视频","directoryWeight":1,"id":75,"isShow":1,"level":2,"parentId":74,"rootId":74}],"directoryName":"创作","directoryWeight":3,"id":74,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"教学","directoryWeight":2,"id":72,"isShow":1,"level":2,"parentId":64,"rootId":64},{"children":[],"directoryName":"热门","directoryWeight":1,"id":73,"isShow":1,"level":2,"parentId":64,"rootId":64},{"children":[],"directoryName":"赛事","directoryWeight":1,"id":71,"isShow":1,"level":2,"parentId":64,"rootId":64}],"directoryName":"游戏","directoryWeight":2,"id":64,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"新闻","directoryWeight":1,"id":315,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"趣闻","directoryWeight":6,"id":70,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"时政","directoryWeight":5,"id":69,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"农业","directoryWeight":3,"id":68,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"娱乐","directoryWeight":3,"id":67,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"科技","directoryWeight":2,"id":66,"isShow":1,"level":2,"parentId":63,"rootId":63},{"children":[],"directoryName":"国际","directoryWeight":1,"id":65,"isShow":1,"level":2,"parentId":63,"rootId":63}],"directoryName":"新闻","directoryWeight":1,"id":63,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"公安","directoryWeight":0,"id":388,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"dddd","directoryWeight":0,"id":387,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"健康","directoryWeight":0,"id":384,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"综合","directoryWeight":0,"id":328,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"房产","directoryWeight":0,"id":327,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"健康","directoryWeight":0,"id":318,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"历史","directoryWeight":0,"id":310,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[],"directoryName":"dddd","directoryWeight":0,"id":309,"isShow":1,"level":1,"parentId":0,"rootId":0},{"children":[{"children":[],"directoryName":"aaaa","directoryWeight":1,"id":333,"isShow":1,"level":2,"parentId":308,"rootId":308},{"children":[],"directoryName":"qqq","directoryWeight":0,"id":334,"isShow":1,"level":2,"parentId":308,"rootId":308}],"directoryName":"dddd","directoryWeight":0,"id":308,"isShow":1,"level":1,"parentId":0,"rootId":0}],"message":"Success","success":true,"timestamp":1710741803593}`) as ResponseDTO<FollowListItem[]>
18 // res.data.forEach(element => { 18 // res.data.forEach(element => {
19 // this.data.push(element) 19 // this.data.push(element)
20 // }); 20 // });
21 -  
22 - ResourcesUtils.getResourcesJson<ResponseDTO<FollowListItem[]>>('follow_list_data.json', getContext(this)).then((success)=>{  
23 - success.data?.forEach(element => { 21 + MinePageDatasModel.getFollowListData(getContext(this)).then((value)=>{
  22 + this.data.push(new FollowListItem("我的"))
  23 + value.forEach((element)=>{
24 this.data.push(element) 24 this.data.push(element)
25 - }); 25 + })
26 console.log("ycg",this.data.length.toString()); 26 console.log("ycg",this.data.length.toString());
  27 + if(this.controller != null && this.data.length>1 && this.changeIndex === 1){
  28 + //个人主页 跳转 关注页 tab 2
  29 + let intervalID = setInterval(() => {
  30 + this.currentIndex = this.changeIndex
  31 + this.controller.changeIndex(this.currentIndex)
  32 + clearInterval(intervalID);
  33 + }, 500);
  34 + }
  35 + }).catch((err:Error)=>{
  36 + console.log(TAG,JSON.stringify(err))
27 }) 37 })
28 } 38 }
29 39
1 -import { LazyDataSource } from 'wdKit'; 1 +import { LazyDataSource, StringUtils } from 'wdKit';
  2 +import MinePageDatasModel from '../../../../model/MinePageDatasModel';
2 import { FollowListDetailItem } from '../../../../viewmodel/FollowListDetailItem' 3 import { FollowListDetailItem } from '../../../../viewmodel/FollowListDetailItem'
  4 +import { FollowListDetailRequestItem } from '../../../../viewmodel/FollowListDetailRequestItem';
  5 +import { FollowListStatusRequestItem } from '../../../../viewmodel/FollowListStatusRequestItem';
  6 +import { MineFollowListDetailItem } from '../../../../viewmodel/MineFollowListDetailItem';
  7 +import { QueryListIsFollowedItem } from '../../../../viewmodel/QueryListIsFollowedItem';
3 import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI'; 8 import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI';
4 9
5 const TAG = "FollowListDetailUI" 10 const TAG = "FollowListDetailUI"
@@ -7,11 +12,10 @@ const TAG = "FollowListDetailUI" @@ -7,11 +12,10 @@ const TAG = "FollowListDetailUI"
7 export struct FollowListDetailUI{ 12 export struct FollowListDetailUI{
8 @State creatorDirectoryId:number = -1; 13 @State creatorDirectoryId:number = -1;
9 @State data: LazyDataSource<FollowListDetailItem> = new LazyDataSource(); 14 @State data: LazyDataSource<FollowListDetailItem> = new LazyDataSource();
  15 + @State count:number = 0;
10 @State isLoading:boolean = false 16 @State isLoading:boolean = false
11 @State hasMore:boolean = true 17 @State hasMore:boolean = true
12 curPageNum:number = 1; 18 curPageNum:number = 1;
13 - headUrl = "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th211436299/GLN.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg"  
14 -  
15 19
16 aboutToAppear(){ 20 aboutToAppear(){
17 console.log("YCG","aboutToAppear==="+this.creatorDirectoryId); 21 console.log("YCG","aboutToAppear==="+this.creatorDirectoryId);
@@ -20,6 +24,10 @@ export struct FollowListDetailUI{ @@ -20,6 +24,10 @@ export struct FollowListDetailUI{
20 24
21 build(){ 25 build(){
22 Column(){ 26 Column(){
  27 + if(this.count === 0){
  28 + ListHasNoMoreDataUI({style:2})
  29 + .height('100%')
  30 + }else{
23 List({ space: 3 }) { 31 List({ space: 3 }) {
24 LazyForEach(this.data, (item: FollowListDetailItem, index: number = 0) => { 32 LazyForEach(this.data, (item: FollowListDetailItem, index: number = 0) => {
25 ListItem() { 33 ListItem() {
@@ -29,16 +37,16 @@ export struct FollowListDetailUI{ @@ -29,16 +37,16 @@ export struct FollowListDetailUI{
29 }) 37 })
30 }, (item: FollowListDetailItem, index: number) => index.toString()) 38 }, (item: FollowListDetailItem, index: number) => index.toString())
31 39
32 -  
33 //没有更多数据 显示提示 40 //没有更多数据 显示提示
34 if(!this.hasMore){ 41 if(!this.hasMore){
35 ListItem(){ 42 ListItem(){
36 ListHasNoMoreDataUI() 43 ListHasNoMoreDataUI()
37 } 44 }
38 } 45 }
39 - }.cachedCount(7) 46 + }.cachedCount(10)
40 .padding({left:'31lpx',right:'31lpx'}) 47 .padding({left:'31lpx',right:'31lpx'})
41 .layoutWeight(1) 48 .layoutWeight(1)
  49 + .scrollBar(BarState.Off)
42 .onReachEnd(()=>{ 50 .onReachEnd(()=>{
43 console.log(TAG,"触底了"); 51 console.log(TAG,"触底了");
44 if(!this.isLoading){ 52 if(!this.isLoading){
@@ -47,32 +55,98 @@ export struct FollowListDetailUI{ @@ -47,32 +55,98 @@ export struct FollowListDetailUI{
47 this.getNewPageData() 55 this.getNewPageData()
48 } 56 }
49 }) 57 })
50 - }.layoutWeight(1) 58 + }
  59 + }
  60 + .width('100%')
51 } 61 }
52 62
53 getNewPageData(){ 63 getNewPageData(){
  64 + this.isLoading = true
  65 + //我的关注列表
  66 + if (this.creatorDirectoryId === -1){
54 if(this.hasMore){ 67 if(this.hasMore){
55 - if(this.curPageNum>=4){ 68 + let object = new FollowListDetailRequestItem(20,this.curPageNum)
  69 +
  70 + MinePageDatasModel.getMineFollowListData(object,getContext(this)).then((value)=>{
  71 + if (!this.data || value.list.length == 0){
  72 + this.hasMore = false
  73 + }else{
  74 + value.list.forEach((value)=>{
  75 + this.data.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1"))
  76 + })
  77 + this.data.notifyDataReload()
  78 + this.count = this.data.totalCount()
  79 + if (this.data.totalCount() < value.totalCount) {
  80 + this.curPageNum++
  81 + }else {
  82 + this.hasMore = false
  83 + }
  84 + }
  85 + this.isLoading = false
  86 + }).catch((err:Error)=>{
  87 + console.log(TAG,"请求失败")
  88 + this.isLoading = false
  89 + })
  90 + }
  91 + }else{
  92 + if(this.hasMore){
  93 + if(this.creatorDirectoryId === 120){
  94 + console.log("console");
  95 + }
  96 + let object = new FollowListDetailRequestItem(this.creatorDirectoryId,20,this.curPageNum)
  97 +
  98 + MinePageDatasModel.getFollowListDetailData(object,getContext(this)).then((value)=>{
  99 + if (!this.data || value.list.length == 0){
56 this.hasMore = false 100 this.hasMore = false
57 - return  
58 - }  
59 - if(this.curPageNum == 1){  
60 - this.data.push(new FollowListDetailItem(this.headUrl,"人之初,性本善",10,"人之初,性本善"));  
61 - this.data.push(new FollowListDetailItem(this.headUrl,"性相近,习相远",20,"性相近,习相远"));  
62 - this.data.push(new FollowListDetailItem(this.headUrl,"苟不教,性乃迁",30,"苟不教,性乃迁"));  
63 - this.data.push(new FollowListDetailItem(this.headUrl,"教之道,贵以专",40,"教之道,贵以专"));  
64 - this.data.push(new FollowListDetailItem(this.headUrl,"AAAAAAA",50,"教之道,贵以专"));  
65 - this.data.push(new FollowListDetailItem(this.headUrl,"BBBBBBB",60,"教之道,贵以专"));  
66 - this.data.push(new FollowListDetailItem(this.headUrl,"CCCCCCC",70,"教之道,贵以专"));  
67 - }else if(this.curPageNum == 2){  
68 - this.data.push(new FollowListDetailItem(this.headUrl,"昔孟母,择邻处",40,"昔孟母,择邻处"));  
69 - }else if(this.curPageNum == 3){  
70 - this.data.push(new FollowListDetailItem(this.headUrl,"子不学,断机杼",40,"子不学,断机杼")); 101 + this.isLoading = false
  102 + }else{
  103 + this.getFollowListStatus(value)
71 } 104 }
  105 + }).catch((err:Error)=>{
  106 + console.log(TAG,"请求失败")
72 this.isLoading = false 107 this.isLoading = false
  108 + })
  109 + }
  110 + }
  111 + }
  112 +
  113 + getFollowListStatus(value:MineFollowListDetailItem){
  114 + let status = new FollowListStatusRequestItem()
  115 + let data : FollowListDetailItem[] = []
  116 + value.list.forEach((item)=>{
  117 + status.creatorIds.push(new QueryListIsFollowedItem(item.creatorId))
  118 + data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,"0"))
  119 + })
  120 +
  121 + MinePageDatasModel.getFollowListStatusData(status,getContext(this)).then((newValue)=>{
  122 + newValue.forEach((item)=>{
  123 + data.forEach((list)=>{
  124 + if (item.creatorId == list.creatorId) {
  125 + list.status = item.status
  126 + }
  127 + })
  128 + })
  129 +
  130 + data.forEach((item)=>{
  131 + this.data.push(new FollowListDetailItem(item.headPhotoUrl,item.cnUserName,item.cnFansNum,item.introduction,item.creatorId,item.status))
  132 + })
  133 +
  134 + this.data.notifyDataReload()
  135 +
  136 + this.count = this.data.totalCount()
  137 + if (this.data.totalCount() < value.totalCount) {
73 this.curPageNum++ 138 this.curPageNum++
  139 + }else {
  140 + this.hasMore = false
74 } 141 }
  142 +
  143 + this.isLoading = false
  144 + }).catch((err:Error)=>{
  145 + console.log(TAG,"请求失败")
  146 + this.isLoading = false
  147 + })
75 } 148 }
  149 +
76 } 150 }
77 151
78 @Component 152 @Component
@@ -84,7 +158,7 @@ struct ChildComponent { @@ -84,7 +158,7 @@ struct ChildComponent {
84 Blank().height('27lpx') 158 Blank().height('27lpx')
85 159
86 Row() { 160 Row() {
87 - Image(this.data.headPhotoUrl) 161 + Image(StringUtils.isEmpty(this.data.headPhotoUrl)?$r('app.media.default_head'):this.data.headPhotoUrl)
88 .objectFit(ImageFit.Auto) 162 .objectFit(ImageFit.Auto)
89 .width('92lpx') 163 .width('92lpx')
90 .height('92lpx') 164 .height('92lpx')
@@ -108,7 +182,7 @@ struct ChildComponent { @@ -108,7 +182,7 @@ struct ChildComponent {
108 }.layoutWeight(1) 182 }.layoutWeight(1)
109 .alignItems(HorizontalAlign.Start) 183 .alignItems(HorizontalAlign.Start)
110 184
111 - if(this.data.isFollow){ 185 + if(this.data.status == "1"){
112 Row(){ 186 Row(){
113 Text(`已关注`) 187 Text(`已关注`)
114 .fontColor($r('app.color.color_CCCCCC')) 188 .fontColor($r('app.color.color_CCCCCC'))
@@ -117,13 +191,14 @@ struct ChildComponent { @@ -117,13 +191,14 @@ struct ChildComponent {
117 .lineHeight('35lpx') 191 .lineHeight('35lpx')
118 }.backgroundColor($r('app.color.color_F5F5F5')) 192 }.backgroundColor($r('app.color.color_F5F5F5'))
119 .borderRadius('6lpx') 193 .borderRadius('6lpx')
  194 + .borderColor($r('app.color.color_F5F5F5'))
120 .borderWidth('2lpx') 195 .borderWidth('2lpx')
121 .justifyContent(FlexAlign.Center) 196 .justifyContent(FlexAlign.Center)
122 .width('100lpx') 197 .width('100lpx')
123 .height('46lpx') 198 .height('46lpx')
124 .margin({left:'4lpx',top:'23lpx'}) 199 .margin({left:'4lpx',top:'23lpx'})
125 .onClick(()=>{ 200 .onClick(()=>{
126 - this.data.isFollow = false 201 + this.data.status = "0"
127 }) 202 })
128 }else{ 203 }else{
129 Row(){ 204 Row(){
@@ -136,7 +211,7 @@ struct ChildComponent { @@ -136,7 +211,7 @@ struct ChildComponent {
136 .fontSize('23lpx') 211 .fontSize('23lpx')
137 .fontWeight('500lpx') 212 .fontWeight('500lpx')
138 .lineHeight('35lpx') 213 .lineHeight('35lpx')
139 - }.borderColor($r('app.color.color_ED2800')) 214 + }.borderColor($r('app.color.color_1AED2800'))
140 .borderRadius('6lpx') 215 .borderRadius('6lpx')
141 .borderWidth('2lpx') 216 .borderWidth('2lpx')
142 .justifyContent(FlexAlign.Center) 217 .justifyContent(FlexAlign.Center)
@@ -144,7 +219,7 @@ struct ChildComponent { @@ -144,7 +219,7 @@ struct ChildComponent {
144 .height('46lpx') 219 .height('46lpx')
145 .margin({left:'4lpx',top:'23lpx'}) 220 .margin({left:'4lpx',top:'23lpx'})
146 .onClick(()=>{ 221 .onClick(()=>{
147 - this.data.isFollow = true 222 + this.data.status = "1"
148 }) 223 })
149 } 224 }
150 }.alignItems(VerticalAlign.Top) 225 }.alignItems(VerticalAlign.Top)
  1 +import { LazyDataSource, StringUtils } from 'wdKit';
  2 +import MinePageDatasModel from '../../../../model/MinePageDatasModel';
  3 +import { Params } from '../../../../repository/bean/Params';
  4 +import RouteManager from '../../../../utils/RouteManager';
  5 +import { CommentListItem } from '../../../../viewmodel/CommentListItem';
  6 +import { FollowListDetailItem } from '../../../../viewmodel/FollowListDetailItem';
  7 +import { FollowListDetailRequestItem } from '../../../../viewmodel/FollowListDetailRequestItem';
  8 +import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI';
  9 +
  10 +const TAG = "HomePageBottomComponent"
  11 +@Component
  12 +export struct HomePageBottomComponent{
  13 + @State style:number = 0; //0 评论 ,1 关注
  14 + @State data_follow: LazyDataSource<FollowListDetailItem> = new LazyDataSource();
  15 + @State data_comment: LazyDataSource<CommentListItem> = new LazyDataSource();
  16 + @State isLoading:boolean = false
  17 + @State hasMore:boolean = true
  18 + curPageNum:number = 1;
  19 + @State count:number = 0;
  20 +
  21 + aboutToAppear(){
  22 + this.getNewPageData()
  23 + }
  24 +
  25 + build(){
  26 + Column(){
  27 + Divider().width('100%')
  28 + .height('2lpx')
  29 + .strokeWidth('1lpx')
  30 + .backgroundColor($r('app.color.color_EDEDED'))
  31 +
  32 + if(this.count === 0){
  33 + ListHasNoMoreDataUI({style:2})
  34 + .height('100%')
  35 + }else{
  36 + if(this.style === 1){
  37 + List({ space: 3 }) {
  38 +
  39 + ListItem() {
  40 + Row(){
  41 + Text("关注更多人民号")
  42 + .fontWeight('400lpx')
  43 + .fontColor($r('app.color.color_222222'))
  44 + .lineHeight('38lpx')
  45 + .fontSize('27lpx')
  46 + .textAlign(TextAlign.Center)
  47 + .margin({right:'4lpx'})
  48 + Image($r('app.media.arrow_icon_right'))
  49 + .objectFit(ImageFit.Auto)
  50 + .width('27lpx')
  51 + .height('27lpx')
  52 + }.height('69lpx')
  53 + .width('659lpx')
  54 + .alignItems(VerticalAlign.Center)
  55 + .justifyContent(FlexAlign.Center)
  56 + .backgroundColor($r('app.color.color_F5F5F5'))
  57 + .margin({top:'31lpx',bottom:'4lpx'})
  58 + }.onClick(()=>{
  59 + let params: Params = {
  60 + pageID: "1"
  61 + }
  62 + RouteManager.jumpNewPage("pages/FollowListPage",params)
  63 + })
  64 +
  65 + LazyForEach(this.data_follow, (item: FollowListDetailItem, index: number = 0) => {
  66 + ListItem() {
  67 + ChildFollowComponent({data: item})
  68 + }
  69 + .onClick(() => {
  70 + })
  71 + }, (item: FollowListDetailItem, index: number) => index.toString())
  72 +
  73 + //没有更多数据 显示提示
  74 + if(!this.hasMore){
  75 + ListItem(){
  76 + ListHasNoMoreDataUI()
  77 + }
  78 + }
  79 + }.cachedCount(15)
  80 + .padding({left:'31lpx',right:'31lpx'})
  81 + .layoutWeight(1)
  82 + .scrollBar(BarState.Off)
  83 + .edgeEffect(EdgeEffect.None)
  84 + // .nestedScroll({
  85 + // scrollForward: NestedScrollMode.PARENT_FIRST,
  86 + // scrollBackward: NestedScrollMode.SELF_FIRST
  87 + // })
  88 + .onReachEnd(()=>{
  89 + console.log(TAG,"触底了");
  90 + if(!this.isLoading){
  91 + this.isLoading = true
  92 + //加载分页数据
  93 + this.getNewPageData()
  94 + }
  95 + })
  96 + }else if(this.style === 0){
  97 + List({ space: 3 }) {
  98 + LazyForEach(this.data_comment, (item: CommentListItem, index: number = 0) => {
  99 + ListItem() {
  100 + ChildCommentComponent({data: item})
  101 + }
  102 + .onClick(() => {
  103 + })
  104 + }, (item: CommentListItem, index: number) => index.toString())
  105 +
  106 + //没有更多数据 显示提示
  107 + if(!this.hasMore){
  108 + ListItem(){
  109 + ListHasNoMoreDataUI()
  110 + }
  111 + }
  112 + }.cachedCount(15)
  113 + .layoutWeight(1)
  114 + .scrollBar(BarState.Off)
  115 + .edgeEffect(EdgeEffect.None)
  116 + // .nestedScroll({
  117 + // scrollForward: NestedScrollMode.PARENT_FIRST,
  118 + // scrollBackward: NestedScrollMode.SELF_FIRST
  119 + // })
  120 + .onReachEnd(()=>{
  121 + console.log(TAG,"触底了");
  122 + if(!this.isLoading){
  123 + this.isLoading = true
  124 + //加载分页数据
  125 + this.getNewPageData()
  126 + }
  127 + })
  128 + }
  129 + }
  130 + }
  131 + .width('100%')
  132 + }
  133 +
  134 +
  135 + @Styles
  136 + listStyle() {
  137 + .backgroundColor(Color.White)
  138 + .height(72)
  139 + .width("100%")
  140 + .borderRadius(12)
  141 + }
  142 +
  143 + getNewPageData(){
  144 + this.isLoading = true
  145 + //我的关注列表
  146 + if (this.style === 1){
  147 + if(this.hasMore){
  148 + let object = new FollowListDetailRequestItem(20,this.curPageNum)
  149 +
  150 + MinePageDatasModel.getMineFollowListData(object,getContext(this)).then((value)=>{
  151 + if (!this.data_follow || value.list.length == 0){
  152 + this.hasMore = false
  153 + }else{
  154 + value.list.forEach((value)=>{
  155 + this.data_follow.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1"))
  156 + })
  157 + this.data_follow.notifyDataReload()
  158 + this.count = this.data_follow.totalCount()
  159 + if (this.data_follow.totalCount() < value.totalCount) {
  160 + this.curPageNum++
  161 + }else {
  162 + this.hasMore = false
  163 + }
  164 + }
  165 + this.isLoading = false
  166 + }).catch((err:Error)=>{
  167 + console.log(TAG,"请求失败")
  168 + this.isLoading = false
  169 + })
  170 + }
  171 + }else if(this.style === 0){
  172 + if(this.hasMore){
  173 + let object = new FollowListDetailRequestItem(20,this.curPageNum)
  174 +
  175 + MinePageDatasModel.getMineCommentListData(object,getContext(this)).then((value)=>{
  176 + if (!this.data_comment || value.list.length == 0){
  177 + this.hasMore = false
  178 + }else{
  179 + value.list.forEach((value)=>{
  180 + this.data_comment.push(new CommentListItem(value.fromUserHeader,value.fromUserName,value.targetTitle,value.createTime,value.commentContent))
  181 + })
  182 + this.data_comment.notifyDataReload()
  183 + this.count = this.data_comment.totalCount()
  184 + if (this.data_comment.totalCount() < value.totalCount) {
  185 + this.curPageNum++
  186 + }else {
  187 + this.hasMore = false
  188 + }
  189 + }
  190 + this.isLoading = false
  191 + }).catch((err:Error)=>{
  192 + console.log(TAG,"请求失败")
  193 + this.isLoading = false
  194 + })
  195 + }
  196 + }
  197 + }
  198 +}
  199 +
  200 +@Component
  201 +struct ChildFollowComponent {
  202 + @ObjectLink data: FollowListDetailItem
  203 +
  204 + build() {
  205 + Column(){
  206 + Blank().height('27lpx')
  207 +
  208 + Row() {
  209 + Image(StringUtils.isEmpty(this.data.headPhotoUrl)?$r('app.media.default_head'):this.data.headPhotoUrl)
  210 + .objectFit(ImageFit.Auto)
  211 + .width('92lpx')
  212 + .height('92lpx')
  213 + .margin({right:'15lpx'})
  214 +
  215 + Column(){
  216 + Text(this.data.cnUserName)
  217 + .fontWeight('400lpx')
  218 + .fontSize('31lpx')
  219 + .lineHeight('38lpx')
  220 + .fontColor($r('app.color.color_222222'))
  221 + Text(`粉丝${this.data.cnFansNum}`)
  222 + .fontColor($r('app.color.color_B0B0B0'))
  223 + .fontSize('23lpx')
  224 + .maxLines(1)
  225 + Text(`${this.data.introduction}`)
  226 + .fontColor($r('app.color.color_B0B0B0'))
  227 + .fontSize('23lpx')
  228 + .maxLines(2)
  229 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  230 + }.layoutWeight(1)
  231 + .alignItems(HorizontalAlign.Start)
  232 +
  233 + if(this.data.status == "1"){
  234 + Row(){
  235 + Text(`已关注`)
  236 + .fontColor($r('app.color.color_CCCCCC'))
  237 + .fontSize('23lpx')
  238 + .fontWeight('500lpx')
  239 + .lineHeight('35lpx')
  240 + }.backgroundColor($r('app.color.color_F5F5F5'))
  241 + .borderRadius('6lpx')
  242 + .borderColor($r('app.color.color_F5F5F5'))
  243 + .borderWidth('2lpx')
  244 + .justifyContent(FlexAlign.Center)
  245 + .width('100lpx')
  246 + .height('46lpx')
  247 + .margin({left:'4lpx',top:'23lpx'})
  248 + .onClick(()=>{
  249 + this.data.status = "0"
  250 + })
  251 + }else{
  252 + Row(){
  253 + Image($r('app.media.follow_icon'))
  254 + .margin({right:'4lpx'})
  255 + .width('23lpx')
  256 + .height('23lpx')
  257 + Text(`关注`)
  258 + .fontColor($r('app.color.color_ED2800'))
  259 + .fontSize('23lpx')
  260 + .fontWeight('500lpx')
  261 + .lineHeight('35lpx')
  262 + }.borderColor($r('app.color.color_1AED2800'))
  263 + .borderRadius('6lpx')
  264 + .borderWidth('2lpx')
  265 + .justifyContent(FlexAlign.Center)
  266 + .width('100lpx')
  267 + .height('46lpx')
  268 + .margin({left:'4lpx',top:'23lpx'})
  269 + .onClick(()=>{
  270 + this.data.status = "1"
  271 + })
  272 + }
  273 + }.alignItems(VerticalAlign.Top)
  274 + .width('100%')
  275 + .layoutWeight(1)
  276 +
  277 + Divider().width('100%')
  278 + .height('2lpx')
  279 + .strokeWidth('1lpx')
  280 + .backgroundColor($r('app.color.color_EDEDED'))
  281 +
  282 + }.height('146lpx')
  283 + .justifyContent(FlexAlign.Center)
  284 + }
  285 +}
  286 +
  287 +@Component
  288 +struct ChildCommentComponent {
  289 + @ObjectLink data: CommentListItem
  290 +
  291 + build() {
  292 + Column(){
  293 + Row() {
  294 + Image(StringUtils.isEmpty(this.data.fromUserHeader)?$r('app.media.default_head'):this.data.fromUserHeader)
  295 + .objectFit(ImageFit.Auto)
  296 + .width('69lpx')
  297 + .height('69lpx')
  298 + .margin({right:'15lpx'})
  299 +
  300 + Column(){
  301 + Text(this.data.fromUserName)
  302 + .fontSize('25lpx')
  303 + .lineHeight('35lpx')
  304 + .fontWeight('600lpx')
  305 + .fontColor($r('app.color.color_222222'))
  306 + .margin({bottom:'6lpx'})
  307 + .maxLines(1)
  308 + Text(`${this.data.createTime}`)
  309 + .fontColor($r('app.color.color_B0B0B0'))
  310 + .fontSize('23lpx')
  311 + .lineHeight('31lpx')
  312 + .fontWeight('400lpx')
  313 + .maxLines(1)
  314 + }.layoutWeight(1)
  315 + .alignItems(HorizontalAlign.Start)
  316 + }
  317 + .margin({bottom:'10lpx'})
  318 + .width('100%')
  319 + .height('108lpx')
  320 + .padding({left:'31lpx',right:'31lpx'})
  321 +
  322 + Row(){
  323 + Text(this.data.commentContent)
  324 + .maxLines(3)
  325 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  326 + .fontWeight('400lpx')
  327 + .fontSize('31lpx')
  328 + .lineHeight('46lpx')
  329 + .fontColor($r('app.color.color_222222'))
  330 + .margin({bottom:'10lpx'})
  331 + }.padding({left:'31lpx',right:'31lpx'})
  332 + .width('100%')
  333 +
  334 + Row(){
  335 + Text(this.data.targetTitle)
  336 + .fontWeight('400lpx')
  337 + .fontColor($r('app.color.color_222222'))
  338 + .lineHeight('38lpx')
  339 + .fontSize('27lpx')
  340 + .textAlign(TextAlign.Center)
  341 + .margin({right:'4lpx'})
  342 + .maxLines(3)
  343 + .width('616lpx')
  344 + Image($r('app.media.arrow_icon_right'))
  345 + .objectFit(ImageFit.Auto)
  346 + .width('27lpx')
  347 + .height('27lpx')
  348 + }
  349 + .padding({top:'17lpx',bottom:'17lpx',left:'23lpx',right:'23lpx'})
  350 + .width('662lpx')
  351 + .backgroundColor($r('app.color.color_F5F5F5'))
  352 + .margin({top:'19lpx',bottom:'31lpx'})
  353 +
  354 + Divider().width('100%')
  355 + .height('12lpx')
  356 + .strokeWidth('12lpx')
  357 + .backgroundColor($r('app.color.color_F5F5F5'))
  358 +
  359 + }
  360 + .justifyContent(FlexAlign.Center)
  361 + }
  362 +}
1 @Component 1 @Component
2 export struct ListHasNoMoreDataUI{ 2 export struct ListHasNoMoreDataUI{
  3 + @State style:number = 1;
  4 +
3 build(){ 5 build(){
  6 + if (this.style === 1){
4 Row(){ 7 Row(){
5 Text("已显示全部内容") 8 Text("已显示全部内容")
6 .fontColor($r('app.color.color_999999')) 9 .fontColor($r('app.color.color_999999'))
@@ -9,5 +12,22 @@ export struct ListHasNoMoreDataUI{ @@ -9,5 +12,22 @@ export struct ListHasNoMoreDataUI{
9 }.justifyContent(FlexAlign.Center) 12 }.justifyContent(FlexAlign.Center)
10 .width('100%') 13 .width('100%')
11 .margin({top:'20lpx',bottom:'20lpx'}) 14 .margin({top:'20lpx',bottom:'20lpx'})
  15 + }else if (this.style === 2){
  16 + Column(){
  17 + Image($r('app.media.empty_icon'))
  18 + .width('200lpx')
  19 + .height('200lpx')
  20 + .objectFit(ImageFit.Auto)
  21 + Text("暂无内容")
  22 + .fontColor($r('app.color.color_999999'))
  23 + .fontWeight('500lpx')
  24 + .fontSize('23lpx')
  25 + }
  26 + .justifyContent(FlexAlign.Center)
  27 + .width('100%')
  28 + .height('100%')
  29 + }
  30 +
  31 +
12 } 32 }
13 } 33 }
@@ -7,6 +7,15 @@ import HashMap from '@ohos.util.HashMap'; @@ -7,6 +7,15 @@ import HashMap from '@ohos.util.HashMap';
7 import { ResponseDTO, WDHttp } from 'wdNetwork'; 7 import { ResponseDTO, WDHttp } from 'wdNetwork';
8 import { MineAppointmentListItem } from '../viewmodel/MineAppointmentListItem'; 8 import { MineAppointmentListItem } from '../viewmodel/MineAppointmentListItem';
9 import { Logger, ResourcesUtils } from 'wdKit'; 9 import { Logger, ResourcesUtils } from 'wdKit';
  10 +import { MineFollowListDetailItem } from '../viewmodel/MineFollowListDetailItem';
  11 +import { FollowListDetailRequestItem } from '../viewmodel/FollowListDetailRequestItem';
  12 +import { FollowListItem } from '../viewmodel/FollowListItem';
  13 +import { MineFollowListItem } from '../viewmodel/MineFollowListItem';
  14 +import { QueryListIsFollowedItem } from '../viewmodel/QueryListIsFollowedItem';
  15 +import { MineCommentListDetailItem } from '../viewmodel/MineCommentListDetailItem';
  16 +import { FollowListStatusRequestItem } from '../viewmodel/FollowListStatusRequestItem';
  17 +import { MineUserLevelItem } from '../viewmodel/MineUserLevelItem';
  18 +import { MineUserDetailItem } from '../viewmodel/MineUserDetailItem';
10 const TAG = "MinePageDatasModel" 19 const TAG = "MinePageDatasModel"
11 20
12 /** 21 /**
@@ -137,6 +146,286 @@ class MinePageDatasModel{ @@ -137,6 +146,286 @@ class MinePageDatasModel{
137 return compRes.data 146 return compRes.data
138 } 147 }
139 148
  149 + /**
  150 + * 关注频道详情
  151 + * @param pageSize
  152 + * @param pageNum
  153 + * @param context
  154 + * @returns
  155 + */
  156 + getFollowListDetailData(params:FollowListDetailRequestItem,context: Context): Promise<MineFollowListDetailItem> {
  157 + return new Promise<MineFollowListDetailItem>((success, error) => {
  158 + Logger.info(TAG, `getAppointmentList start`);
  159 + this.fetchFollowListDetailData(params).then((navResDTO: ResponseDTO<MineFollowListDetailItem>) => {
  160 + if (!navResDTO || navResDTO.code != 0) {
  161 + success(this.getFollowListDetailDataLocal(context))
  162 + return
  163 + }
  164 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  165 + let navigationBean = navResDTO.data as MineFollowListDetailItem
  166 + success(navigationBean);
  167 + }).catch((err: Error) => {
  168 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  169 + success(this.getFollowListDetailDataLocal(context))
  170 + })
  171 + })
  172 + }
  173 +
  174 + async getFollowListDetailDataLocal(context: Context): Promise<MineFollowListDetailItem> {
  175 + Logger.info(TAG, `getBottomNavDataMock start`);
  176 + let compRes: ResponseDTO<MineFollowListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListDetailItem>>('follow_list_detail_data_id120.json',context );
  177 + if (!compRes || !compRes.data) {
  178 + Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
  179 + return new MineFollowListDetailItem()
  180 + }
  181 + Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  182 + return compRes.data
  183 + }
  184 +
  185 + fetchFollowListDetailData(object:FollowListDetailRequestItem) {
  186 + let url = HttpUrlUtils.getFollowListDetailDataUrl()
  187 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  188 + return WDHttp.post<ResponseDTO<MineFollowListDetailItem>>(url, object,headers)
  189 + };
  190 +
  191 + /**
  192 + * 关注频道列表
  193 + * @returns
  194 + */
  195 + fetchFollowListData() {
  196 + let url = HttpUrlUtils.getFollowListDataUrl()
  197 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  198 + return WDHttp.get<ResponseDTO<FollowListItem[]>>(url, headers)
  199 + };
  200 +
  201 + getFollowListData(context: Context): Promise<FollowListItem[]> {
  202 + return new Promise<FollowListItem[]>((success, error) => {
  203 + Logger.info(TAG, `getAppointmentList start`);
  204 + this.fetchFollowListData().then((navResDTO: ResponseDTO<FollowListItem[]>) => {
  205 + if (!navResDTO || navResDTO.code != 0) {
  206 + success(this.getFollowListDataLocal(context))
  207 + return
  208 + }
  209 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  210 + let navigationBean = navResDTO.data as FollowListItem[]
  211 + success(navigationBean);
  212 + }).catch((err: Error) => {
  213 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  214 + success(this.getFollowListDataLocal(context))
  215 + })
  216 + })
  217 + }
  218 +
  219 + async getFollowListDataLocal(context: Context): Promise<FollowListItem[]> {
  220 + Logger.info(TAG, `getFollowListDataLocal start`);
  221 + let compRes: ResponseDTO<FollowListItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<FollowListItem[]>>('follow_list_data.json' ,context);
  222 + if (!compRes || !compRes.data) {
  223 + Logger.info(TAG, `getFollowListDataLocal compRes is empty`);
  224 + return []
  225 + }
  226 + Logger.info(TAG, `getFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  227 + return compRes.data
  228 + }
  229 +
  230 + /**
  231 + * 我的关注列表
  232 + * @param params
  233 + * @param context
  234 + * @returns
  235 + */
  236 + getMineFollowListData(params:FollowListDetailRequestItem,context: Context): Promise<MineFollowListItem> {
  237 + return new Promise<MineFollowListItem>((success, error) => {
  238 + Logger.info(TAG, `getAppointmentList start`);
  239 + this.fetchMineDetailFollowListData(params).then((navResDTO: ResponseDTO<MineFollowListItem>) => {
  240 + if (!navResDTO || navResDTO.code != 0) {
  241 + success(this.getMineFollowListDataLocal(context))
  242 + return
  243 + }
  244 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  245 + let navigationBean = navResDTO.data as MineFollowListItem
  246 + success(navigationBean);
  247 + }).catch((err: Error) => {
  248 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  249 + success(this.getMineFollowListDataLocal(context))
  250 + })
  251 + })
  252 + }
  253 +
  254 + fetchMineDetailFollowListData(object:FollowListDetailRequestItem) {
  255 + let url = HttpUrlUtils.getMineFollowListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}`
  256 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  257 + return WDHttp.get<ResponseDTO<MineFollowListItem>>(url, headers)
  258 + };
  259 +
  260 + async getMineFollowListDataLocal(context: Context): Promise<MineFollowListItem> {
  261 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  262 + let compRes: ResponseDTO<MineFollowListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListItem>>('mine_follow_list_data.json' ,context);
  263 + if (!compRes || !compRes.data) {
  264 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  265 + return new MineFollowListItem()
  266 + }
  267 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  268 + return compRes.data
  269 + }
  270 +
  271 + /**
  272 + * 查询是否被关注 列表
  273 + * @param params
  274 + * @param context
  275 + * @returns
  276 + */
  277 + getFollowListStatusData(params:FollowListStatusRequestItem,context: Context): Promise<QueryListIsFollowedItem[]> {
  278 + return new Promise<QueryListIsFollowedItem[]>((success, error) => {
  279 + Logger.info(TAG, `getAppointmentList start`);
  280 + this.fetchFollowListStatusData(params).then((navResDTO: ResponseDTO<QueryListIsFollowedItem[]>) => {
  281 + if (!navResDTO || navResDTO.code != 0) {
  282 + success(this.getFollowListStatusDataLocal(context))
  283 + return
  284 + }
  285 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  286 + let navigationBean = navResDTO.data as QueryListIsFollowedItem[]
  287 + success(navigationBean);
  288 + }).catch((err: Error) => {
  289 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  290 + success(this.getFollowListStatusDataLocal(context))
  291 + })
  292 + })
  293 + }
  294 +
  295 + fetchFollowListStatusData(object:FollowListStatusRequestItem) {
  296 + let url = HttpUrlUtils.getFollowListStatusDataUrl()
  297 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  298 + return WDHttp.post<ResponseDTO<QueryListIsFollowedItem[]>>(url,object, headers)
  299 + };
  300 +
  301 + async getFollowListStatusDataLocal(context: Context): Promise<QueryListIsFollowedItem[]> {
  302 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  303 + let compRes: ResponseDTO<QueryListIsFollowedItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<QueryListIsFollowedItem[]>>('follow_list_id120_isfocus_data.json',context );
  304 + if (!compRes || !compRes.data) {
  305 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  306 + return []
  307 + }
  308 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  309 + return compRes.data
  310 + }
  311 +
  312 +
  313 + /**
  314 + * 我的评论列表
  315 + * @param params
  316 + * @param context
  317 + * @returns
  318 + */
  319 + getMineCommentListData(params:FollowListDetailRequestItem,context: Context): Promise<MineCommentListDetailItem> {
  320 + return new Promise<MineCommentListDetailItem>((success, error) => {
  321 + Logger.info(TAG, `getAppointmentList start`);
  322 + this.fetchMineCommentListData(params).then((navResDTO: ResponseDTO<MineCommentListDetailItem>) => {
  323 + if (!navResDTO || navResDTO.code != 0) {
  324 + success(this.getMineCommentListDataLocal(context))
  325 + return
  326 + }
  327 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  328 + let navigationBean = navResDTO.data as MineCommentListDetailItem
  329 + success(navigationBean);
  330 + }).catch((err: Error) => {
  331 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  332 + success(this.getMineCommentListDataLocal(context))
  333 + })
  334 + })
  335 + }
  336 +
  337 + fetchMineCommentListData(object:FollowListDetailRequestItem) {
  338 + let url = HttpUrlUtils.getMineCommentListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}`
  339 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  340 + return WDHttp.get<ResponseDTO<MineCommentListDetailItem>>(url, headers)
  341 + };
  342 +
  343 + async getMineCommentListDataLocal(context: Context): Promise<MineCommentListDetailItem> {
  344 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  345 + let compRes: ResponseDTO<MineCommentListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineCommentListDetailItem>>('mine_comment_list_data.json',context);
  346 + if (!compRes || !compRes.data) {
  347 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  348 + return new MineCommentListDetailItem()
  349 + }
  350 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  351 + return compRes.data
  352 + }
  353 +
  354 + /**
  355 + * 个人中心 获取用户等级
  356 + */
  357 + getUserLevelData(context: Context): Promise<MineUserLevelItem> {
  358 + return new Promise<MineUserLevelItem>((success, error) => {
  359 + Logger.info(TAG, `getAppointmentList start`);
  360 + this.fetchMineUserLevelData().then((navResDTO: ResponseDTO<MineUserLevelItem>) => {
  361 + if (!navResDTO || navResDTO.code != 0) {
  362 + success(this.getMineUserLevelDataLocal(context))
  363 + return
  364 + }
  365 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  366 + let navigationBean = navResDTO.data as MineUserLevelItem
  367 + success(navigationBean);
  368 + }).catch((err: Error) => {
  369 + Logger.error(TAG, `fetchMineUserLevelData catch, error.name : ${err.name}, error.message:${err.message}`);
  370 + success(this.getMineUserLevelDataLocal(context))
  371 + })
  372 + })
  373 + }
  374 +
  375 + fetchMineUserLevelData() {
  376 + let url = HttpUrlUtils.getMineUserLevelDataUrl()
  377 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  378 + return WDHttp.get<ResponseDTO<MineUserLevelItem>>(url, headers)
  379 + };
  380 +
  381 + async getMineUserLevelDataLocal(context: Context): Promise<MineUserLevelItem> {
  382 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  383 + let compRes: ResponseDTO<MineUserLevelItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserLevelItem>>('mine_user_level.json' ,context);
  384 + if (!compRes || !compRes.data) {
  385 + Logger.info(TAG, `getMineUserLevelDataLocal compRes is empty`);
  386 + return new MineUserLevelItem()
  387 + }
  388 + Logger.info(TAG, `getMineUserLevelDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  389 + return compRes.data
  390 + }
  391 +
  392 + /**
  393 + * 个人中心 获取用户详细信息
  394 + */
  395 + getUserDetailData(context: Context): Promise<MineUserDetailItem> {
  396 + return new Promise<MineUserDetailItem>((success, error) => {
  397 + Logger.info(TAG, `getAppointmentList start`);
  398 + this.fetchMineUserDetailData().then((navResDTO: ResponseDTO<MineUserDetailItem>) => {
  399 + if (!navResDTO || navResDTO.code != 0) {
  400 + success(this.getMineUserDetailDataLocal(context))
  401 + return
  402 + }
  403 + Logger.info(TAG, "getUserDetailData then,timeStamp:" + navResDTO.timestamp);
  404 + let navigationBean = navResDTO.data as MineUserDetailItem
  405 + success(navigationBean);
  406 + }).catch((err: Error) => {
  407 + Logger.error(TAG, `fetchMineUserDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
  408 + success(this.getMineUserDetailDataLocal(context))
  409 + })
  410 + })
  411 + }
  412 +
  413 + fetchMineUserDetailData() {
  414 + let url = HttpUrlUtils.getMineUserDetailDataUrl()
  415 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  416 + return WDHttp.get<ResponseDTO<MineUserDetailItem>>(url, headers)
  417 + };
  418 +
  419 + async getMineUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
  420 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  421 + let compRes: ResponseDTO<MineUserDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserDetailItem>>('mine_user_detail.json',context );
  422 + if (!compRes || !compRes.data) {
  423 + Logger.info(TAG, `getMineUserDetailDataLocal compRes is empty`);
  424 + return new MineUserDetailItem()
  425 + }
  426 + Logger.info(TAG, `getMineUserDetailDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  427 + return compRes.data
  428 + }
140 429
141 } 430 }
142 431
1 1
2 -import MinePagePersonalFunctionsItem from '../../../../../../../../PeopleDaily_Harmony/wdComponent/src/main/ets/viewmodel/MinePagePersonalFunctionsItem'  
3 -import MinePageCreatorFunctionsItem from '../../../../../../../../PeopleDaily_Harmony/wdComponent/src/main/ets/viewmodel/MinePageCreatorFunctionsItem'  
4 -import MinePageMoreFunctionModel from '../../../../../../../../PeopleDaily_Harmony/wdComponent/src/main/ets/viewmodel/MinePageMoreFunctionModel';  
5 -import { HttpUrlUtils } from '../../../../../../../../PeopleDaily_Harmony/wdComponent/src/main/ets/network/HttpUrlUtils';  
6 -import HashMap from '@ohos.util.HashMap';  
7 -import { ResponseDTO, WDHttp } from 'wdNetwork';  
8 -import { Logger } from 'wdKit';  
9 -import { MineMainSettingFunctionItem } from '../../../../../../../../PeopleDaily_Harmony/wdComponent/src/main/ets/viewmodel/MineMainSettingFunctionItem' 2 +import { MineMainSettingFunctionItem } from '../viewmodel/MineMainSettingFunctionItem';
10 3
11 const TAG = "MineSettingDatasModel" 4 const TAG = "MineSettingDatasModel"
12 5
@@ -44,6 +44,42 @@ export class HttpUrlUtils { @@ -44,6 +44,42 @@ export class HttpUrlUtils {
44 */ 44 */
45 static readonly APPOINTMENT_LIST_DATA_PATH: string = "/api/live-center-message/zh/c/live/subscribe"; 45 static readonly APPOINTMENT_LIST_DATA_PATH: string = "/api/live-center-message/zh/c/live/subscribe";
46 46
  47 + /**
  48 + * 资料编辑 获取用户信息
  49 + */
  50 + static readonly APPOINTMENT_AccountOwner_PATH: string = "/api/rmrb-contact/contact/zh/c/my/detail";
  51 + /**
  52 + * 个人中心 关注列表详情
  53 + */
  54 + static readonly FOLLOW_LIST_DETAIL_DATA_PATH: string = "/api/rmrb-creator-user/c/creatorDirectory/getContactMasterDetaiPage";
  55 + /**
  56 + * 个人中心 关注列表
  57 + */
  58 + static readonly FOLLOW_LIST_DATA_PATH: string = "/api/rmrb-creator-user/c/creatorDirectory/getCreatorDirectoryTree";
  59 + /**
  60 + * 个人中心 我的关注列表
  61 + */
  62 + static readonly MINE_FOLLOW_LIST_DATA_PATH: string = "/api/rmrb-interact/interact/zh/c/attention/list";
  63 + /**
  64 + * 个人中心 关注列表状态
  65 + */
  66 + static readonly FOLLOW_LIST_STATUS_DATA_PATH: string = "/api/rmrb-interact/interact/zh/c/batchAttention/status";
  67 +
  68 + /**
  69 + * 个人中心 我的评论列表
  70 + */
  71 + static readonly MINE_COMMENT_LIST_DATA_PATH: string = "/api/rmrb-comment/comment/zh/c/myCommentList";
  72 +
  73 + /**
  74 + * 个人中心 APP获取用户等级
  75 + */
  76 + static readonly MINE_USER_LEVEL_DATA_PATH: string = "/api/rmrb-user-point/auth/level/zh/c/queryUserLevel";
  77 +
  78 + /**
  79 + * 个人中心 (号主/普通用户)我的基本信息
  80 + */
  81 + static readonly MINE_USER_DETAIL_DATA_PATH: string = "/api/rmrb-contact/contact/zh/c/my/detail";
  82 +
47 private static hostUrl: string = HttpUrlUtils.HOST_UAT; 83 private static hostUrl: string = HttpUrlUtils.HOST_UAT;
48 84
49 static getCommonHeaders(): HashMap<string, string> { 85 static getCommonHeaders(): HashMap<string, string> {
@@ -83,44 +119,6 @@ export class HttpUrlUtils { @@ -83,44 +119,6 @@ export class HttpUrlUtils {
83 return headers; 119 return headers;
84 } 120 }
85 121
86 - static getYcgCommonHeaders(): HashMap<string, string> {  
87 - let headers: HashMap<string, string> = new HashMap<string, string>()  
88 -  
89 - headers.set('mpassid', 'XGt6jfGUx8ADAKruTyAMdhHj')  
90 - headers.set('city', "%E5%90%88%E8%82%A5%E5%B8%82")  
91 - headers.set('User-Agent', 'Dalvik/2.1.0 (Linux; U; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10)')  
92 - headers.set('channel', "rmrb_china_0000")  
93 - headers.set('appCode', "0af1f9085e484c97b2a44704bae72c07")  
94 - headers.set('Authorization', "APPCODE 0af1f9085e484c97b2a44704bae72c07")  
95 - headers.set('X-Ca-Stage', "TEST")  
96 - headers.set('plat', "Phone")  
97 - headers.set('Content-Type', 'application/json; charset=utf-8')  
98 - headers.set('timestamp', "649773304")  
99 - headers.set('RMRB-X-TOKEN', "eyJhbGciOiJIUzI1NiIsImtpZCI6IklFazBGclhfV2RYMEx1ZktDU01iYTVYd0VmUHZ6a043T0F5UTRFLWIwWU0ifQ.eyJpc3MiOiJwZW9wbGVzLWRhaWx5LWZvdXJhIiwic3ViIjoicGVvcGxlcy1kYWlseS1mb3VyYSIsImV4cCI6MTcxMDU4Mzk0MywidXNlcklkIjo1NjczODc0NzcwNjM2MjEsInVzZXJWZXJzaW9uIjoiNTY3Mzg3NDc3MDYzNjIxXzAiLCJ1c2VyTmFtZSI6IiVFNCVCQSVCQSVFNiVCMCU5MSVFNiU5NyVBNSVFNiU4QSVBNSVFNyVCRCU5MSVFNSU4RiU4QmFQcnRxNSIsInVzZXJUeXBlIjoxLCJjcmVhdG9ySWQiOm51bGwsInVzZXJJZFpoIjpudWxsfQ._LTKrUxQozpCj1XMhx1TWOIxn5gjDveoPuMFGpI0g_8")  
100 - headers.set('device_id', "5156098c-6c44-3514-af70-04a0139a9327")  
101 - headers.set('cookie', 'RMRB-X-TOKEN=eyJhbGciOiJIUzI1NiIsImtpZCI6IklFazBGclhfV2RYMEx1ZktDU01iYTVYd0VmUHZ6a043T0F5UTRFLWIwWU0ifQ.eyJpc3MiOiJwZW9wbGVzLWRhaWx5LWZvdXJhIiwic3ViIjoicGVvcGxlcy1kYWlseS1mb3VyYSIsImV4cCI6MTcxMDU4Mzk0MywidXNlcklkIjo1NjczODc0NzcwNjM2MjEsInVzZXJWZXJzaW9uIjoiNTY3Mzg3NDc3MDYzNjIxXzAiLCJ1c2VyTmFtZSI6IiVFNCVCQSVCQSVFNiVCMCU5MSVFNiU5NyVBNSVFNiU4QSVBNSVFNyVCRCU5MSVFNSU4RiU4QmFQcnRxNSIsInVzZXJUeXBlIjoxLCJjcmVhdG9ySWQiOm51bGwsInVzZXJJZFpoIjpudWxsfQ._LTKrUxQozpCj1XMhx1TWOIxn5gjDveoPuMFGpI0g_8')  
102 - headers.set('build_version', "202403112023")  
103 - headers.set('adcode', "340000")  
104 - headers.set('os_version', "10")  
105 - headers.set('city_dode', "340100")  
106 - headers.set('userId', "567387477063621")  
107 - headers.set('versionCode', "7302")  
108 - headers.set('system', "Android")  
109 - headers.set('version_name', "7.3.0.2")  
110 - headers.set('EagleEye-TraceID', '5C3D0800CF2C4440A43E5B131187629B')  
111 - headers.set('imei', "5156098c-6c44-3514-af70-04a0139a9327")  
112 - headers.set('userType', "1")  
113 - headers.set('Accept-Language', 'zh')  
114 -  
115 - // HttpUrlUtils.addSpecialHeaders(headers);  
116 - // Logger.debug("TAG", '******************* commonHeaders headers start ******************************** ');  
117 - // headers.forEach((v,k)=>{  
118 - // Logger.debug("TAG", 'getCommonHeaders header: ' + k + ': ' + v);  
119 - // })  
120 - // Logger.debug("TAG", '******************* commonHeaders headers end ******************************** ');  
121 - return headers;  
122 - }  
123 -  
124 static getHost() { 122 static getHost() {
125 return this.hostUrl; 123 return this.hostUrl;
126 } 124 }
@@ -167,6 +165,80 @@ export class HttpUrlUtils { @@ -167,6 +165,80 @@ export class HttpUrlUtils {
167 return url; 165 return url;
168 } 166 }
169 167
  168 + static getFollowListDetailDataUrl() {
  169 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_DETAIL_DATA_PATH
  170 + return url
  171 + }
  172 +
  173 + static getFollowListDataUrl() {
  174 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_DATA_PATH
  175 + return url
  176 + }
  177 +
  178 + static getMineFollowListDataUrl() {
  179 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_FOLLOW_LIST_DATA_PATH
  180 + return url
  181 + }
  182 +
  183 + static getFollowListStatusDataUrl() {
  184 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_STATUS_DATA_PATH
  185 + return url
  186 + }
  187 +
  188 + static getMineCommentListDataUrl() {
  189 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_COMMENT_LIST_DATA_PATH
  190 + return url
  191 + }
  192 +
  193 + static getMineUserLevelDataUrl() {
  194 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_USER_LEVEL_DATA_PATH
  195 + return url
  196 + }
  197 +
  198 + static getMineUserDetailDataUrl() {
  199 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_USER_DETAIL_DATA_PATH
  200 + return url
  201 + }
  202 +
  203 +
  204 + static getYcgCommonHeaders(): HashMap<string, string> {
  205 + let headers: HashMap<string, string> = new HashMap<string, string>()
  206 +
  207 + headers.set('mpassid', 'XGt6jfGUx8ADAKruTyAMdhHj')
  208 + headers.set('city', "%E5%90%88%E8%82%A5%E5%B8%82")
  209 + headers.set('User-Agent', 'Dalvik/2.1.0 (Linux; U; Android 10; PCT-AL10 Build/HUAWEIPCT-AL10)')
  210 + headers.set('channel', "rmrb_china_0000")
  211 + headers.set('appCode', "0af1f9085e484c97b2a44704bae72c07")
  212 + headers.set('Authorization', "APPCODE 0af1f9085e484c97b2a44704bae72c07")
  213 + headers.set('X-Ca-Stage', "TEST")
  214 + headers.set('plat', "Phone")
  215 + headers.set('Content-Type', 'application/json; charset=utf-8')
  216 + headers.set('timestamp', "740977741")
  217 + headers.set('RMRB-X-TOKEN', "eyJhbGciOiJIUzI1NiIsImtpZCI6IklFazBGclhfV2RYMEx1ZktDU01iYTVYd0VmUHZ6a043T0F5UTRFLWIwWU0ifQ.eyJpc3MiOiJwZW9wbGVzLWRhaWx5LWZvdXJhIiwic3ViIjoicGVvcGxlcy1kYWlseS1mb3VyYSIsImV4cCI6MTcxMDc1NjM3NywidXNlcklkIjo1NjczODc0NzcwNjM2MjEsInVzZXJWZXJzaW9uIjoiNTY3Mzg3NDc3MDYzNjIxXzAiLCJ1c2VyTmFtZSI6IiVFNCVCQSVCQSVFNiVCMCU5MSVFNiU5NyVBNSVFNiU4QSVBNSVFNyVCRCU5MSVFNSU4RiU4QmFQcnRxNSIsInVzZXJUeXBlIjoxLCJjcmVhdG9ySWQiOm51bGwsInVzZXJJZFpoIjpudWxsfQ.KBkF0Yki-JWlq0ZIOCzgKwQc1ycBnFHa6CF-rMPRgHU")
  218 + headers.set('device_id', "5156098c-6c44-3514-af70-04a0139a9327")
  219 + // headers.set('cookie', 'RMRB-X-TOKEN=eyJhbGciOiJIUzI1NiIsImtpZCI6IklFazBGclhfV2RYMEx1ZktDU01iYTVYd0VmUHZ6a043T0F5UTRFLWIwWU0ifQ.eyJpc3MiOiJwZW9wbGVzLWRhaWx5LWZvdXJhIiwic3ViIjoicGVvcGxlcy1kYWlseS1mb3VyYSIsImV4cCI6MTcxMDU4Mzk0MywidXNlcklkIjo1NjczODc0NzcwNjM2MjEsInVzZXJWZXJzaW9uIjoiNTY3Mzg3NDc3MDYzNjIxXzAiLCJ1c2VyTmFtZSI6IiVFNCVCQSVCQSVFNiVCMCU5MSVFNiU5NyVBNSVFNiU4QSVBNSVFNyVCRCU5MSVFNSU4RiU4QmFQcnRxNSIsInVzZXJUeXBlIjoxLCJjcmVhdG9ySWQiOm51bGwsInVzZXJJZFpoIjpudWxsfQ._LTKrUxQozpCj1XMhx1TWOIxn5gjDveoPuMFGpI0g_8')
  220 + headers.set('build_version', "202403112023")
  221 + headers.set('adcode', "340000")
  222 + headers.set('os_version', "10")
  223 + headers.set('city_dode', "340100")
  224 + headers.set('userId', "567387477063621")
  225 + headers.set('versionCode', "7302")
  226 + headers.set('system', "Android")
  227 + headers.set('version_name', "7.3.0.2")
  228 + headers.set('EagleEye-TraceID', '101118E4D006453DA549A82AA8CAFBFE')
  229 + headers.set('imei', "5156098c-6c44-3514-af70-04a0139a9327")
  230 + headers.set('userType', "1")
  231 + headers.set('Accept-Language', 'zh')
  232 +
  233 + // HttpUrlUtils.addSpecialHeaders(headers);
  234 + // Logger.debug("TAG", '******************* commonHeaders headers start ******************************** ');
  235 + // headers.forEach((v,k)=>{
  236 + // Logger.debug("TAG", 'getCommonHeaders header: ' + k + ': ' + v);
  237 + // })
  238 + // Logger.debug("TAG", '******************* commonHeaders headers end ******************************** ');
  239 + return headers;
  240 + }
  241 +
170 static addSpecialHeaders(headers: HashMap<string, string>) { 242 static addSpecialHeaders(headers: HashMap<string, string>) {
171 switch (this.hostUrl) { 243 switch (this.hostUrl) {
172 case this.HOST_UAT: 244 case this.HOST_UAT:
  1 +
  2 +
  3 +@Observed
  4 +export class CommentListItem{
  5 + fromUserHeader:string = ""
  6 + fromUserName:string = ""
  7 + commentContent:string = ""
  8 + targetTitle:string = ""
  9 + createTime:string = ""
  10 +
  11 + constructor(fromUserHeader:string,fromUserName:string,targetTitle:string,createTime:string,commentContent:string ) {
  12 + this.fromUserHeader = fromUserHeader
  13 + this.fromUserName = fromUserName
  14 + this.commentContent = commentContent
  15 + this.targetTitle = targetTitle
  16 + this.createTime = createTime
  17 + }
  18 +}
@@ -65,12 +65,21 @@ export class FollowListDetailItem{ @@ -65,12 +65,21 @@ export class FollowListDetailItem{
65 cnUserName:string //昵称 65 cnUserName:string //昵称
66 cnFansNum:number //粉丝数 66 cnFansNum:number //粉丝数
67 introduction:string //介绍 67 introduction:string //介绍
68 - isFollow:boolean = false //是否已经关注 68 + status:string = "0" //是否已经关注
  69 + creatorId:string = ""
69 70
70 - constructor(headPhotoUrl:string,cnUserName:string,cnFansNum:number,introduction:string) { 71 + attentionCreatorId:string = ""
  72 + attentionHeadPhotoUrl:string = ""
  73 + attentionUserName:string = ""
  74 + fansNum :number = 0
  75 +
  76 +
  77 + constructor(headPhotoUrl:string,cnUserName:string,cnFansNum:number,introduction:string,creatorId:string,status:string ) {
71 this.headPhotoUrl = headPhotoUrl 78 this.headPhotoUrl = headPhotoUrl
72 this.cnUserName = cnUserName 79 this.cnUserName = cnUserName
73 this.cnFansNum = cnFansNum 80 this.cnFansNum = cnFansNum
74 this.introduction = introduction 81 this.introduction = introduction
  82 + this.creatorId = creatorId
  83 + this.status = status
75 } 84 }
76 } 85 }
  1 +export class FollowListDetailRequestItem{
  2 + creatorDirectoryId:number = -1
  3 + pageSize:number = 20
  4 + pageNum:number = 1
  5 +
  6 + constructor(creatorDirectoryId: number = -1,
  7 + pageSize: number = 20,
  8 + pageNum: number = 1) {
  9 + this.creatorDirectoryId = creatorDirectoryId
  10 + this.pageSize = pageSize
  11 + this.pageNum = pageNum
  12 + }
  13 +}
@@ -38,33 +38,33 @@ export class FollowListItem{ @@ -38,33 +38,33 @@ export class FollowListItem{
38 constructor(directoryName:string) { 38 constructor(directoryName:string) {
39 this.directoryName = directoryName 39 this.directoryName = directoryName
40 } 40 }
41 - directoryName:string  
42 - directoryWeight:number  
43 - id:number  
44 - isShow:number  
45 - level:number  
46 - parentId:number  
47 - rootId:number  
48 - children:FollowSecondListItem[] 41 + directoryName:string = ""
  42 + directoryWeight:number = 0
  43 + id:number = -1
  44 + isShow:number = 1
  45 + level:number = 1
  46 + parentId:number = 0
  47 + rootId:number = 0
  48 + children:FollowSecondListItem[] = []
49 } 49 }
50 @Observed 50 @Observed
51 export class FollowSecondListItem{ 51 export class FollowSecondListItem{
52 - directoryName:string  
53 - directoryWeight:number  
54 - id:number  
55 - isShow:number  
56 - level:number  
57 - parentId:number  
58 - rootId:number  
59 - children:FollowThirdListItem[] 52 + directoryName:string = ""
  53 + directoryWeight:number = 0
  54 + id:number = 0
  55 + isShow:number = 1
  56 + level:number = 1
  57 + parentId:number = 0
  58 + rootId:number = 0
  59 + children:FollowThirdListItem[] = []
60 } 60 }
61 @Observed 61 @Observed
62 export class FollowThirdListItem{ 62 export class FollowThirdListItem{
63 - directoryName:string  
64 - directoryWeight:number  
65 - id:number  
66 - isShow:number  
67 - level:number  
68 - parentId:number  
69 - rootId:number 63 + directoryName:string = ""
  64 + directoryWeight:number = 0
  65 + id:number = 0
  66 + isShow:number = 1
  67 + level:number = 1
  68 + parentId:number = 0
  69 + rootId:number = 0
70 } 70 }
  1 +import { QueryListIsFollowedItem } from './QueryListIsFollowedItem'
  2 +
  3 +// {"creatorIds":[{"creatorId":"3004862"},{"creatorId":"3004855"}]}
  4 +
  5 +export class FollowListStatusRequestItem{
  6 + creatorIds:QueryListIsFollowedItem[] = []
  7 +}
  1 +
  2 +import { CommentListItem } from './CommentListItem'
  3 +export class MineCommentListDetailItem{
  4 + list:CommentListItem[] = []
  5 +
  6 + pageNum: number = 0
  7 + pageSize: number = 20
  8 + totalCount: number = 0
  9 +
  10 + constructor(list?:CommentListItem[],pageNum?: number,pageSize?: number,totalCount?: number) {
  11 + }
  12 +
  13 +}
  1 +import { FollowListDetailItem } from './FollowListDetailItem'
  2 +
  3 +export class MineFollowListDetailItem{
  4 + list:FollowListDetailItem[] = []
  5 +
  6 + pageNum: number = 0
  7 + pageSize: number = 20
  8 + totalCount: number = 0
  9 +
  10 + constructor(list?:FollowListDetailItem[],pageNum?: number,pageSize?: number,totalCount?: number) {
  11 + }
  12 +
  13 +}
  1 +import { MineFollowListDetailItem } from './MineFollowListDetailItem'
  2 +
  3 +export class MineFollowListItem extends MineFollowListDetailItem{
  4 + hasNext: number = 0
  5 +}
  1 +
  2 +export class MineUserDetailItem{
  3 + userName:string = ""
  4 + headPhotoUrl:"" = ""
  5 + introduction:string = ""
  6 + userType:string = "1"
  7 + creatorId:string = ""
  8 + browseNum:number = 0//阅读数
  9 + commentNum:number = 0//评论数
  10 + attentionNum:number = 0//关注数
  11 + registTime:number = 0//账号注册时间
  12 +
  13 + levelHead:string = ""
  14 + levelId:number = 0
  15 +}
  1 +
  2 +export class MineUserLevelItem{
  3 + levelHead:string = ""
  4 + levelId:number = 0
  5 + levelName:string = ""
  6 +
  7 +}
  1 +
  2 +// "creatorId": "3004862",
  3 +// "status": "0",
  4 +// "userId": "567387477063621"
  5 +
  6 +export class QueryListIsFollowedItem{
  7 + creatorId:string = "-1"
  8 + status:string = "0"
  9 + userId:string = ""
  10 +
  11 + constructor(creatorId: string) {
  12 + this.creatorId = creatorId
  13 + }
  14 +}
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 "phone", 7 "phone",
8 "tablet" 8 "tablet"
9 ], 9 ],
10 - "deliveryWithInstall": true 10 + "deliveryWithInstall": true,
  11 + "pages": "$profile:main_pages"
11 } 12 }
12 } 13 }
@@ -90,6 +90,18 @@ @@ -90,6 +90,18 @@
90 { 90 {
91 "name":"color_EDEDED", 91 "name":"color_EDEDED",
92 "value": "#EDEDED" 92 "value": "#EDEDED"
  93 + },
  94 + {
  95 + "name":"color_1AED2800",
  96 + "value": "#1AED2800"
  97 + },
  98 + {
  99 + "name":"color_B2FFFFFF",
  100 + "value": "#B2FFFFFF"
  101 + },
  102 + {
  103 + "name":"color_transparent",
  104 + "value": "#00000000"
93 } 105 }
94 ] 106 ]
95 } 107 }
1 { 1 {
2 "src": [ 2 "src": [
3 - "components/DemoPreviewerComponent",  
4 - "components/view/SmallVideoCardComponent"  
5 ] 3 ]
6 } 4 }
@@ -3,6 +3,8 @@ import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; @@ -3,6 +3,8 @@ import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
3 import common from '@ohos.app.ability.common'; 3 import common from '@ohos.app.ability.common';
4 import featureAbility from '@ohos.ability.featureAbility'; 4 import featureAbility from '@ohos.ability.featureAbility';
5 import wantConstant from '@ohos.ability.wantConstant'; 5 import wantConstant from '@ohos.ability.wantConstant';
  6 +import Want from '@ohos.app.ability.Want';
  7 +import { AppUtils } from './AppUtils';
6 8
7 export class PermissionUtil { 9 export class PermissionUtil {
8 async checkAccessToken(permission: Permissions): Promise<abilityAccessCtrl.GrantStatus> { 10 async checkAccessToken(permission: Permissions): Promise<abilityAccessCtrl.GrantStatus> {
@@ -43,21 +45,21 @@ export class PermissionUtil { @@ -43,21 +45,21 @@ export class PermissionUtil {
43 return hasPermissions; 45 return hasPermissions;
44 } 46 }
45 47
46 - static reqPermissionsFromUser(permissions: Array<Permissions>): void {  
47 - // let context = getContext(this) as common.UIAbilityContext;  
48 - // let atManager = abilityAccessCtrl.createAtManager();  
49 - // // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗  
50 - // atManager.requestPermissionsFromUser(context, permissions).then((data) => {  
51 - // let grantStatus: Array<number> = data.authResults;  
52 - // let length: number = grantStatus.length;  
53 - // for (let i = 0; i < length; i++) {  
54 - // if (grantStatus[i] === 0) {  
55 - // // 用户授权,可以继续访问目标操作  
56 - //  
57 - // } else {  
58 - //  
59 - // this.jumpSetting();  
60 - // // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限 48 + static reqPermissionsFromUser(permissions: Array<Permissions>, component: Object): void {
  49 + let context = getContext(component) as common.UIAbilityContext;
  50 + let atManager = abilityAccessCtrl.createAtManager();
  51 + // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
  52 + atManager.requestPermissionsFromUser(context, permissions).then((data) => {
  53 + let grantStatus: Array<number> = data.authResults;
  54 + let length: number = grantStatus.length;
  55 + for (let i = 0; i < length; i++) {
  56 + if (grantStatus[i] === 0) {
  57 + // 用户授权,可以继续访问目标操作
  58 +
  59 + } else {
  60 +
  61 + PermissionUtil.openPermissionsInSystemSettings(component);
  62 + // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
61 // AlertDialog.show({ 63 // AlertDialog.show({
62 // title: '权限设置', 64 // title: '权限设置',
63 // message: '到系统设置中打开相应的权限', 65 // message: '到系统设置中打开相应的权限',
@@ -68,17 +70,28 @@ export class PermissionUtil { @@ -68,17 +70,28 @@ export class PermissionUtil {
68 // }, 70 // },
69 // } 71 // }
70 // }) 72 // })
71 - // return;  
72 - // }  
73 - // }  
74 - // // 授权成功  
75 - // }).catch((err) => { 73 + return;
  74 + }
  75 + }
  76 + // 授权成功
  77 + }).catch((err:Error) => {
76 // console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`); 78 // console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`);
77 - // }) 79 + })
78 } 80 }
79 81
80 82
81 - static jumpSetting() {  
82 - 83 + static openPermissionsInSystemSettings(component: Object): void {
  84 + let context = getContext(component) as common.UIAbilityContext;
  85 + let wantInfo:Want = {
  86 + action: 'action.settings.app.info',
  87 + parameters: {
  88 + settingsParamBundleName: AppUtils.getPackageName(context) // 打开指定应用的详情页面
  89 + }
  90 + }
  91 + context.startAbility(wantInfo).then(() => {
  92 + // ...
  93 + }).catch((err:Error) => {
  94 + // ...
  95 + })
83 } 96 }
84 } 97 }
1 import HashMap from '@ohos.util.HashMap' 1 import HashMap from '@ohos.util.HashMap'
2 -import { ConfigConstants } from 'wdConstant'  
3 -import { DateTimeUtils, Logger, SPHelper } from 'wdKit' 2 +import { ConfigConstants, SpConstants } from 'wdConstant'
  3 +import { DateTimeUtils, Logger, SPHelper, StringUtils } from 'wdKit'
4 4
5 /** 5 /**
6 * 网络请求业务侧工具类 6 * 网络请求业务侧工具类
@@ -69,10 +69,15 @@ export class HttpUrlUtils { @@ -69,10 +69,15 @@ export class HttpUrlUtils {
69 */ 69 */
70 static readonly APPOINTMENT_LIST_DATA_PATH: string = "/api/live-center-message/zh/c/live/subscribe"; 70 static readonly APPOINTMENT_LIST_DATA_PATH: string = "/api/live-center-message/zh/c/live/subscribe";
71 /** 71 /**
72 - * 资料编辑 获取用户信息 72 + * 资料编辑 特殊用户信息
73 */ 73 */
74 static readonly APPOINTMENT_AccountOwner_PATH: string = "/api/rmrb-contact/contact/zh/c/my/detail"; 74 static readonly APPOINTMENT_AccountOwner_PATH: string = "/api/rmrb-contact/contact/zh/c/my/detail";
75 /** 75 /**
  76 + * 资料编辑 普通用户信息
  77 + */
  78 + static readonly APPOINTMENT_QueryUserDetail_PATH: string = "/api/rmrb-user-center/user/zh/c/queryUserDetail";
  79 + /**
  80 + /**
76 * 个人中心 关注列表详情 81 * 个人中心 关注列表详情
77 */ 82 */
78 static readonly FOLLOW_LIST_DETAIL_DATA_PATH: string = "/api/rmrb-creator-user/c/creatorDirectory/getContactMasterDetaiPage"; 83 static readonly FOLLOW_LIST_DETAIL_DATA_PATH: string = "/api/rmrb-creator-user/c/creatorDirectory/getContactMasterDetaiPage";
@@ -97,6 +102,25 @@ export class HttpUrlUtils { @@ -97,6 +102,25 @@ export class HttpUrlUtils {
97 * 个人中心 我的评论列表 102 * 个人中心 我的评论列表
98 */ 103 */
99 static readonly MINE_COMMENT_LIST_DATA_PATH: string = "/api/rmrb-comment/comment/zh/c/myCommentList"; 104 static readonly MINE_COMMENT_LIST_DATA_PATH: string = "/api/rmrb-comment/comment/zh/c/myCommentList";
  105 +
  106 + /**
  107 + * 个人中心 APP获取用户等级
  108 + */
  109 + static readonly MINE_USER_LEVEL_DATA_PATH: string = "/api/rmrb-user-point/auth/level/zh/c/queryUserLevel";
  110 +
  111 + /**
  112 + * 个人中心 APP获取其他用户等级
  113 + */
  114 + static readonly OTHER_USER_LEVEL_DATA_PATH: string = "/api/rmrb-user-point/auth/level/zh/c/batchUser";
  115 +
  116 + /**
  117 + * 个人中心 (号主/普通用户)我的基本信息
  118 + */
  119 + static readonly MINE_USER_DETAIL_DATA_PATH: string = "/api/rmrb-contact/contact/zh/c/my/detail";
  120 + /**
  121 + * 个人中心 (普通用户)其他用户 的基本信息
  122 + */
  123 + static readonly OTHER_USER_DETAIL_DATA_PATH: string = "/api/rmrb-contact/contact/zh/c/master/detail";
100 /** 124 /**
101 * 早晚报列表 125 * 早晚报列表
102 * 根据页面id获取页面楼层列表 126 * 根据页面id获取页面楼层列表
@@ -269,6 +293,10 @@ export class HttpUrlUtils { @@ -269,6 +293,10 @@ export class HttpUrlUtils {
269 293
270 private static getUserId() { 294 private static getUserId() {
271 // TODO 对接登录 295 // TODO 对接登录
  296 + // let userid = await SPHelper.default.get(SpConstants.USER_ID,"")
  297 + // if(StringUtils.isNotEmpty(userid)) {
  298 + // return userid as string;
  299 + // }
272 return HttpUrlUtils.userId; 300 return HttpUrlUtils.userId;
273 } 301 }
274 302
@@ -281,6 +309,21 @@ export class HttpUrlUtils { @@ -281,6 +309,21 @@ export class HttpUrlUtils {
281 return url; 309 return url;
282 } 310 }
283 311
  312 + static getForgetPasswordUrl() {
  313 + let url = HttpUrlUtils.hostUrl + "/api/rmrb-user-center/auth/zh/c/forgotPassword";
  314 + return url;
  315 + }
  316 +
  317 + static queryUserDetail() {
  318 + let url = HttpUrlUtils.hostUrl + "/api/rmrb-user-center/user/zh/c/queryUserDetail";
  319 + return url;
  320 + }
  321 +
  322 + static editUserDetail() {
  323 + let url = HttpUrlUtils.hostUrl + "/user/zh/c/editUserDetail";
  324 + return url;
  325 + }
  326 +
284 static getAppLoginUrl() :string{ 327 static getAppLoginUrl() :string{
285 let url = HttpUrlUtils.getHost() + "/api/rmrb-user-center/auth/zh/c/appLogin"; 328 let url = HttpUrlUtils.getHost() + "/api/rmrb-user-center/auth/zh/c/appLogin";
286 return url; 329 return url;
@@ -326,6 +369,27 @@ export class HttpUrlUtils { @@ -326,6 +369,27 @@ export class HttpUrlUtils {
326 return url 369 return url
327 } 370 }
328 371
  372 + static getMineUserLevelDataUrl() {
  373 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_USER_LEVEL_DATA_PATH
  374 + return url
  375 + }
  376 +
  377 + static getOtherUserLevelDataUrl() {
  378 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.OTHER_USER_LEVEL_DATA_PATH
  379 + return url
  380 + }
  381 +
  382 + static getMineUserDetailDataUrl() {
  383 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_USER_DETAIL_DATA_PATH
  384 + return url
  385 + }
  386 +
  387 + static getOtherUserDetailDataUrl() {
  388 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.OTHER_USER_DETAIL_DATA_PATH
  389 + return url
  390 + }
  391 +
  392 +
329 static getYcgCommonHeaders(): HashMap<string, string> { 393 static getYcgCommonHeaders(): HashMap<string, string> {
330 let headers: HashMap<string, string> = new HashMap<string, string>() 394 let headers: HashMap<string, string> = new HashMap<string, string>()
331 395
@@ -61,8 +61,11 @@ export class WDRouterPage { @@ -61,8 +61,11 @@ export class WDRouterPage {
61 static aboutPage = new WDRouterPage("wdComponent", "ets/components/page/SettingAboutPage"); 61 static aboutPage = new WDRouterPage("wdComponent", "ets/components/page/SettingAboutPage");
62 // 设置页 62 // 设置页
63 static settingPage = new WDRouterPage("wdComponent", "ets/components/page/SettingPage"); 63 static settingPage = new WDRouterPage("wdComponent", "ets/components/page/SettingPage");
64 - // 账户与安全页  
65 - // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview");  
66 // 设置密码页、设置手机号页等等 (需要传参) 64 // 设置密码页、设置手机号页等等 (需要传参)
  65 + static settingPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/SettingPasswordPage");
  66 +
  67 + //其他普通用户 主页
  68 + static otherNormalUserHomePagePage = new WDRouterPage("wdComponent", "ets/pages/OtherNormalUserHomePage");
  69 +
67 // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview"); 70 // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview");
68 } 71 }
@@ -51,6 +51,10 @@ export { NewspaperTimeItemBean } from './src/main/ets/bean/newspaper/NewspaperTi @@ -51,6 +51,10 @@ export { NewspaperTimeItemBean } from './src/main/ets/bean/newspaper/NewspaperTi
51 51
52 export { ContentDetailDTO } from './src/main/ets/bean/detail/ContentDetailDTO'; 52 export { ContentDetailDTO } from './src/main/ets/bean/detail/ContentDetailDTO';
53 53
  54 +export { RmhInfoDTO } from './src/main/ets/bean/detail/RmhInfoDTO';
  55 +
  56 +export { UserInfoDTO } from './src/main/ets/bean/detail/UserInfoDTO';
  57 +
54 export { AuthorListDTO } from './src/main/ets/bean/detail/AuthorListDTO'; 58 export { AuthorListDTO } from './src/main/ets/bean/detail/AuthorListDTO';
55 59
56 export { FullColumnImgUrlDTO } from './src/main/ets/bean/detail/FullColumnImgUrlDTO'; 60 export { FullColumnImgUrlDTO } from './src/main/ets/bean/detail/FullColumnImgUrlDTO';
@@ -3,6 +3,8 @@ import { FullColumnImgUrlDTO } from './FullColumnImgUrlDTO'; @@ -3,6 +3,8 @@ import { FullColumnImgUrlDTO } from './FullColumnImgUrlDTO';
3 import { ReLInfoDTO } from './ReLInfoDTO'; 3 import { ReLInfoDTO } from './ReLInfoDTO';
4 import { ShareInfoDTO } from './ShareInfoDTO'; 4 import { ShareInfoDTO } from './ShareInfoDTO';
5 import { VideoInfoDTO } from './VideoInfoDTO'; 5 import { VideoInfoDTO } from './VideoInfoDTO';
  6 +import { RmhInfoDTO } from './RmhInfoDTO'
  7 +import { UserInfoDTO } from './UserInfoDTO'
6 8
7 /** 9 /**
8 * 接口定义: 10 * 接口定义:
@@ -40,8 +42,8 @@ export interface ContentDetailDTO { @@ -40,8 +42,8 @@ export interface ContentDetailDTO {
40 videoInfo: VideoInfoDTO[]; 42 videoInfo: VideoInfoDTO[];
41 liveInfo?: any; 43 liveInfo?: any;
42 voteInfo?: any; 44 voteInfo?: any;
43 - rmhInfo?: any;  
44 - userInfo?: any; 45 + rmhInfo?: RmhInfoDTO;
  46 + userInfo?: UserInfoDTO;
45 openLikes: number; 47 openLikes: number;
46 openComment: number; 48 openComment: number;
47 likesStyle: number; 49 likesStyle: number;
  1 +export interface RmhInfoDTO {
  2 + authIcon: string;
  3 + authTitle: string;
  4 + authTitle2: string;
  5 + banControl: number;
  6 + cnAttention: number;
  7 + cnMainControl: number;
  8 + cnShareControl: number;
  9 + cnlsComment: number;
  10 + cnlsLike: number;
  11 + posterShareControl: number;
  12 + rmhDesc: string;
  13 + rmhHeadUrl: string;
  14 + rmhId: string;
  15 + rmhName: string;
  16 + userId: string;
  17 + userType: string;
  18 +}
  1 +export interface UserInfoDTO {
  2 + userHeadUrl:string
  3 +}
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
12 "wdWebComponent": "file:../../commons/wdWebComponent", 12 "wdWebComponent": "file:../../commons/wdWebComponent",
13 "wdBean": "file:../../features/wdBean", 13 "wdBean": "file:../../features/wdBean",
14 "wdRouter": "file:../../commons/wdRouter", 14 "wdRouter": "file:../../commons/wdRouter",
15 - "wdNetwork": "file:../../commons/wdNetwork" 15 + "wdNetwork": "file:../../commons/wdNetwork",
  16 + "wdLogin": "file:../../features/wdLogin"
16 } 17 }
17 } 18 }
@@ -22,6 +22,8 @@ export struct ENewspaperPageComponent { @@ -22,6 +22,8 @@ export struct ENewspaperPageComponent {
22 @State calendarDate: string = '' 22 @State calendarDate: string = ''
23 private swiperController: SwiperController = new SwiperController() 23 private swiperController: SwiperController = new SwiperController()
24 @State swiperIndex: number = 0; 24 @State swiperIndex: number = 0;
  25 + //当前选择的日期标记
  26 + @State selectDate: Date = new Date()
25 27
26 //watch监听报纸页码回调 28 //watch监听报纸页码回调
27 onCurrentPageNumUpdated(): void { 29 onCurrentPageNumUpdated(): void {
@@ -34,6 +36,7 @@ export struct ENewspaperPageComponent { @@ -34,6 +36,7 @@ export struct ENewspaperPageComponent {
34 //日历选择弹框 36 //日历选择弹框
35 calendarDialogController: CustomDialogController = new CustomDialogController({ 37 calendarDialogController: CustomDialogController = new CustomDialogController({
36 builder: ENewspaperCalendarDialog({ 38 builder: ENewspaperCalendarDialog({
  39 + selectDate: this.selectDate,
37 onDateChange: (date: RMCalendarBean) => { 40 onDateChange: (date: RMCalendarBean) => {
38 console.log("onDateChange-日历选择弹框", "date:", JSON.stringify(date)) 41 console.log("onDateChange-日历选择弹框", "date:", JSON.stringify(date))
39 if (date.fullYear && date.month && date.date) { 42 if (date.fullYear && date.month && date.date) {
@@ -41,6 +44,7 @@ export struct ENewspaperPageComponent { @@ -41,6 +44,7 @@ export struct ENewspaperPageComponent {
41 this.calendarDate = `${date.fullYear}-${month > 9 ? month : '0' + month}-${date.date > 9 ? date.date : '0' + date.date}` 44 this.calendarDate = `${date.fullYear}-${month > 9 ? month : '0' + month}-${date.date > 9 ? date.date : '0' + date.date}`
42 this.getNewspaperTime() 45 this.getNewspaperTime()
43 this.getNewspaperList() 46 this.getNewspaperList()
  47 + this.selectDate = new Date(date.fullYear ? date.fullYear : 0, date.month ? date.month : 0, date.date ? date.date : 0)
44 } 48 }
45 } 49 }
46 }), 50 }),
@@ -36,12 +36,14 @@ export struct topicInfoView { @@ -36,12 +36,14 @@ export struct topicInfoView {
36 .fontSize(16) 36 .fontSize(16)
37 .fontColor($r('app.color.white')) 37 .fontColor($r('app.color.white'))
38 .maxLines(1) 38 .maxLines(1)
  39 + .backgroundColor($r('app.color.color_99636363'))
  40 + .borderRadius(2)
39 41
40 Image($r('app.media.more')) 42 Image($r('app.media.more'))
41 .height($r('app.float.top_arrow_size')) 43 .height($r('app.float.top_arrow_size'))
42 .width(20) 44 .width(20)
43 } 45 }
44 - .margin({ top: 10 }) 46 + .margin({ top: 10, left: 16, right: 16 })
45 // .backgroundColor(Color.Red) 47 // .backgroundColor(Color.Red)
46 .alignRules({ 48 .alignRules({
47 left: { anchor: "__container__", align: HorizontalAlign.Start }, 49 left: { anchor: "__container__", align: HorizontalAlign.Start },
@@ -6,17 +6,18 @@ const TAG = "RMCalendar" @@ -6,17 +6,18 @@ const TAG = "RMCalendar"
6 @Component 6 @Component
7 export struct RMCalendar { 7 export struct RMCalendar {
8 @State selectItem: RMCalendarBean = new RMCalendarBean() 8 @State selectItem: RMCalendarBean = new RMCalendarBean()
9 - private today: Date = new Date() // 当天 9 + //选中的日期
  10 + private selectDay: Date = new Date()
10 // 开始日期 11 // 开始日期
11 startDate: Date = new Date() 12 startDate: Date = new Date()
12 // 截止日期 13 // 截止日期
13 endDate: Date = new Date() 14 endDate: Date = new Date()
14 //当前日期-当前显示的月份的第一天 15 //当前日期-当前显示的月份的第一天
15 - private startDay: Date = new Date(  
16 - this.today.getFullYear(),  
17 - this.today.getMonth(),  
18 - 1  
19 - ) 16 + // private startDay: Date = new Date(
  17 + // this.selectDay.getFullYear(),
  18 + // this.selectDay.getMonth(),
  19 + // 1
  20 + // )
20 // 是否有上一个月 21 // 是否有上一个月
21 @State private hasPre: boolean = true 22 @State private hasPre: boolean = true
22 // 是否有下一个月 23 // 是否有下一个月
@@ -42,12 +43,12 @@ export struct RMCalendar { @@ -42,12 +43,12 @@ export struct RMCalendar {
42 itemFontColor: ResourceColor = "#333333" 43 itemFontColor: ResourceColor = "#333333"
43 itemFontWeight: FontWeight = FontWeight.Bold 44 itemFontWeight: FontWeight = FontWeight.Bold
44 // 今日字体颜色 45 // 今日字体颜色
45 - todayFontColor: ResourceColor = "#ED2800" 46 + selectDayFontColor: ResourceColor = "#ED2800"
46 // 不能使用的日期字体颜色 47 // 不能使用的日期字体颜色
47 disabledFontColor: ResourceColor = "#CCCCCC" 48 disabledFontColor: ResourceColor = "#CCCCCC"
48 // 选中日期字体颜色 49 // 选中日期字体颜色
49 selectFontColor: ResourceColor = "#FFFFFF" 50 selectFontColor: ResourceColor = "#FFFFFF"
50 - // 选中日期背景颜色, 默认与todayFontColor一致 51 + // 选中日期背景颜色, 默认与selectDayFontColor一致
51 selectItemBgColor: ResourceColor = "#ED2800" 52 selectItemBgColor: ResourceColor = "#ED2800"
52 @State private title: string = '' 53 @State private title: string = ''
53 // 计算的总加载 54 // 计算的总加载
@@ -57,7 +58,7 @@ export struct RMCalendar { @@ -57,7 +58,7 @@ export struct RMCalendar {
57 // 自定义每一项布局 58 // 自定义每一项布局
58 public cellLayout?: (item: RMCalendarBean) => void 59 public cellLayout?: (item: RMCalendarBean) => void
59 // 仅自定义 今日 样式,当使用cellLayout时,tadayLayout无效 60 // 仅自定义 今日 样式,当使用cellLayout时,tadayLayout无效
60 - todayLayout?: (item: RMCalendarBean) => void 61 + selectDayLayout?: (item: RMCalendarBean) => void
61 // 计算item时,如需添加更多自定义属性时使用 62 // 计算item时,如需添加更多自定义属性时使用
62 reBuildDateItem?: (item: RMCalendarBean) => RMCalendarBean 63 reBuildDateItem?: (item: RMCalendarBean) => RMCalendarBean
63 // 选择变化监听, 64 // 选择变化监听,
@@ -84,10 +85,10 @@ export struct RMCalendar { @@ -84,10 +85,10 @@ export struct RMCalendar {
84 cellLayout: this.cellLayout, 85 cellLayout: this.cellLayout,
85 itemFontSize: this.itemFontSize, 86 itemFontSize: this.itemFontSize,
86 itemFontColor: this.itemFontColor, 87 itemFontColor: this.itemFontColor,
87 - today: this.today.getTime(), 88 + selectDay: this.selectDay.getTime(),
88 itemFontWeight: this.itemFontWeight, 89 itemFontWeight: this.itemFontWeight,
89 - todayFontColor: this.todayFontColor,  
90 - todayLayout: this.todayLayout, 90 + selectDayFontColor: this.selectDayFontColor,
  91 + selectDayLayout: this.selectDayLayout,
91 selectItem: $selectItem, 92 selectItem: $selectItem,
92 selectFontColor: this.selectFontColor, 93 selectFontColor: this.selectFontColor,
93 selectItemBgColor: this.selectItemBgColor, 94 selectItemBgColor: this.selectItemBgColor,
@@ -123,12 +124,12 @@ export struct RMCalendar { @@ -123,12 +124,12 @@ export struct RMCalendar {
123 */ 124 */
124 initAttr() { 125 initAttr() {
125 if (!this.selectItemBgColor) { 126 if (!this.selectItemBgColor) {
126 - this.selectItemBgColor = this.todayFontColor 127 + this.selectItemBgColor = this.selectDayFontColor
127 } 128 }
128 - this.today = new Date(  
129 - this.today.getFullYear(),  
130 - this.today.getMonth(),  
131 - this.today.getDate(), 129 + this.selectDay = new Date(
  130 + this.selectDay.getFullYear(),
  131 + this.selectDay.getMonth(),
  132 + this.selectDay.getDate(),
132 ) 133 )
133 134
134 // 开始日期 135 // 开始日期
@@ -137,24 +138,24 @@ export struct RMCalendar { @@ -137,24 +138,24 @@ export struct RMCalendar {
137 } 138 }
138 // 截止日期 139 // 截止日期
139 if (!this.endDate) { 140 if (!this.endDate) {
140 - this.endDate = new Date(this.today.getFullYear() + 10, 11, 31) 141 + this.endDate = new Date(this.selectDay.getFullYear() + 10, 11, 31)
141 } 142 }
142 143
143 - if (this.today.getTime() < this.startDate.getTime()) {  
144 - this.startDay.setTime(this.startDate.getTime())  
145 - } else if (this.today.getTime() > this.endDate.getTime()) {  
146 - this.startDay.setTime(this.endDate.getTime()) 144 + if (this.selectDay.getTime() < this.startDate.getTime()) {
  145 + this.selectDay.setTime(this.startDate.getTime())
  146 + } else if (this.selectDay.getTime() > this.endDate.getTime()) {
  147 + this.selectDay.setTime(this.endDate.getTime())
147 } else { 148 } else {
148 - this.startDay.setTime(this.today.getTime()) 149 + this.selectDay.setTime(this.selectDay.getTime())
149 } 150 }
150 } 151 }
151 152
152 aboutToAppear() { 153 aboutToAppear() {
153 this.initAttr() 154 this.initAttr()
154 let temp = new RMCalendarBean() 155 let temp = new RMCalendarBean()
155 - temp.time = this.today.getTime() 156 + temp.time = this.selectDay.getTime()
156 this.selectItem = temp 157 this.selectItem = temp
157 - this.calcDatas() 158 + this.calcData()
158 } 159 }
159 160
160 /** 161 /**
@@ -163,12 +164,12 @@ export struct RMCalendar { @@ -163,12 +164,12 @@ export struct RMCalendar {
163 private nextMonth() { 164 private nextMonth() {
164 // this.dates.slice(0, this.dates.length) 165 // this.dates.slice(0, this.dates.length)
165 this.dates = [] 166 this.dates = []
166 - const beforDate = new Date(this.startDay.getFullYear(), this.startDay.getMonth())  
167 - this.startDay.setMonth(this.startDay.getMonth() + 1) 167 + const beforDate = new Date(this.selectDay.getFullYear(), this.selectDay.getMonth())
  168 + this.selectDay.setMonth(this.selectDay.getMonth() + 1)
168 if (this.onMonthChange) { 169 if (this.onMonthChange) {
169 - this.onMonthChange(new Date(this.startDay.getFullYear(), this.startDay.getMonth()), beforDate) 170 + this.onMonthChange(new Date(this.selectDay.getFullYear(), this.selectDay.getMonth()), beforDate)
170 } 171 }
171 - this.calcDatas() 172 + this.calcData()
172 } 173 }
173 174
174 /** 175 /**
@@ -177,60 +178,57 @@ export struct RMCalendar { @@ -177,60 +178,57 @@ export struct RMCalendar {
177 private preMonth() { 178 private preMonth() {
178 // this.dates.slice(0, this.dates.length) 179 // this.dates.slice(0, this.dates.length)
179 this.dates = [] 180 this.dates = []
180 - const beforDate = new Date(this.startDay.getFullYear(), this.startDay.getMonth())  
181 - this.startDay.setMonth(this.startDay.getMonth() - 1) 181 + const beforDate = new Date(this.selectDay.getFullYear(), this.selectDay.getMonth())
  182 + this.selectDay.setMonth(this.selectDay.getMonth() - 1)
182 if (this.onMonthChange) { 183 if (this.onMonthChange) {
183 - this.onMonthChange(new Date(this.startDay.getFullYear(), this.startDay.getMonth()), beforDate) 184 + this.onMonthChange(new Date(this.selectDay.getFullYear(), this.selectDay.getMonth()), beforDate)
184 } 185 }
185 - this.calcDatas() 186 + this.calcData()
186 } 187 }
187 188
188 /** 189 /**
189 * 具体计算 190 * 具体计算
190 */ 191 */
191 - private calcDatas() {  
192 - const startDay = this.startDay  
193 - this.title = `${startDay.getFullYear()}年${startDay.getMonth() + 1}月`  
194 - startDay.setDate(1) 192 + private calcData() {
  193 +
  194 + this.title = `${this.selectDay.getFullYear()}年${this.selectDay.getMonth() + 1}月`
  195 + this.selectDay.setDate(1)
195 196
196 - if (startDay.getFullYear() < this.startDate.getFullYear()  
197 - || (startDay.getFullYear() == this.startDate.getFullYear() && startDay.getMonth() <= this.startDate.getMonth())) { 197 + if (this.selectDay.getFullYear() < this.startDate.getFullYear()
  198 + || (this.selectDay.getFullYear() == this.startDate.getFullYear() && this.selectDay.getMonth() <= this.startDate.getMonth())) {
198 this.hasPre = false 199 this.hasPre = false
199 } else { 200 } else {
200 this.hasPre = true 201 this.hasPre = true
201 } 202 }
202 203
203 - if (startDay.getFullYear() > this.endDate.getFullYear()  
204 - || (startDay.getFullYear() == this.endDate.getFullYear() && startDay.getMonth() >= this.endDate.getMonth())) { 204 + if (this.selectDay.getFullYear() > this.endDate.getFullYear()
  205 + || (this.selectDay.getFullYear() == this.endDate.getFullYear() && this.selectDay.getMonth() >= this.endDate.getMonth())) {
205 this.hasNext = false 206 this.hasNext = false
206 } else { 207 } else {
207 this.hasNext = true 208 this.hasNext = true
208 } 209 }
209 -  
210 - // 计算第一个月  
211 - // 获取第一个月总天数  
212 - let endDay: Date = new Date(  
213 - startDay.getFullYear(),  
214 - startDay.getMonth() + 1, 210 + // 创建一个整月的日期,获取一个月总天数
  211 + let selectDate: Date = new Date(
  212 + this.selectDay.getFullYear(),
  213 + this.selectDay.getMonth() + 1,
215 0, 23, 59, 59) 214 0, 23, 59, 59)
216 215
217 let tempDate: Date = new Date( 216 let tempDate: Date = new Date(
218 - startDay.getFullYear(),  
219 - startDay.getMonth(),  
220 - startDay.getDate() 217 + this.selectDay.getFullYear(),
  218 + this.selectDay.getMonth(),
  219 + this.selectDay.getDate()
221 ) 220 )
  221 + //获取当月的总天数
  222 + const count = selectDate.getDate()
  223 + //当前日期是周几
  224 + const preCount = this.selectDay.getDay()
  225 + const totalCount = count + preCount
222 226
223 - const count = endDay.getDate()  
224 - const preCount = startDay.getDay()  
225 - // const nextCount = 6 - endDay.getDay()  
226 - const nextCount = 0  
227 - const finilCount = count + preCount + nextCount  
228 -  
229 - // 补齐上一个月  
230 - tempDate.setDate(tempDate.getDate() - preCount) 227 + // 补齐上一个月差的天数,需要在当月展示的部分,下面计算日期循环加1天
  228 + tempDate.setDate(this.selectDay.getDate() - preCount)
231 229
232 - // 添加日期  
233 - for (let index = 0; index < finilCount; index++) { 230 + // 添加当月需要展示的日期
  231 + for (let index = 0; index < totalCount; index++) {
234 let item = new RMCalendarBean( 232 let item = new RMCalendarBean(
235 tempDate.getFullYear(), 233 tempDate.getFullYear(),
236 tempDate.getMonth(), 234 tempDate.getMonth(),
@@ -7,12 +7,12 @@ export struct RMCalenderCell { @@ -7,12 +7,12 @@ export struct RMCalenderCell {
7 itemFontSize: Length = 0 7 itemFontSize: Length = 0
8 itemFontColor: ResourceColor = {} as ResourceColor 8 itemFontColor: ResourceColor = {} as ResourceColor
9 itemFontWeight: FontWeight = FontWeight.Normal 9 itemFontWeight: FontWeight = FontWeight.Normal
10 - todayFontColor: ResourceColor = {} as ResourceColor 10 + selectDayFontColor: ResourceColor = {} as ResourceColor
11 selectFontColor: ResourceColor = {} as ResourceColor 11 selectFontColor: ResourceColor = {} as ResourceColor
12 selectItemBgColor: ResourceColor = {} as ResourceColor 12 selectItemBgColor: ResourceColor = {} as ResourceColor
13 disabledFontColor: ResourceColor = {} as ResourceColor 13 disabledFontColor: ResourceColor = {} as ResourceColor
14 // 今日时间戳 14 // 今日时间戳
15 - today: number = 0 15 + selectDay: number = 0
16 @Link selectItem: RMCalendarBean 16 @Link selectItem: RMCalendarBean
17 @Link selectedDates: Array<RMCalendarBean> 17 @Link selectedDates: Array<RMCalendarBean>
18 @Prop hasPre: boolean 18 @Prop hasPre: boolean
@@ -20,7 +20,7 @@ export struct RMCalenderCell { @@ -20,7 +20,7 @@ export struct RMCalenderCell {
20 @ObjectLink item: RMCalendarBean 20 @ObjectLink item: RMCalendarBean
21 // 自定义每一项布局 21 // 自定义每一项布局
22 cellLayout?: (item: RMCalendarBean) => void 22 cellLayout?: (item: RMCalendarBean) => void
23 - todayLayout?: (item: RMCalendarBean) => void 23 + selectDayLayout?: (item: RMCalendarBean) => void
24 cellClick?: (item: RMCalendarBean) => void 24 cellClick?: (item: RMCalendarBean) => void
25 disableClick?: (item: RMCalendarBean) => void 25 disableClick?: (item: RMCalendarBean) => void
26 26
@@ -43,8 +43,6 @@ export struct RMCalenderCell { @@ -43,8 +43,6 @@ export struct RMCalenderCell {
43 return this.disabledFontColor 43 return this.disabledFontColor
44 } else if (this.selectItem && this.selectItem.time == this.item.time) { 44 } else if (this.selectItem && this.selectItem.time == this.item.time) {
45 return this.selectFontColor 45 return this.selectFontColor
46 - } else if (this.item.time == this.today) {  
47 - return this.todayFontColor  
48 } 46 }
49 return this.itemFontColor 47 return this.itemFontColor
50 } 48 }
@@ -140,4 +138,5 @@ export struct RMCalenderCell { @@ -140,4 +138,5 @@ export struct RMCalenderCell {
140 } 138 }
141 }) 139 })
142 } 140 }
  141 +
143 } 142 }
@@ -27,6 +27,7 @@ export default struct MinePageCreatorFunctionUI { @@ -27,6 +27,7 @@ export default struct MinePageCreatorFunctionUI {
27 .width('27lpx') 27 .width('27lpx')
28 .height('27lpx') 28 .height('27lpx')
29 .objectFit(ImageFit.Auto) 29 .objectFit(ImageFit.Auto)
  30 + .interpolation(ImageInterpolation.High)
30 } 31 }
31 32
32 }.setFullWidth() 33 }.setFullWidth()
@@ -42,6 +43,8 @@ export default struct MinePageCreatorFunctionUI { @@ -42,6 +43,8 @@ export default struct MinePageCreatorFunctionUI {
42 Image(item.imgSrc) 43 Image(item.imgSrc)
43 .width('50lpx') 44 .width('50lpx')
44 .height('50lpx') 45 .height('50lpx')
  46 + .objectFit(ImageFit.Auto)
  47 + .interpolation(ImageInterpolation.High)
45 Text(`${item.msg}`) 48 Text(`${item.msg}`)
46 .margin({top:'15lpx'}) 49 .margin({top:'15lpx'})
47 .width('96lpx') 50 .width('96lpx')
@@ -37,6 +37,8 @@ export default struct MinePageMoreFunctionUI { @@ -37,6 +37,8 @@ export default struct MinePageMoreFunctionUI {
37 .width('38lpx') 37 .width('38lpx')
38 .height('38lpx') 38 .height('38lpx')
39 .margin({ right: '15lpx' }) 39 .margin({ right: '15lpx' })
  40 + .objectFit(ImageFit.Auto)
  41 + .interpolation(ImageInterpolation.High)
40 } 42 }
41 Text(`${item.msg}`) 43 Text(`${item.msg}`)
42 .width('456lpx') 44 .width('456lpx')
@@ -50,6 +52,7 @@ export default struct MinePageMoreFunctionUI { @@ -50,6 +52,7 @@ export default struct MinePageMoreFunctionUI {
50 .width('27lpx') 52 .width('27lpx')
51 .height('27lpx') 53 .height('27lpx')
52 .objectFit(ImageFit.Auto) 54 .objectFit(ImageFit.Auto)
  55 + .interpolation(ImageInterpolation.High)
53 .margin({ left: '81lpx', right: '29lpx' }) 56 .margin({ left: '81lpx', right: '29lpx' })
54 }.alignItems(VerticalAlign.Center) 57 }.alignItems(VerticalAlign.Center)
55 .justifyContent(FlexAlign.Center) 58 .justifyContent(FlexAlign.Center)
@@ -5,6 +5,13 @@ import router from '@ohos.router' @@ -5,6 +5,13 @@ import router from '@ohos.router'
5 @Component 5 @Component
6 export default struct MinePagePersonFunctionUI { 6 export default struct MinePagePersonFunctionUI {
7 @Link personalData:MinePagePersonalFunctionsItem[] 7 @Link personalData:MinePagePersonalFunctionsItem[]
  8 + @Prop isLogin:boolean
  9 + @Consume('isLogin')@Watch('loginChange') loginState:Record<string,string>
  10 + loginChange(){
  11 + if(this.loginState){
  12 + this.isLogin=true
  13 + }
  14 + }
8 15
9 build() { 16 build() {
10 Grid(){ 17 Grid(){
@@ -15,6 +22,8 @@ export default struct MinePagePersonFunctionUI { @@ -15,6 +22,8 @@ export default struct MinePagePersonFunctionUI {
15 Image(item.imgSrc) 22 Image(item.imgSrc)
16 .width('46lpx') 23 .width('46lpx')
17 .height('46lpx') 24 .height('46lpx')
  25 + .objectFit(ImageFit.Auto)
  26 + .interpolation(ImageInterpolation.High)
18 Text(`${item.msg}`) 27 Text(`${item.msg}`)
19 .margin({top:'8lpx'}) 28 .margin({top:'8lpx'})
20 .width('50lpx') 29 .width('50lpx')
@@ -37,18 +46,34 @@ export default struct MinePagePersonFunctionUI { @@ -37,18 +46,34 @@ export default struct MinePagePersonFunctionUI {
37 console.log(index+"") 46 console.log(index+"")
38 switch (item.msg){ 47 switch (item.msg){
39 case "预约":{ 48 case "预约":{
  49 + if(!this.isLogin){
  50 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  51 + return
  52 + }
40 WDRouterRule.jumpWithPage(WDRouterPage.appointmentListPage) 53 WDRouterRule.jumpWithPage(WDRouterPage.appointmentListPage)
41 break; 54 break;
42 } 55 }
43 case "关注":{ 56 case "关注":{
  57 + if(!this.isLogin){
  58 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  59 + return
  60 + }
44 WDRouterRule.jumpWithPage(WDRouterPage.followListPage) 61 WDRouterRule.jumpWithPage(WDRouterPage.followListPage)
45 break; 62 break;
46 } 63 }
47 case "收藏":{ 64 case "收藏":{
  65 + if(!this.isLogin){
  66 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  67 + return
  68 + }
48 WDRouterRule.jumpWithPage(WDRouterPage.myCollectionListPagePage) 69 WDRouterRule.jumpWithPage(WDRouterPage.myCollectionListPagePage)
49 break; 70 break;
50 } 71 }
51 case "历史":{ 72 case "历史":{
  73 + if(!this.isLogin){
  74 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  75 + return
  76 + }
52 WDRouterRule.jumpWithPage(WDRouterPage.browsingHistoryPage) 77 WDRouterRule.jumpWithPage(WDRouterPage.browsingHistoryPage)
53 break; 78 break;
54 } 79 }
1 import { Logger } from 'wdKit' 1 import { Logger } from 'wdKit'
2 import { WDRouterPage, WDRouterRule } from 'wdRouter' 2 import { WDRouterPage, WDRouterRule } from 'wdRouter'
  3 +import MinePageDatasModel from '../../model/MinePageDatasModel'
  4 +const TAG = "MinePageUserSimpleInfoUI"
  5 +
3 6
4 @Component 7 @Component
5 export default struct MinePageUserSimpleInfoUI { 8 export default struct MinePageUserSimpleInfoUI {
6 - @Prop isLogin:boolean  
7 - @Prop userName:string  
8 - @Consume('isLogin')@Watch('loginChange') isLogin2:Record<string,string> 9 + @Watch('loginStateChange') @Prop isLogin :boolean
  10 + @State userName:string = "登陆注册"
  11 + @State headPhotoUrl:string = ""
  12 + @State levelHead:string = ""
  13 + @State levelId:number = 0
  14 +
  15 +
  16 + aboutToAppear(){
  17 + if(this.isLogin){
  18 + this.getUserInfo()
  19 + this.getUserLevel()
  20 + }
  21 + }
  22 +
  23 +
  24 + @Consume('isLogin')@Watch('loginChange') loginState:Record<string,string>
9 loginChange(){ 25 loginChange(){
10 Logger.debug("isLogin",'MinePageUserSimpleInfoUI') 26 Logger.debug("isLogin",'MinePageUserSimpleInfoUI')
11 - if(this.isLogin2){ 27 + if(this.loginState){
12 this.isLogin=true 28 this.isLogin=true
13 - this.userName=this.isLogin2['userName'] 29 + }
  30 + if(this.isLogin){
  31 + this.getUserInfo()
  32 + this.getUserLevel()
  33 + }
  34 + }
  35 + loginStateChange(){
  36 + if(this.isLogin){
  37 + this.getUserInfo()
  38 + this.getUserLevel()
14 } 39 }
15 } 40 }
16 41
@@ -18,24 +43,22 @@ export default struct MinePageUserSimpleInfoUI { @@ -18,24 +43,22 @@ export default struct MinePageUserSimpleInfoUI {
18 Row(){ 43 Row(){
19 //头像 44 //头像
20 Stack(){ 45 Stack(){
21 - Button({type:ButtonType.Circle})  
22 - .backgroundColor($r('app.color.main_red'))  
23 - .width('110lpx')  
24 - .height('110lpx')  
25 - Image($r('app.media.default_head')) 46 + Image(this.headPhotoUrl)
  47 + .alt($r('app.media.default_head'))
26 .width('108lpx') 48 .width('108lpx')
27 .height('108lpx') 49 .height('108lpx')
28 .objectFit(ImageFit.Cover) 50 .objectFit(ImageFit.Cover)
29 .borderRadius(50) 51 .borderRadius(50)
30 - }.width('110lpx')  
31 - .height('110lpx') 52 + Image(this.levelHead)
  53 + .width('120lpx')
  54 + .height('120lpx')
  55 + .objectFit(ImageFit.Cover)
  56 + .borderRadius(50)
  57 + }.width('120lpx')
  58 + .height('120lpx')
32 .alignContent(Alignment.Center) 59 .alignContent(Alignment.Center)
33 .onClick(()=>{ 60 .onClick(()=>{
34 - if(!this.isLogin){  
35 - WDRouterRule.jumpWithPage(WDRouterPage.loginPage)  
36 - }else {  
37 - WDRouterRule.jumpWithPage(WDRouterPage.mineHomePage)  
38 - } 61 + this.jumpLogin()
39 }) 62 })
40 63
41 if(this.isLogin){ 64 if(this.isLogin){
@@ -55,13 +78,16 @@ export default struct MinePageUserSimpleInfoUI { @@ -55,13 +78,16 @@ export default struct MinePageUserSimpleInfoUI {
55 .objectFit(ImageFit.Cover) 78 .objectFit(ImageFit.Cover)
56 Blank() 79 Blank()
57 }.width('100%') 80 }.width('100%')
  81 + .onClick(()=>{
  82 + this.jumpLogin()
  83 + })
58 84
59 Stack(){ 85 Stack(){
60 Image($r('app.media.mine_grade_bg')) 86 Image($r('app.media.mine_grade_bg'))
61 .width('84lpx') 87 .width('84lpx')
62 .height('29lpx') 88 .height('29lpx')
63 .objectFit(ImageFit.Auto) 89 .objectFit(ImageFit.Auto)
64 - Text("等级8") 90 + Text(`等级${this.levelId}`)
65 .textAlign(TextAlign.Center) 91 .textAlign(TextAlign.Center)
66 .fontColor($r('app.color.white')) 92 .fontColor($r('app.color.white'))
67 .fontSize('19lpx') 93 .fontSize('19lpx')
@@ -84,7 +110,9 @@ export default struct MinePageUserSimpleInfoUI { @@ -84,7 +110,9 @@ export default struct MinePageUserSimpleInfoUI {
84 .margin({left:'15lpx'}) 110 .margin({left:'15lpx'})
85 .objectFit(ImageFit.Cover) 111 .objectFit(ImageFit.Cover)
86 Blank() 112 Blank()
87 - } 113 + }.onClick(()=>{
  114 + this.jumpLogin()
  115 + })
88 .margin({top:'11lpx',left:'17lpx'}) 116 .margin({top:'11lpx',left:'17lpx'})
89 .width('352lpx') 117 .width('352lpx')
90 } 118 }
@@ -122,4 +150,33 @@ export default struct MinePageUserSimpleInfoUI { @@ -122,4 +150,33 @@ export default struct MinePageUserSimpleInfoUI {
122 @Styles setFullHeight(){ 150 @Styles setFullHeight(){
123 .height('100%') 151 .height('100%')
124 } 152 }
  153 +
  154 + getUserInfo(){
  155 + MinePageDatasModel.getUserDetailData(getContext(this)).then((value)=>{
  156 + if(value!=null){
  157 + this.userName = value.userName
  158 + this.headPhotoUrl = value.headPhotoUrl
  159 + }
  160 + }).catch((err:Error)=>{
  161 + console.log(TAG,JSON.stringify(err))
  162 + })
  163 + }
  164 + getUserLevel(){
  165 + MinePageDatasModel.getUserLevelData(getContext(this)).then((value)=>{
  166 + if(value!=null){
  167 + this.levelHead = value.levelHead
  168 + this.levelId = value.levelId
  169 + }
  170 + }).catch((err:Error)=>{
  171 + console.log(TAG,JSON.stringify(err))
  172 + })
  173 + }
  174 +
  175 + jumpLogin(){
  176 + if(!this.isLogin){
  177 + WDRouterRule.jumpWithPage(WDRouterPage.loginPage)
  178 + }else {
  179 + WDRouterRule.jumpWithPage(WDRouterPage.mineHomePage)
  180 + }
  181 + }
125 } 182 }
@@ -9,6 +9,8 @@ export struct AppointmentListChildComponent{ @@ -9,6 +9,8 @@ export struct AppointmentListChildComponent{
9 Stack(){ 9 Stack(){
10 Image(this.item?.imageUrl[0]) 10 Image(this.item?.imageUrl[0])
11 .objectFit(ImageFit.Auto) 11 .objectFit(ImageFit.Auto)
  12 + .interpolation(ImageInterpolation.High)
  13 +
12 14
13 if(this.item.relType === 1){ 15 if(this.item.relType === 1){
14 Row(){ 16 Row(){
@@ -17,6 +19,8 @@ export struct AppointmentListChildComponent{ @@ -17,6 +19,8 @@ export struct AppointmentListChildComponent{
17 .width('42lpx') 19 .width('42lpx')
18 .height('35lpx') 20 .height('35lpx')
19 .objectFit(ImageFit.Auto) 21 .objectFit(ImageFit.Auto)
  22 + .interpolation(ImageInterpolation.High)
  23 +
20 Text("预约") 24 Text("预约")
21 .fontWeight(400) 25 .fontWeight(400)
22 .fontSize('21lpx') 26 .fontSize('21lpx')
@@ -51,6 +55,7 @@ export struct AppointmentListChildComponent{ @@ -51,6 +55,7 @@ export struct AppointmentListChildComponent{
51 if(this.item.relType === 2){ 55 if(this.item.relType === 2){
52 Image($r('app.media.play_status_history_icon')) 56 Image($r('app.media.play_status_history_icon'))
53 .objectFit(ImageFit.Auto) 57 .objectFit(ImageFit.Auto)
  58 + .interpolation(ImageInterpolation.High)
54 .width('38lpx') 59 .width('38lpx')
55 .height('38lpx') 60 .height('38lpx')
56 .margin({right:'12lpx'}) 61 .margin({right:'12lpx'})
@@ -60,6 +65,7 @@ export struct AppointmentListChildComponent{ @@ -60,6 +65,7 @@ export struct AppointmentListChildComponent{
60 }else { 65 }else {
61 Image($r('app.media.play_status_icon')) 66 Image($r('app.media.play_status_icon'))
62 .objectFit(ImageFit.Auto) 67 .objectFit(ImageFit.Auto)
  68 + .interpolation(ImageInterpolation.High)
63 .width('38lpx') 69 .width('38lpx')
64 .height('38lpx') 70 .height('38lpx')
65 .margin({right:'12lpx'}) 71 .margin({right:'12lpx'})
@@ -68,6 +74,7 @@ export struct AppointmentListChildComponent{ @@ -68,6 +74,7 @@ export struct AppointmentListChildComponent{
68 .fontSize('23lpx') 74 .fontSize('23lpx')
69 Image($r('app.media.point_icon')) 75 Image($r('app.media.point_icon'))
70 .objectFit(ImageFit.Auto) 76 .objectFit(ImageFit.Auto)
  77 + .interpolation(ImageInterpolation.High)
71 .width('12lpx') 78 .width('12lpx')
72 .height('31lpx') 79 .height('31lpx')
73 .margin({right:'4lpx'}) 80 .margin({right:'4lpx'})
@@ -6,6 +6,7 @@ const TAG = "FollowFirstTabsComponent" @@ -6,6 +6,7 @@ const TAG = "FollowFirstTabsComponent"
6 @Component 6 @Component
7 export struct FollowFirstTabsComponent{ 7 export struct FollowFirstTabsComponent{
8 @State currentIndex: number = 0 8 @State currentIndex: number = 0
  9 + @Prop changeIndex: number
9 private controller: TabsController = new TabsController() 10 private controller: TabsController = new TabsController()
10 @State data:FollowListItem[] = [] 11 @State data:FollowListItem[] = []
11 fontColor: string = '#999999' 12 fontColor: string = '#999999'
@@ -22,6 +23,14 @@ export struct FollowFirstTabsComponent{ @@ -22,6 +23,14 @@ export struct FollowFirstTabsComponent{
22 this.data.push(element) 23 this.data.push(element)
23 }) 24 })
24 console.log("ycg",this.data.length.toString()); 25 console.log("ycg",this.data.length.toString());
  26 + if(this.controller != null && this.data.length>1 && this.changeIndex === 1){
  27 + //个人主页 跳转 关注页 tab 2
  28 + let intervalID = setInterval(() => {
  29 + this.currentIndex = this.changeIndex
  30 + this.controller.changeIndex(this.currentIndex)
  31 + clearInterval(intervalID);
  32 + }, 500);
  33 + }
25 }).catch((err:Error)=>{ 34 }).catch((err:Error)=>{
26 console.log(TAG,JSON.stringify(err)) 35 console.log(TAG,JSON.stringify(err))
27 }) 36 })
  1 +import { Params } from 'wdBean';
1 import { LazyDataSource, StringUtils } from 'wdKit'; 2 import { LazyDataSource, StringUtils } from 'wdKit';
  3 +import { WDRouterPage, WDRouterRule } from 'wdRouter';
2 import MinePageDatasModel from '../../../model/MinePageDatasModel'; 4 import MinePageDatasModel from '../../../model/MinePageDatasModel';
3 import { CommentListItem } from '../../../viewmodel/CommentListItem'; 5 import { CommentListItem } from '../../../viewmodel/CommentListItem';
4 import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem'; 6 import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem';
@@ -15,6 +17,8 @@ export struct HomePageBottomComponent{ @@ -15,6 +17,8 @@ export struct HomePageBottomComponent{
15 @State hasMore:boolean = true 17 @State hasMore:boolean = true
16 curPageNum:number = 1; 18 curPageNum:number = 1;
17 @State count:number = 0; 19 @State count:number = 0;
  20 + @State isMineAccount:boolean = true;
  21 + @State userId:string = "";
18 22
19 aboutToAppear(){ 23 aboutToAppear(){
20 this.getNewPageData() 24 this.getNewPageData()
@@ -53,7 +57,12 @@ export struct HomePageBottomComponent{ @@ -53,7 +57,12 @@ export struct HomePageBottomComponent{
53 .justifyContent(FlexAlign.Center) 57 .justifyContent(FlexAlign.Center)
54 .backgroundColor($r('app.color.color_F5F5F5')) 58 .backgroundColor($r('app.color.color_F5F5F5'))
55 .margin({top:'31lpx',bottom:'4lpx'}) 59 .margin({top:'31lpx',bottom:'4lpx'})
  60 + }.onClick(()=>{
  61 + let params: Params = {
  62 + pageID: "1"
56 } 63 }
  64 + WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
  65 + })
57 66
58 LazyForEach(this.data_follow, (item: FollowListDetailItem, index: number = 0) => { 67 LazyForEach(this.data_follow, (item: FollowListDetailItem, index: number = 0) => {
59 ListItem() { 68 ListItem() {
@@ -19,7 +19,7 @@ struct BrowsingHistoryPage { @@ -19,7 +19,7 @@ struct BrowsingHistoryPage {
19 @State private browSingModel: PageModel = new PageModel() 19 @State private browSingModel: PageModel = new PageModel()
20 20
21 aboutToAppear(){ 21 aboutToAppear(){
22 - // this.getData() 22 + this.getData()
23 } 23 }
24 24
25 build() { 25 build() {
1 import router from '@ohos.router'; 1 import router from '@ohos.router';
2 import { CustomTitleUI } from '../reusable/CustomTitleUI'; 2 import { CustomTitleUI } from '../reusable/CustomTitleUI';
3 -import { EditInfoModel, EditListInfo } from '../../model/EditInfoModel'; 3 +import { EditInfoModel, EditListInfo, editModel } from '../../model/EditInfoModel';
4 import EditInfoViewModel from '../../viewmodel/EditInfoViewModel'; 4 import EditInfoViewModel from '../../viewmodel/EditInfoViewModel';
5 import { WDRouterPage, WDRouterRule } from 'wdRouter'; 5 import { WDRouterPage, WDRouterRule } from 'wdRouter';
6 6
@@ -9,10 +9,10 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter'; @@ -9,10 +9,10 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter';
9 @Component 9 @Component
10 struct EditUserInfoPage { 10 struct EditUserInfoPage {
11 private listData: EditListInfo[] = [] 11 private listData: EditListInfo[] = []
12 - editInfo: EditInfoModel = new EditInfoModel('','待完善','待完善','待完善','待完善','待完善','待完善') 12 + editM: editModel = new editModel
13 13
14 aboutToAppear() { 14 aboutToAppear() {
15 - this.listData = EditInfoViewModel.getEditListInfo(this.editInfo) 15 + this.listData = EditInfoViewModel.getEditListInfo(this.editM)
16 this.getAccountOwnerInfo() 16 this.getAccountOwnerInfo()
17 } 17 }
18 18
@@ -20,7 +20,7 @@ struct EditUserInfoPage { @@ -20,7 +20,7 @@ struct EditUserInfoPage {
20 Row() { 20 Row() {
21 Column() { 21 Column() {
22 CustomTitleUI({titleName:'资料编辑'}) 22 CustomTitleUI({titleName:'资料编辑'})
23 - Image(this.editInfo.headPhotoUrl?this.editInfo.headPhotoUrl:'') 23 + Image(this.editM.userExtend.headPhotoUrl?this.editM.userExtend.headPhotoUrl:'')
24 .backgroundColor(Color.Gray) 24 .backgroundColor(Color.Gray)
25 .width(100) 25 .width(100)
26 .height(100) 26 .height(100)
@@ -110,8 +110,8 @@ struct EditUserInfoPage { @@ -110,8 +110,8 @@ struct EditUserInfoPage {
110 } 110 }
111 111
112 getAccountOwnerInfo(){ 112 getAccountOwnerInfo(){
113 - EditInfoViewModel.queryAccountOwnerInfo(1).then((result) => {  
114 - this.editInfo = result 113 + EditInfoViewModel.queryAccountOwnerInfo(1,getContext(this)).then((result) => {
  114 + this.editM = result
115 }); 115 });
116 } 116 }
117 117
  1 +import { Params } from 'wdBean';
1 import { FollowFirstTabsComponent } from '../mine/follow/FollowFirstTabsComponent' 2 import { FollowFirstTabsComponent } from '../mine/follow/FollowFirstTabsComponent'
  3 +import router from '@ohos.router';
2 4
3 @Entry 5 @Entry
4 @Component 6 @Component
5 struct FollowListPage { 7 struct FollowListPage {
  8 + @State params:Params = router.getParams() as Params;
  9 + @State curIndex: string = '0';
  10 +
  11 + onPageShow() {
  12 + this.curIndex = this.params?.pageID;
  13 + }
6 14
7 build() { 15 build() {
8 Column() { 16 Column() {
9 //Tab 详情 17 //Tab 详情
10 - FollowFirstTabsComponent() 18 + FollowFirstTabsComponent({changeIndex:Number(this.curIndex)})
11 } 19 }
12 .backgroundColor($r('app.color.color_F9F9F9')) 20 .backgroundColor($r('app.color.color_F9F9F9'))
13 .height('100%') 21 .height('100%')
@@ -20,7 +20,6 @@ export struct MinePageComponent { @@ -20,7 +20,6 @@ export struct MinePageComponent {
20 //是否是创作者 20 //是否是创作者
21 @State isCreator:boolean = false 21 @State isCreator:boolean = false
22 @State isLogin:boolean = false //默认 false 测试放开 22 @State isLogin:boolean = false //默认 false 测试放开
23 - @State userName:string = "登陆注册"  
24 @State personalData:MinePagePersonalFunctionsItem[] = [] 23 @State personalData:MinePagePersonalFunctionsItem[] = []
25 @State creatorData:MinePageCreatorFunctionsItem[] = [] 24 @State creatorData:MinePageCreatorFunctionsItem[] = []
26 @State moreData:MinePageMoreFunctionModel[] = [] 25 @State moreData:MinePageMoreFunctionModel[] = []
@@ -61,9 +60,9 @@ export struct MinePageComponent { @@ -61,9 +60,9 @@ export struct MinePageComponent {
61 @Builder MinePageUI(){ 60 @Builder MinePageUI(){
62 Column(){ 61 Column(){
63 //头像层 62 //头像层
64 - MinePageUserSimpleInfoUI({isLogin:this.isLogin,userName:this.userName}) 63 + MinePageUserSimpleInfoUI({isLogin:this.isLogin})
65 //Grid 区域 64 //Grid 区域
66 - MinePagePersonFunctionUI({personalData:$personalData}) 65 + MinePagePersonFunctionUI({personalData:$personalData,isLogin:this.isLogin})
67 //Card 66 //Card
68 MinePageCardUI() 67 MinePageCardUI()
69 //创作者区域 68 //创作者区域
@@ -83,8 +82,6 @@ export struct MinePageComponent { @@ -83,8 +82,6 @@ export struct MinePageComponent {
83 let userid = await SPHelper.default.get(SpConstants.USER_ID,"") 82 let userid = await SPHelper.default.get(SpConstants.USER_ID,"")
84 if(StringUtils.isNotEmpty(userid)){ 83 if(StringUtils.isNotEmpty(userid)){
85 this.isLogin = true 84 this.isLogin = true
86 - let userName = await SPHelper.default.get(SpConstants.USER_NAME,"") as string  
87 - this.userName = userName  
88 }else{ 85 }else{
89 this.isLogin = false 86 this.isLogin = false
90 } 87 }
@@ -19,7 +19,7 @@ struct MyCollectionListPage { @@ -19,7 +19,7 @@ struct MyCollectionListPage {
19 isloading : boolean = false 19 isloading : boolean = false
20 20
21 aboutToAppear(){ 21 aboutToAppear(){
22 - // this.getData() 22 + this.getData()
23 } 23 }
24 24
25 build() { 25 build() {
@@ -13,6 +13,7 @@ export struct CustomTitleUI { @@ -13,6 +13,7 @@ export struct CustomTitleUI {
13 .width('46lpx') 13 .width('46lpx')
14 .height('46lpx') 14 .height('46lpx')
15 .objectFit(ImageFit.Auto) 15 .objectFit(ImageFit.Auto)
  16 + .interpolation(ImageInterpolation.High)
16 .id("back_icon") 17 .id("back_icon")
17 .alignRules({ 18 .alignRules({
18 center: {anchor: "__container__", align: VerticalAlign.Center}, 19 center: {anchor: "__container__", align: VerticalAlign.Center},
@@ -18,6 +18,7 @@ export struct ListHasNoMoreDataUI{ @@ -18,6 +18,7 @@ export struct ListHasNoMoreDataUI{
18 .width('200lpx') 18 .width('200lpx')
19 .height('200lpx') 19 .height('200lpx')
20 .objectFit(ImageFit.Auto) 20 .objectFit(ImageFit.Auto)
  21 + .interpolation(ImageInterpolation.High)
21 Text("暂无内容") 22 Text("暂无内容")
22 .fontColor($r('app.color.color_999999')) 23 .fontColor($r('app.color.color_999999'))
23 .fontWeight('500lpx') 24 .fontWeight('500lpx')
  1 +import { Params } from 'wdBean';
  2 +import { WDRouterPage, WDRouterRule } from 'wdRouter';
  3 +
1 const TAG = 'AboutPageUI'; 4 const TAG = 'AboutPageUI';
2 5
3 @Component 6 @Component
@@ -41,8 +44,16 @@ export struct AboutPageUI { @@ -41,8 +44,16 @@ export struct AboutPageUI {
41 ForEach(this.listData, (item:string, index : number) =>{ 44 ForEach(this.listData, (item:string, index : number) =>{
42 ListItem() { 45 ListItem() {
43 this.getArrowCell(item, index) 46 this.getArrowCell(item, index)
  47 + }.onClick(() =>{
  48 + if (index == 0) {
  49 + let bean={contentId:"1",pageID:""} as Params
  50 + WDRouterRule.jumpWithPage(WDRouterPage.loginProtocolPage,bean)
  51 + }else{
  52 + let bean={contentId:"2",pageID:""} as Params
  53 + WDRouterRule.jumpWithPage(WDRouterPage.loginProtocolPage,bean)
44 } 54 }
45 }) 55 })
  56 + })
46 }.divider({ 57 }.divider({
47 strokeWidth: 1, 58 strokeWidth: 1,
48 startMargin: '29lpx', 59 startMargin: '29lpx',
@@ -2,20 +2,17 @@ @@ -2,20 +2,17 @@
2 import { BottomNavi, CommonConstants } from 'wdConstant'; 2 import { BottomNavi, CommonConstants } from 'wdConstant';
3 import { Logger } from 'wdKit'; 3 import { Logger } from 'wdKit';
4 import { TopNavigationComponent } from '../page/TopNavigationComponent'; 4 import { TopNavigationComponent } from '../page/TopNavigationComponent';
5 -// import { BottomNavDTO } from '../../repository/bean/BottomNavDTO';  
6 -// import { UIUtils } from '../../repository/UIUtils';  
7 -// import { MinePageComponent } from './MinePageComponent';  
8 import PageViewModel from '../../viewmodel/PageViewModel'; 5 import PageViewModel from '../../viewmodel/PageViewModel';
9 import {MineMainSettingFunctionItem} from '../../viewmodel/MineMainSettingFunctionItem'; 6 import {MineMainSettingFunctionItem} from '../../viewmodel/MineMainSettingFunctionItem';
10 import MineSettingDatasModel from '../../model/MineSettingDatasModel'; 7 import MineSettingDatasModel from '../../model/MineSettingDatasModel';
11 -// import MineMainSettingFunctionItem from '../../model/MineSettingDatasModel';  
12 -// import { MineMainSettingFunctionItem } from '../setting/MineSettingDatasModel'  
13 -  
14 import storageStatistics from "@ohos.file.storageStatistics"; 8 import storageStatistics from "@ohos.file.storageStatistics";
15 import { BusinessError } from '@ohos.base'; 9 import { BusinessError } from '@ohos.base';
16 import ArrayList from '@ohos.util.ArrayList'; 10 import ArrayList from '@ohos.util.ArrayList';
17 import router from '@ohos.router'; 11 import router from '@ohos.router';
18 - 12 +import { WDRouterPage, WDRouterRule } from 'wdRouter';
  13 +import { Params } from 'wdBean';
  14 +import { SettingPasswordParams } from 'wdLogin';
  15 +export { SettingPasswordParams } from "wdLogin"
19 16
20 @Component 17 @Component
21 export struct AccountAndSecurityLayout { 18 export struct AccountAndSecurityLayout {
@@ -61,11 +58,14 @@ export struct AccountAndSecurityLayout { @@ -61,11 +58,14 @@ export struct AccountAndSecurityLayout {
61 } 58 }
62 .onClick(() => { 59 .onClick(() => {
63 console.log(index + "") 60 console.log(index + "")
64 - if (index == 1) {  
65 - router.pushUrl({  
66 - url:"pages/SettingPasswordPage",  
67 - params : {'currentType' : 4}  
68 - }) 61 + if (index == 0){
  62 +
  63 + }else if (index == 1) {
  64 +
  65 + let params: SettingPasswordParams = {
  66 + pageID:'1',
  67 + }
  68 + WDRouterRule.jumpWithPage(WDRouterPage.settingPasswordPage, params)
69 } 69 }
70 }) 70 })
71 71
@@ -23,7 +23,7 @@ export struct MineSettingComponent { @@ -23,7 +23,7 @@ export struct MineSettingComponent {
23 if (err) { 23 if (err) {
24 console.error(`Invoke getCurrentBundleStats failed, code is ${err.code}, message is ${err.message}`); 24 console.error(`Invoke getCurrentBundleStats failed, code is ${err.code}, message is ${err.message}`);
25 } else { 25 } else {
26 - this.cacheSice = bundleStats.appSize / 1024.00 / 1024.00; 26 + this.cacheSice = bundleStats.cacheSize / 1024.00 / 1024.00;
27 } 27 }
28 }); 28 });
29 } 29 }
@@ -68,13 +68,13 @@ export struct MineSettingComponent { @@ -68,13 +68,13 @@ export struct MineSettingComponent {
68 // pageType:'AccountAndSecurityLayout' 68 // pageType:'AccountAndSecurityLayout'
69 // }; 69 // };
70 console.log(subIndex + "") 70 console.log(subIndex + "")
71 - if (subIndex == 0) { 71 + if (subIndex == 0 && index == 0) {
72 72
73 let params: Params = { 73 let params: Params = {
74 pageID: 'AccountAndSecurityLayout' 74 pageID: 'AccountAndSecurityLayout'
75 } 75 }
76 WDRouterRule.jumpWithPage(WDRouterPage.settingPage, params) 76 WDRouterRule.jumpWithPage(WDRouterPage.settingPage, params)
77 - }else if (subIndex == 2) { 77 + }else if (subIndex == 2 && index == 0) {
78 WDRouterRule.jumpWithPage(WDRouterPage.privacySettingPage) 78 WDRouterRule.jumpWithPage(WDRouterPage.privacySettingPage)
79 } 79 }
80 80
@@ -157,11 +157,11 @@ export struct MineSettingComponent { @@ -157,11 +157,11 @@ export struct MineSettingComponent {
157 // 左侧logo和标题 157 // 左侧logo和标题
158 Row() { 158 Row() {
159 // 判断有没有图片 159 // 判断有没有图片
160 - if (this.privacySwitch) {  
161 - Image('https://pic.rmb.bdstatic.com/e182cf67c341d1128d2a6cc05886bf62.jpeg@s_0,h_2000')  
162 - .height('38lpx')  
163 - .margin({ right: '5lpx' })  
164 - } 160 + // if (this.privacySwitch) {
  161 + // Image('https://pic.rmb.bdstatic.com/e182cf67c341d1128d2a6cc05886bf62.jpeg@s_0,h_2000')
  162 + // .height('38lpx')
  163 + // .margin({ right: '5lpx' })
  164 + // }
165 Text(`${item}`) 165 Text(`${item}`)
166 .margin({ top: '8lpx' }) 166 .margin({ top: '8lpx' })
167 .height('38lpx') 167 .height('38lpx')
@@ -24,7 +24,8 @@ export struct PrivacySettingComponents { @@ -24,7 +24,8 @@ export struct PrivacySettingComponents {
24 async getPermissionStatus() { 24 async getPermissionStatus() {
25 const permissionUtil = new PermissionUtil(); 25 const permissionUtil = new PermissionUtil();
26 for (const element of this.listData) { 26 for (const element of this.listData) {
27 - if (element.privacyName = '开启个性推荐') { 27 + if (element.privacyName == '开启个性推荐') {
  28 + element.queryUserDetail();
28 continue; 29 continue;
29 } 30 }
30 const result = await permissionUtil.checkPermissions(element.permissionKey); 31 const result = await permissionUtil.checkPermissions(element.permissionKey);
@@ -58,7 +59,7 @@ export struct PrivacySettingComponents { @@ -58,7 +59,7 @@ export struct PrivacySettingComponents {
58 if (!item.permission) { 59 if (!item.permission) {
59 //跳转权限设置 60 //跳转权限设置
60 const permissionUtil = new PermissionUtil(); 61 const permissionUtil = new PermissionUtil();
61 - PermissionUtil.reqPermissionsFromUser([item.permissionKey]); 62 + PermissionUtil.reqPermissionsFromUser([item.permissionKey], this);
62 } 63 }
63 } 64 }
64 }) 65 })
@@ -6,11 +6,14 @@ export struct ENewspaperCalendarDialog { @@ -6,11 +6,14 @@ export struct ENewspaperCalendarDialog {
6 calendarDialogController?: CustomDialogController 6 calendarDialogController?: CustomDialogController
7 // 选择变化监听, 7 // 选择变化监听,
8 onDateChange?: (date: RMCalendarBean) => void 8 onDateChange?: (date: RMCalendarBean) => void
  9 + //当前选择的日期标记
  10 + @Prop selectDate: Date = new Date()
9 11
10 build() { 12 build() {
11 RMCalendar({ 13 RMCalendar({
12 // 开始日期 14 // 开始日期
13 startDate: new Date(2000, 1, 1), 15 startDate: new Date(2000, 1, 1),
  16 + selectDay: this.selectDate,
14 // 截止日期 17 // 截止日期
15 endDate: new Date(), 18 endDate: new Date(),
16 // 日期选择变化监听 19 // 日期选择变化监听
@@ -32,8 +32,8 @@ export struct ENewspaperListDialog { @@ -32,8 +32,8 @@ export struct ENewspaperListDialog {
32 console.log("ENewspaperListDialog-onCurrentPageNumUpdated", "currentPageNum:", this.currentPageNum) 32 console.log("ENewspaperListDialog-onCurrentPageNumUpdated", "currentPageNum:", this.currentPageNum)
33 let _scrollIndex = Number.parseInt(this.currentPageNum) 33 let _scrollIndex = Number.parseInt(this.currentPageNum)
34 console.log("ENewspaperListDialog-onCurrentPageNumUpdated", "_scrollIndex:", _scrollIndex) 34 console.log("ENewspaperListDialog-onCurrentPageNumUpdated", "_scrollIndex:", _scrollIndex)
35 - this.scrollIndex = _scrollIndex > 0 ? _scrollIndex - 1 : _scrollIndex  
36 - this.listScroller.scrollToIndex(this.scrollIndex) 35 + let scrollIndexEnd = _scrollIndex > 0 ? _scrollIndex - 1 : _scrollIndex
  36 + this.listScroller.scrollToIndex(scrollIndexEnd)
37 } 37 }
38 38
39 aboutToAppear(): void { 39 aboutToAppear(): void {
@@ -14,8 +14,6 @@ export class EditListInfo{ @@ -14,8 +14,6 @@ export class EditListInfo{
14 export class EditInfoModel{ 14 export class EditInfoModel{
15 //头像 15 //头像
16 headPhotoUrl:string = '' 16 headPhotoUrl:string = ''
17 - //昵称  
18 - userName:string = ''  
19 //简介 17 //简介
20 introduction:string = '' 18 introduction:string = ''
21 //城市 19 //城市
@@ -26,15 +24,16 @@ export class EditInfoModel{ @@ -26,15 +24,16 @@ export class EditInfoModel{
26 birthday:string = '' 24 birthday:string = ''
27 //性别 25 //性别
28 sex:string = '' 26 sex:string = ''
  27 +}
29 28
30 - constructor(headPhotoUrl:string , userName:string , introduction:string , city:string , county:string, birthday:string , sex:string) {  
31 - this.headPhotoUrl = headPhotoUrl;  
32 - this.userName = userName;  
33 - this.introduction = introduction;  
34 - this.city = city;  
35 - this.county = county;  
36 - this.birthday = birthday;  
37 - this.sex = sex;  
38 - } 29 +export class editModel{
  30 + userName:string = ''
  31 +
  32 + userNameStatus:string = ''
  33 +
  34 + phone:string = ''
  35 +
  36 + headPhotoStatus:string = ''
39 37
  38 + userExtend:EditInfoModel
40 } 39 }
@@ -5,7 +5,7 @@ import MinePageMoreFunctionModel from '../viewmodel/MinePageMoreFunctionModel'; @@ -5,7 +5,7 @@ import MinePageMoreFunctionModel from '../viewmodel/MinePageMoreFunctionModel';
5 import HashMap from '@ohos.util.HashMap'; 5 import HashMap from '@ohos.util.HashMap';
6 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork'; 6 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
7 import { MineAppointmentListItem } from '../viewmodel/MineAppointmentListItem'; 7 import { MineAppointmentListItem } from '../viewmodel/MineAppointmentListItem';
8 -import { Logger, ResourcesUtils } from 'wdKit'; 8 +import { Logger, ResourcesUtils, StringUtils } from 'wdKit';
9 import { MineFollowListDetailItem } from '../viewmodel/MineFollowListDetailItem'; 9 import { MineFollowListDetailItem } from '../viewmodel/MineFollowListDetailItem';
10 import { FollowListDetailRequestItem } from '../viewmodel/FollowListDetailRequestItem'; 10 import { FollowListDetailRequestItem } from '../viewmodel/FollowListDetailRequestItem';
11 import { FollowListItem } from '../viewmodel/FollowListItem'; 11 import { FollowListItem } from '../viewmodel/FollowListItem';
@@ -13,6 +13,9 @@ import { MineFollowListItem } from '../viewmodel/MineFollowListItem'; @@ -13,6 +13,9 @@ import { MineFollowListItem } from '../viewmodel/MineFollowListItem';
13 import { QueryListIsFollowedItem } from '../viewmodel/QueryListIsFollowedItem'; 13 import { QueryListIsFollowedItem } from '../viewmodel/QueryListIsFollowedItem';
14 import { FollowListStatusRequestItem } from '../viewmodel/FollowListStatusRequestItem'; 14 import { FollowListStatusRequestItem } from '../viewmodel/FollowListStatusRequestItem';
15 import { MineCommentListDetailItem } from '../viewmodel/MineCommentListDetailItem'; 15 import { MineCommentListDetailItem } from '../viewmodel/MineCommentListDetailItem';
  16 +import { MineUserLevelItem } from '../viewmodel/MineUserLevelItem';
  17 +import { MineUserDetailItem } from '../viewmodel/MineUserDetailItem';
  18 +import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem';
16 19
17 const TAG = "MinePageDatasModel" 20 const TAG = "MinePageDatasModel"
18 21
@@ -337,6 +340,163 @@ class MinePageDatasModel{ @@ -337,6 +340,163 @@ class MinePageDatasModel{
337 return compRes.data 340 return compRes.data
338 } 341 }
339 342
  343 + /**
  344 + * 个人中心 获取用户等级
  345 + */
  346 + getUserLevelData(context: Context): Promise<MineUserLevelItem> {
  347 + return new Promise<MineUserLevelItem>((success, error) => {
  348 + Logger.info(TAG, `getAppointmentList start`);
  349 + this.fetchMineUserLevelData().then((navResDTO: ResponseDTO<MineUserLevelItem>) => {
  350 + if (!navResDTO || navResDTO.code != 0) {
  351 + success(this.getMineUserLevelDataLocal(context))
  352 + return
  353 + }
  354 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  355 + let navigationBean = navResDTO.data as MineUserLevelItem
  356 + success(navigationBean);
  357 + }).catch((err: Error) => {
  358 + Logger.error(TAG, `fetchMineUserLevelData catch, error.name : ${err.name}, error.message:${err.message}`);
  359 + success(this.getMineUserLevelDataLocal(context))
  360 + })
  361 + })
  362 + }
  363 +
  364 + fetchMineUserLevelData() {
  365 + let url = HttpUrlUtils.getMineUserLevelDataUrl()
  366 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  367 + return WDHttp.get<ResponseDTO<MineUserLevelItem>>(url, headers)
  368 + };
  369 +
  370 + async getMineUserLevelDataLocal(context: Context): Promise<MineUserLevelItem> {
  371 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  372 + let compRes: ResponseDTO<MineUserLevelItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserLevelItem>>(context,'mine_user_level.json' );
  373 + if (!compRes || !compRes.data) {
  374 + Logger.info(TAG, `getMineUserLevelDataLocal compRes is empty`);
  375 + return new MineUserLevelItem()
  376 + }
  377 + Logger.info(TAG, `getMineUserLevelDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  378 + return compRes.data
  379 + }
  380 +
  381 + /**
  382 + * 个人中心 获取用户详细信息
  383 + */
  384 + getUserDetailData(context: Context): Promise<MineUserDetailItem> {
  385 + return new Promise<MineUserDetailItem>((success, error) => {
  386 + Logger.info(TAG, `getAppointmentList start`);
  387 + this.fetchMineUserDetailData().then((navResDTO: ResponseDTO<MineUserDetailItem>) => {
  388 + if (!navResDTO || navResDTO.code != 0) {
  389 + success(this.getMineUserDetailDataLocal(context))
  390 + return
  391 + }
  392 + Logger.info(TAG, "getUserDetailData then,timeStamp:" + navResDTO.timestamp);
  393 + let navigationBean = navResDTO.data as MineUserDetailItem
  394 + success(navigationBean);
  395 + }).catch((err: Error) => {
  396 + Logger.error(TAG, `fetchMineUserDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
  397 + success(this.getMineUserDetailDataLocal(context))
  398 + })
  399 + })
  400 + }
  401 +
  402 + fetchMineUserDetailData() {
  403 + let url = HttpUrlUtils.getMineUserDetailDataUrl()
  404 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  405 + return WDHttp.get<ResponseDTO<MineUserDetailItem>>(url, headers)
  406 + };
  407 +
  408 + async getMineUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
  409 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  410 + let compRes: ResponseDTO<MineUserDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserDetailItem>>(context,'mine_user_detail.json' );
  411 + if (!compRes || !compRes.data) {
  412 + Logger.info(TAG, `getMineUserDetailDataLocal compRes is empty`);
  413 + return new MineUserDetailItem()
  414 + }
  415 + Logger.info(TAG, `getMineUserDetailDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  416 + return compRes.data
  417 + }
  418 + /**
  419 + * 个人中心 获取其他用户详细信息
  420 + */
  421 + getOtherUserDetailData(item:OtherUserDetailRequestItem,context: Context): Promise<MineUserDetailItem> {
  422 + return new Promise<MineUserDetailItem>((success, error) => {
  423 + Logger.info(TAG, `getAppointmentList start`);
  424 + this.fetchOtherUserDetailData(item).then((navResDTO: ResponseDTO<MineUserDetailItem>) => {
  425 + if (!navResDTO || navResDTO.code != 0) {
  426 + success(this.getOtherUserDetailDataLocal(context))
  427 + return
  428 + }
  429 + Logger.info(TAG, "getUserDetailData then,timeStamp:" + navResDTO.timestamp);
  430 + let navigationBean = navResDTO.data as MineUserDetailItem
  431 + success(navigationBean);
  432 + }).catch((err: Error) => {
  433 + Logger.error(TAG, `fetchMineUserDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
  434 + success(this.getOtherUserDetailDataLocal(context))
  435 + })
  436 + })
  437 + }
  438 +
  439 + fetchOtherUserDetailData(item:OtherUserDetailRequestItem) {
  440 + let url = HttpUrlUtils.getOtherUserDetailDataUrl()
  441 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  442 + return WDHttp.post<ResponseDTO<MineUserDetailItem>>(url, item,headers)
  443 + };
  444 +
  445 + async getOtherUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
  446 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  447 + let compRes: ResponseDTO<MineUserDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserDetailItem>>(context,'other_user512157124138245_detail.json' );
  448 + if (!compRes || !compRes.data) {
  449 + Logger.info(TAG, `getMineUserDetailDataLocal compRes is empty`);
  450 + return new MineUserDetailItem()
  451 + }
  452 + Logger.info(TAG, `getMineUserDetailDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  453 + return compRes.data
  454 + }
  455 +
  456 + /**
  457 + * 个人中心 获取其他用户等级
  458 + */
  459 + getOtherUserLevelData(item:string[],context: Context): Promise<MineUserLevelItem[]> {
  460 + return new Promise<MineUserLevelItem[]>((success, error) => {
  461 + Logger.info(TAG, `getAppointmentList start`);
  462 + this.fetchOtherUserLevelData(item).then((navResDTO: ResponseDTO<MineUserLevelItem[]>) => {
  463 + if (!navResDTO || navResDTO.code != 0) {
  464 + success(this.getOtherUserLevelDataLocal(context))
  465 + return
  466 + }
  467 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  468 + let navigationBean = navResDTO.data as MineUserLevelItem[]
  469 + if(navigationBean.length>0 && StringUtils.isNotEmpty(navigationBean[0].levelHead)){
  470 + success(navigationBean);
  471 + }else{
  472 + success(this.getOtherUserLevelDataLocal(context))
  473 + }
  474 + }).catch((err: Error) => {
  475 + Logger.error(TAG, `fetchMineUserLevelData catch, error.name : ${err.name}, error.message:${err.message}`);
  476 + success(this.getOtherUserLevelDataLocal(context))
  477 + })
  478 + })
  479 + }
  480 +
  481 + fetchOtherUserLevelData(item:string[]) {
  482 + let url = HttpUrlUtils.getOtherUserLevelDataUrl()
  483 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  484 + return WDHttp.post<ResponseDTO<MineUserLevelItem[]>>(url,item, headers)
  485 + };
  486 +
  487 + async getOtherUserLevelDataLocal(context: Context): Promise<MineUserLevelItem[]> {
  488 + Logger.info(TAG, `getMineUserLevelDataLocal start`);
  489 + let compRes: ResponseDTO<MineUserLevelItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserLevelItem[]>>(context,'other_user512157124138245_level.json' );
  490 + if (!compRes || !compRes.data) {
  491 + Logger.info(TAG, `getMineUserLevelDataLocal compRes is empty`);
  492 + return []
  493 + }
  494 + Logger.info(TAG, `getMineUserLevelDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  495 + return compRes.data
  496 + }
  497 +
  498 +
  499 +
340 500
341 } 501 }
342 502
1 import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; 1 import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
  2 +import HashMap from '@ohos.util.HashMap';
  3 +import { HttpUrlUtils, ResponseDTO } from 'wdNetwork';
  4 +import { Logger } from 'wdKit';
  5 +import { HttpRequest } from 'wdNetwork/src/main/ets/http/HttpRequest';
  6 +
  7 +
2 @Observed 8 @Observed
3 export class PrivacySettingModel{ 9 export class PrivacySettingModel{
4 privacyName: string 10 privacyName: string
@@ -10,4 +16,59 @@ export class PrivacySettingModel{ @@ -10,4 +16,59 @@ export class PrivacySettingModel{
10 this.permission = permission; 16 this.permission = permission;
11 this.permissionKey = permissionKey; 17 this.permissionKey = permissionKey;
12 } 18 }
  19 +
  20 +
  21 +
  22 + queryUserDetail() {
  23 + let bean: Record<string, string> = {};
  24 + let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
  25 + return new Promise<string>((success, fail) => {
  26 + HttpRequest.get<ResponseDTO<string>>(HttpUrlUtils.queryUserDetail(), headers).then((data: ResponseDTO<string>) => {
  27 + if (!data || !data.data) {
  28 + fail("数据为空")
  29 + return
  30 + }
  31 + if (data.code != 0) {
  32 + fail(data.message)
  33 + return
  34 + }
  35 + // this.permission = data.data.userExtend.airec as boolean;
  36 + success(data.data)
  37 + }, (error: Error) => {
  38 + fail(error.message)
  39 + Logger.debug("LoginViewModel:error ", error.toString())
  40 + })
  41 + })
  42 + }
  43 +
  44 +
  45 + editUserDetail(airec:string) {
  46 + let bean: Record<string, string> = {};
  47 + bean['airec'] = airec;
  48 + let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
  49 + return new Promise<string>((success, fail) => {
  50 + HttpRequest.post<ResponseDTO<string>>(HttpUrlUtils.editUserDetail(), bean, headers).then((data: ResponseDTO<string>) => {
  51 + if (!data || !data.data) {
  52 + fail("数据为空")
  53 + return
  54 + }
  55 + if (data.code != 0) {
  56 + fail(data.message)
  57 + return
  58 + }
  59 + success(data.data)
  60 + }, (error: Error) => {
  61 + fail(error.message)
  62 + Logger.debug("LoginViewModel:error ", error.toString())
  63 + })
  64 + })
  65 + }
  66 +
  67 +
  68 +
  69 +
  70 +
  71 +
  72 +
  73 +
13 } 74 }
1 import router from '@ohos.router' 1 import router from '@ohos.router'
  2 +import { Params } from 'wdBean';
  3 +import { StringUtils } from 'wdKit';
2 import { WDRouterPage, WDRouterRule } from 'wdRouter'; 4 import { WDRouterPage, WDRouterRule } from 'wdRouter';
3 import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent'; 5 import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent';
  6 +import MinePageDatasModel from '../model/MinePageDatasModel';
  7 +
  8 +const TAG = "MineHomePage"
4 9
5 @Entry 10 @Entry
6 @Component 11 @Component
7 struct MineHomePage { 12 struct MineHomePage {
8 @State tileOpacity: number = 0; 13 @State tileOpacity: number = 0;
9 firstPositionY:number = 0; 14 firstPositionY:number = 0;
10 - @State isHasIntroduction: boolean = true  
11 - @State desc:string = "点击添加简介,让大家认识你" //text 搞两个样式,如果三行,就显示 另外一个text 没有显示高度的  
12 fontColor: string = '#999999' 15 fontColor: string = '#999999'
13 selectedFontColor: string = '#000000' 16 selectedFontColor: string = '#000000'
14 @State currentIndex: number = 0 17 @State currentIndex: number = 0
15 private controller: TabsController = new TabsController() 18 private controller: TabsController = new TabsController()
16 isChangeToUserEdit = false; 19 isChangeToUserEdit = false;
  20 + @State userName:string = ""
  21 + @State headPhotoUrl:string = ""
  22 + @State levelHead:string = ""
  23 + @State levelId:number = 0
  24 + @State desc:string = "点击添加简介,让大家认识你" //text 搞两个样式,如果三行,就显示 另外一个text 没有显示高度的
  25 + @State isHasIntroduction: boolean = false
  26 + @State browseNum:number = 0//阅读数
  27 + @State commentNum:number = 0//评论数
  28 + @State attentionNum:number = 0//关注数
  29 + registTime:number = 0//账号注册时间
  30 + @State registerTimeForDay:number = 0
  31 +
  32 + aboutToAppear(){
  33 + this.getUserInfo()
  34 + this.getUserLevel()
  35 + }
  36 +
17 37
18 38
19 build() { 39 build() {
@@ -33,15 +53,28 @@ struct MineHomePage { @@ -33,15 +53,28 @@ struct MineHomePage {
33 Column() { 53 Column() {
34 //用户信息区域 54 //用户信息区域
35 Row() { 55 Row() {
36 - Image($r('app.media.default_head')) 56 + Stack(){
  57 + Image(this.headPhotoUrl)
  58 + .alt($r('app.media.default_head'))
37 .width('115lpx') 59 .width('115lpx')
38 .height('115lpx') 60 .height('115lpx')
39 .objectFit(ImageFit.Cover) 61 .objectFit(ImageFit.Cover)
40 .borderRadius(50) 62 .borderRadius(50)
  63 + Image(this.levelHead)
  64 + .width('130lpx')
  65 + .height('130lpx')
  66 + .objectFit(ImageFit.Cover)
  67 + .borderRadius(50)
  68 + }.onClick(()=>{
  69 + let params: Params = {
  70 + pageID: "-1"
  71 + }
  72 + WDRouterRule.jumpWithPage(WDRouterPage.otherNormalUserHomePagePage,params)
  73 + })
41 74
42 Column() { 75 Column() {
43 Row() { 76 Row() {
44 - Text("人民日报6G") 77 + Text(`${this.userName}`)
45 .fontColor($r('app.color.white')) 78 .fontColor($r('app.color.white'))
46 .maxLines(1) 79 .maxLines(1)
47 .textOverflow({ overflow: TextOverflow.Ellipsis }) 80 .textOverflow({ overflow: TextOverflow.Ellipsis })
@@ -49,7 +82,7 @@ struct MineHomePage { @@ -49,7 +82,7 @@ struct MineHomePage {
49 .lineHeight('50lpx') 82 .lineHeight('50lpx')
50 .fontWeight('500lpx') 83 .fontWeight('500lpx')
51 84
52 - Text("等级8") 85 + Text(`等级${this.levelId}`)
53 .textAlign(TextAlign.Center) 86 .textAlign(TextAlign.Center)
54 .fontColor($r('app.color.color_ED2800')) 87 .fontColor($r('app.color.color_ED2800'))
55 .backgroundColor($r('app.color.white')) 88 .backgroundColor($r('app.color.white'))
@@ -62,7 +95,7 @@ struct MineHomePage { @@ -62,7 +95,7 @@ struct MineHomePage {
62 95
63 Row() { 96 Row() {
64 Row() { 97 Row() {
65 - Text("3.6万") 98 + Text(`${this.browseNum}`)
66 .textStyle() 99 .textStyle()
67 Text("阅读") 100 Text("阅读")
68 .textStyle2() 101 .textStyle2()
@@ -76,7 +109,7 @@ struct MineHomePage { @@ -76,7 +109,7 @@ struct MineHomePage {
76 .vertical(true) 109 .vertical(true)
77 .opacity(0.4) 110 .opacity(0.4)
78 Row() { 111 Row() {
79 - Text("6242") 112 + Text(`${this.commentNum}`)
80 .textStyle() 113 .textStyle()
81 Text("评论") 114 Text("评论")
82 .textStyle2() 115 .textStyle2()
@@ -89,7 +122,7 @@ struct MineHomePage { @@ -89,7 +122,7 @@ struct MineHomePage {
89 .vertical(true) 122 .vertical(true)
90 .opacity(0.4) 123 .opacity(0.4)
91 Row() { 124 Row() {
92 - Text("86") 125 + Text(`${this.attentionNum}`)
93 .textStyle() 126 .textStyle()
94 Text("关注") 127 Text("关注")
95 .textStyle2() 128 .textStyle2()
@@ -132,7 +165,7 @@ struct MineHomePage { @@ -132,7 +165,7 @@ struct MineHomePage {
132 .objectFit(ImageFit.Auto) 165 .objectFit(ImageFit.Auto)
133 } 166 }
134 } 167 }
135 - Text("来到人民日报365天") 168 + Text(`来到人民日报${this.registerTimeForDay}天`)
136 .fontSize('23lpx') 169 .fontSize('23lpx')
137 .lineHeight('25lpx') 170 .lineHeight('25lpx')
138 .fontWeight('400lpx') 171 .fontWeight('400lpx')
@@ -233,11 +266,13 @@ struct MineHomePage { @@ -233,11 +266,13 @@ struct MineHomePage {
233 .onClick(() => { 266 .onClick(() => {
234 router.back() 267 router.back()
235 }) 268 })
236 - Image($r('app.media.default_head')) 269 + Image(`${this.headPhotoUrl}`)
  270 + .alt($r('app.media.default_head'))
237 .width('60lpx') 271 .width('60lpx')
238 .height('60lpx') 272 .height('60lpx')
239 .objectFit(ImageFit.Auto) 273 .objectFit(ImageFit.Auto)
240 .id("head_icon") 274 .id("head_icon")
  275 + .borderRadius(50)
241 .alignRules({ 276 .alignRules({
242 center: { anchor: "__container__", align: VerticalAlign.Center }, 277 center: { anchor: "__container__", align: VerticalAlign.Center },
243 left: { anchor: "back_icon", align: HorizontalAlign.End } 278 left: { anchor: "back_icon", align: HorizontalAlign.End }
@@ -247,7 +282,7 @@ struct MineHomePage { @@ -247,7 +282,7 @@ struct MineHomePage {
247 router.back() 282 router.back()
248 }) 283 })
249 284
250 - Text("我的昵称") 285 + Text(`${this.userName}`)
251 .height('42lpx') 286 .height('42lpx')
252 .maxLines(1) 287 .maxLines(1)
253 .id("title") 288 .id("title")
@@ -326,6 +361,41 @@ struct MineHomePage { @@ -326,6 +361,41 @@ struct MineHomePage {
326 WDRouterRule.jumpWithPage(WDRouterPage.editUserInfoPage) 361 WDRouterRule.jumpWithPage(WDRouterPage.editUserInfoPage)
327 } 362 }
328 } 363 }
  364 + getUserInfo(){
  365 + MinePageDatasModel.getUserDetailData(getContext(this)).then((value)=>{
  366 + if(value!=null){
  367 + this.userName = value.userName
  368 + this.headPhotoUrl = value.headPhotoUrl
  369 + if(StringUtils.isNotEmpty(value.introduction)){
  370 + this.desc = value.introduction
  371 + this.isHasIntroduction = true
  372 + }
  373 + this.browseNum = value.browseNum
  374 + this.commentNum = value.commentNum
  375 + this.attentionNum = value.attentionNum
  376 + this.registTime = value.registTime
  377 + this.getRegisterDays()
  378 + }
  379 + }).catch((err:Error)=>{
  380 + console.log(TAG,JSON.stringify(err))
  381 + })
  382 + }
  383 + getUserLevel(){
  384 + MinePageDatasModel.getUserLevelData(getContext(this)).then((value)=>{
  385 + if(value!=null){
  386 + this.levelHead = value.levelHead
  387 + this.levelId = value.levelId
  388 + }
  389 + }).catch((err:Error)=>{
  390 + console.log(TAG,JSON.stringify(err))
  391 + })
  392 + }
  393 + getRegisterDays(){
  394 + if(this.registTime!=null){
  395 + let curDate = new Date()
  396 + this.registerTimeForDay = Math.ceil((curDate.getTime()-this.registTime)/(1000*60*60*24))
  397 + }
  398 + }
329 399
330 } 400 }
331 401
  1 +import router from '@ohos.router'
  2 +import { Params } from 'wdBean';
  3 +import { StringUtils } from 'wdKit';
  4 +import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent';
  5 +import MinePageDatasModel from '../model/MinePageDatasModel';
  6 +import { OtherUserDetailRequestItem } from '../viewmodel/OtherUserDetailRequestItem';
  7 +
  8 +const TAG = "OtherNormalUserHomePage"
  9 +
  10 +@Entry
  11 +@Component
  12 +struct OtherNormalUserHomePage {
  13 + @State params:Params = router.getParams() as Params;
  14 + @State curUserId: string = '-1';
  15 +
  16 + onPageShow() {
  17 + this.curUserId = this.params?.pageID;
  18 + }
  19 +
  20 + @State tileOpacity: number = 0;
  21 + firstPositionY:number = 0;
  22 + fontColor: string = '#999999'
  23 + selectedFontColor: string = '#000000'
  24 + @State currentIndex: number = 0
  25 + private controller: TabsController = new TabsController()
  26 + isChangeToUserEdit = false;
  27 + @State userName:string = ""
  28 + @State headPhotoUrl:string = ""
  29 + @State levelHead:string = ""
  30 + @State levelId:number = 0
  31 + @State browseNum:number = 0//阅读数
  32 + @State commentNum:number = 0//评论数
  33 + @State attentionNum:number = 0//关注数
  34 +
  35 + aboutToAppear(){
  36 + this.getUserInfo()
  37 + this.getUserLevel()
  38 + }
  39 +
  40 +
  41 +
  42 + build() {
  43 + Stack({ alignContent: Alignment.Top }){
  44 + Image($r('app.media.title_bg'))
  45 + .width('100%')
  46 + .height('355lpx')
  47 + .objectFit(ImageFit.Cover)
  48 +
  49 + Column(){
  50 + Stack({ alignContent: Alignment.Top }){
  51 + this.MineHomeTitleTransparent()
  52 + this.MineHomeTitleWhite()
  53 + }
  54 +
  55 + Scroll() {
  56 + Column() {
  57 + //用户信息区域
  58 + Row() {
  59 + Stack(){
  60 + Image(this.headPhotoUrl)
  61 + .alt($r('app.media.default_head'))
  62 + .width('115lpx')
  63 + .height('115lpx')
  64 + .objectFit(ImageFit.Cover)
  65 + .borderRadius(50)
  66 + Image(this.levelHead)
  67 + .width('130lpx')
  68 + .height('130lpx')
  69 + .objectFit(ImageFit.Cover)
  70 + .borderRadius(50)
  71 + }
  72 +
  73 + Column() {
  74 + Row() {
  75 + Text(`${this.userName}`)
  76 + .fontColor($r('app.color.white'))
  77 + .maxLines(1)
  78 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  79 + .fontSize('38lpx')
  80 + .lineHeight('50lpx')
  81 + .fontWeight('500lpx')
  82 +
  83 + Text(`等级${this.levelId}`)
  84 + .textAlign(TextAlign.Center)
  85 + .fontColor($r('app.color.color_ED2800'))
  86 + .backgroundColor($r('app.color.white'))
  87 + .fontSize('19lpx')
  88 + .width('96lpx')
  89 + .height('35lpx')
  90 + .margin({ left: '10lpx' })
  91 + Blank()
  92 + }.width('507lpx')
  93 +
  94 + Row() {
  95 + Row() {
  96 + Text(`${this.browseNum}`)
  97 + .textStyle()
  98 + Text("阅读")
  99 + .textStyle2()
  100 + }
  101 + .margin({ right: '15lpx' })
  102 +
  103 + Divider()
  104 + .height('19lpx')
  105 + .width('2lpx')
  106 + .color($r('app.color.white'))
  107 + .vertical(true)
  108 + .opacity(0.4)
  109 + Row() {
  110 + Text(`${this.commentNum}`)
  111 + .textStyle()
  112 + Text("评论")
  113 + .textStyle2()
  114 + }.margin({ right: '15lpx', left: '15lpx' })
  115 +
  116 + Divider()
  117 + .height('19lpx')
  118 + .width('2lpx')
  119 + .color($r('app.color.white'))
  120 + .vertical(true)
  121 + .opacity(0.4)
  122 + Row() {
  123 + Text(`${this.attentionNum}`)
  124 + .textStyle()
  125 + Text("关注")
  126 + .textStyle2()
  127 + }.margin({ left: '15lpx' })
  128 + }.margin({ top: '23lpx' })
  129 + }.alignItems(HorizontalAlign.Start)
  130 + .margin({ left: '32lpx' })
  131 + }
  132 + .onAreaChange((oldValue: Area, newValue: Area) => {
  133 + if (this.firstPositionY === 0) {
  134 + this.firstPositionY = newValue.globalPosition.y as number
  135 + }else{
  136 + let persent = (this.firstPositionY - Number(newValue.globalPosition.y)) / (this.firstPositionY * 0.3)
  137 + if(persent > 1){
  138 + persent = 1
  139 + }
  140 + this.tileOpacity = persent
  141 + }
  142 + })
  143 + .backgroundColor($r('app.color.color_transparent'))
  144 + .height('184lpx')
  145 + .width('100%')
  146 + .padding({ left: '35lpx' })
  147 +
  148 + //间隔符
  149 +
  150 + Divider().width('100%').height('12lpx').color($r('app.color.color_F5F5F5')).strokeWidth('12lpx')
  151 +
  152 + //tab 页面
  153 + Tabs({controller: this.controller}) {
  154 + TabContent() {
  155 + HomePageBottomComponent({style:0})
  156 + }.tabBar(this.TabBuilder(0,"评论"))
  157 + TabContent() {
  158 + HomePageBottomComponent({style:1})
  159 + }.tabBar(this.TabBuilder(1,"关注"))
  160 + }
  161 + .backgroundColor($r('app.color.white'))
  162 + .animationDuration(0)
  163 + .onChange((index: number) => {
  164 + this.currentIndex = index
  165 + })
  166 + .vertical(false)
  167 + .height("100%")
  168 + }.width("100%")
  169 + }
  170 + .edgeEffect(EdgeEffect.None)
  171 + .scrollBar(BarState.Off)
  172 + .width('100%')
  173 + .height('100%')
  174 + }
  175 + }.width('100%')
  176 + .height('100%')
  177 +
  178 + }
  179 + @Builder MineHomeTitleTransparent() {
  180 + RelativeContainer() {
  181 + //标题栏目
  182 + Image($r('app.media.icon_arrow_left_white') )
  183 + .width('46lpx')
  184 + .height('46lpx')
  185 + .objectFit(ImageFit.Auto)
  186 + .id("back_icon")
  187 + .alignRules({
  188 + center: { anchor: "__container__", align: VerticalAlign.Center },
  189 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  190 + })
  191 + .margin({ left: '31lpx' })
  192 + .onClick(() => {
  193 + router.back()
  194 + })
  195 + }
  196 + .visibility(this.tileOpacity > 0 ? 1 : 0)
  197 + .height('84lpx')
  198 + .width('100%')
  199 + .backgroundColor($r('app.color.color_transparent'))
  200 + }
  201 +
  202 + @Builder MineHomeTitleWhite() {
  203 + RelativeContainer() {
  204 + //标题栏目
  205 + Image($r('app.media.back_icon'))
  206 + .width('46lpx')
  207 + .height('46lpx')
  208 + .objectFit(ImageFit.Auto)
  209 + .id("back_icon")
  210 + .alignRules({
  211 + center: { anchor: "__container__", align: VerticalAlign.Center },
  212 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  213 + })
  214 + .margin({ left: '31lpx' })
  215 + .onClick(() => {
  216 + router.back()
  217 + })
  218 + Image(this.headPhotoUrl)
  219 + .alt($r('app.media.default_head'))
  220 + .width('60lpx')
  221 + .height('60lpx')
  222 + .borderRadius(50)
  223 + .objectFit(ImageFit.Auto)
  224 + .id("head_icon")
  225 + .alignRules({
  226 + center: { anchor: "__container__", align: VerticalAlign.Center },
  227 + left: { anchor: "back_icon", align: HorizontalAlign.End }
  228 + })
  229 + .margin({ left: '31lpx' })
  230 + .onClick(() => {
  231 + router.back()
  232 + })
  233 +
  234 + Text(`${this.userName}`)
  235 + .height('42lpx')
  236 + .maxLines(1)
  237 + .id("title")
  238 + .fontSize('35lpx')
  239 + .fontWeight('400lpx')
  240 + .fontColor($r('app.color.color_222222'))
  241 + .lineHeight('42lpx')
  242 + .alignRules({
  243 + center: { anchor: "__container__", align: VerticalAlign.Center },
  244 + left: { anchor: "head_icon", align: HorizontalAlign.End }
  245 + })
  246 + .margin({ left: '12lpx' })
  247 + }
  248 + .visibility(this.tileOpacity > 0 ? 0 : 1)
  249 + .height('84lpx')
  250 + .width('100%')
  251 + .backgroundColor($r('app.color.white'))
  252 + .opacity(this.tileOpacity )
  253 +
  254 + }
  255 +
  256 + @Builder TabBuilder(index: number, title: string) {
  257 + Stack(){
  258 + Text(title)
  259 + .height('38lpx')
  260 + .fontSize('33lpx')
  261 + .fontWeight(this.currentIndex === index ? 600 : 400)
  262 + .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
  263 + .lineHeight('38lpx')
  264 +
  265 + if(this.currentIndex === index){
  266 + Divider()
  267 + .width('31lpx')
  268 + .height('4lpx')
  269 + .color('#ED2800')
  270 + .strokeWidth('4lpx')
  271 + .margin({top:'50lpx'})
  272 + .id("divTag")
  273 + }
  274 + }.onClick(()=>{
  275 + this.currentIndex = index
  276 + this.controller.changeIndex(this.currentIndex)
  277 + })
  278 + .height('100%')
  279 + .width('100%')
  280 + .margin({right:'9lpx'})
  281 + }
  282 +
  283 +
  284 + getUserInfo(){
  285 + let item = new OtherUserDetailRequestItem("","1",this.curUserId)
  286 + MinePageDatasModel.getOtherUserDetailData(item,getContext(this)).then((value)=>{
  287 + if(value!=null){
  288 + this.userName = value.userName
  289 + this.headPhotoUrl = value.headPhotoUrl
  290 +
  291 + this.browseNum = StringUtils.isEmpty(value.browseNum)?0:value.browseNum
  292 + this.commentNum = StringUtils.isEmpty(value.commentNum)?0:value.commentNum
  293 + this.attentionNum = StringUtils.isEmpty(value.attentionNum)?0:value.attentionNum
  294 + }
  295 + }).catch((err:Error)=>{
  296 + console.log(TAG,JSON.stringify(err))
  297 + })
  298 + }
  299 + getUserLevel(){
  300 + MinePageDatasModel.getOtherUserLevelData([this.curUserId],getContext(this)).then((value)=>{
  301 + if(value!=null){
  302 + this.levelHead = value[0].levelHead
  303 + this.levelId = value[0].level
  304 + }
  305 + }).catch((err:Error)=>{
  306 + console.log(TAG,JSON.stringify(err))
  307 + })
  308 + }
  309 +
  310 +}
  311 +
  312 +@Extend(Text) function textStyle() {
  313 + .fontColor($r('app.color.white'))
  314 + .textStyleDefault()
  315 + .margin({ right: '10lpx' })
  316 +}
  317 +
  318 +@Extend(Text) function textStyle2() {
  319 + .textStyleDefault()
  320 + .fontColor($r('app.color.color_B2FFFFFF'))
  321 +}
  322 +
  323 +@Extend(Text) function textStyleDefault() {
  324 + .textAlign(TextAlign.Start)
  325 + .fontSize('23lpx')
  326 + .fontWeight('400lpx')
  327 + .lineHeight('31lpx')
  328 +}
  329 +
1 1
2 -import { EditInfoModel, EditListInfo } from '../model/EditInfoModel'; 2 +import { EditInfoModel, EditListInfo, editModel } from '../model/EditInfoModel';
3 import HashMap from '@ohos.util.HashMap'; 3 import HashMap from '@ohos.util.HashMap';
4 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork'; 4 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
  5 +import { Logger, ResourcesUtils } from 'wdKit';
5 6
  7 +const TAG = "EditInfoViewModel"
6 8
7 class EditInfoViewModel { 9 class EditInfoViewModel {
8 private static instance: EditInfoViewModel; 10 private static instance: EditInfoViewModel;
@@ -20,30 +22,48 @@ class EditInfoViewModel { @@ -20,30 +22,48 @@ class EditInfoViewModel {
20 22
21 BaseGetRequest(requestUrl:string){ 23 BaseGetRequest(requestUrl:string){
22 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders() 24 let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders()
  25 + requestUrl = HttpUrlUtils.HOST_SIT + requestUrl
23 return WDHttp.get<ResponseDTO>(requestUrl,headers) 26 return WDHttp.get<ResponseDTO>(requestUrl,headers)
24 } 27 }
25 28
26 29
27 - getEditListInfo(item:EditInfoModel):EditListInfo[]{ 30 + getEditListInfo(item:editModel):EditListInfo[]{
28 this.editListData = [ 31 this.editListData = [
29 new EditListInfo('昵称',item&&item.userName?item.userName:'待完善'), 32 new EditListInfo('昵称',item&&item.userName?item.userName:'待完善'),
30 - new EditListInfo('简介',item&&item.introduction?item.introduction:'待完善'),  
31 - new EditListInfo('地区',item&&item.city?item.city:'待完善'),  
32 - new EditListInfo('生日',item&&item.birthday?item.birthday:'待完善'),  
33 - new EditListInfo('性别',item&&item.sex?item.sex:'待完善'),] 33 + new EditListInfo('简介',item&&item.userExtend.introduction?item.userExtend.introduction:'待完善'),
  34 + new EditListInfo('地区',item&&item.userExtend.city?item.userExtend.city:'待完善'),
  35 + new EditListInfo('生日',item&&item.userExtend.birthday?item.userExtend.birthday:'待完善'),
  36 + new EditListInfo('性别',item&&item.userExtend.sex?item.userExtend.sex:'待完善'),]
34 return this.editListData 37 return this.editListData
35 } 38 }
36 39
37 - queryAccountOwnerInfo(userType:number):PromiseLike<EditInfoModel>{ 40 + ///1普通用户
  41 + queryAccountOwnerInfo(userType:number, context: Context):PromiseLike<editModel>{
38 return new Promise(((success, error) => { 42 return new Promise(((success, error) => {
39 - this.BaseGetRequest(HttpUrlUtils.APPOINTMENT_AccountOwner_PATH).then(navResDTO =>{ 43 + this.BaseGetRequest(userType == 1?HttpUrlUtils.APPOINTMENT_QueryUserDetail_PATH:HttpUrlUtils.APPOINTMENT_AccountOwner_PATH).then((navResDTO:ResponseDTO) =>{
40 if (navResDTO.code == 200) { 44 if (navResDTO.code == 200) {
41 - // success(JSON.parse(navResDTO.data)) 45 + // let editM = navResDTO.data as EditInfoModel
  46 + // success(JSON.parse(navResDTO.data)
42 } 47 }
43 - }).catch() 48 + }).catch((error: Error) => {
  49 + Logger.info('EditInfoViewModel','EditInfoViewModel','EditInfoViewModel')
  50 + return this.GetqueryAccountOwnerLocal(context)
  51 +
  52 + })
44 })) 53 }))
45 } 54 }
46 55
  56 + async GetqueryAccountOwnerLocal(context: Context): Promise<editModel> {
  57 + Logger.info(TAG, `getBottomNavDataMock start`);
  58 + let compRes: ResponseDTO<editModel> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<editModel>>(context,'userInfo.json');
  59 + if (!compRes || !compRes.data) {
  60 + Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
  61 + return {} as editModel
  62 + }
  63 + Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  64 + return compRes.data
  65 + }
  66 +
47 updateUserInfo(){ 67 updateUserInfo(){
48 68
49 } 69 }
  1 +
  2 +export class MineUserDetailItem{
  3 + userName:string = ""
  4 + headPhotoUrl:"" = ""
  5 + introduction:string = ""
  6 + userType:string = "1"
  7 + creatorId:string = ""
  8 + browseNum:number = 0//阅读数
  9 + commentNum:number = 0//评论数
  10 + attentionNum:number = 0//关注数
  11 + registTime:number = 0//账号注册时间
  12 +}
  1 +
  2 +export class MineUserLevelItem{
  3 + levelHead:string = ""
  4 + levelId:number = 0
  5 + level:number = 0
  6 + levelName:string = ""
  7 +
  8 +}
  1 +export class OtherUserDetailRequestItem {
  2 + creatorId: string = ""
  3 + userType: string = "1"
  4 + userId: string = "-1"
  5 +
  6 + constructor(creatorId: string ,
  7 + userType: string,
  8 + userId: string ) {
  9 + this.creatorId = creatorId
  10 + this.userType = userType
  11 + this.userId = userId
  12 + }
  13 +
  14 +}
@@ -115,8 +115,10 @@ @@ -115,8 +115,10 @@
115 { 115 {
116 "name": "color_transparent", 116 "name": "color_transparent",
117 "value": "#00000000" 117 "value": "#00000000"
  118 + },
  119 + {
  120 + "name": "color_99636363",
  121 + "value": "#99636363"
118 } 122 }
119 -  
120 -  
121 ] 123 ]
122 } 124 }
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 "components/page/EditUserNikeNamePage", 11 "components/page/EditUserNikeNamePage",
12 "components/page/EditUserIntroductionPage", 12 "components/page/EditUserIntroductionPage",
13 "components/page/BrowsingHistoryPage", 13 "components/page/BrowsingHistoryPage",
14 - "components/page/MyCollectionListPage" 14 + "components/page/MyCollectionListPage",
  15 + "pages/OtherNormalUserHomePage"
15 ] 16 ]
16 } 17 }
1 import router from '@ohos.router'; 1 import router from '@ohos.router';
2 import mediaquery from '@ohos.mediaquery'; 2 import mediaquery from '@ohos.mediaquery';
3 import window from '@ohos.window'; 3 import window from '@ohos.window';
4 -import { Action } from 'wdBean'; 4 +import { Action, RmhInfoDTO, UserInfoDTO } from 'wdBean';
5 import { Logger, SPHelper, WindowModel } from 'wdKit'; 5 import { Logger, SPHelper, WindowModel } from 'wdKit';
6 import { PlayerConstants, WDPlayerController, WDPlayerRenderView } from 'wdPlayer'; 6 import { PlayerConstants, WDPlayerController, WDPlayerRenderView } from 'wdPlayer';
7 import { devicePLSensorManager } from 'wdDetailPlayApi'; 7 import { devicePLSensorManager } from 'wdDetailPlayApi';
@@ -30,27 +30,34 @@ export struct DetailPlayShortVideoPage { @@ -30,27 +30,34 @@ export struct DetailPlayShortVideoPage {
30 @Provide canStart?: boolean = false; 30 @Provide canStart?: boolean = false;
31 @Provide status: number = PlayerConstants.STATUS_START; 31 @Provide status: number = PlayerConstants.STATUS_START;
32 @Provide userId: string = ''; 32 @Provide userId: string = '';
33 - @Provide newsSourceName?: string = undefined  
34 - @Provide title?: string = undefined  
35 - @Provide message?: string = undefined  
36 - @Provide newsSummary?: string = undefined 33 + @Provide newsSourceName?: string = ''
  34 + @Provide newsTitle?: string = ''
  35 + @Provide editorName?: string = ''
  36 + @Provide rmhInfo?: RmhInfoDTO = undefined
  37 + @Provide userInfo?: UserInfoDTO = undefined
  38 + @Provide message?: string = ''
  39 + @Provide newsSummary?: string = ''
37 @Provide progressVal: number = 0; 40 @Provide progressVal: number = 0;
38 @Provide videoLandScape?: number = 1; // 视频朝向, 横屏视频:1;竖屏视频:2 41 @Provide videoLandScape?: number = 1; // 视频朝向, 横屏视频:1;竖屏视频:2
39 42
40 playVMChanged(name: string) { 43 playVMChanged(name: string) {
41 this.url = this.playVM.url 44 this.url = this.playVM.url
42 this.newsSourceName = this.playVM.newsSourceName 45 this.newsSourceName = this.playVM.newsSourceName
43 - this.title = this.playVM.title 46 + this.newsTitle = this.playVM.newsTitle
  47 + this.editorName = this.playVM.editorName
44 this.newsSummary = this.playVM.newsSummary 48 this.newsSummary = this.playVM.newsSummary
45 this.videoLandScape = this.playVM.videoLandScape ?? 1 49 this.videoLandScape = this.playVM.videoLandScape ?? 1
46 this.curContId = this.playVM.contentId 50 this.curContId = this.playVM.contentId
47 this.nextContId = this.playVM.nextContId 51 this.nextContId = this.playVM.nextContId
48 this.canStart = this.playVM.canStart; 52 this.canStart = this.playVM.canStart;
49 this.message = this.playVM.message 53 this.message = this.playVM.message
  54 + this.rmhInfo = this.playVM.rmhInfo
  55 + this.userInfo = this.playVM.userInfo
50 } 56 }
51 57
52 aboutToAppear() { 58 aboutToAppear() {
53 let action: Action = router.getParams() as Action 59 let action: Action = router.getParams() as Action
  60 + Logger.info(TAG, "action", JSON.stringify(action))
54 if (action) { 61 if (action) {
55 this.contentId = action.params?.contentID 62 this.contentId = action.params?.contentID
56 if (action.params && action.params.extra) { 63 if (action.params && action.params.extra) {
@@ -86,11 +93,12 @@ export struct DetailPlayShortVideoPage { @@ -86,11 +93,12 @@ export struct DetailPlayShortVideoPage {
86 } 93 }
87 94
88 @Builder 95 @Builder
89 - playerViewContainer() { 96 + playerViewContainerBuilder() {
90 // 播放窗口 97 // 播放窗口
91 WDPlayerRenderView({ 98 WDPlayerRenderView({
92 playerController: this.playerController, 99 playerController: this.playerController,
93 onLoad: async () => { 100 onLoad: async () => {
  101 + console.log('onload==')
94 // this.playVM.playWithContentId(this.contentId ?? "846899373") 102 // this.playVM.playWithContentId(this.contentId ?? "846899373")
95 this.playVM.playWithIds(this.contentId ?? "846899373", 103 this.playVM.playWithIds(this.contentId ?? "846899373",
96 this.relId ?? "500000301942", this.relType ?? "1") 104 this.relId ?? "500000301942", this.relType ?? "1")
@@ -101,7 +109,7 @@ export struct DetailPlayShortVideoPage { @@ -101,7 +109,7 @@ export struct DetailPlayShortVideoPage {
101 } 109 }
102 110
103 @Builder 111 @Builder
104 - playControlViewContainer() { 112 + playControlViewContainerBuilder() {
105 // 播放窗口控制bar 113 // 播放窗口控制bar
106 PlayControlViewContainer({ 114 PlayControlViewContainer({
107 playerController: this.playerController 115 playerController: this.playerController
@@ -109,7 +117,7 @@ export struct DetailPlayShortVideoPage { @@ -109,7 +117,7 @@ export struct DetailPlayShortVideoPage {
109 } 117 }
110 118
111 @Builder 119 @Builder
112 - detailContainer() { 120 + detailContainerBuilder() {
113 // DetailTabBarPageComponent({ pageId: this.pageId }).backgroundColor(Color.Black) 121 // DetailTabBarPageComponent({ pageId: this.pageId }).backgroundColor(Color.Black)
114 DetailContainer({ 122 DetailContainer({
115 playerController: this.playerController 123 playerController: this.playerController
@@ -118,13 +126,15 @@ export struct DetailPlayShortVideoPage { @@ -118,13 +126,15 @@ export struct DetailPlayShortVideoPage {
118 126
119 build() { 127 build() {
120 Row() { 128 Row() {
121 - PlayerDetailContainer({ playerView: () => {  
122 - this.playerViewContainer() 129 + PlayerDetailContainer({
  130 + playerView: () => {
  131 + this.playerViewContainerBuilder()
123 }, playControlView: () => { 132 }, playControlView: () => {
124 - this.playControlViewContainer() 133 + this.playControlViewContainerBuilder()
125 }, detailView: () => { 134 }, detailView: () => {
126 - this.detailContainer()  
127 - } }) 135 + this.detailContainerBuilder()
  136 + }
  137 + })
128 .height('100%') 138 .height('100%')
129 .width('100%') 139 .width('100%')
130 } 140 }
  1 +import { RmhInfoDTO, UserInfoDTO } from 'wdBean/Index';
1 import { ToastUtils } from 'wdKit'; 2 import { ToastUtils } from 'wdKit';
2 3
3 export interface OperationItem { 4 export interface OperationItem {
@@ -12,13 +13,14 @@ const FULL_PARENT: string = '100%'; @@ -12,13 +13,14 @@ const FULL_PARENT: string = '100%';
12 13
13 const TAG = 'OperationListView'; 14 const TAG = 'OperationListView';
14 15
15 -@Entry  
16 @Component 16 @Component
17 export struct OperationListView { 17 export struct OperationListView {
  18 + @Consume rmhInfo?: RmhInfoDTO
  19 + @Consume userInfo?: UserInfoDTO
18 @State operationList: OperationItem[] = [ 20 @State operationList: OperationItem[] = [
19 { 21 {
20 icon: $r('app.media.ic_like_uncheck'), 22 icon: $r('app.media.ic_like_uncheck'),
21 - text: "赞", 23 + text: "赞",
22 num: 6622 24 num: 6622
23 }, 25 },
24 { 26 {
@@ -62,6 +64,7 @@ export struct OperationListView { @@ -62,6 +64,7 @@ export struct OperationListView {
62 // }) 64 // })
63 65
64 Column() { 66 Column() {
  67 + this.buildUserComp()
65 ForEach(this.operationList, (item: OperationItem, index: number) => { 68 ForEach(this.operationList, (item: OperationItem, index: number) => {
66 this.buildOperationItem(item, index) 69 this.buildOperationItem(item, index)
67 }, (item: OperationItem, index: number) => JSON.stringify(item)) 70 }, (item: OperationItem, index: number) => JSON.stringify(item))
@@ -69,6 +72,17 @@ export struct OperationListView { @@ -69,6 +72,17 @@ export struct OperationListView {
69 .width(48) 72 .width(48)
70 } 73 }
71 74
  75 + @Builder
  76 + buildUserComp() {
  77 + Column() {
  78 + Image(this.rmhInfo?.rmhHeadUrl || this.userInfo?.userHeadUrl)
  79 + .width(48)
  80 + .borderRadius(24)
  81 + .aspectRatio(1)
  82 + // .margin(18)
  83 + }
  84 + }
  85 +
72 /** 86 /**
73 * 组件项 87 * 组件项
74 * 88 *
@@ -97,7 +111,7 @@ export struct OperationListView { @@ -97,7 +111,7 @@ export struct OperationListView {
97 .hoverEffect(HoverEffect.Scale) 111 .hoverEffect(HoverEffect.Scale)
98 .onClick((event: ClickEvent) => { 112 .onClick((event: ClickEvent) => {
99 console.info(TAG, `buildOperationItem onClick event index: ${index}`); 113 console.info(TAG, `buildOperationItem onClick event index: ${index}`);
100 - ToastUtils.showToast('体验版,本功能暂未开发', 1000); 114 + // ToastUtils.showToast('体验版,本功能暂未开发', 1000);
101 }) 115 })
102 } 116 }
103 } 117 }
@@ -103,12 +103,17 @@ export struct PlayControlViewContainer { @@ -103,12 +103,17 @@ export struct PlayControlViewContainer {
103 .height('100%') 103 .height('100%')
104 .width('100%') 104 .width('100%')
105 .zIndex(1) 105 .zIndex(1)
106 - .gesture(TapGesture({ count: 2 }) 106 + .gesture(TapGesture({ count: 1 })
107 .onAction((event: GestureEvent) => { 107 .onAction((event: GestureEvent) => {
108 let curStatus = (this.status === PlayerConstants.STATUS_START); 108 let curStatus = (this.status === PlayerConstants.STATUS_START);
109 this.status = curStatus ? PlayerConstants.STATUS_PAUSE : PlayerConstants.STATUS_START; 109 this.status = curStatus ? PlayerConstants.STATUS_PAUSE : PlayerConstants.STATUS_START;
110 this.playerController?.switchPlayOrPause(); 110 this.playerController?.switchPlayOrPause();
111 })) 111 }))
  112 + .gesture(TapGesture({ count: 2 })
  113 + .onAction((event: GestureEvent) => {
  114 + // TODO 双击点赞|收藏
  115 + }))
  116 +
112 117
113 Row() { 118 Row() {
114 Image($r('app.media.ic_volume')) 119 Image($r('app.media.ic_volume'))
@@ -8,7 +8,7 @@ import { devicePLSensorManager } from 'wdDetailPlayApi'; @@ -8,7 +8,7 @@ import { devicePLSensorManager } from 'wdDetailPlayApi';
8 @Component 8 @Component
9 export struct PlayerTitle { 9 export struct PlayerTitle {
10 private playerController?: WDPlayerController; 10 private playerController?: WDPlayerController;
11 - @Consume title?: string 11 + @Consume newsTitle?: string
12 @Consume isFullScreen: boolean; 12 @Consume isFullScreen: boolean;
13 @State @Watch('watchSpeed') playSpeed: number = 1; 13 @State @Watch('watchSpeed') playSpeed: number = 1;
14 14
@@ -46,7 +46,7 @@ export struct PlayerTitle { @@ -46,7 +46,7 @@ export struct PlayerTitle {
46 router.back(); 46 router.back();
47 } 47 }
48 }) 48 })
49 - Text(this.title) 49 + Text(this.newsTitle)
50 .fontColor(Color.White) 50 .fontColor(Color.White)
51 .fontSize('14fp') 51 .fontSize('14fp')
52 .maxLines(2) 52 .maxLines(2)
@@ -5,12 +5,14 @@ import { WindowModel } from 'wdKit'; @@ -5,12 +5,14 @@ import { WindowModel } from 'wdKit';
5 import { WDPlayerController } from 'wdPlayer'; 5 import { WDPlayerController } from 'wdPlayer';
6 import { devicePLSensorManager } from 'wdDetailPlayApi'; 6 import { devicePLSensorManager } from 'wdDetailPlayApi';
7 import { OperationListView } from './OperationListView'; 7 import { OperationListView } from './OperationListView';
  8 +import { RmhInfoDTO, UserInfoDTO } from 'wdBean/Index';
8 9
9 @Component 10 @Component
10 export struct PlayerTitleComment { 11 export struct PlayerTitleComment {
11 private playerController?: WDPlayerController; 12 private playerController?: WDPlayerController;
12 @Consume newsSourceName?: string 13 @Consume newsSourceName?: string
13 - @Consume title?: string 14 + @Consume newsTitle?: string
  15 + @Consume editorName?: string
14 @Consume newsSummary?: string; 16 @Consume newsSummary?: string;
15 @State @Watch('watchSpeed') playSpeed: number = 1; 17 @State @Watch('watchSpeed') playSpeed: number = 1;
16 @Consume isFullScreen: boolean; 18 @Consume isFullScreen: boolean;
@@ -57,15 +59,15 @@ export struct PlayerTitleComment { @@ -57,15 +59,15 @@ export struct PlayerTitleComment {
57 59
58 Row() { 60 Row() {
59 Column() { 61 Column() {
60 - if (this.newsSourceName) {  
61 - Text("@" + this.newsSourceName) 62 + if (this.newsSourceName || this.editorName) {
  63 + Text("@" + (this.newsSourceName || this.editorName))
62 .fontColor(Color.White) 64 .fontColor(Color.White)
63 .fontSize(15) 65 .fontSize(15)
64 .maxLines(1) 66 .maxLines(1)
65 .textOverflow({ overflow: TextOverflow.Ellipsis }) 67 .textOverflow({ overflow: TextOverflow.Ellipsis })
66 } 68 }
67 - if (this.newsSummary) {  
68 - Text(this.newsSummary) 69 + if (this.newsTitle || this.newsSummary) {
  70 + Text(this.newsTitle || this.newsSummary)
69 .fontColor(Color.White) 71 .fontColor(Color.White)
70 .fontSize(15) 72 .fontSize(15)
71 .maxLines(3) 73 .maxLines(3)
@@ -80,6 +82,7 @@ export struct PlayerTitleComment { @@ -80,6 +82,7 @@ export struct PlayerTitleComment {
80 } 82 }
81 .layoutWeight(1) 83 .layoutWeight(1)
82 .alignItems(HorizontalAlign.Start) 84 .alignItems(HorizontalAlign.Start)
  85 + .margin({ left: 16 })
83 86
84 OperationListView() 87 OperationListView()
85 .width(48) 88 .width(48)
@@ -135,6 +138,8 @@ export struct PlayerTitleComment { @@ -135,6 +138,8 @@ export struct PlayerTitleComment {
135 .fontSize(14) 138 .fontSize(14)
136 .maxLines(1) 139 .maxLines(1)
137 .layoutWeight(1) 140 .layoutWeight(1)
  141 + .backgroundColor('#ccc')
  142 + .borderRadius(2)
138 }.alignItems(VerticalAlign.Center) 143 }.alignItems(VerticalAlign.Center)
139 } 144 }
140 .width('100%') 145 .width('100%')
@@ -2,7 +2,7 @@ import { BusinessError } from '@ohos.base' @@ -2,7 +2,7 @@ import { BusinessError } from '@ohos.base'
2 import { Logger, ToastUtils } from 'wdKit' 2 import { Logger, ToastUtils } from 'wdKit'
3 import { ResponseDTO } from 'wdNetwork' 3 import { ResponseDTO } from 'wdNetwork'
4 import { ContentDetailRequest } from 'wdDetailPlayApi' 4 import { ContentDetailRequest } from 'wdDetailPlayApi'
5 -import { ContentDetailDTO } from 'wdBean' 5 +import { ContentDetailDTO, RmhInfoDTO, UserInfoDTO } from 'wdBean'
6 6
7 const TAG = 'PlayViewModel'; 7 const TAG = 'PlayViewModel';
8 8
@@ -12,8 +12,11 @@ export class PlayViewModel { @@ -12,8 +12,11 @@ export class PlayViewModel {
12 relId: string 12 relId: string
13 relType: string 13 relType: string
14 newsSourceName?: string 14 newsSourceName?: string
15 - title?: string 15 + newsTitle?: string
  16 + editorName?: string
16 newsSummary?: string 17 newsSummary?: string
  18 + rmhInfo?: RmhInfoDTO
  19 + userInfo?: UserInfoDTO
17 url?: string 20 url?: string
18 // 视频朝向, 21 // 视频朝向,
19 // 横屏视频:1(进入竖屏,立即展示半屏播放窗口,当切换横屏时,再展示全部播放窗口;后续可再转换到竖屏): 22 // 横屏视频:1(进入竖屏,立即展示半屏播放窗口,当切换横屏时,再展示全部播放窗口;后续可再转换到竖屏):
@@ -59,14 +62,21 @@ export class PlayViewModel { @@ -59,14 +62,21 @@ export class PlayViewModel {
59 Logger.error(TAG, `getContentDetailData then body is empty`); 62 Logger.error(TAG, `getContentDetailData then body is empty`);
60 return 63 return
61 } 64 }
  65 +
62 let contentDetailDTO: ContentDetailDTO = resDTO.data[0] 66 let contentDetailDTO: ContentDetailDTO = resDTO.data[0]
63 - this.newsSourceName = contentDetailDTO.newsSourceName  
64 - this.title = contentDetailDTO.newsTitle 67 + Logger.info(TAG, JSON.stringify(contentDetailDTO))
  68 + this.newsTitle = contentDetailDTO.newsTitle
  69 + this.editorName = contentDetailDTO.editorName
65 this.newsSummary = contentDetailDTO.newsSummary 70 this.newsSummary = contentDetailDTO.newsSummary
  71 + this.userInfo = contentDetailDTO.userInfo
  72 + this.rmhInfo = contentDetailDTO.rmhInfo
66 if (contentDetailDTO.videoInfo?.length > 0) { 73 if (contentDetailDTO.videoInfo?.length > 0) {
67 this.url = contentDetailDTO.videoInfo[0].videoUrl 74 this.url = contentDetailDTO.videoInfo[0].videoUrl
68 this.videoLandScape = contentDetailDTO.videoInfo[0].videoLandScape 75 this.videoLandScape = contentDetailDTO.videoInfo[0].videoLandScape
69 } 76 }
  77 + if (contentDetailDTO.authorList?.length > 0) {
  78 + this.newsSourceName = contentDetailDTO.authorList[0].authorName
  79 + }
70 this.canStart = true; 80 this.canStart = true;
71 this.message = ''; 81 this.message = '';
72 }).catch((err: BusinessError) => { 82 }).catch((err: BusinessError) => {
1 export { add } from "./src/main/ets/utils/Calc" 1 export { add } from "./src/main/ets/utils/Calc"
  2 +export { SettingPasswordParams } from "./src/main/ets/pages/login/SettingPasswordLayout"
@@ -3,6 +3,10 @@ import { LoginInputComponent } from './LoginInputComponent' @@ -3,6 +3,10 @@ import { LoginInputComponent } from './LoginInputComponent'
3 import { LoginViewModel } from './LoginViewModel' 3 import { LoginViewModel } from './LoginViewModel'
4 import router from '@ohos.router' 4 import router from '@ohos.router'
5 import promptAction from '@ohos.promptAction' 5 import promptAction from '@ohos.promptAction'
  6 +import { Params } from '../../../../../../../commons/wdRouter/oh_modules/wdBean/Index'
  7 +import { WDRouterRule, WDRouterPage } from 'wdRouter';
  8 +import { SettingPasswordParams } from './SettingPasswordLayout'
  9 +
6 10
7 const TAG = 'ForgetPasswordPage' 11 const TAG = 'ForgetPasswordPage'
8 /** 12 /**
@@ -87,7 +91,13 @@ struct ForgetPasswordPage { @@ -87,7 +91,13 @@ struct ForgetPasswordPage {
87 } 91 }
88 92
89 this.loginViewModel.checkVerifyCode(this.phoneContent, this.codeContent).then(() => { 93 this.loginViewModel.checkVerifyCode(this.phoneContent, this.codeContent).then(() => {
90 - //todo 跳转密码设置页面 94 + let params: SettingPasswordParams = {
  95 + pageID:'1',
  96 + phoneContent:this.phoneContent,
  97 + codeContent:this.codeContent,
  98 + }
  99 + WDRouterRule.jumpWithPage(WDRouterPage.settingPasswordPage, params)
  100 +
91 promptAction.showToast({message:"校验成功,准备跳转设置页面"}) 101 promptAction.showToast({message:"校验成功,准备跳转设置页面"})
92 Logger.debug(TAG,"校验成功") 102 Logger.debug(TAG,"校验成功")
93 }).catch((error:string)=>{ 103 }).catch((error:string)=>{
@@ -112,5 +112,30 @@ export class LoginModel { @@ -112,5 +112,30 @@ export class LoginModel {
112 }) 112 })
113 }) 113 })
114 } 114 }
  115 +
  116 + //忘记密码 设置新密码
  117 + resetPassword(password: string, tempToken: string) {
  118 + let bean: Record<string, string> = {};
  119 + bean['password'] = password;
  120 + bean['tempToken'] = tempToken;
  121 +
  122 + let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
  123 + return new Promise<string>((success, fail) => {
  124 + HttpRequest.post<ResponseDTO<string>>(HttpUrlUtils.getForgetPasswordUrl(), bean, headers).then((data: ResponseDTO<string>) => {
  125 + if (!data || !data.data) {
  126 + fail("数据为空")
  127 + return
  128 + }
  129 + if (data.code != 0) {
  130 + fail(data.message)
  131 + return
  132 + }
  133 + success(data.data)
  134 + }, (error: Error) => {
  135 + fail(error.message)
  136 + Logger.debug("LoginViewModel:error ", error.toString())
  137 + })
  138 + })
  139 + }
115 } 140 }
116 141
@@ -92,6 +92,20 @@ export class LoginViewModel { @@ -92,6 +92,20 @@ export class LoginViewModel {
92 }) 92 })
93 } 93 }
94 94
  95 + //重置密码
  96 + resetPassword(password: string, tempToken: string) {
  97 + return new Promise<string>(async (success, fail) => {
  98 + let passwordNew = await this.doMd(password)
  99 + this.loginModel.resetPassword(passwordNew, tempToken).then((data) => {
  100 + success(data)
  101 + }).catch((message: string) => {
  102 + fail(message)
  103 + })
  104 + })
  105 +
  106 + }
  107 +
  108 +
95 109
96 async doMd(content: string): Promise<string> { 110 async doMd(content: string): Promise<string> {
97 let mdAlgName = 'SHA256'; // 摘要算法名 111 let mdAlgName = 'SHA256'; // 摘要算法名
1 import ArrayList from '@ohos.util.ArrayList'; 1 import ArrayList from '@ohos.util.ArrayList';
2 import promptAction from '@ohos.promptAction'; 2 import promptAction from '@ohos.promptAction';
  3 +import { Params } from '../../../../../../../commons/wdRouter/oh_modules/wdBean/Index';
  4 +import router from '@ohos.router';
  5 +import { LoginViewModel } from './LoginViewModel';
  6 +import { Logger, SPHelper } from 'wdKit';
  7 +import {
  8 + SpConstants
  9 +} from '../../../../../../../commons/wdNetwork/oh_modules/wdConstant/src/main/ets/constants/SpConstants'
  10 +import data_preferences from '@ohos.data.preferences';
  11 +const TAG = "SettingPasswordLayout"
  12 +
  13 +export interface SettingPasswordParams {
  14 + pageID: string;
  15 + phoneContent?: string;
  16 + codeContent?: string;
  17 + tempToken?:string;
  18 +}
3 19
4 export default class AccoutPageDataModel { 20 export default class AccoutPageDataModel {
5 // 页面数据 21 // 页面数据
6 compType: number // 0:标题 / 1:密码输入框 / 2:验证码输入框 / 3:desc描述 / 4:按钮 / 5:logo / 6:子标题 7:手机号输入框 7:空白 22 compType: number // 0:标题 / 1:密码输入框 / 2:验证码输入框 / 3:desc描述 / 4:按钮 / 5:logo / 6:子标题 7:手机号输入框 7:空白
7 compLogo: string 23 compLogo: string
8 compTitle: string 24 compTitle: string
9 - // compSubTitle: string 25 + compSubTitle: string = '';
10 compDesc: string 26 compDesc: string
11 compButtonTitle: string 27 compButtonTitle: string
12 inputPlacholder: string 28 inputPlacholder: string
@@ -23,16 +39,28 @@ export default class AccoutPageDataModel { @@ -23,16 +39,28 @@ export default class AccoutPageDataModel {
23 } 39 }
24 } 40 }
25 41
  42 +@Entry
26 @Component 43 @Component
27 export struct SettingPasswordLayout { 44 export struct SettingPasswordLayout {
28 @State listData: Array<AccoutPageDataModel> = new Array(); // 页面配置数据 45 @State listData: Array<AccoutPageDataModel> = new Array(); // 页面配置数据
29 - @State btnStatus: boolean = false 46 + @State btnStatus: boolean = false;
  47 + pageId:number = 0;
  48 + phoneContent:string = '';
  49 + codeContent:string = '';
  50 + tempToken:string = '';
  51 +
30 password01: string = ''; 52 password01: string = '';
31 password02: string = ''; 53 password02: string = '';
32 passwordOri: string = ''; 54 passwordOri: string = '';
  55 + loginViewModel = new LoginViewModel()
33 56
34 aboutToAppear() { 57 aboutToAppear() {
35 - this.getPageListData(4) 58 + let params:SettingPasswordParams = router.getParams() as SettingPasswordParams;
  59 + this.pageId = parseInt(params.pageID);
  60 + this.getPageListData(this.pageId)
  61 +
  62 + this.phoneContent = params.phoneContent!;
  63 + this.codeContent = params.codeContent!;
36 } 64 }
37 65
38 getPageListData(pageId:number) { 66 getPageListData(pageId:number) {
@@ -50,8 +78,8 @@ export struct SettingPasswordLayout { @@ -50,8 +78,8 @@ export struct SettingPasswordLayout {
50 this.listData.push(new AccoutPageDataModel(0, '设置密码', '', '', '', '', 0)) 78 this.listData.push(new AccoutPageDataModel(0, '设置密码', '', '', '', '', 0))
51 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入密码', 10086)) 79 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入密码', 10086))
52 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '再次输入密码', 10087)) 80 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '再次输入密码', 10087))
53 - this.listData.push(new AccoutPageDataModel(4, '', '', '提示:密码长度6-20位,需答谢字母、小写字母、数字、特殊字符中组合三种及三种以上组成', '', '', 0))  
54 - this.listData.push(new AccoutPageDataModel(5, '', '', '', '确认', '', 0)) 81 + this.listData.push(new AccoutPageDataModel(3, '', '', '提示:密码长度6-20位,需答谢字母、小写字母、数字、特殊字符中组合三种及三种以上组成', '', '', 0))
  82 + this.listData.push(new AccoutPageDataModel(4, '', '', '', '确认', '', 0))
55 break; 83 break;
56 84
57 case 2: 85 case 2:
@@ -75,7 +103,7 @@ export struct SettingPasswordLayout { @@ -75,7 +103,7 @@ export struct SettingPasswordLayout {
75 103
76 case 4: 104 case 4:
77 // 有logo的 105 // 有logo的
78 - this.listData.push(new AccoutPageDataModel(5, '', 'https://img-blog.csdnimg.cn/24f43f4d626d428891ebb2adb5c2c2e9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5YyX5aSn5Z-55paH5byg6ICB5biI,size_20,color_FFFFFF,t_70,g_se,x_16', '', '', '' , 0)) 106 + this.listData.push(new AccoutPageDataModel(5, '', '', '', '', '' , 0))
79 this.listData.push(new AccoutPageDataModel(0, '修改密码', '', '', '', '', 0)) 107 this.listData.push(new AccoutPageDataModel(0, '修改密码', '', '', '', '', 0))
80 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入原密码', 10010)) 108 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入原密码', 10010))
81 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入新密码', 10086)) 109 this.listData.push(new AccoutPageDataModel(1, '', '', '', '', '请输入新密码', 10086))
@@ -277,8 +305,21 @@ export struct SettingPasswordLayout { @@ -277,8 +305,21 @@ export struct SettingPasswordLayout {
277 return 305 return
278 } 306 }
279 307
  308 +
280 promptAction.showToast({ message: '请求接口' }) 309 promptAction.showToast({ message: '请求接口' })
281 } 310 }
  311 +
  312 + if(this.pageId == 1){ //设置密码
  313 + if (this.password01.length < 6 || this.password01.length > 20) {
  314 + promptAction.showToast({ message: '密码不符合密码规范' })
  315 + return
  316 + }
  317 + if (this.password01 != this.password02) {
  318 + promptAction.showToast({ message: '密码不一致' })
  319 + return
  320 + }
  321 +
  322 + }
282 } 323 }
283 324
284 // 输入框数据变动:输入数据处理 325 // 输入框数据变动:输入数据处理
@@ -292,11 +333,21 @@ export struct SettingPasswordLayout { @@ -292,11 +333,21 @@ export struct SettingPasswordLayout {
292 } 333 }
293 334
294 if (this.password01) { 335 if (this.password01) {
295 - if (this.password01 == this.password02 && this.password01.length >= 6 && this.password01.length <= 20) { 336 + if ((this.password01.length >= 6 && this.password01.length <= 20) && (this.password02.length >= 6 && this.password02.length <= 20)) {
296 this.btnStatus = true; 337 this.btnStatus = true;
297 } else { 338 } else {
298 this.btnStatus = false; 339 this.btnStatus = false;
299 } 340 }
  341 +
  342 + SPHelper.default.get(SpConstants.USER_JWT_TOKEN, '').then((str) => {
  343 + this.loginViewModel.resetPassword(this.password01, str.toString()).then((data =>{
  344 +
  345 + }))
  346 + }).catch((err: Error) => {
  347 + Logger.error(TAG, 'catch err:' + JSON.stringify(err));
  348 + });
  349 +
300 } 350 }
301 } 351 }
302 } 352 }
  353 +
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 "pages/login/LoginPage", 4 "pages/login/LoginPage",
5 "pages/login/ForgetPasswordPage", 5 "pages/login/ForgetPasswordPage",
6 "pages/login/LoginProtocolWebview", 6 "pages/login/LoginProtocolWebview",
7 - "pages/login/SettingPasswordPage" 7 + "pages/login/SettingPasswordPage",
  8 + "pages/login/SettingPasswordLayout"
8 ] 9 ]
9 } 10 }
  1 +@Entry
  2 +@Component
  3 +struct Test {
  4 + @State message: string = 'Hello World';
  5 +
  6 + build() {
  7 + Row() {
  8 + Column() {
  9 + Text(this.message)
  10 + .fontSize(50)
  11 + .fontWeight(FontWeight.Bold)
  12 + }
  13 + .width('100%')
  14 + }
  15 + .height('100%')
  16 + }
  17 +}
1 import componentUtils from '@ohos.arkui.componentUtils'; 1 import componentUtils from '@ohos.arkui.componentUtils';
2 import { WDPlayerController } from '../controller/WDPlayerController' 2 import { WDPlayerController } from '../controller/WDPlayerController'
3 import { WindowModel } from 'wdKit'; 3 import { WindowModel } from 'wdKit';
  4 +import { Logger } from '../utils/Logger';
4 5
5 class Size { 6 class Size {
6 width: Length = "100%"; 7 width: Length = "100%";
@@ -13,6 +14,7 @@ class Size { @@ -13,6 +14,7 @@ class Size {
13 } 14 }
14 15
15 let insIndex: number = 0; 16 let insIndex: number = 0;
  17 +const TAG = 'WDPlayerRenderView'
16 18
17 class MGPlayRenderViewIns { 19 class MGPlayRenderViewIns {
18 static intCount: number = 0; 20 static intCount: number = 0;
@@ -24,7 +26,7 @@ class MGPlayRenderViewIns { @@ -24,7 +26,7 @@ class MGPlayRenderViewIns {
24 } 26 }
25 27
26 static del() { 28 static del() {
27 - console.log("add-- -1") 29 + console.log("del-- -1")
28 MGPlayRenderViewIns.intCount--; 30 MGPlayRenderViewIns.intCount--;
29 if (MGPlayRenderViewIns.intCount <= 0) { 31 if (MGPlayRenderViewIns.intCount <= 0) {
30 WindowModel.shared.setWindowKeepScreenOn(false); 32 WindowModel.shared.setWindowKeepScreenOn(false);
@@ -35,7 +37,6 @@ class MGPlayRenderViewIns { @@ -35,7 +37,6 @@ class MGPlayRenderViewIns {
35 /** 37 /**
36 * 播放窗口组件 38 * 播放窗口组件
37 */ 39 */
38 -@Entry  
39 @Component 40 @Component
40 export struct WDPlayerRenderView { 41 export struct WDPlayerRenderView {
41 private playerController?: WDPlayerController; 42 private playerController?: WDPlayerController;
@@ -49,14 +50,15 @@ export struct WDPlayerRenderView { @@ -49,14 +50,15 @@ export struct WDPlayerRenderView {
49 aboutToAppear() { 50 aboutToAppear() {
50 MGPlayRenderViewIns.add(); 51 MGPlayRenderViewIns.add();
51 52
  53 + console.log('playerController', this.playerController)
52 insIndex++; 54 insIndex++;
53 -  
54 if (!this.playerController) { 55 if (!this.playerController) {
55 return 56 return
56 } 57 }
57 58
58 this.playerController.onVideoSizeChange = (width: number, height: number) => { 59 this.playerController.onVideoSizeChange = (width: number, height: number) => {
59 // console.log(`WDPlayerRenderView onVideoSizeChange width:${width} videoTop:${height}`) 60 // console.log(`WDPlayerRenderView onVideoSizeChange width:${width} videoTop:${height}`)
  61 + Logger.info(TAG, ` onVideoSizeChange width:${width} videoTop:${height}`)
60 this.videoWidth = width; 62 this.videoWidth = width;
61 this.videoHeight = height; 63 this.videoHeight = height;
62 this.updateLayout() 64 this.updateLayout()
@@ -64,6 +66,7 @@ export struct WDPlayerRenderView { @@ -64,6 +66,7 @@ export struct WDPlayerRenderView {
64 } 66 }
65 67
66 aboutToDisappear() { 68 aboutToDisappear() {
  69 + Logger.info(TAG, `aboutToDisappear`)
67 MGPlayRenderViewIns.del(); 70 MGPlayRenderViewIns.del();
68 } 71 }
69 72
@@ -76,6 +79,7 @@ export struct WDPlayerRenderView { @@ -76,6 +79,7 @@ export struct WDPlayerRenderView {
76 controller: this.xComponentController 79 controller: this.xComponentController
77 }) 80 })
78 .onLoad(async (event) => { 81 .onLoad(async (event) => {
  82 + Logger.info(TAG, 'onLoad')
79 this.xComponentController.setXComponentSurfaceSize({ 83 this.xComponentController.setXComponentSurfaceSize({
80 surfaceWidth: 1920, 84 surfaceWidth: 1920,
81 surfaceHeight: 1080 85 surfaceHeight: 1080
1 { 1 {
2 "src": [ 2 "src": [
3 - "pages/WDPlayerRenderView" 3 + "pages/Test"
4 ] 4 ]
5 } 5 }
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "articleCreation": 0,
  5 + "attentionNum": 22,
  6 + "authIcon": "",
  7 + "authId": 0,
  8 + "authPersonal": "",
  9 + "authTitle": "",
  10 + "avatarFrame": "",
  11 + "browseNum": 22,
  12 + "categoryAuth": "",
  13 + "city": "",
  14 + "cnContentPublish": 0,
  15 + "cnLivePublish": 0,
  16 + "cnShareControl": 0,
  17 + "collectNum": 4,
  18 + "commentNum": 0,
  19 + "contentPublish": 0,
  20 + "creatorId": "",
  21 + "district": "",
  22 + "dynamicControl": 0,
  23 + "dynamicCreation": 0,
  24 + "fansNum": 0,
  25 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn//img/user/2024031215/48d5bd53227d436b9faa937b3ac14600.png",
  26 + "honoraryIcon": "",
  27 + "honoraryTitle": "",
  28 + "introduction": "",
  29 + "isComment": 0,
  30 + "isLike": 0,
  31 + "livePublish": 0,
  32 + "liveSwitch": 1,
  33 + "mainControl": 1,
  34 + "originUserId": "",
  35 + "pictureCollectionCreation": 0,
  36 + "posterShareControl": 1,
  37 + "province": "",
  38 + "region": "安徽省",
  39 + "registTime": 1710227567000,
  40 + "reserveNum": 6,
  41 + "shareControl": 0,
  42 + "shareUrl": "",
  43 + "speakControl": 0,
  44 + "subjectType": 0,
  45 + "userId": "567387477063621",
  46 + "userName": "人民日报网友aPrtq5",
  47 + "userType": "1",
  48 + "videoCollectionCreation": 0,
  49 + "videoCreation": 0
  50 + },
  51 + "message": "Success",
  52 + "meta": null,
  53 + "requestId": "",
  54 + "success": true,
  55 + "timestamp": 1711357314033
  56 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "createTime": "2024-03-12 15:12:47",
  5 + "id": 132386,
  6 + "levelHead": "http://rmrb-video-content-sit.oss-cn-beijing.aliyuncs.com/sjbj-20240125/image/display/88c45bf56ac941b883c69bd8ed373164.png",
  7 + "levelId": 2,
  8 + "levelName": "初入武林",
  9 + "levelNum": 155,
  10 + "modifyTime": "2024-03-25 16:35:57",
  11 + "status": 1,
  12 + "userId": 567387477063621
  13 + },
  14 + "message": "Success",
  15 + "success": true,
  16 + "timestamp": 1711357314136
  17 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "articleCreation": 0,
  5 + "attentionNum": 1,
  6 + "authIcon": "",
  7 + "authId": 0,
  8 + "authPersonal": "",
  9 + "authTitle": "",
  10 + "avatarFrame": "",
  11 + "banControl": 0,
  12 + "browseNum": 76,
  13 + "categoryAuth": "",
  14 + "city": "",
  15 + "cnContentPublish": 0,
  16 + "cnIsComment": 0,
  17 + "cnIsLike": 0,
  18 + "cnLiveCommentControl": 0,
  19 + "cnLiveGiftControl": 0,
  20 + "cnLiveLikeControl": 0,
  21 + "cnLivePublish": 0,
  22 + "cnLiveShareControl": 0,
  23 + "cnShareControl": 0,
  24 + "contentPublish": 0,
  25 + "creatorId": "",
  26 + "district": "",
  27 + "dynamicControl": 0,
  28 + "dynamicCreation": 0,
  29 + "fansNum": 0,
  30 + "headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/null20240127/1630371072/1706336907262.jpg",
  31 + "honoraryIcon": "",
  32 + "honoraryTitle": "",
  33 + "introduction": "",
  34 + "isAttention": 0,
  35 + "isComment": 0,
  36 + "isLike": 0,
  37 + "liveCommentControl": 0,
  38 + "liveGiftControl": 0,
  39 + "liveLikeControl": 0,
  40 + "livePublish": 0,
  41 + "liveShareControl": 0,
  42 + "liveSwitch": 0,
  43 + "mainControl": 1,
  44 + "originUserId": "",
  45 + "pictureCollectionCreation": 0,
  46 + "posterShareControl": 1,
  47 + "province": "",
  48 + "region": "安徽省",
  49 + "registTime": 1703485580000,
  50 + "shareControl": 0,
  51 + "shareUrl": "",
  52 + "subjectType": 0,
  53 + "userId": "512157124138245",
  54 + "userName": "树下🍑 1122334",
  55 + "userType": "1",
  56 + "videoCollectionCreation": 0,
  57 + "videoCreation": 0
  58 + },
  59 + "message": "Success",
  60 + "meta": null,
  61 + "requestId": "",
  62 + "success": true,
  63 + "timestamp": 1711440875633
  64 +}
  1 +{
  2 + "code": "0",
  3 + "data": [
  4 + {
  5 + "level": 2,
  6 + "levelHead": "http://rmrb-video-content-sit.oss-cn-beijing.aliyuncs.com/sjbj-20240125/image/display/88c45bf56ac941b883c69bd8ed373164.png",
  7 + "userId": 512157124138245
  8 + }
  9 + ],
  10 + "message": "Success",
  11 + "success": true,
  12 + "timestamp": 1711440876088
  13 +}
  1 +{
  2 + "code": "0",
  3 + "data": {
  4 + "createTime": "2023-12-15 17:19:47",
  5 + "headPhotoStatus": 1,
  6 + "id": 490264487281413,
  7 + "modifyNumber": 0,
  8 + "phone": "153****3615",
  9 + "status": 1,
  10 + "tenancy": 3,
  11 + "userExtend": {
  12 + "airec": 1,
  13 + "birthday": "1991-08-13",
  14 + "deviceId": "20065BDF-0E7C-4891-9F4A-85DA50A61F00",
  15 + "headBucketName": "",
  16 + "headPhotoUrl": "https://uatjdcdnphoto.aikan.pdnews.cn//zhbj/img/user/2024032614/900B80F379D94269AFF29AE815D25422.jpg",
  17 + "introduction": "唱、跳、rap",
  18 + "lastLoginTime": "2024-03-26 11:05:03",
  19 + "city": "安徽省 合肥市",
  20 + "sex": 1
  21 + },
  22 + "userName": "芒果",
  23 + "userNameStatus": 1,
  24 + "userType": 1
  25 + },
  26 + "message": "Success",
  27 + "success": true,
  28 + "timestamp": 1711434743663
  29 +}