select-address.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. (function() {
  2. Vue.component('selsect-address', {
  3. template: `<div class="dropdown">
  4. <a id="addressLabel" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
  5. <input id="addrcode" placeholder="请选择家庭住址" type="text" class="form-control c-323232" name="addrcode"><span class="caret selcaret"></span>
  6. </a>
  7. <div class="bgc-fff dropdown-menu dropdown-menu-right" aria-labelledby="addressLabel" style="width:308px;" id="dropdown-address">
  8. <ul class="nav nav-tabs" role="tablist" id="addresslist">
  9. <li role="presentation" class="active" style="width:102px;">
  10. <a href="#province" aria-controls="province" role="tab" data-toggle="tab" id="_province" data-stopPropagation="true">{{provincename}}</a>
  11. </li>
  12. <li role="presentation" style="width:102px;">
  13. <a href="#city" aria-controls="city" role="tab" data-toggle="tab" id="_city" data-stopPropagation="true">{{cityname}}</a>
  14. </li>
  15. <li role="presentation" style="width:102px;">
  16. <a href="#county" aria-controls="county" role="tab" data-toggle="tab" id="_county" data-stopPropagation="true">{{countyname}}</a>
  17. </li>
  18. </ul>
  19. <div class="tab-content industrybox" style="height: auto">
  20. <div role="tabpanel" class="tab-pane active industry c-t-left" id="province" data-stopPropagation="true">
  21. <div class="w3-row mt10">
  22. <div class="w3-col c-f16 pl10" style="width:50px;">A-G</div>
  23. <div class="w3-rest c-f14 c-666">
  24. <span :id="province.id" v-for="province in province1" @click="selectP(province.id,province.name)">{{province.name}}</span>
  25. </div>
  26. </div>
  27. <div class="w3-row mt10">
  28. <div class="w3-col c-f16 pl10" style="width:50px;">H-J</div>
  29. <div class="w3-rest c-f140 c-666">
  30. <span :id="province.id" v-for="province in province2" @click="selectP(province.id,province.name)">{{province.name}}</span>
  31. </div>
  32. </div>
  33. <div class="w3-row mt10">
  34. <div class="w3-col c-f16 pl10" style="width:50px;">L-S</div>
  35. <div class="w3-rest c-f14 c-666">
  36. <span :id="province.id" v-for="province in province3" @click="selectP(province.id,province.name)">{{province.name}}</span>
  37. </div>
  38. </div>
  39. <div class="w3-row mt10">
  40. <div class="w3-col c-f16 pl10" style="width:50px;">T-Z</div>
  41. <div class="w3-rest c-f14 c-666">
  42. <span :id="province.id" v-for="province in province4" @click="selectP(province.id,province.name)">{{province.name}}</span>
  43. </div>
  44. </div>
  45. </div>
  46. <div role="tabpanel" class="tab-pane w3-row-padding industry" id="city" data-stopPropagation="true">
  47. <div class="w3-third mb20" v-for="city in cities" @click="selectCi(city.id,city.name)">
  48. <div :id="city.id" style="padding: 5px 13px 3px;">{{city.name}}</div>
  49. </div>
  50. </div>
  51. <div role="tabpanel" class="tab-pane w3-row-padding industry" id="county" data-stopPropagation="true">
  52. <div class="w3-third mb20" v-for="county in counties" @click="selectCo(county.id,county.name)">
  53. <div :id="county.id" style="padding: 5px 13px 3px;">{{county.name}}</div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>`,
  58. props: [],
  59. data: function() {
  60. return {
  61. "province1": [{
  62. id: 340000,
  63. abbreviation: "",
  64. level: 1,
  65. name: "安徽",
  66. pid: 156,
  67. postCode: null
  68. },
  69. {
  70. id: 820000,
  71. abbreviation: "",
  72. level: 1,
  73. name: "澳门",
  74. pid: 156,
  75. postCode: null
  76. },
  77. {
  78. id: 110000,
  79. abbreviation: "",
  80. level: 1,
  81. name: "北京",
  82. pid: 156,
  83. postCode: null
  84. },
  85. {
  86. id: 500000,
  87. abbreviation: "",
  88. level: 1,
  89. name: "重庆",
  90. pid: 156,
  91. postCode: null
  92. },
  93. {
  94. id: 350000,
  95. abbreviation: "",
  96. level: 1,
  97. name: "福建",
  98. pid: 156,
  99. postCode: null
  100. },
  101. {
  102. id: 440000,
  103. abbreviation: "",
  104. level: 1,
  105. name: "广东",
  106. pid: 156,
  107. postCode: null
  108. },
  109. {
  110. id: 450000,
  111. abbreviation: "",
  112. level: 1,
  113. name: "广西",
  114. pid: 156,
  115. postCode: null
  116. },
  117. {
  118. id: 520000,
  119. abbreviation: "",
  120. level: 1,
  121. name: "贵州",
  122. pid: 156,
  123. postCode: null
  124. },
  125. {
  126. id: 620000,
  127. abbreviation: "",
  128. level: 1,
  129. name: "甘肃",
  130. pid: 156,
  131. postCode: null
  132. },
  133. ],
  134. "province2": [{
  135. id: 420000,
  136. abbreviation: "",
  137. level: 1,
  138. name: "湖北",
  139. pid: 156,
  140. postCode: null
  141. },
  142. {
  143. id: 230000,
  144. abbreviation: "",
  145. level: 1,
  146. name: "黑龙江",
  147. pid: 156,
  148. postCode: null
  149. },
  150. {
  151. id: 410000,
  152. abbreviation: "",
  153. level: 1,
  154. name: "河南",
  155. pid: 156,
  156. postCode: null
  157. },
  158. {
  159. id: 430000,
  160. abbreviation: "",
  161. level: 1,
  162. name: "湖南",
  163. pid: 156,
  164. postCode: null
  165. },
  166. {
  167. id: 460000,
  168. abbreviation: "",
  169. level: 1,
  170. name: "海南",
  171. pid: 156,
  172. postCode: null
  173. },
  174. {
  175. id: 130000,
  176. abbreviation: "",
  177. level: 1,
  178. name: "河北",
  179. pid: 156,
  180. postCode: null
  181. },
  182. {
  183. id: 220000,
  184. abbreviation: "",
  185. level: 1,
  186. name: "吉林",
  187. pid: 156,
  188. postCode: null
  189. },
  190. {
  191. id: 320000,
  192. abbreviation: "",
  193. level: 1,
  194. name: "江苏",
  195. pid: 156,
  196. postCode: null
  197. },
  198. {
  199. id: 360000,
  200. abbreviation: "",
  201. level: 1,
  202. name: "江西",
  203. pid: 156,
  204. postCode: null
  205. },
  206. ],
  207. "province3": [{
  208. id: 210000,
  209. abbreviation: "",
  210. level: 1,
  211. name: "辽宁",
  212. pid: 156,
  213. postCode: null
  214. },
  215. {
  216. id: 140000,
  217. abbreviation: "",
  218. level: 1,
  219. name: "山西",
  220. pid: 156,
  221. postCode: null
  222. },
  223. {
  224. id: 640000,
  225. abbreviation: "",
  226. level: 1,
  227. name: "宁夏",
  228. pid: 156,
  229. postCode: null
  230. },
  231. {
  232. id: 150000,
  233. abbreviation: "",
  234. level: 1,
  235. name: "内蒙古",
  236. pid: 156,
  237. postCode: null
  238. }, {
  239. id: 630000,
  240. abbreviation: "",
  241. level: 1,
  242. name: "青海",
  243. pid: 156,
  244. postCode: null
  245. },
  246. {
  247. id: 370000,
  248. abbreviation: "",
  249. level: 1,
  250. name: "山东",
  251. pid: 156,
  252. postCode: null
  253. },
  254. {
  255. id: 310000,
  256. abbreviation: "",
  257. level: 1,
  258. name: "上海",
  259. pid: 156,
  260. postCode: null
  261. },
  262. {
  263. id: 510000,
  264. abbreviation: "",
  265. level: 1,
  266. name: "四川",
  267. pid: 156,
  268. postCode: null
  269. },
  270. {
  271. id: 610000,
  272. abbreviation: "",
  273. level: 1,
  274. name: "陕西",
  275. pid: 156,
  276. postCode: null
  277. },
  278. ],
  279. "province4": [{
  280. id: 120000,
  281. abbreviation: "",
  282. level: 1,
  283. name: "天津",
  284. pid: 156,
  285. postCode: null
  286. },
  287. {
  288. id: 710000,
  289. abbreviation: "",
  290. level: 1,
  291. name: "台湾",
  292. pid: 156,
  293. postCode: null
  294. },
  295. {
  296. id: 540000,
  297. abbreviation: "",
  298. level: 1,
  299. name: "西藏",
  300. pid: 156,
  301. postCode: null
  302. },
  303. {
  304. id: 650000,
  305. abbreviation: "",
  306. level: 1,
  307. name: "新疆",
  308. pid: 156,
  309. postCode: null
  310. },
  311. {
  312. id: 810000,
  313. abbreviation: "",
  314. level: 1,
  315. name: "香港",
  316. pid: 156,
  317. postCode: null
  318. },
  319. {
  320. id: 530000,
  321. abbreviation: "",
  322. level: 1,
  323. name: "云南",
  324. pid: 156,
  325. postCode: null
  326. },
  327. {
  328. id: 330000,
  329. abbreviation: "",
  330. level: 1,
  331. name: "浙江",
  332. pid: 156,
  333. postCode: null
  334. },
  335. ],
  336. "address": '',
  337. "cities": [],
  338. "counties": [],
  339. "cityid": -1,
  340. "countyid": -1,
  341. "provinceid": -1,
  342. "cityname": "城市",
  343. "countyname": "县区",
  344. "provincename": "省份",
  345. }
  346. },
  347. mounted: function() {
  348. this.initinfo()
  349. $(".dropdown-menu").on("click", "[data-stopPropagation]", function(e) {
  350. e.stopPropagation();
  351. var tabid = e.currentTarget.id //js控制标签页
  352. var bbb = tabid.indexOf("_")
  353. if(tabid.indexOf("_") > -1) {
  354. $('#' + tabid).tab('show')
  355. }
  356. });
  357. },
  358. methods: {
  359. initinfo: function() {
  360. var vm = this;
  361. var loginInfo = JSON.parse(sessionStorage.getItem("oauthInfo"));
  362. var data1 = {
  363. userName: loginInfo.user,
  364. token: loginInfo.accessToken
  365. }
  366. loginAPI.getUserInfo(data1).then(function(res) {
  367. vm.userinfo = res
  368. if(vm.userinfo.provinceId != 0) {
  369. // vm.provinceid = vm.userinfo.provinceId
  370. // vm.cityid = vm.userinfo.cityId
  371. // vm.countyid = vm.userinfo.areaId
  372. // vm.provincename = vm.userinfo.provinceName
  373. // vm.cityname = vm.userinfo.cityName
  374. // vm.countyname = vm.userinfo.areaName
  375. vm.selectP(vm.userinfo.provinceId, vm.userinfo.provinceName)
  376. setTimeout(function() {
  377. vm.selectCi(vm.userinfo.cityId, vm.userinfo.cityName)
  378. }, 1000)
  379. setTimeout(function() {
  380. vm.selectCo(vm.userinfo.areaId, vm.userinfo.areaName)
  381. }, 2000)
  382. }
  383. })
  384. },
  385. getAddress: function(id, iscity) {
  386. var vm = this
  387. mineAPI.addressGet(id).then(function(res) {
  388. if(res) {
  389. if(iscity) {
  390. vm.cities = res.map(function(res) {
  391. return {
  392. id: res.id,
  393. name: res.name,
  394. }
  395. })
  396. } else {
  397. vm.counties = res.map(function(res) {
  398. return {
  399. id: res.id,
  400. name: res.name,
  401. }
  402. })
  403. }
  404. }
  405. })
  406. },
  407. selectP: function(id, name) {
  408. var vm = this
  409. $("#" + id).addClass("active")
  410. if(vm.provinceid != -1) {
  411. $("#" + vm.provinceid).removeClass("active")
  412. }
  413. vm.initcity()
  414. vm.initcounty()
  415. vm.provinceid = id
  416. vm.provincename = name
  417. vm.getAddress(id, true)
  418. $('#addresslist a[href="#city"]').tab('show')
  419. vm.addAddress()
  420. },
  421. selectCi: function(id, name) {
  422. var vm = this
  423. $("#" + vm.cityid).removeClass("active")
  424. vm.initcounty()
  425. $("#" + id).addClass("active")
  426. vm.cityid = id
  427. vm.cityname = name
  428. vm.getAddress(id, false)
  429. $('#addresslist a[href="#county"]').tab('show')
  430. vm.addAddress()
  431. },
  432. selectCo: function(id, name) {
  433. var vm = this
  434. $("#" + vm.countyid).removeClass("active")
  435. $("#" + id).addClass("active")
  436. vm.countyid = id
  437. vm.countyname = name
  438. vm.addAddress()
  439. },
  440. initcity: function() {
  441. var vm = this
  442. $("#" + vm.cityid).removeClass("active")
  443. vm.cityid = 0
  444. vm.cityname = "城市"
  445. },
  446. initcounty: function() {
  447. var vm = this
  448. $("#" + vm.countyid).removeClass("active")
  449. vm.countyid = 0
  450. vm.countyname = "县区"
  451. },
  452. addAddress: function() {
  453. var vm = this
  454. var address = ''
  455. if(vm.provincename != "省市") {
  456. address += vm.provincename
  457. if(vm.cityname != "城市") {
  458. address += vm.cityname
  459. if(vm.countyname != "县区") {
  460. address += vm.countyname
  461. }
  462. }
  463. }
  464. $("#addrcode").val(address)
  465. }
  466. },
  467. })
  468. })()