lists.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="SHOP_CSS/delivery_lists.css"/>
  4. <style>
  5. .table-tab .layui-tab-content {padding-top: 0;}
  6. .layui-layer-content {line-height: 30px;}
  7. .layui-layout-admin.admin-style-2 .layui-form-item .layui-input-inline{background-color: #fff;}
  8. .layui-layout-admin.admin-style-2 .layui-table-cell{height: 32px;line-height: 32px;}
  9. </style>
  10. {/block}
  11. {block name="main"}
  12. <!-- 筛选 -->
  13. <div class="screen layui-collapse" lay-filter="selection_panel">
  14. <div class="layui-colla-item">
  15. <form class="layui-colla-content layui-form layui-show" lay-filter="order_list">
  16. <div class="layui-form-item">
  17. <div class="layui-inline">
  18. <label class="layui-form-label">搜索方式</label>
  19. <div class="layui-input-inline">
  20. <select name="order_label" >
  21. {foreach $order_label_list as $k => $label_val}
  22. <option value="{$k}">{$label_val}</option>
  23. {/foreach}
  24. </select>
  25. </div>
  26. <div class="layui-input-inline">
  27. <input type="text" name="search" autocomplete="off" class="layui-input" />
  28. </div>
  29. </div>
  30. </div>
  31. <div class="layui-form-item">
  32. <div class="layui-inline">
  33. <label class="layui-form-label">下单时间</label>
  34. <div class="layui-input-inline">
  35. <input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
  36. <i class=" iconrili iconfont calendar"></i>
  37. </div>
  38. <div class="layui-form-mid">-</div>
  39. <div class="layui-input-inline">
  40. <input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
  41. <i class=" iconrili iconfont calendar"></i>
  42. </div>
  43. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
  44. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
  45. </div>
  46. </div>
  47. <div class="layui-form-item">
  48. <div class="layui-inline">
  49. <label class="layui-form-label">订单来源</label>
  50. <div class="layui-input-inline">
  51. <select name="order_from">
  52. <option value="">全部</option>
  53. {foreach $order_from_list as $order_from_k => $order_from_v}
  54. <option value="{$order_from_k}">{$order_from_v['name']}</option>
  55. {/foreach}
  56. </select>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="form-row">
  61. <button class="layui-btn" id="btn_search" lay-submit lay-filter="btn_search">筛选</button>
  62. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  63. </div>
  64. </form>
  65. </div>
  66. </div>
  67. <div class="layui-tab table-tab" lay-filter="order_tab">
  68. <div class="layui-tab-content">
  69. <div class="order-operation" style="display: none">
  70. <div class="layui-form order-operation-btn all-selected-checkbox">
  71. <div class="order-operation-all-btn">
  72. <input type="checkbox" name="" lay-skin="primary" lay-filter="allCheckbox">
  73. <input type="hidden" name="allOrderId">
  74. </div>
  75. <div class="btn-box">
  76. <span class="btn-deliver">批量发货</span>
  77. <span class="btn-dispatch-bill">打印发货单</span>
  78. {if addon_is_exit('electronicsheet',$user_info.site_id) == 1}
  79. <span class="btn-express-sheet">打印电子面单</span>
  80. {/if}
  81. </div>
  82. </div>
  83. </div>
  84. <!-- 列表 -->
  85. <div id="delivery_list"></div>
  86. </div>
  87. </div>
  88. <div class="order-operation" style="display: none">
  89. <div class="layui-form order-operation-btn all-selected-checkbox">
  90. <div class="order-operation-all-btn">
  91. <input type="checkbox" name="" lay-skin="primary" lay-filter="allCheckbox">
  92. <input type="hidden" name="allOrderId">
  93. </div>
  94. <div class="btn-box">
  95. <span class="btn-deliver">批量发货</span>
  96. <span class="btn-dispatch-bill">打印发货单</span>
  97. {if addon_is_exit('electronicsheet',$user_info.site_id) == 1}
  98. <span class="btn-express-sheet">打印电子面单</span>
  99. {/if}
  100. </div>
  101. </div>
  102. <div id="delivery_page"></div>
  103. </div>
  104. <div id="order_operation"></div>
  105. {/block}
  106. {block name="script"}
  107. <script src="SHOP_JS/deliver_lists.js"></script>
  108. <script src="SHOP_JS/lodop_funcs.js"></script>
  109. {include file="order/order_common_action" /}
  110. <!-- 修改订单收货地址 -->
  111. {include file="order/order_action" /}
  112. <!-- 发货 -->
  113. {include file="order/order_delivery_action" /}
  114. <!-- 外卖发货 -->
  115. {include file="localorder/local_order_delivery_action" /}
  116. <!--打印相关-->
  117. {include file="electronicsheet/print_html" /}
  118. <script>
  119. var laypage,element, form, hash_url;
  120. var is_refresh = false;
  121. var order_type_status_json = [];
  122. var orderDataAll = [];
  123. /**
  124. *通过hash获取页数
  125. */
  126. function getHashPage(){
  127. var page = 1;
  128. var hash = location.hash;
  129. var hash_arr = hash.split("&");
  130. $.each(hash_arr,function(index, itemobj){
  131. var item_arr = itemobj.split("=");
  132. if(item_arr.length == 2){
  133. if(item_arr[0].indexOf("page") != "-1"){
  134. page = item_arr[1];
  135. }
  136. }
  137. });
  138. return page;
  139. }
  140. //从hash中获取数据
  141. function getHashData(){
  142. var hash = ns.urlReplace(location.hash);
  143. var data= [];
  144. var hash_arr = hash.split("&");
  145. var form_json = {
  146. "end_time" : "",
  147. "order_from" : "",
  148. "order_label" : $("select[name=order_label]").val(),
  149. "order_name" : "",
  150. "order_status" : "",
  151. // "promotion_type" : "",
  152. "pay_type" : "",
  153. "search" : "",
  154. "start_time" : "",
  155. "order_type" : 'all',
  156. "page_size":'',
  157. "page" : "",
  158. };
  159. if(hash_arr.length > 0){
  160. // page = hash_arr[0].replace('#!page=', '');
  161. $.each(hash_arr,function(index, itemobj){
  162. var item_arr = itemobj.split("=");
  163. if(item_arr.length == 2){
  164. $.each(form_json,function(key, form_val){
  165. if(item_arr[0].indexOf(key) != "-1"){
  166. form_json[key] = item_arr[1];
  167. }
  168. })
  169. }
  170. })
  171. }
  172. resetOrderStatus(form_json.order_type, 2);
  173. form.val("order_list", form_json);
  174. setOrderStatusTab(form_json.order_status);
  175. return form_json;
  176. }
  177. /**
  178. * 获取哈希值order_type
  179. */
  180. function getHashOrderType(){
  181. var hash = ns.urlReplace(location.hash);
  182. var hash_arr = hash.split("&");
  183. var order_type = "all";
  184. if(hash_arr.length > 0){
  185. // page = hash_arr[0].replace('#!page=', '');
  186. $.each(hash_arr,function(index, itemobj){
  187. var item_arr = itemobj.split("=");
  188. if(item_arr.length == 2){
  189. if(item_arr[0].indexOf("order_type") != "-1") {
  190. order_type = item_arr[1];
  191. }
  192. }
  193. })
  194. }
  195. return order_type;
  196. }
  197. layui.use(['laypage','laydate','form', 'element'], function(){
  198. form = layui.form;
  199. laypage = layui.laypage;
  200. element = layui.element;
  201. var laydate = layui.laydate;
  202. form.render();
  203. //渲染时间
  204. laydate.render({
  205. elem: '#start_time',
  206. type: 'datetime',
  207. change: function(value, date, endDate){
  208. $(".date-picker-btn").removeClass("selected");
  209. }
  210. });
  211. laydate.render({
  212. elem: '#end_time',
  213. type: 'datetime',
  214. change: function(value, date, endDate){
  215. $(".date-picker-btn").removeClass("selected");
  216. }
  217. });
  218. //监听筛选事件
  219. form.on('submit(btn_search)', function(data){
  220. is_refresh = true;
  221. data.field.page = 1;
  222. resetOrderStatus(data.field.order_type, 2);
  223. setHashOrderList(data.field);
  224. return false;
  225. });
  226. //批量导出
  227. form.on('submit(batch_export)', function(data){
  228. data.field.order_type = 1;
  229. data.field.order_status = 1;
  230. location.href = ns.url("shop/order/exportOrderGoods",data.field);
  231. return false;
  232. });
  233. //订单类型
  234. form.on('select(order_type)', function(data){
  235. resetOrderStatus(data.value, 1);
  236. return false;
  237. });
  238. //监听Tab切换,以改变地址hash值
  239. element.on('tab(order_tab)', function(){
  240. var status = this.getAttribute('lay-id');
  241. form.val("delivery_list", {"order_status":status});
  242. var hash_data = getHashList();
  243. hash_data.order_status = status;
  244. hash_data.page = 1;
  245. setHashOrderList(hash_data);
  246. });
  247. getHashData();
  248. getOrderList();//筛选
  249. });
  250. function setOrderStatusTab(order_status){
  251. $(".layui-tab-title li").removeClass("layui-this");
  252. $(".layui-tab-title li").each(function(){
  253. var status = $(this).attr("lay-id");
  254. if(status == order_status){
  255. $(this).addClass("layui-this")
  256. }
  257. });
  258. }
  259. //重置状态tab 选项卡
  260. function resetOrderStatus(order_type, is_tab){
  261. var hash_order_type = getHashOrderType();
  262. if(hash_order_type != order_type || is_refresh == false){
  263. if(is_tab != 1 || is_refresh == false) {
  264. $(".layui-tab-title li").not(':first').remove();
  265. $(".layui-tab-title li").find(":first").addClass("layui-this");
  266. }
  267. if(is_tab != 2 || is_refresh == false){
  268. $("select[name=order_status] option").not(':first').remove();
  269. }
  270. var status_item = [];
  271. $.each(status_item,function(index, itemobj){
  272. if(is_tab != 1 || is_refresh == false) {
  273. $(".layui-tab-title").append('<li lay-id="' + index + '">' + itemobj + '</li>');
  274. }
  275. if(is_tab != 2 || is_refresh == false) {
  276. $("select[name=order_status]").append('<option value="' + index + '">' + itemobj + '</option>');
  277. }
  278. });
  279. form.render('select');
  280. }
  281. }
  282. //哈希值 订单数据
  283. function setHashOrderList(data){
  284. var hash = "";
  285. $.each(data,function(index, itemobj){
  286. if(itemobj != "" && itemobj != "all"){
  287. if(hash == ""){
  288. hash += "#!"+index +"="+itemobj;
  289. }else{
  290. hash += "&"+index +"="+itemobj;
  291. }
  292. }
  293. });
  294. // window.location.href = hash;
  295. hash_url = hash;
  296. location.hash = hash;
  297. getOrderList();
  298. }
  299. function getHashList(){
  300. var hash = ns.urlReplace(location.hash);
  301. var data= [];
  302. var hash_arr = hash.split("&");
  303. var form_json = {
  304. "end_time" : "",
  305. "order_from" : "",
  306. "order_label" : $("select[name=order_label]").val(),
  307. "order_name" : "",
  308. "order_status" : "",
  309. // "promotion_type" : "",
  310. "pay_type" : "",
  311. "search" : "",
  312. "start_time" : "",
  313. "order_type" : 'all',
  314. 'page_size':'',
  315. "page" : "",
  316. };
  317. if(hash_arr.length > 0){
  318. // page = hash_arr[0].replace('#!page=', '');
  319. $.each(hash_arr,function(index, itemobj){
  320. var item_arr = itemobj.split("=");
  321. if(item_arr.length == 2){
  322. $.each(form_json,function(key, form_val){
  323. if(item_arr[0].indexOf(key) != "-1"){
  324. form_json[key] = item_arr[1];
  325. }
  326. })
  327. }
  328. })
  329. }
  330. return form_json;
  331. }
  332. var laypage_util;
  333. var delivery = new Delivery();
  334. function getOrderList(){
  335. var url = ns.url("shop/delivery/lists", ns.urlReplace(location.hash.replace('#!', '')));
  336. $.ajax({
  337. type : 'get',
  338. dataType: 'json',
  339. url :url,
  340. success : function(res){
  341. if(res.code == 0){
  342. setOrderInfo(res.data.list);
  343. delivery.setData(res.data);
  344. $("#delivery_list").html(delivery.fetch());
  345. form.render();
  346. $(".order-operation").show();
  347. //批量选择
  348. form.on('checkbox(allCheckbox)', function(data){
  349. $(".sub-selected-checkbox input").prop("checked",data.elem.checked);
  350. $(".all-selected-checkbox input").prop("checked",data.elem.checked);
  351. form.render("checkbox");
  352. getOrderId();
  353. });
  354. //全选选择
  355. form.on('checkbox(subCheckbox)', function(data){
  356. var subLen = $(".sub-selected-checkbox input:checked").length;
  357. $(".all-selected-checkbox input").prop("checked",false);
  358. if (subLen == 10){
  359. $(".all-selected-checkbox input").prop("checked",true);
  360. }
  361. form.render("checkbox");
  362. getOrderId();
  363. });
  364. //获取选中的id
  365. function getOrderId(){
  366. var subLen = $(".sub-selected-checkbox input:checked").length,
  367. lists = $(".sub-selected-checkbox input:checked");
  368. orderDataAll = [];
  369. lists.each(function(index,item){
  370. orderDataAll.push(JSON.parse($(item).parents(".sub-selected-checkbox").attr("data-json")));
  371. });
  372. }
  373. laypage_util = new Page({
  374. elem: 'delivery_page',
  375. count: res.data.count,
  376. curr: getHashPage(),
  377. limit:getHashData()['page_size'] || 10,
  378. callback: function(obj){
  379. var hash_data = getHashData();
  380. hash_data.page = obj.curr;
  381. hash_data.page_size = obj.limit;
  382. setHashOrderList(hash_data);
  383. }
  384. });
  385. }else{
  386. layer.msg(res.message);
  387. }
  388. }
  389. });
  390. }
  391. /**
  392. * 七天时间
  393. */
  394. function datePick(date_num,event_obj){
  395. $(".date-picker-btn").removeClass("selected");
  396. $(event_obj).addClass('selected');
  397. // alert(new Date().format("yyyy-MM-dd hh:mm"));
  398. var now_date = new Date();
  399. Date.prototype.Format = function (fmt,date_num) { //author: meizz
  400. this.setDate(this.getDate()-date_num);
  401. var o = {
  402. "M+": this.getMonth() + 1, //月份
  403. "d+": this.getDate(), //日
  404. "H+": this.getHours(), //小时
  405. "m+": this.getMinutes(), //分
  406. "s+": this.getSeconds(), //秒
  407. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  408. "S": this.getMilliseconds() //毫秒
  409. };
  410. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  411. for (var k in o)
  412. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  413. return fmt;
  414. };
  415. // var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
  416. var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
  417. var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
  418. $("input[name=start_time]").val(before_time,0);
  419. $("input[name=end_time]").val(now_time,date_num-1);
  420. }
  421. //批量发货
  422. $("body").on("click",".order-operation .btn-deliver", function () {
  423. var subLen = $(".sub-selected-checkbox input:checked").length;
  424. if (subLen <=0 ) {
  425. layer.msg("请选择订单");
  426. return false;
  427. }
  428. orderBatchDelivery(orderDataAll);
  429. });
  430. /**
  431. * 批量打印发货单
  432. */
  433. var LODOP; //声明为全局变量
  434. function PrintOneURL(url){
  435. LODOP=getLodop();
  436. if(LODOP) {
  437. LODOP.PRINT_INIT("发货单打印");
  438. LODOP.ADD_PRINT_TBURL(5, 10, "770", "95%", url);
  439. LODOP.SET_PRINT_STYLEA(0, "HOrient", 3);
  440. LODOP.SET_PRINT_STYLEA(0, "VOrient", 3);
  441. LODOP.ADD_PRINT_TEXT(590, 680, 130, 22, "页号:第#页/共&页");
  442. LODOP.SET_PRINT_STYLEA(0, "ItemType", 2);
  443. LODOP.SET_PRINT_STYLEA(0, "Horient", 1);
  444. LODOP.SET_PRINT_STYLEA(0, "Vorient", 1);
  445. LODOP.SET_SHOW_MODE("MESSAGE_GETING_URL", ""); //该语句隐藏进度条或修改提示信息
  446. // LODOP.SET_SHOW_MODE("MESSAGE_PARSING_URL","");//该语句隐藏进度条或修改提示信息
  447. }
  448. }
  449. function dispatchBill(url) {
  450. PrintOneURL(url);
  451. // LODOP.PREVIEW(); //预览
  452. LODOP.PRINT(); //直接打印
  453. }
  454. $("body").on("click",".order-operation .btn-dispatch-bill", function () {
  455. var subLen = $(".sub-selected-checkbox input:checked").length;
  456. if (subLen <=0 ) {
  457. layer.msg("请选择订单");
  458. return false;
  459. }
  460. for (var i = 0; i < orderDataAll.length; i++){
  461. var url = ns.url("shop/printer/batchprintorder",{order_id: orderDataAll[i].order_id});
  462. dispatchBill(url)
  463. }
  464. });
  465. $("body").on("click",".order-operation .btn-express-sheet", function () {
  466. var subLen = $(".sub-selected-checkbox input:checked").length;
  467. if (subLen <=0 ) {
  468. layer.msg("请选择订单");
  469. return false;
  470. }
  471. var order_id_list = [];
  472. for (var i = 0; i < orderDataAll.length; i++){
  473. order_id_list.push(orderDataAll[i].order_id);
  474. }
  475. printElectronicsheet(order_id_list);
  476. });
  477. </script>
  478. {/block}