goodsOrder.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. <script src="/js/mobiscroll/mobiscroll.core-2.5.2.js?version=<?= $this->context->version ?>" type="text/javascript"></script>
  2. <script src="/js/mobiscroll/mobiscroll.core-2.5.2-zh.js?version=<?= $this->context->version ?>" type="text/javascript"></script>
  3. <link href="/css/mobiscroll/mobiscroll.core-2.5.2.css?version=<?= $this->context->version ?>" rel="stylesheet" type="text/css" />
  4. <link href="/css/mobiscroll/mobiscroll.animation-2.5.2.css?version=<?= $this->context->version ?>" rel="stylesheet" type="text/css" />
  5. <script src="/js/mobiscroll/mobiscroll.datetime-2.5.1.js?version=<?= $this->context->version ?>" type="text/javascript"></script>
  6. <script src="/js/mobiscroll/mobiscroll.datetime-2.5.1-zh.js?version=<?= $this->context->version ?>" type="text/javascript"></script>
  7. <!-- S 可根据自己喜好引入样式风格文件 -->
  8. <script src="/js/mobiscroll/mobiscroll.android-ics-2.5.2.js?version=<?= $this->context->version ?>" type="text/javascript"></script>
  9. <link href="/css/mobiscroll/mobiscroll.android-ics-2.5.2.css?version=<?= $this->context->version ?>" rel="stylesheet" type="text/css" />
  10. <!-- E 可根据自己喜好引入样式风格文件 -->
  11. <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&libraries=geometry&key=OFWBZ-2NTHP-EHNDD-LKWQY-GANM7-PXBJH"></script>
  12. <style>
  13. .p-style{
  14. margin-bottom:5px;
  15. }
  16. .input{
  17. width:100%;padding:4px 0 2px 0;
  18. }
  19. </style>
  20. <form action="/xh/mobile/createOrder" method="POST" name="orderContent">
  21. <div class="lay-til J_MenuBody" id="J_SubHead" style="top: 45px;">
  22. <div class="header-con">
  23. <i class="arrow-back" onclick="history.go(-1)"><img src="/images/pay_03.png" alt=""></i>
  24. <h1>确认订单</h1>
  25. </div>
  26. </div>
  27. <div class="lay-body lay-body2" id="J_MainBody">
  28. <div class="order">
  29. <div class="order-addr">
  30. <p class="p-style">收花人姓名:</p>
  31. <p class="p-style"><input type="text" class="input" name="receiveUserName"><span style="color:red;"></span></p>
  32. <p class="p-style">收花人电话:</p>
  33. <p class="p-style"><input type="number" class="input" name="receiveMobile"><span style="color:red;"></span></p>
  34. <p class="p-style">收花人地址:</p>
  35. <div id="citySelect" class="p-style">
  36. <select name="province" class="prov" style="width:80px;display:inline-block;height:30px;border-radius:4px;"><option value="<?= $merchant['shopProvince'] ?>"><?= $merchant['shopProvince'] ?></option></select>
  37. <select name="city" class="city" style="width:90px;display:inline-block;height:30px;border-radius:4px;"><option value="<?= $merchant['shopCity'] ?>"><?= $merchant['shopCity'] ?></option></select>
  38. </div>
  39. <p class="p-style">
  40. <input class="input" isSelect="false" oninput="getArea(this.value);" onpropertychange="getArea(this.value)" name="receiveAddress" placeholder=" 小区、大厦或县乡名,如金尚小区" type="text"><span style="color:red;"></span></p>
  41. <div style="z-index: 999; background: rgb(243, 243, 243);" id="infoDiv">
  42. <div style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; color: rgb(51, 51, 51); line-height: 20px; font-family: 'Tahoma 宋体 Arial'; border: 0px none;"></div>
  43. </div>
  44. <p><input style="width:100%;padding:4px 0 2px 0;z-index:99" name="receiveFloor" placeholder=" 楼号或门牌号,如23楼1008室(选填)" type="text"><span style="color:red;"></span></p>
  45. </div>
  46. <div class="order-addr">
  47. <p class="p-style">订花人昵称:</p>
  48. <p class="p-style"><input placeholder="" class="input" readonly="readonly" type="text" value="<?= $user['userName'] ?>"><span style="color:red;"></span></p>
  49. <p class="p-style">订花人姓名:</p>
  50. <p class="p-style"><input placeholder="" class="input" name="bookName" type="text" value=""><span style="color:red;"></span></p>
  51. <p class="p-style">订花人电话:</p>
  52. <p class="p-style"><input type="number" class="input" name="bookMobile" value="<?= $user['mobile'] ?>"><span style="color:red;"></span></p>
  53. </div>
  54. <div class="order-addr">
  55. <p class="p-style">送达日期:</p>
  56. <p class="p-style"><input placeholder="" id="appDateTime" class="input" name="reachTime" type="text" value=""><span name="reachTimeMention" style="color:red;"></span></p>
  57. <div class="clearfix">
  58. <label class="fl" style="margin-right:20px"><input type="radio" name="reachPeriod" value="0" checked="checked" >上午</label>
  59. <label class="fl" style="margin-right:20px"><input type="radio" name="reachPeriod" value="1">下午</label>
  60. <label class="fl" style="margin-right:20px"><input type="radio" name="reachPeriod" value="2">晚上</label>
  61. </div>
  62. </div>
  63. <div class="order-card">
  64. <div class="clearfix" style="padding:8px 0 8px 0;">
  65. <label class="fl"><input type="radio" name="needCard" value="0" checked="checked" > 我不需要卡片</label>
  66. <label class="fl"><input type="radio" name="needCard" value="1"> 我要一张卡片</label>
  67. </div>
  68. <textarea id="cardContent" style="display:none;" name="blessing" class="txt" cols="30" rows="10" placeholder=" 请填写您想要写在卡片上的内容,不填写则默认为您寄出空白卡片。"></textarea>
  69. </div>
  70. <div class="order-addr">
  71. <p class="p-style">备注:</p>
  72. <textarea name="remark" class="txt" style="width: 100%;border: 1px solid #dfdfdf;font-size: 14px;" placeholder=" 选填"></textarea>
  73. </div>
  74. <div name="goodsInfoList">
  75. <?php foreach($goodsInfo as $key => $val){ ?>
  76. <div class="order-detail">
  77. <p>本单包含:</p>
  78. <div class="order-pro">
  79. <div class="pic"><img src="<?= Yii::$app->params['imgUrl'].$val['goods']['cover'] ?>"></div>
  80. <div class="txt">
  81. <p class="cn"><?= $val['goods']['goodsName'] ?></p>
  82. </div>
  83. <?php
  84. if(isset($val['goods']['subGoodsName'])){
  85. ?>
  86. <div class="txt">
  87. <p class="cn">选项:<?= $val['goods']['subGoodsName'] ?></p>
  88. </div>
  89. <?php
  90. }
  91. ?>
  92. <input type="hidden" name="goodsInfo[<?= $key ?>][goodsId]" value="<?= $val['goods']['id'] ?>" />
  93. <input type="hidden" name="goodsInfo[<?= $key ?>][num]" value="<?= $val['num'] ?>" />
  94. <input type="hidden" name="goodsInfo[<?= $key ?>][multiPriceId]" value="<?= $val['multiPriceId'] ?>" />
  95. <div class="price" id="itempircediv">
  96. <p class="cur-price" name="vipprice51114" style="transform-origin: 0px 0px 0px; opacity: 1; transform: scale(1, 1);">¥<?= $val['goods']['price'] ?></p>
  97. <p class="number">X <?= $val['num'] ?></p>
  98. </div>
  99. </div>
  100. </div>
  101. <?php } ?>
  102. </div>
  103. <div class="order-detail" name="sendCost" <?php if(count($goodsInfo) > 1){?>style="display:block;"<?php }else if(count($goodsInfo) == 1 && $goodsInfo[0]['goods']['isCharge'] == 0){ ?>style="display:none;"<?php } ?> >
  104. <p>本单包含:</p>
  105. <div class="order-pro">
  106. <div class="txt">
  107. <p class="cn">运费</p>
  108. <p class="cn">距离:<span name="twoPlaceDistance">0</span>公里</p>
  109. <p class="cn">运费说明:<span name="freightExplain" style="color:#7bb0b8">查看</span><span name="freightIntro" style="display:none;">5公里内免运费;</span></p>
  110. <p class="cn"><span name="freightIntro" style="display:none;">超过5公里每增加1公里运费2元哦~</span></p>
  111. </div>
  112. <div class="price" id="itempircediv">
  113. <p class="cur-price" name="vipprice51114" style="transform-origin: 0px 0px 0px; opacity: 1; transform: scale(1, 1);">¥<span name="sendCost">0</span></p>
  114. <p class="number">&nbsp;</p>
  115. <input type="hidden" name="isCharge" <?php if(count($goodsInfo) == 1 && $goodsInfo[0]['goods']['isCharge'] == 0){ ?> value="0" <?php }else{ ?> value="1" <?php } ?> />
  116. </div>
  117. </div>
  118. </div>
  119. <div class="choose-send clearfix"><label class="lab"><input type="checkbox" name="anonymity" value="1" style="top:8px;" class="in"> 匿名派送</label></div>
  120. <?php if(!empty($coupon)){ ?>
  121. <div class="order-addr">
  122. <p class="p-style">可用代金劵:</p>
  123. <div class="clearfix">
  124. <select name="selectCoupon" style="font-size:10.5pt;padding:2px 0;">
  125. <option id="0" value="0">请选择代金劵</option>
  126. <?php foreach($coupon as $couponKey => $couponVal){ ?>
  127. <option id="<?= $couponVal['id'] ?>" value="<?= $couponVal['amount'] ?>"><?= $couponVal['amount'] ?>元 (有效期至:<?= date("Y-m-d",$couponVal['deadline']) ?>)</option>
  128. <?php } ?>
  129. </select>
  130. </div>
  131. </div>
  132. <?php } ?>
  133. </div>
  134. </form>
  135. </div>
  136. <footer class="lay-foot J_MenuBody">
  137. <p class="fl">总计:¥<span id="totalFee" name="totalFee"><?= $totalPrice ?></span></p>
  138. <?php if($extend['integral'] == 1 && $userAsset['memberLevel'] > 0){ ?>
  139. <div class="fl" style="color:black;">
  140. <p class="events fl event-free" id="discountFeeP" style="color:black;"><?= $userAsset['memberLevel'] ?>级会员<?= $discount ?>折:¥<span id="disTotalFee" name="disTotalFee"><?= $discountPrice ?></span></p>
  141. </div>
  142. <?php } ?>
  143. <button type="button" class="foot-btn" name="confirmOrder" onclick="submitForm('click')">&nbsp;&nbsp;&nbsp;&nbsp;确&nbsp;&nbsp;&nbsp;定&nbsp;&nbsp;&nbsp;&nbsp;</button>
  144. </footer>
  145. </form>
  146. </div>
  147. <script type="text/javascript" src="/js/city/jquery.cityselect.js?version=<?= $this->context->version ?>"></script>
  148. <script>
  149. var finalFreight = 0;//最终运费
  150. var couponAmout = 0;//代金劵金额
  151. var totalPrice = <?= $totalPrice ?>;//初始总价
  152. var discountPrice = <?= $discountPrice ?>;//打折后的价格
  153. var totalFee = 0;//最后的总价
  154. var disTotalFee = 0;//最后的折扣价
  155. //用于表单提交时的数据
  156. var receiveLat = '';//收件人纬度
  157. var receiveLong = '';//收件人经度
  158. var receivePrecision = '';
  159. var sendDistance = 0;
  160. var receiveFullAddress = '';
  161. var receiveUserName = $("input[name=receiveUserName]");
  162. var receiveMobile = $("input[name=receiveMobile]");
  163. var receiveAddress = $("input[name=receiveAddress]");
  164. var bookMobile = $("input[name=bookMobile]");
  165. var bookName = $("input[name=bookName]");
  166. var redirectUrl;
  167. var orderObjCheck = [receiveUserName,receiveMobile,receiveAddress,bookMobile,bookName];
  168. submitForm();
  169. function submitForm()
  170. {
  171. setOrderStats(receiveMobile,'请填写手机号',function(val,msg){
  172. var info = [false,msg];
  173. val = $.trim(val);
  174. if(val.length <= 0){
  175. info[1] = '请填写手机号';
  176. }else if((/^1[0-9]\d{9}$/.test(val)) == false){
  177. info[1] = '手机号填写不正确';
  178. }else{
  179. info[0] = true;
  180. }
  181. return info;
  182. });
  183. setOrderStats(bookMobile,'请填写手机号',function(val,msg){
  184. var info = [false,msg];
  185. val = $.trim(val);
  186. if(val.length <= 0){
  187. info[1] = '手机号不为空';
  188. }else if((/^1[0-9]\d{9}$/.test(val)) == false){
  189. info[1] = '手机号填写不正确';
  190. }else{
  191. info[0] = true;
  192. }
  193. return info;
  194. });
  195. setOrderStats(receiveUserName, '请填写姓名', function(val, mess){
  196. var info=[false, mess];
  197. if(val.length <= 0){
  198. info[1] = '请填写姓名';
  199. }else if(getLength(val) >=0 && getLength(val) <=20){
  200. info[0] = true;
  201. info[1] = '填写正确';
  202. }else{
  203. info[0] = false;
  204. }
  205. return info;
  206. });
  207. setOrderStats(bookName, '请填写姓名', function(val, mess){
  208. var info=[false, mess];
  209. if(val.length <= 0){
  210. info[1] = '请填写姓名';
  211. }else if(getLength(val) >=0 && getLength(val) <=20){
  212. info[0] = true;
  213. info[1] = '填写正确';
  214. }else{
  215. info[0] = false;
  216. }
  217. return info;
  218. });
  219. setOrderStats(receiveAddress, '请填写地址', function(val, mess){
  220. var info=[false, mess];
  221. if(val.length <= 0){
  222. info[1] = '地址不为空';
  223. }else if(getLength(val) >=0){
  224. info[0] = true;
  225. info[1] = '填写正确';
  226. }else{
  227. info[0] = false;
  228. }
  229. return info;
  230. });
  231. if(arguments[0] == 'click'){
  232. var orderSubmitStatus = true;
  233. for(var om=0;om<orderObjCheck.length;om++){
  234. var singleObj = orderObjCheck[om]
  235. if(singleObj.attr('orderInputStatus') == undefined){
  236. singleObj.blur();
  237. }
  238. if(singleObj.attr('orderInputStatus') == 'no'){
  239. orderSubmitStatus = false;
  240. }
  241. }
  242. if(receiveAddress.val().length <= 0){
  243. receiveAddress.next('span').html('请填写地址并选择');
  244. return;
  245. }
  246. if(receiveAddress.attr('isSelect') == 'false'){
  247. receiveAddress.next('span').html('请选择下面的地址,或重新搜索选择');
  248. return;
  249. }
  250. if($("#appDateTime").val().length <=0){
  251. $("span[name=reachTimeMention]").fadeIn().html('请填写送达日期');
  252. setTimeout(function(){
  253. $("span[name=reachTimeMention]").fadeOut("slow").html('');
  254. },3000);
  255. return;
  256. }
  257. if(orderSubmitStatus == false){
  258. return;
  259. }
  260. var receiveUserNameVal = receiveUserName.val();
  261. var receiveMobileVal = receiveMobile.val();
  262. var receiveAddressVal = receiveAddress.val();
  263. var receiveFloor = $(":input[name=receiveFloor]").val();//楼号、门牌
  264. var bookMobileVal = bookMobile.val();
  265. var bookNameVal = bookName.val();
  266. var reachTimeVal = $("#appDateTime").val();
  267. var needCardVal = $('input:radio[name="needCard"]:checked').val();
  268. var blessingVal = $("textarea[name=blessing]").val();
  269. var remarkVal = $("textarea[name=remark]").val();
  270. var anonymityVal = $(":input[name=anonymity]").prop("checked") == true ? 1 : 0;
  271. var isCharge = $(":input[name=isCharge]").val();
  272. var params = "receiveUserName="+receiveUserNameVal+"&receiveMobile="+receiveMobileVal+"&receiveAddress="+receiveAddressVal+"&receiveFloor="+receiveFloor+"&bookMobile="+bookMobileVal+"&bookName="+bookNameVal+"&reachTime="+reachTimeVal+"&needCard="+needCardVal+"&blessing="+blessingVal+"&remark="+remarkVal+"&anonymity="+anonymityVal;
  273. $("div[name=goodsInfoList]").find("input").each(function(index){
  274. params += '&'+$(this).attr('name')+'='+$(this).val();
  275. });
  276. var reachPeriod =$(':radio[name=reachPeriod]:checked').val();
  277. params += "&_csrf=<?= Yii::$app->request->csrfToken ?>&reachPeriod="+reachPeriod+"&sourceType=<?= $sourceType ?>";
  278. var province = $("select[name=province]").find("option:selected").val();
  279. var city = $("select[name=city]").find("option:selected").val();
  280. var couponId = 0;
  281. if($("select[name=selectCoupon]").length > 0){
  282. couponId = $("select[name=selectCoupon]").find("option:selected").attr('id');
  283. }
  284. params += "&province="+province+"&city="+city+"&sendCost=0&isCharge="+isCharge+"&couponId="+couponId;
  285. params += "&receiveLat="+receiveLat+"&receiveLong="+receiveLong+"&sendDistance="+sendDistance+"&receiveFullAddress="+receiveFullAddress;
  286. if($("button[name=confirmOrder]").attr('submitStatus') == 'yes'){
  287. xhPopMsg('正在处理,稍候哦…',2000);
  288. return;
  289. }
  290. $("button[name=confirmOrder]").attr('submitStatus','yes');
  291. setTimeout(function(){
  292. $("button[name=confirmOrder]").attr('submitStatus','no');
  293. },5000);
  294. $.ajax({
  295. type:"POST",
  296. url:'/mobile/create-order?account=<?= $_GET['account'] ?>',
  297. dataType:'json',
  298. data:params,
  299. async:false,
  300. success:function(data){
  301. if(data.code == 'A0001'){
  302. xhPopMsg(data.msg);
  303. setTimeout(function(){
  304. window.location.href = '/mobile/choose-pay?couponId='+data.data.couponId+'&orderId='+data.data.orderId+'&account=<?= $this->context->merchant['id'] ?>';
  305. },1300);
  306. }else{
  307. xhPopMsg(data.msg,2000);
  308. }
  309. }
  310. });
  311. }
  312. }
  313. function setOrderStats(obj,mess,check)
  314. {
  315. obj.focus(function(){
  316. $(this).removeAttr('orderInputStatus');
  317. $(this).next('span').html('');
  318. });
  319. obj.blur(function(){
  320. var objVal = obj.val();
  321. var info = check(objVal,mess);
  322. if(info[0]){
  323. $(this).attr('orderInputStatus','yes');
  324. }else{
  325. $(this).attr('orderInputStatus','no');
  326. $(this).next('span').html(info[1]);
  327. }
  328. });
  329. }
  330. function goPay()
  331. {
  332. window.location.href = redirectUrl;
  333. }
  334. //是不是需要贺卡
  335. $(":input[name=needCard]").click(function(){
  336. if($(this).val() == 0){
  337. $("#cardContent").css('display','none');
  338. }else{
  339. $("#cardContent").css('display','block');
  340. }
  341. });
  342. //选择送达日期
  343. $(function () {
  344. var currYear = (new Date()).getFullYear();
  345. var minDate = new Date();
  346. var maxdate = new Date();
  347. maxdate.setDate(minDate.getDate()+60);//延后二个月
  348. var opt={};
  349. opt.date = {preset : 'date'};
  350. opt.datetime = {preset : 'datetime'};
  351. opt.time = {preset : 'time'};
  352. opt.default = {
  353. theme: 'android-ics light', //皮肤样式
  354. display: 'modal', //显示方式
  355. mode: 'scroller', //日期选择模式
  356. lang:'zh',
  357. minDate: minDate,
  358. maxDate: maxdate,
  359. startYear:currYear, //开始年份
  360. endYear:currYear//结束年份
  361. };
  362. var optDateTime = $.extend(opt['datetime'], opt['default']);
  363. $("#appDateTime").mobiscroll(optDateTime).date(optDateTime);
  364. });
  365. var citylocation,map,marker = null;
  366. var searchService = null;
  367. var spherical = null;
  368. $(window).load(function() {
  369. //geocoder = new qq.maps.Geocoder({
  370. //complete : function(result){
  371. //var fullAddress = result.detail.address;
  372. //}
  373. //});
  374. //调用Poi检索类
  375. searchService = new qq.maps.SearchService({
  376. complete: function(results) {
  377. //设置回调函数参数
  378. var pois = results.detail.pois;
  379. //console.log(results);
  380. if(pois == undefined ){
  381. $("#infoDiv div").html('');
  382. return;
  383. }
  384. var html = '<div style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; color: rgb(51, 51, 51); line-height: 20px; font-family:"Tahoma 宋体 Arial"; border: 0px none;">';
  385. html += '<div style="position: relative; height: 20px; line-height: 20px; font-size: 12px; color: rgb(153, 153, 153); padding: 0px 5px; background-color: rgb(243, 243, 243);">';
  386. html += '<span>搜索结果</span>';
  387. html += '</div>';
  388. html += '<ol style="list-style: none; padding: 0px; margin: 0px;">';
  389. for (var i = 0, l = pois.length; i < l; i++) {
  390. var poi = pois[i];
  391. (function(n) {
  392. var address = '';
  393. if(pois[n].address != undefined){//腾讯地图 搜索出来的地址,下方有解释地址,有可能为空的情况,如搜索 思明区
  394. address = pois[n].address;
  395. }
  396. var no = i+1;
  397. html += '<li onclick="getSearchArea(\''+pois[n].latLng+'\',\''+pois[n].name+'\',\''+address+'\')" style="margin: 2px 0; padding: 0 5px; cursor: pointer; zoom: 1;">';
  398. html += '<div style="float: left; display: inline; width: 20px; height: 20px; line-height: 20px; overflow: hidden; text-align: center;">'+no+'.</div>';
  399. html += '<div style="overflow: hidden; padding: 0 5px; zoom: 1;">';
  400. html += '<div style="color: #0059B3;">'+pois[n].name+'</div>';
  401. html += '<div>';
  402. html += '<div>';
  403. html += '<span style="color: #999999; font-size: 12px;">'+address+'</span>';
  404. html += '</div>';
  405. html += '<div>';
  406. html += '<span style="color: #999999; font-size: 12px;"> </span>';
  407. html += '</div>';
  408. html += '</div>';
  409. html += '</div>';
  410. html += '</li>';
  411. })(i);
  412. }
  413. html += '</ol>';
  414. html += '</div>';
  415. $("#infoDiv div").html(html);
  416. $("input[name=receiveAddress]").attr("isSelect","false");//还没有选择搜索出来的内容
  417. },
  418. error: function() {
  419. $("#infoDiv div").html('');
  420. $("input[name=receiveAddress]").attr("isSelect","false");//还没有选择搜索出来的内容
  421. }
  422. });
  423. });
  424. var spherical=null;
  425. //选择搜索的地址结果
  426. function getSearchArea()
  427. {
  428. var latLng = arguments[0];
  429. var area = arguments[1];
  430. receiveFullAddress = arguments[2];//微信的 完整的收货人地址
  431. $("input[name=receiveAddress]").val(area).attr("isSelect","true").next('span').html('');
  432. var arr = latLng.split(",");
  433. receiveLat = $.trim(arr[0]);//收件人纬度
  434. receiveLong = $.trim(arr[1]);//收件人经度
  435. $("#infoDiv div").html('');
  436. var merchantLocation = new qq.maps.LatLng(<?= $merchant['shopLat'] ?>, <?= $merchant['shopLong'] ?>);//花店位置
  437. var receiveLocation = new qq.maps.LatLng(receiveLat, receiveLong);
  438. var distance = qq.maps.geometry.spherical.computeDistanceBetween(merchantLocation, receiveLocation);
  439. distance = parseInt(distance);
  440. sendDistance = distance;//送货距离 米
  441. var firstDistance = <?= $freight['firstDistance'] ?>;//XX公里内
  442. var firstPrice = <?= $freight['firstPrice'] ?>;//运费都是XX元
  443. var nextDistance = <?= $freight['nextDistance'] ?>;//每增加XX公里
  444. var nextPrice = <?= $freight['nextPrice'] ?>;////增加XX元
  445. var twoPlaceDistance = distance*10000/1000/10000;//两地距离
  446. $("span[name=twoPlaceDistance]").html(twoPlaceDistance.toFixed(1));
  447. var totalFee = parseFloat($("#totalFee").text());
  448. var disTotalFee = parseFloat($("#disTotalFee").text());
  449. if(distance <= firstDistance){
  450. totalFee = calcAdd(totalFee,firstPrice);
  451. disTotalFee = calcAdd(disTotalFee,firstPrice);
  452. finalFreight = firstPrice;
  453. $("span[name=sendCost]").html(firstPrice);
  454. }else{
  455. var price = firstPrice;
  456. var remain = distance - firstDistance;
  457. price += parseInt(remain*10000/nextDistance/10000)*nextPrice;
  458. //totalFee = calcAdd(totalFee,price);
  459. //disTotalFee = calcAdd(disTotalFee,price);
  460. finalFreight = price;
  461. $("span[name=sendCost]").html(price);
  462. }
  463. calcTotalPrice();
  464. }
  465. $("select[name=selectCoupon]").change(function(){
  466. couponAmout = $(this).find("option:selected").val();
  467. calcTotalPrice();
  468. });
  469. //计算总价格
  470. function calcTotalPrice()
  471. {
  472. var isCharge = $(":input[name=isCharge]").val();
  473. var tempFinalFreight = isCharge == 1 ? finalFreight : 0;
  474. var sonTotalFee = calcAdd(totalPrice, tempFinalFreight);
  475. var sonDisTotalFee = calcAdd(discountPrice, tempFinalFreight);
  476. totalFee = calcSub(sonTotalFee,couponAmout);
  477. disTotalFee = calcSub(sonDisTotalFee,couponAmout);
  478. $("#totalFee").html(totalFee);//原价变更
  479. $("#disTotalFee").html(disTotalFee);//折后价格变更
  480. }
  481. <?php if($this->context->isWeixin){ ?>
  482. wx.config({
  483. debug:false,
  484. appId: '<?= $this->context->signPackage['appId'] ?>',
  485. timestamp: <?= $this->context->signPackage['timestamp'] ?>,
  486. nonceStr: '<?= $this->context->signPackage['nonceStr'] ?>',
  487. signature: '<?= $this->context->signPackage['signature'] ?>',
  488. jsApiList: [
  489. 'checkJsApi',
  490. 'onMenuShareTimeline',
  491. 'onMenuShareAppMessage',
  492. 'onMenuShareQQ',
  493. 'onMenuShareWeibo',
  494. 'getLocation',
  495. ]
  496. });
  497. /*
  498. wx.ready(function () {
  499. //经纬度定位城市
  500. wx.getLocation({
  501. type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  502. success: function (res) {
  503. var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
  504. var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
  505. var speed = res.speed; // 速度,以米/每秒计
  506. var accuracy = res.accuracy; // 位置精度
  507. //用于表单提交时的数据
  508. //receiveLat = latitude;//收件人纬度
  509. //receiveLong = longitude;//收件人经度
  510. //receivePrecision = accuracy;//收件人精度
  511. //var latLng = new qq.maps.LatLng(latitude, longitude);
  512. //调用获取位置方法 反地址解析
  513. //geocoder.getAddress(latLng);
  514. }
  515. });
  516. });
  517. */
  518. <?php }?>
  519. //根据输入的去搜索
  520. function getArea()
  521. {
  522. var poiText = arguments[0];
  523. var city = $("select[name=city]").find("option:selected").val();
  524. if(city.length <= 0){
  525. return;
  526. }
  527. $("input[name=receiveAddress]").attr("isSelect","false");
  528. searchService.setLocation(city);
  529. searchService.search(poiText);
  530. searchService.setPageIndex(0);
  531. searchService.setPageCapacity(10);
  532. }
  533. $("#citySelect").citySelect({
  534. prov: '<?= $merchant['shopProvince'] ?>',
  535. city: '<?= $merchant['shopCity'] ?>',
  536. nodata: "none"
  537. });
  538. $("#citySelect .city").change(function(){
  539. $("input[name=receiveAddress]").val('').attr("isSelect","false");
  540. });
  541. $("span[name='freightExplain']").click(function(){
  542. $(this).css("display","none");
  543. $("span[name='freightIntro']").css('display','inline-block');
  544. });
  545. </script>