add.blade.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. @extends('layouts.base')
  2. @section('content')
  3. @section('title', trans('添加配送模板'))
  4. <div class="w1200 m0a">
  5. <div class="main rightlist">
  6. <form action="" method="post" class="form-horizontal form" enctype="multipart/form-data" onsubmit='return formcheck()'>
  7. <input type="hidden" name="id" value="{{$dispatch['id']}}" />
  8. <div class="panel panel-default">
  9. <div class="panel-body">
  10. <div class="form-group">
  11. <label class="col-xs-12 col-sm-3 col-md-2 control-label">排序</label>
  12. <div class="col-sm-9 col-xs-12">
  13. <input type="text" name="displayorder" class="form-control" value="{{$dispatch['displayorder']}}" />
  14. </div>
  15. </div>
  16. <div class="form-group">
  17. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span style="color:red">*</span>配送方式名称</label>
  18. <div class="col-sm-9 col-xs-12">
  19. <input type="text" id='dispatchname' name="dispatchname" class="form-control" value="{{$dispatch['dispatchname']}}" />
  20. </div>
  21. </div>
  22. <div class="form-group">
  23. <label class="col-xs-12 col-sm-3 col-md-2 control-label">是否为默认快递模板</label>
  24. <div class="col-sm-9 col-xs-12">
  25. <label class='radio-inline'>
  26. <input type='radio' name='isdefault' id="isdefault1" value='1' @if ($dispatch['isdefault'] == 1) checked @endif /> 是
  27. </label>
  28. <label class='radio-inline'>
  29. <input type='radio' name='isdefault' id="isdefault0" value='0' @if ($dispatch['isdefault'] == 0) checked @endif /> 否
  30. </label>
  31. </div>
  32. </div>
  33. <div class="form-group">
  34. <label class="col-xs-12 col-sm-3 col-md-2 control-label">计费方式</label>
  35. <div class="col-sm-9 col-xs-12">
  36. <label class='radio-inline'>
  37. <input type='radio' name='calculatetype' value='0' @if ($dispatch['calculatetype'] == 0) checked @endif /> 按重量计费
  38. </label>
  39. <label class='radio-inline'>
  40. <input type='radio' name='calculatetype' value='1' @if ($dispatch['calculatetype'] == 1) checked @endif /> 按件计费
  41. </label>
  42. </div>
  43. </div>
  44. <div class="form-group dispatch0" >
  45. <label class="col-xs-12 col-sm-3 col-md-2 control-label">配送区域</label>
  46. <div class="col-sm-9 col-xs-12">
  47. <table>
  48. <thead>
  49. <tr>
  50. <th style="height:40px;width:400px;">运送到</th>
  51. <th class="show_h" style="width:120px;">首重(克)</th>
  52. <th class="show_h" style="width:120px;">首费(元)</th>
  53. <th class="show_h" style="width:120px;">续重(克)</th>
  54. <th class="show_h" style="width:120px;">续费(元)</th>
  55. <th class="show_n" style="width:120px;">首件(个)</th>
  56. <th class="show_n" style="width:120px;">运费(元)</th>
  57. <th class="show_n" style="width:120px;">续件(个)</th>
  58. <th class="show_n" style="width:120px;">续费(元)</th>
  59. <th style="width:120px;">管理</th>
  60. </tr>
  61. </thead>
  62. <tbody id='tbody-areas'>
  63. <tr>
  64. <td style="padding:10px;">全国 [默认运费]</td>
  65. <td class="show_h text-center">
  66. <input type="number" value="{{empty($dispatch['firstweight']) ? 1000 : $dispatch['firstweight']}}" class="form-control" name="default_firstweight" style="width:100px;">
  67. </td>
  68. <td class="show_h text-center">
  69. <input type="text" value="{{$dispatch['firstprice']}}" class="form-control" name="default_firstprice" style="width:100px;">
  70. </td>
  71. <td class="show_h text-center">
  72. <input type="number" value="{{empty($dispatch['secondweight']) ? 1000 : $dispatch['secondweight']}}" class="form-control" name="default_secondweight" style="width:100px;">
  73. </td>
  74. <td class="show_h text-center">
  75. <input type="text" value="{{$dispatch['secondprice']}}" class="form-control" name="default_secondprice" style="width:100px;">
  76. </td>
  77. <td class="show_h"></td>
  78. <td class="show_n text-center">
  79. <input type="number" value="{{empty($dispatch['firstnum']) ? 1 : $dispatch['firstnum']}}" class="form-control" name="default_firstnum" style="width:100px;">
  80. </td>
  81. <td class="show_n text-center">
  82. <input type="text" value="{{$dispatch['firstnumprice']}}" class="form-control" name="default_firstnumprice" style="width:100px;">
  83. </td>
  84. <td class="show_n text-center">
  85. <input type="number" value="{{empty($dispatch['secondnum']) ? 1 : $dispatch['secondnum']}}" class="form-control" name="default_secondnum" style="width:100px;">
  86. </td>
  87. <td class="show_n text-center">
  88. <input type="text" value="{{$dispatch['secondnumprice']}}" class="form-control" name="default_secondnumprice" style="width:100px;">
  89. </td>
  90. <td class="show_n"></td>
  91. </tr>
  92. @foreach($dispatch_areas as $row)
  93. {!! $random = random(16) !!}
  94. <tr class='{{$random}}'>
  95. <td style="word-break:break-all;overflow:hidden;width:auto;padding:10px;line-height:22px;">
  96. <span class='cityshtml'>{{$row['citys']}}</span>
  97. <input type="hidden" name="random[]" value="{{$random}}" />
  98. <input type="hidden" class='citys' name="citys[{{$random}}]" value="{{$row['citys']}}" />
  99. <a href='javascript:;' onclick='editArea(this)' random="{{$random}}">编辑</a>
  100. </td>
  101. <td class="text-center weight">
  102. <input type="number" value="{{empty($dispatch['firstweight']) ? 1000 : $dispatch['firstweight']}}" class="form-control" name="firstweight[{{$random}}]" style="width:100px;">
  103. </td>
  104. <td class="text-center weight">
  105. <input type="text" value="{{$row['firstprice']}}" class="form-control" name="firstprice[{{$random}}]" style="width:100px;">
  106. </td>
  107. <td class="text-center weight">
  108. <input type="number" value="{{empty($dispatch['secondweight']) ? 1000 : $dispatch['secondweight']}}" class="form-control" name="secondweight[{{$random}}]" style="width:100px;">
  109. </td>
  110. <td class="text-center weight">
  111. <input type="text" value="{{$row['secondprice']}}" class="form-control" name="secondprice[{{$random}}]" style="width:100px;">
  112. </td>
  113. <td class="text-center fnum">
  114. <input type="number" value="{{empty($dispatch['firstnum']) ? 1 : $dispatch['firstnum']}}" class="form-control" name="firstnum[{{$random}}]" style="width:100px;">
  115. </td>
  116. <td class="text-center fnum">
  117. <input type="text" value="{{$row['firstnumprice']}}" class="form-control" name="firstnumprice[{{$random}}]" style="width:100px;">
  118. </td>
  119. <td class="text-center fnum">
  120. <input type="number" value="{{empty($dispatch['secondnum']) ? 1 : $dispatch['secondnum']}}" class="form-control" name="secondnum[{{$random}}]" style="width:100px;">
  121. </td>
  122. <td class="text-center fnum">
  123. <input type="text" value="{{$row['secondnumprice']}}" class="form-control" name="secondnumprice[{{$random}}]" style="width:100px;">
  124. </td>
  125. <td>
  126. <a href='javascript:;' onclick='$(this).parent().parent().remove()'><i class='fa fa-remove'></i>
  127. </td>
  128. </tr>
  129. @endforeach
  130. </tbody>
  131. </table>
  132. <a class='btn btn-default' href="javascript:;" onclick='addArea(this)'><span class="fa fa-plus"></span> 新增配送区域</a>
  133. <span class='help-block show_h' @if($dispatch['type'] == 1) style='display:block' @endif>根据重量来计算运费,当物品不足《首重重量》时,按照《首重费用》计算,超过部分按照《续重重量》和《续重费用》乘积来计算</span>
  134. <span class='help-block show_n' @if($dispatch['type'] == 0) style='display:block' @endif>根据件数来计算运费,当物品不足《首件数量》时,按照《首件费用》计算,超过部分按照《续件数量》和《续件费用》乘积来计算</span>
  135. </div>
  136. </div>
  137. </div>
  138. <div class="form-group">
  139. <label class="col-xs-12 col-sm-3 col-md-2 control-label">是否显示</label>
  140. <div class="col-sm-9 col-xs-12">
  141. <label class='radio-inline'>
  142. <input type='radio' name='enabled' value=1' @if($dispatch['enabled'] == 1) style='display:block' @endif/> 是
  143. </label>
  144. <label class='radio-inline'>
  145. <input type='radio' name='enabled' value=0' @if($dispatch['enabled'] == 0) style='display:block' @endif /> 否
  146. </label>
  147. </div>
  148. </div>
  149. <div class="form-group"></div>
  150. <div class="form-group">
  151. <label class="col-xs-12 col-sm-3 col-md-2 control-label"></label>
  152. <div class="col-sm-9 col-xs-12">
  153. <input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" onclick="return formcheck()" />
  154. <input type="hidden" name="token" value="{{$var['token']}}" />
  155. <input type="button" name="back" onclick='history.back()' style='margin-left:10px;' value="返回列表" class="btn btn-default col-lg-1" />
  156. </div>
  157. </div>
  158. </div>
  159. </form>
  160. </div>
  161. </div>
  162. <style type='text/css'>
  163. .province { float:left; position:relative;width:150px; height:35px; line-height:35px;border:1px solid #fff;}
  164. .province:hover { border:1px solid #f7e4a5;border-bottom:1px solid #fffec6; background:#fffec6;}
  165. .province .cityall { margin-top:10px;}
  166. .province ul { list-style: outside none none;position:absolute;padding:0;background:#fffec6;border:1px solid #f7e4a5;display:none;
  167. width:auto; width:300px; z-index:999999;left:-1px;top:32px;}
  168. .province ul li { float:left;min-width:60px;margin-left:20px; height:30px;line-height:30px; }
  169. </style>
  170. <div id="modal-areas" class="modal fade" tabindex="-1">
  171. <div class="modal-dialog" style='width: 920px;'>
  172. <div class="modal-content">
  173. <div class="modal-header"><button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button><h3>选择区域</h3></div>
  174. <div class="modal-body" style='height:280px;;' >
  175. @foreach($areas['address']['province'] as $value)
  176. @if ($value['@attributes']['name'] == '请选择省份')
  177. @continue
  178. @endif
  179. <div class='province'>
  180. <label class='checkbox-inline' style='margin-left:20px;'>
  181. <input type='checkbox' class='cityall' /> {{$value['@attributes']['name']}}
  182. <span class="citycount" style='color:#ff6600'></span>
  183. </label>
  184. @if (!empty($value['city']['0']))
  185. <ul>
  186. @foreach ($value['city'] as $c)
  187. <li>
  188. <label class='checkbox-inline'>
  189. <input type='checkbox' class='city' style='margin-top:8px;' city="{{$c['@attributes']['name']}}" /> {{$c['@attributes']['name']}}
  190. </label>
  191. </li>
  192. @endforeach
  193. </ul>
  194. @else
  195. <ul>
  196. <li>
  197. <label class='checkbox-inline'>
  198. <input type='checkbox' class='city' style='margin-top:8px;' city="{{$value['city']['@attributes']['name']}}" /> {{$value['city']['@attributes']['name']}}
  199. </label>
  200. </li>
  201. </ul>
  202. @endif
  203. </div>
  204. @endforeach
  205. </div>
  206. <div class="modal-footer">
  207. <a href="javascript:;" id='btnSubmitArea' class="btn btn-primary" data-dismiss="modal" aria-hidden="true">确定</a>
  208. <a href="javascript:;" class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</a>
  209. </div>
  210. </div>
  211. </div>
  212. </div>
  213. </div>
  214. <script language='javascript'>
  215. function show_type(flag){
  216. if (flag == 1) {
  217. $('.weight').css("display", "none");
  218. $('.fnum').css("display", "");
  219. $('.show_h').hide();
  220. $('.show_n').show();
  221. } else {
  222. $('.weight').css("display", "");
  223. $('.fnum').css("display", "none");
  224. $('.show_h').show();
  225. $('.show_n').hide();
  226. }
  227. }
  228. $(function(){
  229. show_type({{$dispatch['calculatetype']}});
  230. $(':radio[name=calculatetype]').click(function(){
  231. var val = $(this).val();
  232. show_type(val);
  233. })
  234. $(':radio[name=dispatchtype]').click(function(){
  235. var val = $(this).val();
  236. $(".dispatch0,.dispatch1").hide();
  237. $(".dispatch" + val ).show();
  238. })
  239. $("select[name=express]").change(function(){
  240. var obj = $(this);
  241. var sel = obj.find("option:selected");
  242. $(":input[name=expressname]").val(sel.data("name"));
  243. });
  244. $('.province').mouseover(function(){
  245. $(this).find('ul').show();
  246. }).mouseout(function(){
  247. $(this).find('ul').hide();
  248. });
  249. $('.cityall').click(function(){
  250. var checked = $(this).get(0).checked;
  251. var citys = $(this).parent().parent().find('.city');
  252. citys.each(function(){
  253. $(this).get(0).checked = checked;
  254. });
  255. var count = 0;
  256. if(checked){
  257. count = $(this).parent().parent().find('.city:checked').length;
  258. }
  259. if(count>0){
  260. $(this).next().html("(" + count + ")") ;
  261. }
  262. else{
  263. $(this).next().html("");
  264. }
  265. });
  266. $('.city').click(function(){
  267. var checked = $(this).get(0).checked;
  268. var cityall = $(this).parent().parent().parent().parent().find('.cityall');
  269. if(checked){
  270. cityall.get(0).checked = true;
  271. }
  272. var count = cityall.parent().parent().find('.city:checked').length;
  273. if(count>0){
  274. cityall.next().html("(" + count + ")") ;
  275. }
  276. else{
  277. cityall.next().html("");
  278. }
  279. });
  280. });
  281. function getCurrents(withOutRandom){
  282. var citys = "";
  283. $('.citys').each(function(){
  284. var crandom = $(this).prev().val();
  285. if(withOutRandom && crandom==withOutRandom){
  286. return true;
  287. }
  288. citys+=$(this).val();
  289. });
  290. return citys;
  291. }
  292. var current = '';
  293. function addArea(btn){
  294. $(btn).button('loading');
  295. $.ajax({
  296. url:"{php echo $this->createWebUrl('shop/dispatch',array('op'=>'tpl'))}",
  297. dataType:'json',
  298. success:function(json){
  299. $(btn).button('reset');
  300. current = json.random;
  301. $('#tbody-areas').append(json.html);
  302. $('#tbody-areas tr').last().hide();
  303. clearSelects();
  304. $("#modal-areas").modal();
  305. var currents = getCurrents();
  306. currents = currents.split(';');
  307. var citystrs = "";
  308. $('.city').each(function(){
  309. var parentdisabled =false;
  310. for(var i in currents){
  311. if(currents[i]!='' && currents[i]==$(this).attr('city')){
  312. $(this).attr('disabled',true);
  313. $(this).parent().parent().parent().parent().find('.cityall').attr('disabled',true);
  314. }
  315. }
  316. });
  317. $('#btnSubmitArea').unbind('click').click(function(){
  318. $('.city:checked').each(function(){
  319. citystrs+= $(this).attr('city') +";";
  320. });
  321. $('.' + current + ' .cityshtml').html(citystrs);
  322. $('.' + current + ' .citys').val(citystrs);
  323. $('#tbody-areas tr').last().show();
  324. })
  325. var calculatetype1 = $('input[name="calculatetype"]:checked ').val();
  326. show_type(calculatetype1);
  327. }
  328. })
  329. }
  330. function clearSelects(){
  331. $('.city').attr('checked',false).removeAttr('disabled');
  332. $('.cityall').attr('checked',false).removeAttr('disabled');
  333. $('.citycount').html('');
  334. }
  335. function editArea(btn){
  336. current = $(btn).attr('random');
  337. clearSelects();
  338. var old_citys = $(btn).prev().val().split(';');
  339. $('.city').each(function(){
  340. var parentcheck = false;
  341. for(var i in old_citys){
  342. if(old_citys[i]==$(this).attr('city')){
  343. parentcheck = true;
  344. $(this).get(0).checked = true;
  345. break;
  346. }
  347. }
  348. if(parentcheck){
  349. $(this).parent().parent().parent().parent().find('.cityall').get(0).checked= true;
  350. }
  351. });
  352. $("#modal-areas").modal();
  353. var citystrs = '';
  354. $('#btnSubmitArea').unbind('click').click(function(){
  355. $('.city:checked').each(function(){
  356. citystrs+= $(this).attr('city') +";";
  357. });
  358. $('.' + current + ' .cityshtml').html(citystrs);
  359. $('.' + current + ' .citys').val(citystrs);
  360. })
  361. var currents = getCurrents(current);
  362. currents = currents.split(';');
  363. var citys = "";
  364. $('.city').each(function(){
  365. var parentdisabled =false;
  366. for(var i in currents){
  367. if(currents[i]!='' && currents[i]==$(this).attr('city')){
  368. $(this).attr('disabled',true);
  369. $(this).parent().parent().parent().parent().find('.cityall').attr('disabled',true);
  370. }
  371. }
  372. });
  373. }
  374. function formcheck() {
  375. if ($("#dispatchname").isEmpty()) {
  376. Tip.focus("dispatchname", "请填写配送方式名称!", "top");
  377. return false;
  378. }
  379. return true;
  380. }
  381. </script>
  382. @endsection