buy_address_add.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <script>
  2. var local;
  3. var map;
  4. var lst_name='';
  5. function change_map(){
  6. var name=$("#area_info").val();
  7. if(name!='' && lst_name!=name){
  8. lst_name=name;
  9. map.setCurrentCity(name);
  10. map.centerAndZoom(name,16);
  11. map.clearOverlays();
  12. local.search(name);
  13. }
  14. }
  15. $(function(){
  16. if ({$Think.config.ds_config.mapak_type} == '1'){
  17. map = new AMap.Map("allmap", {
  18. resizeEnable: true,
  19. zoom:15
  20. });
  21. //获取用户所在城市信息
  22. AMap.plugin("AMap.CitySearch", function () {
  23. var citySearch = new AMap.CitySearch();
  24. citySearch.getLocalCity(function (status, result) {
  25. if (status === "complete" && result.info === "OK") {
  26. // 查询成功,result即为当前所在城市信息
  27. AMap.plugin("AMap.Geocoder", function () {
  28. var geocoder = new AMap.Geocoder({
  29. // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
  30. city: result.adcode,
  31. });
  32. geocoder.getLocation(result.city, function(status1, result1) {
  33. var location = result1.geocodes[0].location;
  34. var lng = location.lng;
  35. var lat = location.lat;
  36. //初始化定位
  37. var marker = new AMap.Marker({
  38. position: new AMap.LngLat(lng, lat),
  39. icon: '//api.map.baidu.com/images/marker_red_sprite.png',
  40. zoom: 15
  41. });
  42. map.add(marker);
  43. document.getElementById("longitude").value = lng;
  44. document.getElementById("latitude").value = lat;
  45. map.panTo([lng, lat]);
  46. //搜索定位
  47. AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], function(){
  48. var auto = new AMap.AutoComplete({input:"address"});
  49. var placeSearch = new AMap.PlaceSearch({
  50. map: map
  51. }); //构造地点查询类
  52. auto.on("select", select);//注册监听,当选中某条记录时会触发
  53. function select(e) {
  54. placeSearch.setCity(e.poi.adcode);
  55. placeSearch.search(e.poi.name); //关键字查询查询
  56. }
  57. });
  58. //点击定位
  59. map.on('click', function(e) {
  60. document.getElementById("longitude").value = e.lnglat.getLng();
  61. document.getElementById("latitude").value = e.lnglat.getLat();
  62. if(marker){
  63. map.remove(marker);
  64. }
  65. marker = new AMap.Marker({
  66. position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()),
  67. icon: '//api.map.baidu.com/images/marker_red_sprite.png',
  68. anchor: 'bottom-center',
  69. zoom: 15
  70. });
  71. map.add(marker);
  72. });
  73. });
  74. });
  75. }
  76. });
  77. });
  78. }else{
  79. map = new BMap.Map("allmap");
  80. var lng = '';
  81. var lat = '';
  82. if(!lng && !lat){
  83. var geolocation = new BMap.Geolocation();
  84. geolocation.getCurrentPosition(function (r) {
  85. if (this.getStatus() == BMAP_STATUS_SUCCESS) {
  86. var lng = r.point.lng;
  87. var lat = r.point.lat;
  88. var point = new BMap.Point(lng, lat);
  89. map.centerAndZoom(point, 16);
  90. map.addControl(new BMap.NavigationControl());
  91. map.enableScrollWheelZoom();
  92. var marker = new BMap.Marker(point); // 创建标注
  93. map.addOverlay(marker); // 将标注添加到地图中
  94. marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
  95. document.getElementById("longitude").value = lng;
  96. document.getElementById("latitude").value = lat;
  97. } else {
  98. layer.msg('failed' + this.getStatus());
  99. }
  100. }, {enableHighAccuracy: true})
  101. }else{
  102. var point = new BMap.Point(lng, lat);
  103. map.centerAndZoom(point, 16);
  104. map.addControl(new BMap.NavigationControl());
  105. map.enableScrollWheelZoom();
  106. var marker = new BMap.Marker(point); // 创建标注
  107. map.addOverlay(marker); // 将标注添加到地图中
  108. marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
  109. }
  110. var options = {
  111. onSearchComplete: function(results){
  112. // 判断状态是否正确
  113. if (local.getStatus() == BMAP_STATUS_SUCCESS){
  114. if(results.getCurrentNumPois()>0){
  115. map.clearOverlays(); //清除标注 或者可以把market 放入数组
  116. var point = new BMap.Point(results.getPoi(0).point.lng , results.getPoi(0).point.lat);
  117. var marker = new BMap.Marker(point);
  118. map.centerAndZoom(point, 16);
  119. map.addOverlay(marker);
  120. marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
  121. document.getElementById("longitude").value = results.getPoi(0).point.lng;
  122. document.getElementById("latitude").value = results.getPoi(0).point.lat;
  123. }
  124. }
  125. }
  126. };
  127. local = new BMap.LocalSearch(map, options);
  128. map.addEventListener("click", function(e){
  129. // alert(e.point.lng + ", " + e.point.lat);
  130. map.clearOverlays(); //清除标注 或者可以把market 放入数组
  131. var point = new BMap.Point(e.point.lng , e.point.lat);
  132. var marker = new BMap.Marker(point);
  133. map.addOverlay(marker);
  134. marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
  135. document.getElementById("longitude").value = e.point.lng;
  136. document.getElementById("latitude").value = e.point.lat;
  137. });
  138. }
  139. })
  140. </script>
  141. <div class="dsc-form-default">
  142. <form method="POST" id="addr_form" action="{:url('Buy/add_inv')}">
  143. <dl>
  144. <dt><i class="required">*</i>{$Think.lang.cart_step1_receiver_name}</dt>
  145. <dd>
  146. <input type="text" class="text w100" name="true_name" maxlength="20" id="true_name" value=""/>
  147. </dd>
  148. </dl>
  149. <dl>
  150. <dt><i class="required">*</i>{$Think.lang.cart_step1_area}</dt>
  151. <dd>
  152. <div id="region" {if $Think.config.ds_config.mapak_type eq '2'}onclick="change_map()"{/if}>
  153. <select class="w110">
  154. </select>
  155. <input type="hidden" value="" name="city_id" id="city_id">
  156. <input type="hidden" name="area_id" id="area_id" class="area_ids"/>
  157. <input type="hidden" name="area_info" id="area_info" class="area_names"/>
  158. </div>
  159. </dd>
  160. </dl>
  161. <dl>
  162. <dt><i class="required">*</i>{$Think.lang.cart_step1_whole_address}</dt>
  163. <dd>
  164. <input type="text" class="text w500" name="address" id="address" maxlength="80" value="" {if $Think.config.ds_config.mapak_type eq '2'}onkeyup="local.search($(this).val());"{/if}/>
  165. <p class="hint">{$Think.lang.cart_step1_true_address}</p>
  166. </dd>
  167. </dl>
  168. <dl>
  169. <dt>{$Think.lang.location_map}:</dt>
  170. <dd>
  171. <input name="longitude" id="longitude" value="" type="hidden" />
  172. <input name="latitude" id="latitude" value="" type="hidden" />
  173. <div id="allmap" style="width:530px;height: 350px;margin-top: 20px"></div>
  174. </dd>
  175. </dl>
  176. <dl>
  177. <dt> <i class="required">*</i>{$Think.lang.cart_step1_mobile_num}</dt>
  178. <dd>
  179. <input type="text" class="text w200" name="mob_phone" id="mob_phone" maxlength="15" value=""/>
  180. &nbsp;&nbsp;({$Think.lang.ds_or})
  181. &nbsp;{$Think.lang.cart_step1_phone_num}
  182. <input type="text" class="text w200" id="tel_phone" name="tel_phone" maxlength="20" value=""/>
  183. </dd>
  184. </dl>
  185. </form>
  186. </div>
  187. <script type="text/javascript">
  188. $(document).ready(function() {
  189. regionInit("region");
  190. $('#addr_form').validate({
  191. rules: {
  192. true_name: {
  193. required: true
  194. },
  195. area_id: {
  196. required: true,
  197. min: 1,
  198. checkarea: true
  199. },
  200. address: {
  201. required: true
  202. },
  203. mob_phone: {
  204. required: checkPhone,
  205. minlength: 11,
  206. maxlength: 11,
  207. digits: true
  208. },
  209. tel_phone: {
  210. required: checkPhone,
  211. minlength: 6,
  212. maxlength: 20
  213. }
  214. },
  215. messages: {
  216. true_name: {
  217. required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_input_receiver}'
  218. },
  219. area_id: {
  220. required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_choose_area}',
  221. min: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_choose_area}',
  222. checkarea: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_choose_area}'
  223. },
  224. address: {
  225. required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_input_address}'
  226. },
  227. mob_phone: {
  228. required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_telphoneormobile}',
  229. minlength: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_mobile_num_error}',
  230. maxlength: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_mobile_num_error}',
  231. digits: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_mobile_num_error}'
  232. },
  233. tel_phone: {
  234. required: '<i class="iconfont">&#xe64c;</i>{$Think.lang.cart_step1_telphoneormobile}',
  235. minlength: '<i class="iconfont">&#xe64c;</i>',
  236. maxlength: '<i class="iconfont">&#xe64c;</i>'
  237. }
  238. },
  239. groups: {
  240. phone: 'mob_phone tel_phone'
  241. }
  242. });
  243. });
  244. function checkPhone() {
  245. return ($('input[name="mob_phone"]').val() == '' && $('input[name="tel_phone"]').val() == '');
  246. }
  247. function submitAddAddr() {
  248. if ($('#addr_form').valid()) {
  249. $('#buy_city_id').val($('#region').find('select').eq(1).val());
  250. $('#city_id').val($('#region').find('select').eq(1).val());
  251. if(isNaN($('#region').find('select').eq(1).val())){
  252. layer.msg('{$Think.lang.location_area_last_level}');return;
  253. }
  254. var datas = $('#addr_form').serialize();
  255. $.post("{:url('Buy/add_addr')}", datas, function(data) {
  256. if (data.state) {
  257. var true_name = $.trim($("#true_name").val());
  258. var tel_phone = $.trim($("#tel_phone").val());
  259. var mob_phone = $.trim($("#mob_phone").val());
  260. var area_info = $.trim($("#area_info").val());
  261. var address = $.trim($("#address").val());
  262. var cityerror = '';
  263. showShippingPrice($('#city_id').val(), $('#area_id').val());
  264. showChainList($('#area_id').val())
  265. hideAddrList(data.addr_id, true_name, area_info + '&nbsp;&nbsp;' + address, (mob_phone != '' ? mob_phone : tel_phone),cityerror);
  266. } else {
  267. layer.msg(data.msg);
  268. }
  269. }, 'json');
  270. } else {
  271. return false;
  272. }
  273. }
  274. </script>