lists.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="ADMIN_CSS/order_list.css"/>
  4. {/block}
  5. {block name="main"}
  6. <div class="ns-screen layui-collapse">
  7. <div class="layui-colla-item">
  8. <h2 class="layui-colla-title">筛选</h2>
  9. <form class="layui-colla-content layui-form layui-show" lay-filter="order_list">
  10. <div class="layui-form-item">
  11. <div class="layui-inline">
  12. <label class="layui-form-label">商品名称:</label>
  13. <div class="layui-input-inline">
  14. <input type="text" class="layui-input" name="sku_name" autocomplete="off">
  15. </div>
  16. </div>
  17. </div>
  18. <div class="layui-form-item">
  19. <div class="layui-inline">
  20. <label class="layui-form-label">下单时间:</label>
  21. <div class="layui-input-inline">
  22. <input type="text" class="layui-input" name="start_time" id="start_time" placeholder="开始时间" autocomplete="off" readonly>
  23. <i class="ns-calendar"></i>
  24. </div>
  25. <div class="layui-form-mid">-</div>
  26. <div class="layui-input-inline">
  27. <input type="text" class="layui-input" name="end_time" id="end_time" placeholder="结束时间" autocomplete="off" readonly>
  28. <i class="ns-calendar"></i>
  29. </div>
  30. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
  31. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
  32. </div>
  33. </div>
  34. <div class="layui-form-item">
  35. <div class="layui-inline">
  36. <label class="layui-form-label">退款状态:</label>
  37. <div class="layui-input-inline">
  38. <select name="refund_status" lay-filter="refund_status">
  39. <option value="">全部</option>
  40. {foreach $refund_status_list as $k => $status_val}
  41. <option value="{$status_val.status}">{$status_val.name}</option>
  42. {/foreach}
  43. </select>
  44. </div>
  45. </div>
  46. <div class="layui-inline">
  47. <label class="layui-form-label">退款方式:</label>
  48. <div class="layui-input-inline">
  49. <select name="refund_type" >
  50. <option value="">全部</option>
  51. {foreach $refund_type_list as $refund_type_k => $refund_type_v}
  52. <option value="{$refund_type_k}">{$refund_type_v}</option>
  53. {/foreach}
  54. </select>
  55. </div>
  56. </div>
  57. <div class="layui-inline">
  58. <label class="layui-form-label">发货状态:</label>
  59. <div class="layui-input-inline">
  60. <select name="delivery_status" lay-filter="delivery_status">
  61. <option value="">全部</option>
  62. <option value="0">待发货</option>
  63. <option value="1">已发货</option>
  64. </select>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="layui-form-item">
  69. <div class="layui-inline">
  70. <label class="layui-form-label">订单编号:</label>
  71. <div class="layui-input-inline">
  72. <input type="text" class="layui-input" name="order_no" autocomplete="off">
  73. </div>
  74. </div>
  75. <div class="layui-inline">
  76. <label class="layui-form-label">退款编号:</label>
  77. <div class="layui-input-inline">
  78. <input type="text" class="layui-input" name="refund_no" autocomplete="off">
  79. </div>
  80. </div>
  81. </div>
  82. <div class="ns-form-row">
  83. <button class="layui-btn ns-bg-color" lay-submit lay-filter="btn_search">筛选</button>
  84. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  85. <button class="layui-btn layui-btn-primary" lay-submit lay-filter="batch_export" >批量导出</button>
  86. </div>
  87. <input type="hidden" name="status" val=""/>
  88. <input type="hidden" name="page" val=""/>
  89. </form>
  90. </div>
  91. </div>
  92. <div class="layui-tab ns-table-tab" lay-filter="order_tab">
  93. <ul class="layui-tab-title">
  94. <li class="layui-this" lay-id="">全部订单</li>
  95. {foreach $refund_status_list as $k => $status_val}
  96. {if $status_val.status!=0}
  97. <li lay-id="{$status_val.status}">{$status_val.name}</li>
  98. {/if}
  99. {/foreach}
  100. </ul>
  101. <div class="layui-tab-content">
  102. <!-- 列表 -->
  103. <div id="order_list"></div>
  104. </div>
  105. </div>
  106. <div id="order_page"></div>
  107. <div id="order_operation"></div>
  108. {/block}
  109. {block name="script"}
  110. <script src="ADMIN_JS/refund_list.js"></script>
  111. <script>
  112. var laypage,element, form, hash_url;
  113. /**
  114. *通过hash获取页数
  115. */
  116. function getHashPage(){
  117. var page = 1;
  118. var hash = location.hash;
  119. var hash_arr = hash.split("&");
  120. $.each(hash_arr,function(index, itemobj){
  121. var item_arr = itemobj.split("=");
  122. if(item_arr.length == 2){
  123. if(item_arr[0].indexOf("page") != "-1"){
  124. page = item_arr[1];
  125. }
  126. }
  127. });
  128. return page;
  129. }
  130. //从hash中获取数据
  131. function getHashData(){
  132. var hash = ns.urlReplace(location.hash);
  133. var data= [];
  134. var hash_arr = hash.split("&");
  135. var form_json = {
  136. "end_time" : "",
  137. "sku_name" : "",
  138. "refund_type" : "",
  139. "order_no" : "",
  140. "delivery_status" : "",
  141. "refund_status" : "",
  142. "start_time" : "",
  143. "refund_no" : "",
  144. "delivery_no" : "",
  145. "refund_delivery_no" : "",
  146. "page" : ""
  147. };
  148. if(hash_arr.length > 0){
  149. // page = hash_arr[0].replace('#!page=', '');
  150. $.each(hash_arr,function(index, itemobj){
  151. var item_arr = itemobj.split("=");
  152. if(item_arr.length == 2){
  153. $.each(form_json,function(key, form_val){
  154. if(item_arr[0].indexOf(key) != "-1"){
  155. form_json[key] = item_arr[1];
  156. }
  157. })
  158. }
  159. })
  160. }
  161. form.val("order_list", form_json);
  162. setStatusTab(form_json.refund_status);
  163. return form_json;
  164. }
  165. layui.use(['laypage','laydate','form', 'element'], function(){
  166. form = layui.form;
  167. laypage = layui.laypage;
  168. element = layui.element;
  169. var laydate = layui.laydate;
  170. form.render();
  171. //渲染时间
  172. laydate.render({
  173. elem: '#start_time'
  174. ,type: 'datetime'
  175. ,change: function(value, date, endDate){
  176. $(".date-picker-btn").removeClass("selected");
  177. }
  178. });
  179. laydate.render({
  180. elem: '#end_time'
  181. ,type: 'datetime'
  182. ,change: function(value, date, endDate){
  183. $(".date-picker-btn").removeClass("selected");
  184. }
  185. });
  186. //监听筛选事件
  187. form.on('submit(btn_search)', function(data){
  188. data.field.page = 1;
  189. setHashOrderList(data.field);
  190. setStatusTab(data.field.refund_status);
  191. return false;
  192. });
  193. //批量导出
  194. form.on('submit(batch_export)', function(data){
  195. location.href = ns.url("admin/order/exportRefundOrder",data.field);
  196. return false;
  197. });
  198. //监听Tab切换,以改变地址hash值
  199. element.on('tab(order_tab)', function(){
  200. var status = this.getAttribute('lay-id');
  201. form.val("order_list", {"refund_status":status});
  202. var hash_data = getHashList();
  203. hash_data.refund_status = status;
  204. hash_data.page = 1;
  205. setHashOrderList(hash_data);
  206. });
  207. getOrderList();//筛选
  208. getHashData();
  209. });
  210. //哈希值 订单数据
  211. function setHashOrderList(data){
  212. var hash = "";
  213. $.each(data,function(index, itemobj){
  214. if(itemobj != ""){
  215. if(hash == ""){
  216. hash += "#!"+index +"="+itemobj;
  217. }else{
  218. hash += "&"+index +"="+itemobj;
  219. }
  220. }
  221. });
  222. // window.location.href = hash;
  223. hash_url = hash;
  224. location.hash = hash;
  225. getOrderList();
  226. }
  227. function getHashList(){
  228. var hash = ns.urlReplace(location.hash);
  229. var data= [];
  230. var hash_arr = hash.split("&");
  231. var form_json = {
  232. "end_time" : "",
  233. "sku_name" : "",
  234. "refund_type" : "",
  235. "order_no" : "",
  236. "delivery_status" : "",
  237. "refund_status" : "",
  238. "start_time" : "",
  239. "refund_no" : "",
  240. "delivery_no" : "",
  241. "refund_delivery_no" : "",
  242. "page" : ""
  243. };
  244. if(hash_arr.length > 0){
  245. // page = hash_arr[0].replace('#!page=', '');
  246. $.each(hash_arr,function(index, itemobj){
  247. var item_arr = itemobj.split("=");
  248. if(item_arr.length == 2){
  249. $.each(form_json,function(key, form_val){
  250. if(item_arr[0].indexOf(key) != "-1"){
  251. form_json[key] = item_arr[1];
  252. }
  253. })
  254. }
  255. })
  256. }
  257. return form_json;
  258. }
  259. function setStatusTab(refund_status){
  260. $(".layui-tab-title li").removeClass("layui-this");
  261. $(".layui-tab-title li").each(function(){
  262. var status = $(this).attr("lay-id");
  263. if(status == refund_status){
  264. $(this).addClass("layui-this")
  265. }
  266. });
  267. }
  268. var order = new Order();
  269. function getOrderList(){
  270. var url = ns.url("admin/refund/lists", ns.urlReplace(location.hash.replace('#!', '')));
  271. $.ajax({
  272. type : 'get',
  273. dataType: 'json',
  274. url :url,
  275. success : function(res){
  276. if(res.code == 0){
  277. order.setData(res.data);
  278. $("#order_list").html(order.fetch());
  279. //执行一个laypage实例
  280. laypage.render({
  281. elem: 'order_page',
  282. count: res.data.count,
  283. curr: getHashPage(),
  284. layout: ['count','prev', 'page', 'next'],
  285. // hash: 'page',
  286. jump: function(obj, first){
  287. //首次不执行
  288. if(!first){
  289. var hash_data = getHashData();
  290. hash_data.page = obj.curr;
  291. setHashOrderList(hash_data);
  292. // $("#btn_search").click();//筛选
  293. }
  294. }
  295. });
  296. }else{
  297. layer.msg(res.message);
  298. }
  299. }
  300. });
  301. }
  302. /**
  303. * 七天时间
  304. */
  305. function datePick(date_num,event_obj){
  306. $(".date-picker-btn").removeClass("selected");
  307. $(event_obj).addClass('selected');
  308. // alert(new Date().format("yyyy-MM-dd hh:mm"));
  309. var now_date = new Date();
  310. Date.prototype.Format = function (fmt,date_num) { //author: meizz
  311. this.setDate(this.getDate()-date_num);
  312. var o = {
  313. "M+": this.getMonth() + 1, //月份
  314. "d+": this.getDate(), //日
  315. "H+": this.getHours(), //小时
  316. "m+": this.getMinutes(), //分
  317. "s+": this.getSeconds(), //秒
  318. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  319. "S": this.getMilliseconds() //毫秒
  320. };
  321. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  322. for (var k in o)
  323. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  324. return fmt;
  325. };
  326. // var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
  327. var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
  328. var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
  329. $("input[name=start_time]").val(before_time,0);
  330. $("input[name=end_time]").val(now_time,date_num-1);
  331. }
  332. </script>
  333. {/block}