region.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //ANRAN_REGION_DATA from cdn/jsdata
  2. // 深拷贝数组
  3. // let scriptEle = document.createElement('script')
  4. // scriptEle.setAttribute('src', 'http://upload.ar.wqcms.com/cdn/jsdata/ar_region_data.js?ver=0.1')
  5. // document.getElementsByTagName('head')[0].appendChild(scriptEle)
  6. // // document.write("<script language='javascript' src='http://upload.ar.wqcms.com/cdn/jsdata/ar_region_data.js?ver=0.1'></script>");
  7. // require('http://tool.anran.io/cdn/jsdata/ar_region_data.js')
  8. import axios from 'axios'
  9. import store from '@/utils/vuexStore'
  10. import {REGION_URL} from '@/utils/config'
  11. import importScript from './importScript'
  12. let regionScriptLoaded = false
  13. const initRegion = function (vueObj) {
  14. importScript(REGION_URL, () => {
  15. if (regionScriptLoaded) return true
  16. regionScriptLoaded = true
  17. // let dataResult = response.data.replace(/^const\s+AR_REGION_DATA\s+\=\s+/, '')
  18. // dataResult = dataResult.replace(/\;$/, '')
  19. // //dataResult = JSON.parse(dataResult)
  20. // dataResult = eval('('+dataResult+')')
  21. // let ANRAN_REGION_DATA = dataResult
  22. let ANRAN_REGION_DATA = AR_REGION_DATA
  23. // code转汉字大对象
  24. // 汉字转code大对象
  25. const rootCode = '234'
  26. vueObj.$set(store.state.regionInfo.CodeToText, '', '全部')
  27. // 计算省
  28. for (const prop in ANRAN_REGION_DATA[rootCode]) {
  29. store.state.regionInfo.regionData.push({
  30. value: prop,
  31. label: ANRAN_REGION_DATA[rootCode][prop]
  32. })
  33. store.state.regionInfo.CodeToText[prop] = ANRAN_REGION_DATA[rootCode][prop]
  34. store.state.regionInfo.TextToCode[ANRAN_REGION_DATA[rootCode][prop]] = {
  35. code: prop
  36. }
  37. store.state.regionInfo.TextToCode[ANRAN_REGION_DATA[rootCode][prop]]['全部'] = {
  38. code: ''
  39. }
  40. }
  41. // 计算市
  42. for (let i = 0, len = store.state.regionInfo.regionData.length; i < len; i++) {
  43. const provinceCode = store.state.regionInfo.regionData[i].value
  44. const provinceText = store.state.regionInfo.regionData[i].label
  45. const provinceChildren = []
  46. for (const prop in ANRAN_REGION_DATA[provinceCode]) {
  47. provinceChildren.push({
  48. value: prop,
  49. label: ANRAN_REGION_DATA[provinceCode][prop]
  50. })
  51. store.state.regionInfo.CodeToText[prop] = ANRAN_REGION_DATA[provinceCode][prop]
  52. store.state.regionInfo.TextToCode[provinceText][ANRAN_REGION_DATA[provinceCode][prop]] = {
  53. code: prop
  54. }
  55. store.state.regionInfo.TextToCode[provinceText][ANRAN_REGION_DATA[provinceCode][prop]]['全部'] = {
  56. code: ''
  57. }
  58. }
  59. if (provinceChildren.length) {
  60. store.state.regionInfo.regionData[i].children = provinceChildren
  61. }
  62. }
  63. store.state.regionInfo.provinceAndCityData = cloneArray(store.state.regionInfo.regionData)
  64. // 计算区
  65. for (let i = 0, len = store.state.regionInfo.regionData.length; i < len; i++) {
  66. const province = store.state.regionInfo.regionData[i].children
  67. const provinceText = store.state.regionInfo.regionData[i].label
  68. if (province) {
  69. for (let j = 0, len = province.length; j < len; j++) {
  70. const cityCode = province[j].value
  71. const cityText = province[j].label
  72. const cityChildren = []
  73. for (const prop in ANRAN_REGION_DATA[cityCode]) {
  74. cityChildren.push({
  75. value: prop,
  76. label: ANRAN_REGION_DATA[cityCode][prop]
  77. })
  78. store.state.regionInfo.CodeToText[prop] = ANRAN_REGION_DATA[cityCode][prop]
  79. store.state.regionInfo.TextToCode[provinceText][cityText][ANRAN_REGION_DATA[cityCode][prop]] = {
  80. code: prop
  81. }
  82. }
  83. if (cityChildren.length) {
  84. province[j].children = cityChildren
  85. }
  86. }
  87. }
  88. }
  89. // 添加“全部”选项
  90. store.state.regionInfo.provinceAndCityDataPlus = cloneArray(store.state.regionInfo.provinceAndCityData)
  91. store.state.regionInfo.provinceAndCityDataPlus.unshift({
  92. value: '',
  93. label: '全部'
  94. })
  95. /*for (let i = 0, len = store.state.regionInfo.provinceAndCityDataPlus.length; i < len; i++) {
  96. const province = store.state.regionInfo.provinceAndCityDataPlus[i].children
  97. if (province && province.length) {
  98. province.unshift({
  99. value: '',
  100. label: store.state.regionInfo.provinceAndCityDataPlus[i].label + '全部'
  101. })
  102. for (let j = 0, len = province.length; j < len; j++) {
  103. const city = province[j].children
  104. if (city && city.length) {
  105. city.unshift({
  106. value: '',
  107. label: province[j].label + '全部'
  108. })
  109. }
  110. }
  111. }
  112. }*/
  113. store.state.regionInfo.regionDataPlus = cloneArray(store.state.regionInfo.regionData)
  114. store.state.regionInfo.regionDataPlus.unshift({
  115. value: '',
  116. label: '全部'
  117. })
  118. /*for (let i = 0, len = store.state.regionInfo.regionDataPlus.length; i < len; i++) {
  119. const province = store.state.regionInfo.regionDataPlus[i].children
  120. if (province && province.length) {
  121. province.unshift({
  122. value: '',
  123. label: store.state.regionInfo.regionDataPlus[i].label + '全部'
  124. })
  125. for (let j = 0, len = province.length; j < len; j++) {
  126. const city = province[j].children
  127. if (city && city.length) {
  128. city.unshift({
  129. value: '',
  130. label: province[j].label + '全部'
  131. })
  132. }
  133. }
  134. }
  135. }*/
  136. })
  137. }
  138. //let ANRAN_REGION_DATA = AR_REGION_DATA
  139. const cloneArray = function (obj) {
  140. const newArray = []
  141. for (const i in obj) {
  142. newArray[i] = typeof obj[i] === 'object' ? cloneArray(obj[i]) : obj[i]
  143. }
  144. return newArray
  145. }
  146. export default initRegion