edit_address.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. {extend name="public/container" /}
  2. {block name="title"}添加地址{/block}
  3. {block name="content"}
  4. <body style="font-size: .24rem !important;">
  5. <div id="edit-address" class="user-add-address">
  6. <section>
  7. <form action="" method="post" @submit.prevent="submit" ref="form">
  8. <div class="address-info">
  9. <div class="item">
  10. <label for="">姓名</label>
  11. <input type="text" v-model="info.real_name" placeholder="请输入姓名"/>
  12. </div>
  13. <div class="item">
  14. <label for="">联系电话</label>
  15. <input type="tel" v-model="info.phone" placeholder="请输入联系电话"/>
  16. </div>
  17. <div class="item">
  18. <label for="">所在地区</label>
  19. <input class="select-add" readonly v-model="address" @click="selectAddress" type="text" placeholder="请选择"/>
  20. </div>
  21. <div class="item">
  22. <label for="">详细地址</label>
  23. <input type="text" v-model="info.detail" placeholder="请填写具体地址"/>
  24. </div>
  25. <div class="item">
  26. <label for="">邮政编码</label>
  27. <input type="tel" v-model="info.post_code" placeholder="请填写邮政编码(选填)"/>
  28. </div>
  29. </div>
  30. <div class="set-default">
  31. <label class="well-check">
  32. <input class="ckecks" type="checkbox" v-model="info.is_default"><i class="icon"></i>
  33. 设为默认地址
  34. </label>
  35. </div>
  36. <button class="sub-btn" type="submit">立即保存</button>
  37. </form>
  38. <yd-cityselect :items="district" v-model="addressShow" :callback="changeAddress"></yd-cityselect>
  39. </section>
  40. </div>
  41. <script src="{__PLUG_PATH}reg-verify.js"></script>
  42. <script>
  43. requirejs(['vue','ydui','static/plug/ydui/province_city_area','helper','store'],function(Vue,ydui,district,$h,storeApi){
  44. $addressInfo = <?=json_encode($addressInfo)?>;
  45. Vue.use(ydui.default);
  46. new Vue({
  47. el:"#edit-address",
  48. data:{
  49. district:district,
  50. addressShow:false,
  51. info:{
  52. id:$addressInfo.id || '',
  53. address:{
  54. province: $addressInfo.province || '',
  55. city: $addressInfo.city || '',
  56. district:$addressInfo.district || ''
  57. },
  58. post_code:$addressInfo.post_code || '',
  59. detail:$addressInfo.detail || '',
  60. real_name:$addressInfo.real_name || '',
  61. phone:$addressInfo.phone || '',
  62. is_default:$addressInfo.is_default == 1 || false
  63. }
  64. },
  65. computed:{
  66. address:function(){
  67. var address = this.info.address;
  68. if(address.province && address.city && address.district)
  69. return address.province+' '+address.city+' '+address.district;
  70. else
  71. return '';
  72. }
  73. },
  74. methods:{
  75. changeAddress:function(res){
  76. var address = this.info.address;
  77. address.province = res.itemName1;
  78. address.city = res.itemName2;
  79. address.district = res.itemName3;
  80. },
  81. selectAddress:function(){
  82. this.addressShow = true;
  83. document.activeElement.blur();
  84. },
  85. submit:function(){
  86. var address = this.info.address,that = this;
  87. if($reg.isEmpty(this.info.real_name))
  88. return $h.returnErrorMsg('请输入姓名');
  89. if(!$reg.isPhone(this.info.phone))
  90. return $h.returnErrorMsg('请输入正确的手机号');
  91. if($reg.isEmpty(address.province) || $reg.isEmpty(address.city) || $reg.isEmpty(address.district))
  92. return $h.returnErrorMsg('请选择所在地区');
  93. if($reg.isEmpty(this.info.detail))
  94. return $h.returnErrorMsg('请补充详细地址');
  95. if(!$reg.isEmpty(this.info.post_code) && !$reg.isPostCode(this.info.post_code))
  96. return $h.returnErrorMsg('请输入正确的邮政编码');
  97. $h.load();
  98. storeApi.editUserAddress(this.info,function(res){
  99. $h.pushMsg('编辑收货地址成功',function(){
  100. location.replace( document.referrer || $h.U({
  101. c:'my',
  102. a:'address'
  103. }));
  104. })
  105. },function(){
  106. $h.loadClear();
  107. return true;
  108. });
  109. }
  110. },
  111. mounted:function(){
  112. }
  113. })
  114. });
  115. </script>
  116. {/block}