select_area.ts 5.7 KB

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