select-district.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. // component/select-district/select-district.js
  2. const district = require('../../data/district.js').list;
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. properties: {
  8. },
  9. /**
  10. * 组件的初始数据
  11. */
  12. data: {
  13. district,
  14. province: [],
  15. city: [{
  16. "cityCode": '',
  17. "cityName": '不限市',
  18. }],
  19. area: [{
  20. "countryCode": '',
  21. "countryName": '不限区域',
  22. }],
  23. province_id: '',
  24. city_id: '',
  25. area_id: '',
  26. province_name: '不限省',
  27. city_name: '不限市',
  28. area_name: '不限区域',
  29. },
  30. attached() {
  31. let province = this.data.district.map(val => ({
  32. "provinceCode": val.provinceCode,
  33. "provinceName": val.provinceName,
  34. "firstNameLetter": val.firstNameLetter,
  35. }))
  36. province.unshift({
  37. "provinceCode": '',
  38. "provinceName": '不限省',
  39. })
  40. this.changeCity('320000');
  41. this.changeArea('320000', '320200');
  42. this.setData({
  43. province,
  44. province_id: '320000',
  45. city_id: '320200',
  46. })
  47. },
  48. /**
  49. * 组件的方法列表
  50. */
  51. methods: {
  52. changeCity(id) {
  53. let city = null;
  54. this.data.district.forEach((val, key) => {
  55. if (val.provinceCode === id) {
  56. city = val.cityList.map(value => ({
  57. "cityCode": value.cityCode,
  58. "cityName": value.cityName,
  59. "firstNameLetter": value.firstNameLetter,
  60. }))
  61. }
  62. })
  63. city.unshift({
  64. "cityCode": '',
  65. "cityName": '不限市',
  66. })
  67. this.setData({
  68. city,
  69. area: [{
  70. "countryCode": '',
  71. "countryName": '不限区域',
  72. }],
  73. city_id: '',
  74. area_id: '',
  75. })
  76. },
  77. changeArea(id, code) {
  78. let area = null;
  79. this.data.district.forEach((val, key) => {
  80. if (val.provinceCode === id) {
  81. val.cityList.forEach(value => {
  82. if (value.cityCode === code) {
  83. area = value.areaList.map(val => val)
  84. }
  85. })
  86. }
  87. })
  88. area.unshift({
  89. "countryCode": '',
  90. "countryName": '不限区域',
  91. })
  92. this.setData({
  93. area
  94. })
  95. },
  96. // 选择地区
  97. chooseDistrict(e) {
  98. const id = e.currentTarget.dataset.id;
  99. const name = e.currentTarget.dataset.name;
  100. const district = e.currentTarget.dataset.district;
  101. if (district === 'province') {
  102. id !== '' && this.changeCity(id);
  103. id === '' && this.setData({
  104. city_id: '',
  105. city_name: '不限市',
  106. area_id: '',
  107. area_name: '不限区域',
  108. city: [{
  109. "cityCode": '',
  110. "cityName": '不限市',
  111. }],
  112. area: [{
  113. "countryCode": '',
  114. "countryName": '不限区域',
  115. }],
  116. })
  117. }
  118. if (district === 'city') {
  119. id !== '' && this.changeArea(this.data.province_id, id);
  120. id === '' && this.setData({
  121. area_id: '',
  122. area_name: '不限区域',
  123. area: [{
  124. "countryCode": '',
  125. "countryName": '不限区域',
  126. }],
  127. })
  128. }
  129. this.setData({
  130. [`${district}_id`]: id,
  131. [`${district}_name`]: name,
  132. })
  133. },
  134. // 提交选择后的信息
  135. submit() {
  136. const {
  137. province_id,
  138. city_id,
  139. area_id,
  140. province_name,
  141. city_name,
  142. area_name,
  143. } = this.data
  144. this.triggerEvent('submit', {
  145. province_id,
  146. city_id,
  147. area_id,
  148. province_name,
  149. city_name,
  150. area_name,
  151. })
  152. },
  153. // 关闭选择框
  154. colose() {
  155. this.triggerEvent('colose')
  156. },
  157. }
  158. })