quarter_rank_view.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { _decorator, Component, instantiate, Label, Node, Prefab, ScrollView } from 'cc';
  2. import { base_ui } from '../../fw/base_ui';
  3. import { quarter_rank_kuang_item } from './quarter_rank_kuang_item';
  4. import { http } from '../../http';
  5. import { config } from '../../config';
  6. import { quarter_rank_item_data, rankData } from '../../data';
  7. import { GameManager } from '../../GameManager';
  8. import { uiManager } from '../../manager/uiManager';
  9. import { rank_list_item } from '../rank/rank_list_item';
  10. import { rank_my_info } from '../rank/rank_my_info';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('quarter_rank_view')
  13. export class quarter_rank_view extends base_ui {
  14. @property(Node) btn_close:Node = null
  15. @property(Node) btn_refresh:Node = null
  16. @property(Node) lab_date_name:Node = null
  17. @property(Node) kuang_content:Node = null
  18. @property(Prefab) kuang_item:Prefab = null
  19. @property(Node) rank_scrollView:Node = null
  20. @property(Node) rank_content:Node = null
  21. @property(Prefab) rank_item:Prefab = null
  22. @property(Node) my_info_node:Node = null
  23. private quarter_rank_data:Map<number,quarter_rank_item_data> = new Map
  24. private rank_list_data:rankData[] = []
  25. private page:number = 1
  26. private is_loading:boolean = false
  27. private is_request:boolean = false
  28. start() {
  29. this.onButtonListen(this.btn_close,()=>{
  30. this.close()
  31. })
  32. this.onButtonListen(this.btn_refresh,()=>{
  33. this.requestListData()
  34. })
  35. GameManager.requestDelay(()=>{
  36. this.requestListData()
  37. })
  38. this.rank_scrollView.on(ScrollView.EventType.SCROLL_TO_BOTTOM, this.onScrollToBottom, this)
  39. }
  40. private requestListData() {
  41. uiManager.Instance().showLoading()
  42. http.post(config.API.user_quarter_rank, null, (err,d)=>{
  43. if(!err){
  44. let data = JSON.parse(d)
  45. if(data.code===config.status.SUCCESS){
  46. // console.log('data=',data.content)
  47. this.lab_date_name.getComponent(Label).string = data.content.date_name
  48. this.kuang_content.removeAllChildren()
  49. for (let index = 0; index < data.content.quarter_rank.length; index++) {
  50. const element = data.content.quarter_rank[index];
  51. this.quarter_rank_data.set(element.quarter_rank_id,element)
  52. let item = instantiate(this.kuang_item)
  53. item.parent = this.kuang_content
  54. item.getComponent(quarter_rank_kuang_item).initView(element)
  55. }
  56. this.requestRankList(false, false)
  57. this.requestMyRankData()
  58. } else {
  59. uiManager.Instance().hideLoading()
  60. }
  61. } else {
  62. uiManager.Instance().hideLoading()
  63. }
  64. },'GET')
  65. }
  66. private onScrollToBottom() {
  67. if(this.is_request==false) {
  68. return
  69. }
  70. if(this.is_loading) {
  71. return
  72. }
  73. // console.log('滑动到底部开始加载数据=',this.page)
  74. this.requestRankList(true)
  75. }
  76. private requestRankList(is_load_more:boolean, show_loading:boolean = true) {
  77. if(is_load_more==false) {
  78. this.page = 1
  79. }
  80. this.is_loading = true
  81. this.is_request = true
  82. if(show_loading) {
  83. uiManager.Instance().showLoading()
  84. }
  85. let opt = {'page': this.page}
  86. http.post(config.API.user_quarter_ranking, opt, (err,d)=>{
  87. setTimeout(()=>{
  88. this.is_loading = false
  89. uiManager.Instance().hideLoading()
  90. },500)
  91. if(!err){
  92. let data = JSON.parse(d)
  93. // console.log('赛季排行=',data.content)
  94. if(data.code===config.status.SUCCESS){
  95. let total_page_number = data.content.total_page_number
  96. if(this.page==1) {
  97. this.rank_list_data = []
  98. this.rank_content.removeAllChildren()
  99. }
  100. this.rank_list_data = this.rank_list_data.concat(data.content.list)
  101. this.rank_content.removeAllChildren()
  102. for (let index = 0; index < this.rank_list_data.length; index++) {
  103. const element = this.rank_list_data[index]
  104. let item = instantiate(this.rank_item)
  105. item.parent = this.rank_content;
  106. let quarter_rank_data = this.quarter_rank_data.get(element.quarter_rank_id)
  107. item.getComponent(rank_list_item).initQuarterRank(element,index,quarter_rank_data)
  108. }
  109. if(this.page==1) {
  110. setTimeout(()=>{
  111. this.rank_scrollView.getComponent(ScrollView).scrollToTop()
  112. },100)
  113. }
  114. if(this.page>=total_page_number) {
  115. this.is_request = false
  116. } else {
  117. this.page += 1
  118. }
  119. }
  120. }
  121. })
  122. }
  123. private requestMyRankData() {
  124. GameManager.requestMineRank(0, (d_content)=>{
  125. // console.log('个人排行 stype=',stype,'数据=',d_content)
  126. let data = d_content
  127. let quarter_rank_data = this.quarter_rank_data.get(data.quarter_rank_id)
  128. this.my_info_node.getComponent(rank_my_info).initQuarterRank(data,quarter_rank_data)
  129. })
  130. }
  131. }