zhenghy
Showing 74 changed files with 3280 additions and 373 deletions

Too many changes to show.

To preserve performance only 74 of 74+ files are displayed.

  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 +}
@@ -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,15 @@ const TAG = 'MinePageComponent'; @@ -17,15 +17,15 @@ 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 userName:string = "登陆注册"
21 @State personalData:MinePagePersonalFunctionsItem[] = [] 22 @State personalData:MinePagePersonalFunctionsItem[] = []
22 @State creatorData:MinePageCreatorFunctionsItem[] = [] 23 @State creatorData:MinePageCreatorFunctionsItem[] = []
23 @State moreData:MinePageMoreFunctionModel[] = [] 24 @State moreData:MinePageMoreFunctionModel[] = []
24 scroller: Scroller = new Scroller() 25 scroller: Scroller = new Scroller()
25 26
26 aboutToAppear(){ 27 aboutToAppear(){
27 - //登录信息 TODO  
28 - 28 + this.getUserLogin()
29 this.getFunctionData() 29 this.getFunctionData()
30 } 30 }
31 31
@@ -59,7 +59,7 @@ export struct MinePageComponent { @@ -59,7 +59,7 @@ export struct MinePageComponent {
59 @Builder MinePageUI(){ 59 @Builder MinePageUI(){
60 Column(){ 60 Column(){
61 //头像层 61 //头像层
62 - MinePageUserSimpleInfoUI({isLogin:this.isLogin}) 62 + MinePageUserSimpleInfoUI({isLogin:this.isLogin,userName:this.userName})
63 //Grid 区域 63 //Grid 区域
64 MinePagePersonFunctionUI({personalData:$personalData}) 64 MinePagePersonFunctionUI({personalData:$personalData})
65 //Card 65 //Card
@@ -77,4 +77,15 @@ export struct MinePageComponent { @@ -77,4 +77,15 @@ export struct MinePageComponent {
77 .height('100%') 77 .height('100%')
78 } 78 }
79 79
  80 + getUserLogin() {
  81 + // let userid = await SPHelper.default.get(SpConstants.USER_ID,"")
  82 + // if(StringUtils.isNotEmpty(userid)){
  83 + // this.isLogin = true
  84 + // let userName = await SPHelper.default.get(SpConstants.USER_NAME,"") as string
  85 + // this.userName = userName
  86 + // }else{
  87 + // this.isLogin = false
  88 + // }
  89 + }
  90 +
80 } 91 }
@@ -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')
@@ -3,6 +3,7 @@ import RouteManager from '../../../utils/RouteManager' @@ -3,6 +3,7 @@ import RouteManager from '../../../utils/RouteManager'
3 @Component 3 @Component
4 export default struct MinePageUserSimpleInfoUI { 4 export default struct MinePageUserSimpleInfoUI {
5 @Prop isLogin:boolean 5 @Prop isLogin:boolean
  6 + @Prop userName:string
6 7
7 build(){ 8 build(){
8 Row(){ 9 Row(){
@@ -12,7 +13,7 @@ export default struct MinePageUserSimpleInfoUI { @@ -12,7 +13,7 @@ export default struct MinePageUserSimpleInfoUI {
12 .backgroundColor($r('app.color.main_red')) 13 .backgroundColor($r('app.color.main_red'))
13 .width('110lpx') 14 .width('110lpx')
14 .height('110lpx') 15 .height('110lpx')
15 - Image($r('app.media.mine_head_icon')) 16 + Image($r('app.media.default_head'))
16 .width('108lpx') 17 .width('108lpx')
17 .height('108lpx') 18 .height('108lpx')
18 .objectFit(ImageFit.Cover) 19 .objectFit(ImageFit.Cover)
@@ -21,14 +22,18 @@ export default struct MinePageUserSimpleInfoUI { @@ -21,14 +22,18 @@ export default struct MinePageUserSimpleInfoUI {
21 .height('110lpx') 22 .height('110lpx')
22 .alignContent(Alignment.Center) 23 .alignContent(Alignment.Center)
23 .onClick(()=>{ 24 .onClick(()=>{
24 - RouteManager.jumpNewPage("pages/TestPage") 25 + if(!this.isLogin){
  26 + // RouteManager.jumpNewPage("pages/SettingAboutPage")
  27 + }else {
  28 + RouteManager.jumpNewPage("pages/MyHomePage")
  29 + }
25 }) 30 })
26 31
27 if(this.isLogin){ 32 if(this.isLogin){
28 //昵称信息 33 //昵称信息
29 Column(){ 34 Column(){
30 Row(){ 35 Row(){
31 - Text("人民日报6G5E3T") 36 + Text(this.userName)
32 .fontColor($r('app.color.color_222222')) 37 .fontColor($r('app.color.color_222222'))
33 .maxLines(1) 38 .maxLines(1)
34 .textOverflow({ overflow: TextOverflow.Ellipsis }) 39 .textOverflow({ overflow: TextOverflow.Ellipsis })
  1 +import router from '@ohos.router';
  2 +import { HomePageBottomComponent } from './home/HomePageBottomComponent';
  3 +
  4 +@Component
  5 +export struct MyHomeComponent {
  6 + @State tileOpacity: number = 0;
  7 + firstPositionY:number = 0;
  8 + @State isHasIntroduction: boolean = true
  9 + @State desc:string = "点击添加简介,让大家认识你" //text 搞两个样式,如果三行,就显示 另外一个text 没有显示高度的
  10 + fontColor: string = '#999999'
  11 + selectedFontColor: string = '#000000'
  12 + @State currentIndex: number = 0
  13 + private controller: TabsController = new TabsController()
  14 + isChangeToUserEdit = false;
  15 +
  16 +
  17 + build() {
  18 + Stack({ alignContent: Alignment.Top }){
  19 + Image($r('app.media.title_bg'))
  20 + .width('100%')
  21 + .height('355lpx')
  22 + .objectFit(ImageFit.Cover)
  23 +
  24 + Column(){
  25 + Stack({ alignContent: Alignment.Top }){
  26 + this.MineHomeTitleTransparent()
  27 + this.MineHomeTitleWhite()
  28 + }
  29 +
  30 + Scroll() {
  31 + Column() {
  32 + //用户信息区域
  33 + Row() {
  34 + Image($r('app.media.default_head'))
  35 + .width('115lpx')
  36 + .height('115lpx')
  37 + .objectFit(ImageFit.Cover)
  38 + .borderRadius(50)
  39 +
  40 + Column() {
  41 + Row() {
  42 + Text("人民日报6G")
  43 + .fontColor($r('app.color.white'))
  44 + .maxLines(1)
  45 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  46 + .fontSize('38lpx')
  47 + .lineHeight('50lpx')
  48 + .fontWeight('500lpx')
  49 +
  50 + Text("等级8")
  51 + .textAlign(TextAlign.Center)
  52 + .fontColor($r('app.color.color_ED2800'))
  53 + .backgroundColor($r('app.color.white'))
  54 + .fontSize('19lpx')
  55 + .width('96lpx')
  56 + .height('35lpx')
  57 + .margin({ left: '10lpx' })
  58 + Blank()
  59 + }.width('507lpx')
  60 +
  61 + Row() {
  62 + Row() {
  63 + Text("3.6万")
  64 + .textStyle()
  65 + Text("阅读")
  66 + .textStyle2()
  67 + }
  68 + .margin({ right: '15lpx' })
  69 +
  70 + Divider()
  71 + .height('19lpx')
  72 + .width('2lpx')
  73 + .color($r('app.color.white'))
  74 + .vertical(true)
  75 + .opacity(0.4)
  76 + Row() {
  77 + Text("6242")
  78 + .textStyle()
  79 + Text("评论")
  80 + .textStyle2()
  81 + }.margin({ right: '15lpx', left: '15lpx' })
  82 +
  83 + Divider()
  84 + .height('19lpx')
  85 + .width('2lpx')
  86 + .color($r('app.color.white'))
  87 + .vertical(true)
  88 + .opacity(0.4)
  89 + Row() {
  90 + Text("86")
  91 + .textStyle()
  92 + Text("关注")
  93 + .textStyle2()
  94 + }.margin({ left: '15lpx' })
  95 + }.margin({ top: '23lpx' })
  96 + }.alignItems(HorizontalAlign.Start)
  97 + .margin({ left: '32lpx' })
  98 + }
  99 + .onAreaChange((oldValue: Area, newValue: Area) => {
  100 + if (this.firstPositionY === 0) {
  101 + this.firstPositionY = newValue.globalPosition.y as number
  102 + }else{
  103 + let persent = (this.firstPositionY - Number(newValue.globalPosition.y)) / (this.firstPositionY * 0.3)
  104 + if(persent > 1){
  105 + persent = 1
  106 + }
  107 + this.tileOpacity = persent
  108 + }
  109 + })
  110 + .backgroundColor($r('app.color.color_transparent'))
  111 + .height('184lpx')
  112 + .width('100%')
  113 + .padding({ left: '35lpx' })
  114 + //用户简介区域
  115 + Column() {
  116 + Row() {
  117 + Text(this.desc)
  118 + .fontSize('27lpx')
  119 + .maxLines(3)
  120 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  121 + .lineHeight('40lpx')
  122 + .fontWeight('400lpx')
  123 + .fontColor(this.isHasIntroduction?$r('app.color.color_222222'):$r('app.color.color_999999'))
  124 + .textAlign(TextAlign.Start)
  125 +
  126 + if(!this.isHasIntroduction){
  127 + Image($r('app.media.user_info_edit_icon'))
  128 + .width('27lpx')
  129 + .height('27lpx')
  130 + .objectFit(ImageFit.Auto)
  131 + }
  132 + }
  133 + Text("来到人民日报365天")
  134 + .fontSize('23lpx')
  135 + .lineHeight('25lpx')
  136 + .fontWeight('400lpx')
  137 + .fontColor($r('app.color.color_999999'))
  138 + .textAlign(TextAlign.Start)
  139 + .margin({ top: '15lpx' })
  140 +
  141 + }.padding({ left: '31lpx',right:'31lpx',top:'19lpx',bottom:'31lpx'})
  142 + .alignItems(HorizontalAlign.Start)
  143 + .justifyContent(FlexAlign.Center)
  144 + .width('100%')
  145 + .backgroundColor($r('app.color.white'))
  146 + //间隔符
  147 +
  148 + Divider().width('100%').height('12lpx').color($r('app.color.color_F5F5F5')).strokeWidth('12lpx')
  149 +
  150 + //tab 页面
  151 + Tabs({controller: this.controller}) {
  152 + TabContent() {
  153 + HomePageBottomComponent({style:0})
  154 + }.tabBar(this.TabBuilder(0,"评论"))
  155 + TabContent() {
  156 + HomePageBottomComponent({style:1})
  157 + }.tabBar(this.TabBuilder(1,"关注"))
  158 + }
  159 + .backgroundColor($r('app.color.white'))
  160 + .animationDuration(0)
  161 + .onChange((index: number) => {
  162 + this.currentIndex = index
  163 + })
  164 + .vertical(false)
  165 + .height("100%")
  166 + }.width("100%")
  167 + }
  168 + .edgeEffect(EdgeEffect.None)
  169 + .scrollBar(BarState.Off)
  170 + .width('100%')
  171 + .height('100%')
  172 + }
  173 + }.width('100%')
  174 + .height('100%')
  175 +
  176 + }
  177 + @Builder MineHomeTitleTransparent() {
  178 + RelativeContainer() {
  179 + //标题栏目
  180 + Image($r('app.media.icon_arrow_left_white') )
  181 + .width('46lpx')
  182 + .height('46lpx')
  183 + .objectFit(ImageFit.Auto)
  184 + .id("back_icon")
  185 + .alignRules({
  186 + center: { anchor: "__container__", align: VerticalAlign.Center },
  187 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  188 + })
  189 + .margin({ left: '31lpx' })
  190 + .onClick(() => {
  191 + router.back()
  192 + })
  193 +
  194 + Text("编辑资料")
  195 + .height('42lpx')
  196 + .maxLines(1)
  197 + .id("rightText")
  198 + .fontSize('35lpx')
  199 + .fontWeight('400lpx')
  200 + .fontColor($r('app.color.white') )
  201 + .lineHeight('42lpx')
  202 + .alignRules({
  203 + center: { anchor: "__container__", align: VerticalAlign.Center },
  204 + right: { anchor: "__container__", align: HorizontalAlign.End }
  205 + })
  206 + .margin({ right: '31lpx' })
  207 + .onClick(()=>{
  208 + this.editUserInfo()
  209 + })
  210 + }
  211 + .visibility(this.tileOpacity > 0 ? 1 : 0)
  212 + .height('84lpx')
  213 + .width('100%')
  214 + .backgroundColor($r('app.color.color_transparent'))
  215 + }
  216 +
  217 +
  218 + @Builder MineHomeTitleWhite() {
  219 + RelativeContainer() {
  220 + //标题栏目
  221 + Image($r('app.media.back_icon'))
  222 + .width('46lpx')
  223 + .height('46lpx')
  224 + .objectFit(ImageFit.Auto)
  225 + .id("back_icon")
  226 + .alignRules({
  227 + center: { anchor: "__container__", align: VerticalAlign.Center },
  228 + left: { anchor: "__container__", align: HorizontalAlign.Start }
  229 + })
  230 + .margin({ left: '31lpx' })
  231 + .onClick(() => {
  232 + router.back()
  233 + })
  234 + Image($r('app.media.default_head'))
  235 + .width('60lpx')
  236 + .height('60lpx')
  237 + .objectFit(ImageFit.Auto)
  238 + .id("head_icon")
  239 + .alignRules({
  240 + center: { anchor: "__container__", align: VerticalAlign.Center },
  241 + left: { anchor: "back_icon", align: HorizontalAlign.End }
  242 + })
  243 + .margin({ left: '31lpx' })
  244 + .onClick(() => {
  245 + router.back()
  246 + })
  247 +
  248 + Text("我的昵称")
  249 + .height('42lpx')
  250 + .maxLines(1)
  251 + .id("title")
  252 + .fontSize('35lpx')
  253 + .fontWeight('400lpx')
  254 + .fontColor($r('app.color.color_222222'))
  255 + .lineHeight('42lpx')
  256 + .alignRules({
  257 + center: { anchor: "__container__", align: VerticalAlign.Center },
  258 + left: { anchor: "head_icon", align: HorizontalAlign.End }
  259 + })
  260 + .margin({ left: '12lpx' })
  261 +
  262 + Text("编辑资料")
  263 + .height('42lpx')
  264 + .maxLines(1)
  265 + .id("rightText")
  266 + .fontSize('35lpx')
  267 + .fontWeight('400lpx')
  268 + .fontColor($r('app.color.color_222222'))
  269 + .lineHeight('42lpx')
  270 + .alignRules({
  271 + center: { anchor: "__container__", align: VerticalAlign.Center },
  272 + right: { anchor: "__container__", align: HorizontalAlign.End }
  273 + })
  274 + .margin({ right: '31lpx' })
  275 + .onClick(()=>{
  276 + this.editUserInfo()
  277 + })
  278 + }
  279 + .visibility(this.tileOpacity > 0 ? 0 : 1)
  280 + .height('84lpx')
  281 + .width('100%')
  282 + .backgroundColor($r('app.color.white'))
  283 + .opacity(this.tileOpacity )
  284 +
  285 + }
  286 +
  287 + @Builder TabBuilder(index: number, title: string) {
  288 + Stack(){
  289 + Text(title)
  290 + .height('38lpx')
  291 + .fontSize('33lpx')
  292 + .fontWeight(this.currentIndex === index ? 600 : 400)
  293 + .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
  294 + .lineHeight('38lpx')
  295 +
  296 + if(this.currentIndex === index){
  297 + Divider()
  298 + .width('31lpx')
  299 + .height('4lpx')
  300 + .color('#ED2800')
  301 + .strokeWidth('4lpx')
  302 + .margin({top:'50lpx'})
  303 + .id("divTag")
  304 + }
  305 + }.onClick(()=>{
  306 + this.currentIndex = index
  307 + this.controller.changeIndex(this.currentIndex)
  308 + })
  309 + .height('100%')
  310 + .width('100%')
  311 + .margin({right:'9lpx'})
  312 + }
  313 +
  314 + /**
  315 + * 跳转编辑资料(防止二次点击)
  316 + */
  317 + editUserInfo(){
  318 + if(!this.isChangeToUserEdit){
  319 + this.isChangeToUserEdit = true;
  320 + let c = setInterval(() => {
  321 + this.isChangeToUserEdit = false
  322 + }, 1000);
  323 + //route 跳转写这里 TODO
  324 + }
  325 + }
  326 +
  327 +}
  328 +
  329 +@Extend(Text) function textStyle() {
  330 + .fontColor($r('app.color.white'))
  331 + .textStyleDefault()
  332 + .margin({ right: '10lpx' })
  333 +}
  334 +
  335 +@Extend(Text) function textStyle2() {
  336 + .textStyleDefault()
  337 + .fontColor($r('app.color.color_B2FFFFFF'))
  338 +}
  339 +
  340 +@Extend(Text) function textStyleDefault() {
  341 + .textAlign(TextAlign.Start)
  342 + .fontSize('23lpx')
  343 + .fontWeight('400lpx')
  344 + .lineHeight('31lpx')
  345 +}
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{
@@ -13,17 +13,18 @@ export struct FollowFirstTabsComponent{ @@ -13,17 +13,18 @@ export struct FollowFirstTabsComponent{
13 selectedFontColor: string = '#000000' 13 selectedFontColor: string = '#000000'
14 14
15 aboutToAppear(){ 15 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[]> 16 // 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 => { 17 // res.data.forEach(element => {
19 // this.data.push(element) 18 // this.data.push(element)
20 // }); 19 // });
21 -  
22 - ResourcesUtils.getResourcesJson<ResponseDTO<FollowListItem[]>>('follow_list_data.json', getContext(this)).then((success)=>{  
23 - success.data?.forEach(element => { 20 + MinePageDatasModel.getFollowListData(getContext(this)).then((value)=>{
  21 + this.data.push(new FollowListItem("我的"))
  22 + value.forEach((element)=>{
24 this.data.push(element) 23 this.data.push(element)
25 - }); 24 + })
26 console.log("ycg",this.data.length.toString()); 25 console.log("ycg",this.data.length.toString());
  26 + }).catch((err:Error)=>{
  27 + console.log(TAG,JSON.stringify(err))
27 }) 28 })
28 } 29 }
29 30
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 { CommentListItem } from '../../../../viewmodel/CommentListItem';
  4 +import { FollowListDetailItem } from '../../../../viewmodel/FollowListDetailItem';
  5 +import { FollowListDetailRequestItem } from '../../../../viewmodel/FollowListDetailRequestItem';
  6 +import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI';
  7 +
  8 +const TAG = "HomePageBottomComponent"
  9 +@Component
  10 +export struct HomePageBottomComponent{
  11 + @State style:number = 0; //0 评论 ,1 关注
  12 + @State data_follow: LazyDataSource<FollowListDetailItem> = new LazyDataSource();
  13 + @State data_comment: LazyDataSource<CommentListItem> = new LazyDataSource();
  14 + @State isLoading:boolean = false
  15 + @State hasMore:boolean = true
  16 + curPageNum:number = 1;
  17 + @State count:number = 0;
  18 +
  19 + aboutToAppear(){
  20 + this.getNewPageData()
  21 + }
  22 +
  23 + build(){
  24 + Column(){
  25 + Divider().width('100%')
  26 + .height('2lpx')
  27 + .strokeWidth('1lpx')
  28 + .backgroundColor($r('app.color.color_EDEDED'))
  29 +
  30 + if(this.count === 0){
  31 + ListHasNoMoreDataUI({style:2})
  32 + .height('100%')
  33 + }else{
  34 + if(this.style === 1){
  35 + List({ space: 3 }) {
  36 +
  37 + ListItem() {
  38 + Row(){
  39 + Text("关注更多人民号")
  40 + .fontWeight('400lpx')
  41 + .fontColor($r('app.color.color_222222'))
  42 + .lineHeight('38lpx')
  43 + .fontSize('27lpx')
  44 + .textAlign(TextAlign.Center)
  45 + .margin({right:'4lpx'})
  46 + Image($r('app.media.arrow_icon_right'))
  47 + .objectFit(ImageFit.Auto)
  48 + .width('27lpx')
  49 + .height('27lpx')
  50 + }.height('69lpx')
  51 + .width('659lpx')
  52 + .alignItems(VerticalAlign.Center)
  53 + .justifyContent(FlexAlign.Center)
  54 + .backgroundColor($r('app.color.color_F5F5F5'))
  55 + .margin({top:'31lpx',bottom:'4lpx'})
  56 + }
  57 +
  58 + LazyForEach(this.data_follow, (item: FollowListDetailItem, index: number = 0) => {
  59 + ListItem() {
  60 + ChildFollowComponent({data: item})
  61 + }
  62 + .onClick(() => {
  63 + })
  64 + }, (item: FollowListDetailItem, index: number) => index.toString())
  65 +
  66 + //没有更多数据 显示提示
  67 + if(!this.hasMore){
  68 + ListItem(){
  69 + ListHasNoMoreDataUI()
  70 + }
  71 + }
  72 + }.cachedCount(15)
  73 + .padding({left:'31lpx',right:'31lpx'})
  74 + .layoutWeight(1)
  75 + .scrollBar(BarState.Off)
  76 + .edgeEffect(EdgeEffect.None)
  77 + // .nestedScroll({
  78 + // scrollForward: NestedScrollMode.PARENT_FIRST,
  79 + // scrollBackward: NestedScrollMode.SELF_FIRST
  80 + // })
  81 + .onReachEnd(()=>{
  82 + console.log(TAG,"触底了");
  83 + if(!this.isLoading){
  84 + this.isLoading = true
  85 + //加载分页数据
  86 + this.getNewPageData()
  87 + }
  88 + })
  89 + }else if(this.style === 0){
  90 + List({ space: 3 }) {
  91 + LazyForEach(this.data_comment, (item: CommentListItem, index: number = 0) => {
  92 + ListItem() {
  93 + ChildCommentComponent({data: item})
  94 + }
  95 + .onClick(() => {
  96 + })
  97 + }, (item: CommentListItem, index: number) => index.toString())
  98 +
  99 + //没有更多数据 显示提示
  100 + if(!this.hasMore){
  101 + ListItem(){
  102 + ListHasNoMoreDataUI()
  103 + }
  104 + }
  105 + }.cachedCount(15)
  106 + .layoutWeight(1)
  107 + .scrollBar(BarState.Off)
  108 + .edgeEffect(EdgeEffect.None)
  109 + // .nestedScroll({
  110 + // scrollForward: NestedScrollMode.PARENT_FIRST,
  111 + // scrollBackward: NestedScrollMode.SELF_FIRST
  112 + // })
  113 + .onReachEnd(()=>{
  114 + console.log(TAG,"触底了");
  115 + if(!this.isLoading){
  116 + this.isLoading = true
  117 + //加载分页数据
  118 + this.getNewPageData()
  119 + }
  120 + })
  121 + }
  122 + }
  123 + }
  124 + .width('100%')
  125 + }
  126 +
  127 +
  128 + @Styles
  129 + listStyle() {
  130 + .backgroundColor(Color.White)
  131 + .height(72)
  132 + .width("100%")
  133 + .borderRadius(12)
  134 + }
  135 +
  136 + getNewPageData(){
  137 + this.isLoading = true
  138 + //我的关注列表
  139 + if (this.style === 1){
  140 + if(this.hasMore){
  141 + let object = new FollowListDetailRequestItem(20,this.curPageNum)
  142 +
  143 + MinePageDatasModel.getMineFollowListData(object,getContext(this)).then((value)=>{
  144 + if (!this.data_follow || value.list.length == 0){
  145 + this.hasMore = false
  146 + }else{
  147 + value.list.forEach((value)=>{
  148 + this.data_follow.push(new FollowListDetailItem(value.attentionHeadPhotoUrl,value.attentionUserName,value.fansNum,value.introduction,value.attentionCreatorId,"1"))
  149 + })
  150 + this.data_follow.notifyDataReload()
  151 + this.count = this.data_follow.totalCount()
  152 + if (this.data_follow.totalCount() < value.totalCount) {
  153 + this.curPageNum++
  154 + }else {
  155 + this.hasMore = false
  156 + }
  157 + }
  158 + this.isLoading = false
  159 + }).catch((err:Error)=>{
  160 + console.log(TAG,"请求失败")
  161 + this.isLoading = false
  162 + })
  163 + }
  164 + }else if(this.style === 0){
  165 + if(this.hasMore){
  166 + let object = new FollowListDetailRequestItem(20,this.curPageNum)
  167 +
  168 + MinePageDatasModel.getMineCommentListData(object,getContext(this)).then((value)=>{
  169 + if (!this.data_comment || value.list.length == 0){
  170 + this.hasMore = false
  171 + }else{
  172 + value.list.forEach((value)=>{
  173 + this.data_comment.push(new CommentListItem(value.fromUserHeader,value.fromUserName,value.targetTitle,value.createTime,value.commentContent))
  174 + })
  175 + this.data_comment.notifyDataReload()
  176 + this.count = this.data_comment.totalCount()
  177 + if (this.data_comment.totalCount() < value.totalCount) {
  178 + this.curPageNum++
  179 + }else {
  180 + this.hasMore = false
  181 + }
  182 + }
  183 + this.isLoading = false
  184 + }).catch((err:Error)=>{
  185 + console.log(TAG,"请求失败")
  186 + this.isLoading = false
  187 + })
  188 + }
  189 + }
  190 + }
  191 +}
  192 +
  193 +@Component
  194 +struct ChildFollowComponent {
  195 + @ObjectLink data: FollowListDetailItem
  196 +
  197 + build() {
  198 + Column(){
  199 + Blank().height('27lpx')
  200 +
  201 + Row() {
  202 + Image(StringUtils.isEmpty(this.data.headPhotoUrl)?$r('app.media.default_head'):this.data.headPhotoUrl)
  203 + .objectFit(ImageFit.Auto)
  204 + .width('92lpx')
  205 + .height('92lpx')
  206 + .margin({right:'15lpx'})
  207 +
  208 + Column(){
  209 + Text(this.data.cnUserName)
  210 + .fontWeight('400lpx')
  211 + .fontSize('31lpx')
  212 + .lineHeight('38lpx')
  213 + .fontColor($r('app.color.color_222222'))
  214 + Text(`粉丝${this.data.cnFansNum}`)
  215 + .fontColor($r('app.color.color_B0B0B0'))
  216 + .fontSize('23lpx')
  217 + .maxLines(1)
  218 + Text(`${this.data.introduction}`)
  219 + .fontColor($r('app.color.color_B0B0B0'))
  220 + .fontSize('23lpx')
  221 + .maxLines(2)
  222 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  223 + }.layoutWeight(1)
  224 + .alignItems(HorizontalAlign.Start)
  225 +
  226 + if(this.data.status == "1"){
  227 + Row(){
  228 + Text(`已关注`)
  229 + .fontColor($r('app.color.color_CCCCCC'))
  230 + .fontSize('23lpx')
  231 + .fontWeight('500lpx')
  232 + .lineHeight('35lpx')
  233 + }.backgroundColor($r('app.color.color_F5F5F5'))
  234 + .borderRadius('6lpx')
  235 + .borderColor($r('app.color.color_F5F5F5'))
  236 + .borderWidth('2lpx')
  237 + .justifyContent(FlexAlign.Center)
  238 + .width('100lpx')
  239 + .height('46lpx')
  240 + .margin({left:'4lpx',top:'23lpx'})
  241 + .onClick(()=>{
  242 + this.data.status = "0"
  243 + })
  244 + }else{
  245 + Row(){
  246 + Image($r('app.media.follow_icon'))
  247 + .margin({right:'4lpx'})
  248 + .width('23lpx')
  249 + .height('23lpx')
  250 + Text(`关注`)
  251 + .fontColor($r('app.color.color_ED2800'))
  252 + .fontSize('23lpx')
  253 + .fontWeight('500lpx')
  254 + .lineHeight('35lpx')
  255 + }.borderColor($r('app.color.color_1AED2800'))
  256 + .borderRadius('6lpx')
  257 + .borderWidth('2lpx')
  258 + .justifyContent(FlexAlign.Center)
  259 + .width('100lpx')
  260 + .height('46lpx')
  261 + .margin({left:'4lpx',top:'23lpx'})
  262 + .onClick(()=>{
  263 + this.data.status = "1"
  264 + })
  265 + }
  266 + }.alignItems(VerticalAlign.Top)
  267 + .width('100%')
  268 + .layoutWeight(1)
  269 +
  270 + Divider().width('100%')
  271 + .height('2lpx')
  272 + .strokeWidth('1lpx')
  273 + .backgroundColor($r('app.color.color_EDEDED'))
  274 +
  275 + }.height('146lpx')
  276 + .justifyContent(FlexAlign.Center)
  277 + }
  278 +}
  279 +
  280 +@Component
  281 +struct ChildCommentComponent {
  282 + @ObjectLink data: CommentListItem
  283 +
  284 + build() {
  285 + Column(){
  286 + Row() {
  287 + Image(StringUtils.isEmpty(this.data.fromUserHeader)?$r('app.media.default_head'):this.data.fromUserHeader)
  288 + .objectFit(ImageFit.Auto)
  289 + .width('69lpx')
  290 + .height('69lpx')
  291 + .margin({right:'15lpx'})
  292 +
  293 + Column(){
  294 + Text(this.data.fromUserName)
  295 + .fontSize('25lpx')
  296 + .lineHeight('35lpx')
  297 + .fontWeight('600lpx')
  298 + .fontColor($r('app.color.color_222222'))
  299 + .margin({bottom:'6lpx'})
  300 + .maxLines(1)
  301 + Text(`${this.data.createTime}`)
  302 + .fontColor($r('app.color.color_B0B0B0'))
  303 + .fontSize('23lpx')
  304 + .lineHeight('31lpx')
  305 + .fontWeight('400lpx')
  306 + .maxLines(1)
  307 + }.layoutWeight(1)
  308 + .alignItems(HorizontalAlign.Start)
  309 + }
  310 + .margin({bottom:'10lpx'})
  311 + .width('100%')
  312 + .height('108lpx')
  313 + .padding({left:'31lpx',right:'31lpx'})
  314 +
  315 + Row(){
  316 + Text(this.data.commentContent)
  317 + .maxLines(3)
  318 + .textOverflow({ overflow: TextOverflow.Ellipsis })
  319 + .fontWeight('400lpx')
  320 + .fontSize('31lpx')
  321 + .lineHeight('46lpx')
  322 + .fontColor($r('app.color.color_222222'))
  323 + .margin({bottom:'10lpx'})
  324 + }.padding({left:'31lpx',right:'31lpx'})
  325 + .width('100%')
  326 +
  327 + Row(){
  328 + Text(this.data.targetTitle)
  329 + .fontWeight('400lpx')
  330 + .fontColor($r('app.color.color_222222'))
  331 + .lineHeight('38lpx')
  332 + .fontSize('27lpx')
  333 + .textAlign(TextAlign.Center)
  334 + .margin({right:'4lpx'})
  335 + .maxLines(3)
  336 + .width('616lpx')
  337 + Image($r('app.media.arrow_icon_right'))
  338 + .objectFit(ImageFit.Auto)
  339 + .width('27lpx')
  340 + .height('27lpx')
  341 + }
  342 + .padding({top:'17lpx',bottom:'17lpx',left:'23lpx',right:'23lpx'})
  343 + .width('662lpx')
  344 + .backgroundColor($r('app.color.color_F5F5F5'))
  345 + .margin({top:'19lpx',bottom:'31lpx'})
  346 +
  347 + Divider().width('100%')
  348 + .height('12lpx')
  349 + .strokeWidth('12lpx')
  350 + .backgroundColor($r('app.color.color_F5F5F5'))
  351 +
  352 + }
  353 + .justifyContent(FlexAlign.Center)
  354 + }
  355 +}
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,13 @@ import HashMap from '@ohos.util.HashMap'; @@ -7,6 +7,13 @@ 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';
10 const TAG = "MinePageDatasModel" 17 const TAG = "MinePageDatasModel"
11 18
12 /** 19 /**
@@ -137,6 +144,210 @@ class MinePageDatasModel{ @@ -137,6 +144,210 @@ class MinePageDatasModel{
137 return compRes.data 144 return compRes.data
138 } 145 }
139 146
  147 + /**
  148 + * 关注频道详情
  149 + * @param pageSize
  150 + * @param pageNum
  151 + * @param context
  152 + * @returns
  153 + */
  154 + getFollowListDetailData(params:FollowListDetailRequestItem,context: Context): Promise<MineFollowListDetailItem> {
  155 + return new Promise<MineFollowListDetailItem>((success, error) => {
  156 + Logger.info(TAG, `getAppointmentList start`);
  157 + this.fetchFollowListDetailData(params).then((navResDTO: ResponseDTO<MineFollowListDetailItem>) => {
  158 + if (!navResDTO || navResDTO.code != 0) {
  159 + success(this.getFollowListDetailDataLocal(context))
  160 + return
  161 + }
  162 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  163 + let navigationBean = navResDTO.data as MineFollowListDetailItem
  164 + success(navigationBean);
  165 + }).catch((err: Error) => {
  166 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  167 + success(this.getFollowListDetailDataLocal(context))
  168 + })
  169 + })
  170 + }
  171 +
  172 + async getFollowListDetailDataLocal(context: Context): Promise<MineFollowListDetailItem> {
  173 + Logger.info(TAG, `getBottomNavDataMock start`);
  174 + let compRes: ResponseDTO<MineFollowListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListDetailItem>>('follow_list_detail_data_id120.json',context );
  175 + if (!compRes || !compRes.data) {
  176 + Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
  177 + return new MineFollowListDetailItem()
  178 + }
  179 + Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  180 + return compRes.data
  181 + }
  182 +
  183 + fetchFollowListDetailData(object:FollowListDetailRequestItem) {
  184 + let url = HttpUrlUtils.getFollowListDetailDataUrl()
  185 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  186 + return WDHttp.post<ResponseDTO<MineFollowListDetailItem>>(url, object,headers)
  187 + };
  188 +
  189 + /**
  190 + * 关注频道列表
  191 + * @returns
  192 + */
  193 + fetchFollowListData() {
  194 + let url = HttpUrlUtils.getFollowListDataUrl()
  195 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  196 + return WDHttp.get<ResponseDTO<FollowListItem[]>>(url, headers)
  197 + };
  198 +
  199 + getFollowListData(context: Context): Promise<FollowListItem[]> {
  200 + return new Promise<FollowListItem[]>((success, error) => {
  201 + Logger.info(TAG, `getAppointmentList start`);
  202 + this.fetchFollowListData().then((navResDTO: ResponseDTO<FollowListItem[]>) => {
  203 + if (!navResDTO || navResDTO.code != 0) {
  204 + success(this.getFollowListDataLocal(context))
  205 + return
  206 + }
  207 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  208 + let navigationBean = navResDTO.data as FollowListItem[]
  209 + success(navigationBean);
  210 + }).catch((err: Error) => {
  211 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  212 + success(this.getFollowListDataLocal(context))
  213 + })
  214 + })
  215 + }
  216 +
  217 + async getFollowListDataLocal(context: Context): Promise<FollowListItem[]> {
  218 + Logger.info(TAG, `getFollowListDataLocal start`);
  219 + let compRes: ResponseDTO<FollowListItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<FollowListItem[]>>('follow_list_data.json' ,context);
  220 + if (!compRes || !compRes.data) {
  221 + Logger.info(TAG, `getFollowListDataLocal compRes is empty`);
  222 + return []
  223 + }
  224 + Logger.info(TAG, `getFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  225 + return compRes.data
  226 + }
  227 +
  228 + /**
  229 + * 我的关注列表
  230 + * @param params
  231 + * @param context
  232 + * @returns
  233 + */
  234 + getMineFollowListData(params:FollowListDetailRequestItem,context: Context): Promise<MineFollowListItem> {
  235 + return new Promise<MineFollowListItem>((success, error) => {
  236 + Logger.info(TAG, `getAppointmentList start`);
  237 + this.fetchMineDetailFollowListData(params).then((navResDTO: ResponseDTO<MineFollowListItem>) => {
  238 + if (!navResDTO || navResDTO.code != 0) {
  239 + success(this.getMineFollowListDataLocal(context))
  240 + return
  241 + }
  242 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  243 + let navigationBean = navResDTO.data as MineFollowListItem
  244 + success(navigationBean);
  245 + }).catch((err: Error) => {
  246 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  247 + success(this.getMineFollowListDataLocal(context))
  248 + })
  249 + })
  250 + }
  251 +
  252 + fetchMineDetailFollowListData(object:FollowListDetailRequestItem) {
  253 + let url = HttpUrlUtils.getMineFollowListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}`
  254 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  255 + return WDHttp.get<ResponseDTO<MineFollowListItem>>(url, headers)
  256 + };
  257 +
  258 + async getMineFollowListDataLocal(context: Context): Promise<MineFollowListItem> {
  259 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  260 + let compRes: ResponseDTO<MineFollowListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListItem>>('mine_follow_list_data.json' ,context);
  261 + if (!compRes || !compRes.data) {
  262 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  263 + return new MineFollowListItem()
  264 + }
  265 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  266 + return compRes.data
  267 + }
  268 +
  269 + /**
  270 + * 查询是否被关注 列表
  271 + * @param params
  272 + * @param context
  273 + * @returns
  274 + */
  275 + getFollowListStatusData(params:FollowListStatusRequestItem,context: Context): Promise<QueryListIsFollowedItem[]> {
  276 + return new Promise<QueryListIsFollowedItem[]>((success, error) => {
  277 + Logger.info(TAG, `getAppointmentList start`);
  278 + this.fetchFollowListStatusData(params).then((navResDTO: ResponseDTO<QueryListIsFollowedItem[]>) => {
  279 + if (!navResDTO || navResDTO.code != 0) {
  280 + success(this.getFollowListStatusDataLocal(context))
  281 + return
  282 + }
  283 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  284 + let navigationBean = navResDTO.data as QueryListIsFollowedItem[]
  285 + success(navigationBean);
  286 + }).catch((err: Error) => {
  287 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  288 + success(this.getFollowListStatusDataLocal(context))
  289 + })
  290 + })
  291 + }
  292 +
  293 + fetchFollowListStatusData(object:FollowListStatusRequestItem) {
  294 + let url = HttpUrlUtils.getFollowListStatusDataUrl()
  295 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  296 + return WDHttp.post<ResponseDTO<QueryListIsFollowedItem[]>>(url,object, headers)
  297 + };
  298 +
  299 + async getFollowListStatusDataLocal(context: Context): Promise<QueryListIsFollowedItem[]> {
  300 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  301 + let compRes: ResponseDTO<QueryListIsFollowedItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<QueryListIsFollowedItem[]>>('follow_list_id120_isfocus_data.json',context );
  302 + if (!compRes || !compRes.data) {
  303 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  304 + return []
  305 + }
  306 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  307 + return compRes.data
  308 + }
  309 +
  310 +
  311 + /**
  312 + * 我的评论列表
  313 + * @param params
  314 + * @param context
  315 + * @returns
  316 + */
  317 + getMineCommentListData(params:FollowListDetailRequestItem,context: Context): Promise<MineCommentListDetailItem> {
  318 + return new Promise<MineCommentListDetailItem>((success, error) => {
  319 + Logger.info(TAG, `getAppointmentList start`);
  320 + this.fetchMineCommentListData(params).then((navResDTO: ResponseDTO<MineCommentListDetailItem>) => {
  321 + if (!navResDTO || navResDTO.code != 0) {
  322 + success(this.getMineCommentListDataLocal(context))
  323 + return
  324 + }
  325 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  326 + let navigationBean = navResDTO.data as MineCommentListDetailItem
  327 + success(navigationBean);
  328 + }).catch((err: Error) => {
  329 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
  330 + success(this.getMineCommentListDataLocal(context))
  331 + })
  332 + })
  333 + }
  334 +
  335 + fetchMineCommentListData(object:FollowListDetailRequestItem) {
  336 + let url = HttpUrlUtils.getMineCommentListDataUrl()+`?pageSize=${object.pageSize}&pageNum=${object.pageNum}`
  337 + let headers: HashMap<string, string> = HttpUrlUtils.getYcgCommonHeaders();
  338 + return WDHttp.get<ResponseDTO<MineCommentListDetailItem>>(url, headers)
  339 + };
  340 +
  341 + async getMineCommentListDataLocal(context: Context): Promise<MineCommentListDetailItem> {
  342 + Logger.info(TAG, `getMineFollowListDataLocal start`);
  343 + let compRes: ResponseDTO<MineCommentListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineCommentListDetailItem>>('mine_comment_list_data.json',context);
  344 + if (!compRes || !compRes.data) {
  345 + Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
  346 + return new MineCommentListDetailItem()
  347 + }
  348 + Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  349 + return compRes.data
  350 + }
140 351
141 } 352 }
142 353
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,32 @@ export class HttpUrlUtils { @@ -44,6 +44,32 @@ 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 +
47 private static hostUrl: string = HttpUrlUtils.HOST_UAT; 73 private static hostUrl: string = HttpUrlUtils.HOST_UAT;
48 74
49 static getCommonHeaders(): HashMap<string, string> { 75 static getCommonHeaders(): HashMap<string, string> {
@@ -167,6 +193,31 @@ export class HttpUrlUtils { @@ -167,6 +193,31 @@ export class HttpUrlUtils {
167 return url; 193 return url;
168 } 194 }
169 195
  196 + static getFollowListDetailDataUrl() {
  197 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_DETAIL_DATA_PATH
  198 + return url
  199 + }
  200 +
  201 + static getFollowListDataUrl() {
  202 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_DATA_PATH
  203 + return url
  204 + }
  205 +
  206 + static getMineFollowListDataUrl() {
  207 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_FOLLOW_LIST_DATA_PATH
  208 + return url
  209 + }
  210 +
  211 + static getFollowListStatusDataUrl() {
  212 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.FOLLOW_LIST_STATUS_DATA_PATH
  213 + return url
  214 + }
  215 +
  216 + static getMineCommentListDataUrl() {
  217 + let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.MINE_COMMENT_LIST_DATA_PATH
  218 + return url
  219 + }
  220 +
170 static addSpecialHeaders(headers: HashMap<string, string>) { 221 static addSpecialHeaders(headers: HashMap<string, string>) {
171 switch (this.hostUrl) { 222 switch (this.hostUrl) {
172 case this.HOST_UAT: 223 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 +// "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 }
@@ -270,6 +270,21 @@ export class HttpUrlUtils { @@ -270,6 +270,21 @@ export class HttpUrlUtils {
270 return url; 270 return url;
271 } 271 }
272 272
  273 + static getForgetPasswordUrl() {
  274 + let url = HttpUrlUtils.hostUrl + "/api/rmrb-user-center/auth/zh/c/forgotPassword";
  275 + return url;
  276 + }
  277 +
  278 + static queryUserDetail() {
  279 + let url = HttpUrlUtils.hostUrl + "/api/rmrb-user-center/user/zh/c/queryUserDetail";
  280 + return url;
  281 + }
  282 +
  283 + static editUserDetail() {
  284 + let url = HttpUrlUtils.hostUrl + "/user/zh/c/editUserDetail";
  285 + return url;
  286 + }
  287 +
273 static getAppLoginUrl() :string{ 288 static getAppLoginUrl() :string{
274 let url = HttpUrlUtils.getHost() + "/api/rmrb-user-center/auth/zh/c/appLogin"; 289 let url = HttpUrlUtils.getHost() + "/api/rmrb-user-center/auth/zh/c/appLogin";
275 return url; 290 return url;
@@ -54,6 +54,8 @@ export function registerRouter() { @@ -54,6 +54,8 @@ export function registerRouter() {
54 // } 54 // }
55 if (action.params?.detailPageType == 7 || action.params?.detailPageType == 8) { 55 if (action.params?.detailPageType == 7 || action.params?.detailPageType == 8) {
56 return WDRouterPage.detailPlayShortVideoPage 56 return WDRouterPage.detailPlayShortVideoPage
  57 + } else if (action.params?.detailPageType == 9 ) {
  58 + return WDRouterPage.multiPictureDetailPage
57 } 59 }
58 return WDRouterPage.detailPlayVodPage 60 return WDRouterPage.detailPlayVodPage
59 }) 61 })
@@ -32,6 +32,8 @@ export class WDRouterPage { @@ -32,6 +32,8 @@ export class WDRouterPage {
32 static detailPlayVodPage = new WDRouterPage("wdDetailPlayVod", "ets/pages/DetailPlayVodPage"); 32 static detailPlayVodPage = new WDRouterPage("wdDetailPlayVod", "ets/pages/DetailPlayVodPage");
33 // 直播详情页 33 // 直播详情页
34 static detailPlayLivePage = new WDRouterPage("wdDetailPlayLive", "ets/pages/DetailPlayLivePage"); 34 static detailPlayLivePage = new WDRouterPage("wdDetailPlayLive", "ets/pages/DetailPlayLivePage");
  35 + // 多图(图集)详情页
  36 + static multiPictureDetailPage = new WDRouterPage("phone", "ets/pages/detail/MultiPictureDetailPage");
35 37
36 static loginPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginPage"); 38 static loginPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginPage");
37 39
@@ -46,7 +48,10 @@ export class WDRouterPage { @@ -46,7 +48,10 @@ export class WDRouterPage {
46 static editUserNikeNamePage = new WDRouterPage("wdComponent", "ets/components/page/EditUserNikeNamePage"); 48 static editUserNikeNamePage = new WDRouterPage("wdComponent", "ets/components/page/EditUserNikeNamePage");
47 //修改简介 49 //修改简介
48 static editUserIntroductionPage = new WDRouterPage("wdComponent", "ets/components/page/EditUserIntroductionPage"); 50 static editUserIntroductionPage = new WDRouterPage("wdComponent", "ets/components/page/EditUserIntroductionPage");
49 - 51 + //浏览历史
  52 + static browsingHistoryPage = new WDRouterPage("wdComponent", "ets/components/page/BrowsingHistoryPage");
  53 + //我的收藏
  54 + static myCollectionListPagePage = new WDRouterPage("wdComponent", "ets/components/page/MyCollectionListPage");
50 static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview"); 55 static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview");
51 //我的主页 56 //我的主页
52 static mineHomePage = new WDRouterPage("wdComponent", "ets/pages/MineHomePage"); 57 static mineHomePage = new WDRouterPage("wdComponent", "ets/pages/MineHomePage");
@@ -56,8 +61,8 @@ export class WDRouterPage { @@ -56,8 +61,8 @@ export class WDRouterPage {
56 static aboutPage = new WDRouterPage("wdComponent", "ets/components/page/SettingAboutPage"); 61 static aboutPage = new WDRouterPage("wdComponent", "ets/components/page/SettingAboutPage");
57 // 设置页 62 // 设置页
58 static settingPage = new WDRouterPage("wdComponent", "ets/components/page/SettingPage"); 63 static settingPage = new WDRouterPage("wdComponent", "ets/components/page/SettingPage");
59 - // 账户与安全页  
60 - // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview");  
61 // 设置密码页、设置手机号页等等 (需要传参) 64 // 设置密码页、设置手机号页等等 (需要传参)
  65 + static settingPasswordPage = new WDRouterPage("wdLogin", "ets/pages/login/SettingPasswordPage");
  66 +
62 // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview"); 67 // static loginProtocolPage = new WDRouterPage("wdLogin", "ets/pages/login/LoginProtocolWebview");
63 } 68 }
@@ -16,5 +16,6 @@ export interface Params { @@ -16,5 +16,6 @@ export interface Params {
16 // 6.挂件详情页 16 // 6.挂件详情页
17 // 7.沉浸式竖屏详情页 17 // 7.沉浸式竖屏详情页
18 // 8.专辑竖屏详情页 18 // 8.专辑竖屏详情页
  19 + // 9.多图(图集)详情页
19 detailPageType?:number; // 详情页类型 20 detailPageType?:number; // 详情页类型
20 } 21 }
@@ -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 }
1 -import { CompDTO } from 'wdBean'; 1 +import { CompDTO, ContentDTO } from 'wdBean';
2 import { CommonConstants, CompStyle } from 'wdConstant'; 2 import { CommonConstants, CompStyle } from 'wdConstant';
3 import { BannerComponent } from './view/BannerComponent'; 3 import { BannerComponent } from './view/BannerComponent';
4 import { LabelComponent } from './view/LabelComponent'; 4 import { LabelComponent } from './view/LabelComponent';
@@ -16,14 +16,78 @@ import { @@ -16,14 +16,78 @@ import {
16 import { 16 import {
17 HorizontalStrokeCardThreeTwoRadioForOneComponent 17 HorizontalStrokeCardThreeTwoRadioForOneComponent
18 } from './view/HorizontalStrokeCardThreeTwoRadioForOneComponent'; 18 } from './view/HorizontalStrokeCardThreeTwoRadioForOneComponent';
  19 +import {
  20 + HorizontalStrokeCardThreeTwoRadioForTwoComponent
  21 +} from './view/HorizontalStrokeCardThreeTwoRadioForTwoComponent';
19 import { AlbumCardComponent } from './view/AlbumCardComponent'; 22 import { AlbumCardComponent } from './view/AlbumCardComponent';
20 23
21 /** 24 /**
22 * comp适配器. 25 * comp适配器.
23 */ 26 */
  27 +@Preview
24 @Component 28 @Component
25 export struct CompParser { 29 export struct CompParser {
26 - compDTO: CompDTO = {} as CompDTO; 30 + @State compDTO: CompDTO = {
  31 + compStyle: '17',
  32 + imageScale: 3,
  33 + operDataList: [
  34 + {
  35 + title: 'title0',
  36 + description: "description0",
  37 + coverUrl: 'https://uatjdcdnphoto.aikan.pdnews' +
  38 + '.cn/sjbj-20231208/image/display/d4496925a1264a749975ae9b01a4ef46.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg',
  39 + fullColumnImgUrls: [{
  40 + url: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20240104/image/display/c4a9b526e0994d1bbd3ac8450f5cfc6c.jpg?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  41 + },{
  42 + url:'https://uatjdcdnphoto.aikan.pdnews' +
  43 + '.cn/sjbj-20231208/image/display/d4496925a1264a749975ae9b01a4ef46.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg',
  44 + },{
  45 + url: 'https://uatjdcdnphoto.aikan.pdnews' +
  46 + '.cn/sjbj-20231208/image/display/d4496925a1264a749975ae9b01a4ef46.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg',
  47 + }]
  48 + } as ContentDTO,
  49 + {
  50 + title: 'title1 title1 title1 title1 title1 title1 title1 title1 title1',
  51 + description: "description1",
  52 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20240104/image/display/c4a9b526e0994d1bbd3ac8450f5cfc6c.jpg?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  53 + } as ContentDTO,
  54 + {
  55 + title: 'title2',
  56 + description: "description2",
  57 + coverUrl: "https://cdnjdphoto.aikan.pdnews.cn/sjbj-20231206/image/live/bbe6d821e92b48919d90c7dadfd1f05a.jpg?x-oss-process=image/resize,l_850/auto-orient,1/quality,q_95/format,jpg",
  58 + } as ContentDTO,
  59 + {
  60 + title: 'title3',
  61 + description: "description3",
  62 + coverUrl: 'https://cdnjdphoto.aikan.pdnews.cn/sjbj-20231109/image/live/102e6eb9356b4ef19405b04c1f6ff875.png?x-oss-process=image/resize,l_850/auto-orient,1/quality,q_95/format,jpg'
  63 + } as ContentDTO,
  64 + {
  65 + title: 'title4',
  66 + description: "description4",
  67 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20231218/image/display/62bdbbb35dbd45689e00790c81f04c4b.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  68 + } as ContentDTO,
  69 + {
  70 + title: 'title5',
  71 + description: "description5",
  72 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20231218/image/display/f79bbaa5a33b4bd88176071c4f797ff6.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  73 + } as ContentDTO,
  74 + {
  75 + title: 'title6',
  76 + description: "description6",
  77 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20231218/image/display/2c1d917009584ce2bb4a35cbb3a860a0.png?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  78 + } as ContentDTO,
  79 + {
  80 + title: 'title7',
  81 + description: "description7",
  82 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20231222/image/display/117dc516ca5c42d5843c0d32050c9fc6.jpeg?x-oss-process=image/resize,w_240/quality,q_90/format,jpg",
  83 + } as ContentDTO,
  84 + {
  85 + title: 'title8',
  86 + description: "description8",
  87 + coverUrl: "https://uatjdcdnphoto.aikan.pdnews.cn/sjbj-20231228/image/display/90a2db4077d44a1f887f068fc659d977.jpeg?x-oss-process=image/resize,w_550/quality,q_90/format,jpg",
  88 + } as ContentDTO
  89 + ]
  90 + } as CompDTO
27 compIndex: number = 0; 91 compIndex: number = 0;
28 92
29 build() { 93 build() {
@@ -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,12 +36,15 @@ export struct ENewspaperPageComponent { @@ -34,12 +36,15 @@ 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) {
40 - this.calendarDate = `${date.fullYear}-${date.month > 9 ? date.month + 1 : '0' + (date.month + 1)}-${date.date > 9 ? date.date : '0' + date.date}` 43 + let month: number = date.month + 1
  44 + this.calendarDate = `${date.fullYear}-${month > 9 ? month : '0' + month}-${date.date > 9 ? date.date : '0' + date.date}`
41 this.getNewspaperTime() 45 this.getNewspaperTime()
42 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)
43 } 48 }
44 } 49 }
45 }), 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 }
@@ -45,7 +45,11 @@ export default struct MinePagePersonFunctionUI { @@ -45,7 +45,11 @@ export default struct MinePagePersonFunctionUI {
45 break; 45 break;
46 } 46 }
47 case "收藏":{ 47 case "收藏":{
48 - WDRouterRule.jumpWithPage(WDRouterPage.editUserInfoPage) 48 + WDRouterRule.jumpWithPage(WDRouterPage.myCollectionListPagePage)
  49 + break;
  50 + }
  51 + case "历史":{
  52 + WDRouterRule.jumpWithPage(WDRouterPage.browsingHistoryPage)
49 break; 53 break;
50 } 54 }
51 } 55 }
1 -import { ResourcesUtils } from 'wdKit'  
2 -import { ResponseDTO } from 'wdNetwork'  
3 -import { MyCollectionModel } from '../../model/MyCollectionModel'  
4 import { CustomTitleUI } from '../reusable/CustomTitleUI' 1 import { CustomTitleUI } from '../reusable/CustomTitleUI'
  2 +import MyCollectionViewModel from '../../viewmodel/MyCollectionViewModel';
  3 +import PageModel from '../../viewmodel/PageModel';
  4 +import { CommonConstants, ViewType } from 'wdConstant'
  5 +import { EmptyComponent } from '../view/EmptyComponent'
  6 +import { ErrorComponent } from '../view/ErrorComponent'
  7 +import RefreshLayout from './RefreshLayout'
  8 +import { RefreshLayoutBean } from './RefreshLayoutBean';
  9 +import { CompDTO } from 'wdBean'
  10 +import LoadMoreLayout from './LoadMoreLayout'
  11 +import NoMoreLayout from './NoMoreLayout'
  12 +import { CompParser } from '../CompParser'
  13 +import CustomRefreshLoadLayout from './CustomRefreshLoadLayout';
  14 +import { listTouchEvent } from '../../utils/PullDownRefresh';
5 15
6 @Entry 16 @Entry
7 @Component 17 @Component
8 struct BrowsingHistoryPage { 18 struct BrowsingHistoryPage {
9 - private browsingHistoryList:MyCollectionModel[] = [] 19 + @State private browSingModel: PageModel = new PageModel()
10 20
11 aboutToAppear(){ 21 aboutToAppear(){
12 - ResourcesUtils.getResourcesJson<ResponseDTO<MyCollectionModel[]>>(getContext(this),'browsingHistory_list_data.json').then((success)=>{  
13 - success.data?.forEach(element => {  
14 - this.browsingHistoryList.push(element)  
15 - });  
16 - console.log("ycg",this.browsingHistoryList.length.toString());  
17 - }) 22 + // this.getData()
18 } 23 }
19 24
20 build() { 25 build() {
21 Column(){ 26 Column(){
22 CustomTitleUI({titleName:'浏览历史'}) 27 CustomTitleUI({titleName:'浏览历史'})
23 - List({}){  
24 - ForEach(  
25 - this.browsingHistoryList,  
26 - (item: MyCollectionModel) =>{  
27 - ListItem(){  
28 - this.HistoryItem(item) 28 + if (this.browSingModel.viewType == ViewType.LOADING){
  29 + this.LoadingLayout()
  30 + }else if(this.browSingModel.viewType == ViewType.ERROR){
  31 + ErrorComponent()
  32 + }else if(this.browSingModel.viewType == ViewType.EMPTY){
  33 + EmptyComponent()
  34 + }else {
  35 + this.ListLayout()
29 } 36 }
30 } 37 }
31 - ) 38 + .width(CommonConstants.FULL_WIDTH)
  39 + .height(CommonConstants.FULL_HEIGHT)
  40 + .onTouch((event: TouchEvent | undefined) => {
  41 + if (event) {
  42 + if (this.browSingModel.viewType === ViewType.LOADED) {
  43 + listTouchEvent(this.browSingModel, event);
32 } 44 }
33 } 45 }
34 - .height('100%') 46 + })
35 } 47 }
36 48
37 - @Builder  
38 - HistoryItem(item: MyCollectionModel){  
39 - Column(){  
40 - Row(){  
41 - Column(){  
42 - Text('就像是一场不断升级的权亡。')  
43 - .maxLines(3)  
44 - Text('2024-03-14')  
45 - .margin({top:10,bottom:0}) 49 + @Builder ListLayout() {
  50 + List() {
  51 + // 下拉刷新
  52 + ListItem() {
  53 + RefreshLayout({
  54 + refreshBean: new RefreshLayoutBean(this.browSingModel.isVisiblePullDown, this.browSingModel.pullDownRefreshImage,
  55 + this.browSingModel.pullDownRefreshText, this.browSingModel.pullDownRefreshHeight)
  56 + })
46 } 57 }
47 - .width('60%')  
48 - .alignItems(HorizontalAlign.Start)  
49 58
50 - Blank() 59 + LazyForEach(this.browSingModel.compList, (compDTO: CompDTO, compIndex: number) => {
  60 + ListItem() {
  61 + Column() {
  62 + CompParser({ compDTO: compDTO, compIndex: compIndex });
  63 + }
  64 + }
  65 + })
51 66
52 - Image('')  
53 - .backgroundColor(Color.Orange)  
54 - .width('30%')  
55 - .height(80)  
56 - .margin({top:10})  
57 - }  
58 - Blank()  
59 - Divider()  
60 - .width('90%')  
61 - }  
62 - .width('100%')  
63 - .height(100) 67 + // 加载更多
  68 + ListItem() {
  69 + if (this.browSingModel.hasMore) {
  70 + LoadMoreLayout({
  71 + refreshBean: new RefreshLayoutBean(this.browSingModel.isVisiblePullUpLoad, this.browSingModel.pullUpLoadImage,
  72 + this.browSingModel.pullUpLoadText, this.browSingModel.pullUpLoadHeight)
  73 + })
  74 + } else {
  75 + NoMoreLayout()
  76 + }
  77 + }
  78 + }
  79 + .height(CommonConstants.FULL_PARENT)
  80 + }
  81 +
  82 + @Builder LoadingLayout() {
  83 + CustomRefreshLoadLayout({ refreshBean: new RefreshLayoutBean(true,
  84 + $r('app.media.ic_pull_up_load'), $r('app.string.pull_up_load_text'), this.browSingModel.pullDownRefreshHeight) })
  85 + }
  86 +
  87 + async getData() {
  88 + this.browSingModel.currentPage = 1
  89 + MyCollectionViewModel.newFetchMyCollectList(2,'1',this.browSingModel.currentPage,getContext(this)).then(pageDto => {
  90 + if (pageDto && pageDto.compList && pageDto.compList.length > 0) {
  91 + this.browSingModel.viewType = ViewType.LOADED;
  92 + this.browSingModel.compList.push(...pageDto.compList)
  93 + if (pageDto.compList.length === this.browSingModel.pageSize) {
  94 + this.browSingModel.currentPage++;
  95 + this.browSingModel.hasMore = true;
  96 + } else {
  97 + this.browSingModel.hasMore = false;
  98 + }
  99 + } else {
  100 + this.browSingModel.viewType = ViewType.EMPTY;
  101 + }
  102 + })
64 } 103 }
65 } 104 }
  1 +import { CustomTitleUI } from '../reusable/CustomTitleUI'
  2 +import MyCollectionViewModel from '../../viewmodel/MyCollectionViewModel';
  3 +import PageModel from '../../viewmodel/PageModel';
  4 +import { CommonConstants, ViewType } from 'wdConstant'
  5 +import { EmptyComponent } from '../view/EmptyComponent'
  6 +import { ErrorComponent } from '../view/ErrorComponent'
  7 +import RefreshLayout from './RefreshLayout'
  8 +import { RefreshLayoutBean } from './RefreshLayoutBean';
  9 +import { CompDTO } from 'wdBean'
  10 +import LoadMoreLayout from './LoadMoreLayout'
  11 +import NoMoreLayout from './NoMoreLayout'
  12 +import { CompParser } from '../CompParser'
  13 +import CustomRefreshLoadLayout from './CustomRefreshLoadLayout';
  14 +
  15 +@Entry
  16 +@Component
  17 +struct MyCollectionListPage {
  18 + @State private browSingModel: PageModel = new PageModel()
  19 + isloading : boolean = false
  20 +
  21 + aboutToAppear(){
  22 + // this.getData()
  23 + }
  24 +
  25 + build() {
  26 + Column(){
  27 + CustomTitleUI({titleName:'我的收藏'})
  28 + if (this.browSingModel.viewType == ViewType.LOADING){
  29 + this.LoadingLayout()
  30 + }else if(this.browSingModel.viewType == ViewType.ERROR){
  31 + ErrorComponent()
  32 + }else if(this.browSingModel.viewType == ViewType.EMPTY){
  33 + EmptyComponent()
  34 + }else {
  35 + this.ListLayout()
  36 + }
  37 + }
  38 + .width(CommonConstants.FULL_WIDTH)
  39 + .height(CommonConstants.FULL_HEIGHT)
  40 + }
  41 +
  42 + @Builder ListLayout() {
  43 + List() {
  44 + // 下拉刷新
  45 + ListItem() {
  46 + RefreshLayout({
  47 + refreshBean: new RefreshLayoutBean(this.browSingModel.isVisiblePullDown, this.browSingModel.pullDownRefreshImage,
  48 + this.browSingModel.pullDownRefreshText, this.browSingModel.pullDownRefreshHeight)
  49 + })
  50 + }
  51 +
  52 + LazyForEach(this.browSingModel.compList, (compDTO: CompDTO, compIndex: number) => {
  53 + ListItem() {
  54 + Column() {
  55 + CompParser({ compDTO: compDTO, compIndex: compIndex });
  56 + }
  57 + }
  58 + })
  59 +
  60 + // 加载更多
  61 + ListItem() {
  62 + if (this.browSingModel.hasMore) {
  63 + LoadMoreLayout({
  64 + refreshBean: new RefreshLayoutBean(this.browSingModel.isVisiblePullUpLoad, this.browSingModel.pullUpLoadImage,
  65 + this.browSingModel.pullUpLoadText, this.browSingModel.pullUpLoadHeight)
  66 + })
  67 + } else {
  68 + NoMoreLayout()
  69 + }
  70 + }
  71 + }
  72 + .height(CommonConstants.FULL_PARENT)
  73 + }
  74 +
  75 + @Builder LoadingLayout() {
  76 + CustomRefreshLoadLayout({ refreshBean: new RefreshLayoutBean(true,
  77 + $r('app.media.ic_pull_up_load'), $r('app.string.pull_up_load_text'), this.browSingModel.pullDownRefreshHeight) })
  78 + }
  79 +
  80 + async getData() {
  81 + this.browSingModel.currentPage = 1
  82 + MyCollectionViewModel.newFetchMyCollectList(1,'1',this.browSingModel.currentPage,getContext(this)).then(pageDto => {
  83 + if (pageDto && pageDto.compList && pageDto.compList.length > 0) {
  84 + this.browSingModel.viewType = ViewType.LOADED;
  85 + this.browSingModel.compList.push(...pageDto.compList)
  86 + if (pageDto.compList.length === this.browSingModel.pageSize) {
  87 + this.browSingModel.currentPage++;
  88 + this.browSingModel.hasMore = true;
  89 + } else {
  90 + this.browSingModel.hasMore = false;
  91 + }
  92 + } else {
  93 + this.browSingModel.viewType = ViewType.EMPTY;
  94 + }
  95 + })
  96 + }
  97 +}
  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 })
1 -import { CompDTO } from 'wdBean' 1 +import { Action, CompDTO, Params } from 'wdBean';
2 import { DateTimeUtils, Logger } from 'wdKit'; 2 import { DateTimeUtils, Logger } from 'wdKit';
  3 +import { WDRouterRule } from 'wdRouter';
3 4
4 const TAG = 'AlbumCardComponent'; 5 const TAG = 'AlbumCardComponent';
5 6
@@ -97,6 +98,15 @@ export struct AlbumCardComponent { @@ -97,6 +98,15 @@ export struct AlbumCardComponent {
97 } 98 }
98 .width(343) 99 .width(343)
99 .height(154) 100 .height(154)
  101 + .onClick((event: ClickEvent) => {
  102 + let taskAction: Action = {
  103 + type: 'JUMP_DETAIL_PAGE',
  104 + params: {
  105 + detailPageType: 9
  106 + } as Params,
  107 + };
  108 + WDRouterRule.jumpWithAction(taskAction)
  109 + })
100 110
101 Row() { 111 Row() {
102 if (this.compDTO.operDataList[0].source) { 112 if (this.compDTO.operDataList[0].source) {
@@ -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(2023, 8, 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 {
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 { WDRouterPage, WDRouterRule } from 'wdRouter';
2 import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent'; 3 import { HomePageBottomComponent } from '../components/mine/home/HomePageBottomComponent';
3 4
4 @Entry 5 @Entry
@@ -321,8 +322,8 @@ struct MineHomePage { @@ -321,8 +322,8 @@ struct MineHomePage {
321 let c = setInterval(() => { 322 let c = setInterval(() => {
322 this.isChangeToUserEdit = false 323 this.isChangeToUserEdit = false
323 }, 1000); 324 }, 1000);
324 -  
325 //route 跳转写这里 TODO 325 //route 跳转写这里 TODO
  326 + WDRouterRule.jumpWithPage(WDRouterPage.editUserInfoPage)
326 } 327 }
327 } 328 }
328 329
1 import { MyCollectionListModel } from '../model/MyCollectionModel'; 1 import { MyCollectionListModel } from '../model/MyCollectionModel';
2 import HashMap from '@ohos.util.HashMap'; 2 import HashMap from '@ohos.util.HashMap';
3 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork'; 3 import { HttpUrlUtils, ResponseDTO, WDHttp } from 'wdNetwork';
4 -import { Logger } from 'wdKit'; 4 +import { Logger, ResourcesUtils } from 'wdKit';
  5 +import { PageDTO } from 'wdBean';
5 6
6 const TAG = "MyCollectionViewModel" 7 const TAG = "MyCollectionViewModel"
7 8
@@ -28,22 +29,77 @@ class MyCollectionViewModel { @@ -28,22 +29,77 @@ class MyCollectionViewModel {
28 return WDHttp.get<ResponseDTO<MyCollectionListModel>>(url, headers) 29 return WDHttp.get<ResponseDTO<MyCollectionListModel>>(url, headers)
29 } 30 }
30 31
  32 + async getAppointmentListDataLocal(context: Context): Promise<MyCollectionListModel> {
  33 + Logger.info(TAG, `getBottomNavDataMock start`);
  34 + let compRes: ResponseDTO<MyCollectionListModel> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MyCollectionListModel>>(context,'browsingHistory_list_data.json' );
  35 + if (!compRes || !compRes.data) {
  36 + Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
  37 + return new MyCollectionListModel()
  38 + }
  39 + Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  40 + return compRes.data
  41 + }
  42 +
31 //Type 1 收藏 2 浏览历史 43 //Type 1 收藏 2 浏览历史
32 //tagId 收藏界面 标签筛选 44 //tagId 收藏界面 标签筛选
33 - fetchMyCollectList(type:number,tagId:string,pageNum:string):Promise<MyCollectionListModel>{ 45 + fetchMyCollectList(type:number,tagId:string,pageNum:string,context: Context):Promise<MyCollectionListModel>{
34 return new Promise<MyCollectionListModel>((success,error) => { 46 return new Promise<MyCollectionListModel>((success,error) => {
35 this.BaseGetRequest(type,tagId,pageNum).then((navResDTO: ResponseDTO<MyCollectionListModel>) => { 47 this.BaseGetRequest(type,tagId,pageNum).then((navResDTO: ResponseDTO<MyCollectionListModel>) => {
36 - if (navResDTO) { 48 + if (!navResDTO || navResDTO.code != 0) {
  49 + success(this.getAppointmentListDataLocal(context))
  50 + return
  51 + }
  52 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
37 let listData = navResDTO.data as MyCollectionListModel 53 let listData = navResDTO.data as MyCollectionListModel
38 success(listData) 54 success(listData)
39 - }else{  
40 - Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp); 55 + }).catch((err: Error) => {
  56 + Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
41 error("page data invalid"); 57 error("page data invalid");
  58 + })
  59 + })
  60 + }
  61 +
  62 +
  63 + newBaseGetRequest(type:number,tagId:string,pageNum:number){
  64 + let url = HttpUrlUtils.getMyCollectionListDataUrl()+ `?type=${type}&operateTag=${1}&pageSize=${20}&pageNum=${pageNum.toString()}`
  65 + if (tagId.length > 0) {
  66 + url = url + `&tagId=${tagId}`
  67 + }
  68 + let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders()
  69 + return WDHttp.get<ResponseDTO<PageDTO>>(url, headers)
42 } 70 }
  71 +
  72 + newFetchMyCollectList(type:number,tagId:string,pageNum:number,context: Context):Promise<PageDTO>{
  73 + return new Promise<PageDTO>((success,error) => {
  74 + success(this.newGetAppointmentListDataLocal(type,context))
  75 + return
  76 + this.newBaseGetRequest(type,tagId,pageNum).then((navResDTO: ResponseDTO<PageDTO>) => {
  77 + if (!navResDTO || navResDTO.code != 0) {
  78 + success(this.newGetAppointmentListDataLocal(type,context))
  79 + return
  80 + }
  81 + Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
  82 + let listData = navResDTO.data as PageDTO
  83 + success(listData)
43 }).catch((err: Error) => { 84 }).catch((err: Error) => {
44 Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`); 85 Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
45 error("page data invalid"); 86 error("page data invalid");
46 }) 87 })
47 }) 88 })
48 } 89 }
  90 +
  91 + async newGetAppointmentListDataLocal(type:number, context: Context): Promise<PageDTO> {
  92 + Logger.info(TAG, `getBottomNavDataMock start`);
  93 + let compRes: ResponseDTO<PageDTO> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<PageDTO>>(context,type == 1?'MyCollection_list_data.json':'browsingHistory_list_data.json');
  94 + if (!compRes || !compRes.data) {
  95 + Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
  96 + return {} as PageDTO
  97 + }
  98 + Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
  99 + return compRes.data
  100 + }
49 } 101 }
  102 +
  103 +const collectionViewModel = MyCollectionViewModel.getInstance();
  104 +
  105 +export default collectionViewModel as MyCollectionViewModel
@@ -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 }
@@ -9,5 +9,8 @@ @@ -9,5 +9,8 @@
9 "components/page/PrivacySettingPage", 9 "components/page/PrivacySettingPage",
10 "components/page/EditUserInfoPage", 10 "components/page/EditUserInfoPage",
11 "components/page/EditUserNikeNamePage", 11 "components/page/EditUserNikeNamePage",
12 - "components/page/EditUserIntroductionPage" ] 12 + "components/page/EditUserIntroductionPage",
  13 + "components/page/BrowsingHistoryPage",
  14 + "components/page/MyCollectionListPage"
  15 + ]
13 } 16 }
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 MultiPictureDetailPage {
  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 +}
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 "pages/web/DefaultWebPage", 4 "pages/web/DefaultWebPage",
5 "pages/ENewspaper", 5 "pages/ENewspaper",
6 "pages/ImageAndTextDetailPage", 6 "pages/ImageAndTextDetailPage",
7 - "pages/MorningEveningPaperPage" 7 + "pages/MorningEveningPaperPage",
  8 + "pages/detail/MultiPictureDetailPage"
8 ] 9 ]
9 } 10 }