select_area.ts 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. import { _decorator, Component, instantiate, Node, Prefab, Sprite, SpriteFrame } from 'cc';
  2. import { base_ui } from '../../fw/base_ui';
  3. import { select_area_item } from './select_area_item';
  4. import { http } from '../../http';
  5. import { config } from '../../config';
  6. import { area_item_data } from '../../data';
  7. import { GameManager } from '../../GameManager';
  8. import { uiManager } from '../../manager/uiManager';
  9. const { ccclass, property } = _decorator;
  10. @ccclass('select_area')
  11. export class select_area extends base_ui {
  12. @property(Node) btn_close:Node = null
  13. @property(Node) img_title:Node = null
  14. @property(SpriteFrame) sf_province:SpriteFrame = null
  15. @property(SpriteFrame) sf_city:SpriteFrame = null
  16. @property(Node) province_btn_node:Node = null
  17. @property(Node) province_btn_next:Node = null
  18. @property(Node) city_btn_node:Node = null
  19. @property(Node) city_btn_up:Node = null
  20. @property(Node) city_btn_true:Node = null
  21. @property(Node) list_content:Node = null
  22. @property(Prefab) list_item:Prefab = null
  23. @property(Node) note_info:Node = null
  24. private province_list = []
  25. private province_selected_index:number = 0
  26. province_selected_data:area_item_data = null
  27. private city_selected_index:number = 0
  28. city_selected_data:area_item_data = null
  29. private m_is_modified:boolean = true //是否为修改
  30. private m_city_cb = null
  31. protected start(): void {
  32. this.onButtonListen(this.btn_close, ()=>{
  33. this.closeSelf()
  34. })
  35. this.onButtonListen(this.province_btn_next, ()=>{
  36. this.onClickProviceNext()
  37. })
  38. this.onButtonListen(this.city_btn_up, ()=>{
  39. this.onClickCityUp()
  40. })
  41. this.onButtonListen(this.city_btn_true, ()=>{
  42. this.onClickCityTrue()
  43. })
  44. GameManager.requestDelay(()=>{
  45. this.requestProvinceListData()
  46. })
  47. }
  48. initView(is_modified:boolean, city_cb) {
  49. this.m_is_modified = is_modified
  50. this.m_city_cb = city_cb
  51. if(!this.m_is_modified) {
  52. this.btn_close.active = false
  53. this.note_info.active = false
  54. }
  55. }
  56. closeSelf() {
  57. this.close()
  58. }
  59. private onClickProviceNext() {
  60. this.img_title.getComponent(Sprite).spriteFrame = this.sf_city
  61. this.province_btn_node.active = false
  62. this.city_btn_node.active = true
  63. let data_list = this.province_selected_data.list
  64. this.reloadCityListData(data_list)
  65. }
  66. private onClickCityUp() {
  67. this.img_title.getComponent(Sprite).spriteFrame = this.sf_province
  68. this.province_btn_node.active = true
  69. this.city_btn_node.active = false
  70. this.city_selected_index = 0
  71. this.city_selected_data = null
  72. this.reloadProvinceListData(this.province_list)
  73. }
  74. private onClickCityTrue() {
  75. // console.log('province:',this.province_selected_data.name,' ','city:',this.city_selected_data.name)
  76. if(this.m_city_cb) {
  77. this.m_city_cb(this,this.city_selected_data)
  78. }
  79. }
  80. private requestProvinceListData() {
  81. uiManager.Instance().showLoading()
  82. http.get(config.STATIC_API.regions, (err,d)=>{
  83. uiManager.Instance().hideLoading()
  84. if(!err){
  85. let data = JSON.parse(d)
  86. if(data.code===config.status.SUCCESS){
  87. // console.log('data=',data.content)
  88. this.province_list = data.content
  89. this.reloadProvinceListData(data.content)
  90. }
  91. } else{
  92. console.log("initData err",err)
  93. }
  94. })
  95. }
  96. private reloadProvinceListData(data_list) {
  97. this.list_content.removeAllChildren()
  98. for (let index = 0; index < data_list.length; index++) {
  99. const element = data_list[index]
  100. let item = instantiate(this.list_item)
  101. item.parent = this.list_content;
  102. let area_item = item.getComponent(select_area_item)
  103. if(this.province_selected_index == index) {
  104. area_item.setSelectStatus()
  105. this.province_selected_data = element
  106. } else {
  107. area_item.setUnselectStatus()
  108. }
  109. area_item.initView(element,index, this.onClickProvinceItem.bind(this))
  110. }
  111. }
  112. private onClickProvinceItem(item:select_area_item) {
  113. let cur_index = item.getIndex()
  114. if(this.province_selected_index==cur_index) {
  115. return
  116. }
  117. let previous_item = this.list_content.children[this.province_selected_index].getComponent(select_area_item)
  118. previous_item.setUnselectStatus()
  119. item.setSelectStatus()
  120. this.province_selected_index = cur_index
  121. this.province_selected_data = item.getData()
  122. }
  123. private reloadCityListData(data_list) {
  124. this.list_content.removeAllChildren()
  125. for (let index = 0; index < data_list.length; index++) {
  126. const element = data_list[index]
  127. let item = instantiate(this.list_item)
  128. item.parent = this.list_content;
  129. let area_item = item.getComponent(select_area_item)
  130. if(this.city_selected_index == index) {
  131. area_item.setSelectStatus()
  132. this.city_selected_data = element
  133. } else {
  134. area_item.setUnselectStatus()
  135. }
  136. area_item.initView(element,index, this.onClickCityItem.bind(this))
  137. }
  138. }
  139. private onClickCityItem(item:select_area_item) {
  140. let cur_index = item.getIndex()
  141. if(this.city_selected_index==cur_index) {
  142. return
  143. }
  144. let previous_item = this.list_content.children[this.city_selected_index].getComponent(select_area_item)
  145. previous_item.setUnselectStatus()
  146. item.setSelectStatus()
  147. this.city_selected_index = cur_index
  148. this.city_selected_data = item.getData()
  149. }
  150. }