order.html 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" href="SUPERMEMBER_CSS/order_list.css"/>
  4. {/block}
  5. {block name="main"}
  6. <div class="layui-card card-common card-brief">
  7. <div class="layui-card-header">
  8. <div>
  9. <span class="card-title">购卡概况</span>
  10. </div>
  11. </div>
  12. <div class="layui-card-body">
  13. <div class="content">
  14. <p class="title">累计购卡人数</p>
  15. <p class="money">{$buyer_num}</p>
  16. </div>
  17. <div class="content">
  18. <p class="title">累计购卡金额</p>
  19. <p class="money">{$order_money}</p>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="screen layui-collapse" lay-filter="selection_panel">
  24. <div class="layui-colla-item">
  25. <form class="layui-form layui-colla-content layui-form layui-show" lay-filter="order_list" action="javascript:;">
  26. <div class="layui-form-item">
  27. <div class="layui-inline">
  28. <label class="layui-form-label">订单号</label>
  29. <div class="layui-input-inline">
  30. <input type="text" class="layui-input" name="order_no">
  31. </div>
  32. </div>
  33. <div class="layui-inline">
  34. <label class="layui-form-label">购买人昵称</label>
  35. <div class="layui-input-inline">
  36. <input type="text" class="layui-input" name="nickname">
  37. </div>
  38. </div>
  39. </div>
  40. <div class="layui-form-item">
  41. <div class="layui-inline">
  42. <label class="layui-form-label">支付时间</label>
  43. <div class="layui-input-inline">
  44. <input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
  45. <i class=" iconrili iconfont calendar"></i>
  46. </div>
  47. <div class="layui-form-mid">-</div>
  48. <div class="layui-input-inline">
  49. <input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
  50. <i class=" iconrili iconfont calendar"></i>
  51. </div>
  52. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
  53. <button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
  54. </div>
  55. </div>
  56. <div class="form-row">
  57. <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
  58. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  59. </div>
  60. </form>
  61. </div>
  62. </div>
  63. <div class="layui-tab table-tab " lay-filter="order_tab">
  64. <div class="layui-tab-content">
  65. <div id="order_list"></div>
  66. </div>
  67. <div id="order_page"></div>
  68. </div>
  69. {/block}
  70. {block name="script"}
  71. <script src="SUPERMEMBER_JS/order_list.js"></script>
  72. <script>
  73. var form,laypage,element,laydate;
  74. var is_refresh = false;
  75. layui.use(['laypage','laydate','form', 'element'], function(){
  76. form = layui.form;
  77. laypage = layui.laypage;
  78. element = layui.element;
  79. laydate = layui.laydate;
  80. form.render();
  81. // 支付时间
  82. laydate.render({
  83. elem: '#start_time'
  84. ,type: 'datetime'
  85. ,change: function(value, date, endDate){
  86. $(".date-picker-btn").removeClass("selected");
  87. }
  88. });
  89. laydate.render({
  90. elem: '#end_time'
  91. ,type: 'datetime'
  92. ,change: function(value, date, endDate){
  93. $(".date-picker-btn").removeClass("selected");
  94. }
  95. });
  96. //监听Tab切换,以改变地址hash值
  97. element.on('tab(order_tab)', function(){
  98. $(".all-selected-checkbox input").prop("checked",false);
  99. var hash_data = getHashList();
  100. hash_data.page = 1;
  101. setHashOrderList(hash_data);
  102. });
  103. //监听筛选事件
  104. form.on('submit(search)', function(data){
  105. is_refresh = true;
  106. data.field.page = 1;
  107. setHashOrderList(data.field);
  108. return false;
  109. });
  110. getHashData();
  111. getOrderList();//筛选
  112. });
  113. function setHashOrderList(data){
  114. var hash = "";
  115. $.each(data,function(index, itemobj){
  116. if(itemobj != "" && itemobj != "all"){
  117. if(hash == ""){
  118. hash += "#!"+index +"="+itemobj;
  119. }else{
  120. hash += "&"+index +"="+itemobj;
  121. }
  122. }
  123. });
  124. hash_url = hash;
  125. location.hash = hash;
  126. getOrderList();
  127. }
  128. var order = new Order();
  129. function getOrderList(){
  130. var url = ns.url("supermember://shop/membercard/order", ns.urlReplace(location.hash.replace('#!', '')));
  131. $.ajax({
  132. type : 'get',
  133. dataType: 'json',
  134. url :url,
  135. success : function(res){
  136. if(res.code == 0){
  137. // setOrderInfo(res.data.list);
  138. order.setData(res.data);
  139. $("#order_list").html(order.fetch());
  140. form.render();
  141. laypage_util = new Page({
  142. elem: 'order_page',
  143. count: res.data.count,
  144. curr: getHashPage(),
  145. limit:getHashData()['page_size'] || 10,
  146. callback: function(obj){
  147. var hash_data = getHashData();
  148. hash_data.page = obj.curr;
  149. hash_data.page_size = obj.limit;
  150. setHashOrderList(hash_data);
  151. }
  152. });
  153. }else{
  154. layer.msg(res.message);
  155. }
  156. }
  157. });
  158. }
  159. /**
  160. *通过hash获取页数
  161. */
  162. function getHashPage(){
  163. var page = 1;
  164. var hash = location.hash;
  165. var startTime = '';
  166. var endTime = '';
  167. var hash_arr = hash.substr(2).split("&");
  168. $.each(hash_arr,function(index, itemobj){
  169. var item_arr = itemobj.split("=");
  170. if(item_arr.length == 2){
  171. switch(item_arr[0]){
  172. case "page":
  173. page = item_arr[1];
  174. break;
  175. case "start_time":
  176. startTime = ns.date_to_time(item_arr[1].split("%")[0]);
  177. break;
  178. case "end_time":
  179. endTime = ns.date_to_time(item_arr[1].split("%")[0]);
  180. break;
  181. }
  182. }
  183. });
  184. var _time = (endTime - startTime) / (24 * 60 * 60);
  185. if (_time == 6) {
  186. $(".date-picker-btn-seven").addClass("selected");
  187. $(".date-picker-btn-thirty").removeClass("selected");
  188. } else if (_time == 29) {
  189. $(".date-picker-btn-thirty").addClass("selected");
  190. $(".date-picker-btn-seven").removeClass("selected");
  191. } else {
  192. $(".date-picker-btn-seven").removeClass("selected");
  193. $(".date-picker-btn-thirty").removeClass("selected");
  194. }
  195. return page;
  196. }
  197. //从hash中获取数据
  198. function getHashData(){
  199. var hash = ns.urlReplace(location.hash);
  200. var hash_arr = hash.substr(2).split("&");
  201. var form_json = {
  202. "start_time" : "",
  203. "end_time" : "",
  204. "nickname" : "",
  205. "order_no" : "",
  206. 'page_size':'',
  207. "page" : ""
  208. };
  209. if(hash_arr.length > 0){
  210. $.each(hash_arr,function(index, itemobj){
  211. var item_arr = itemobj.split("=");
  212. if(item_arr.length == 2){
  213. $.each(form_json,function(key, form_val){
  214. if(item_arr[0] == key){
  215. form_json[key] = item_arr[1];
  216. }
  217. })
  218. }
  219. })
  220. }
  221. return form_json;
  222. }
  223. function getHashList(){
  224. var hash = ns.urlReplace(location.hash);
  225. var data= [];
  226. var hash_arr = hash.split("&");
  227. var form_json = {
  228. "start_time" : "",
  229. "end_time" : "",
  230. "nickname" : "",
  231. "order_no" : "",
  232. 'page_size':'',
  233. "page" : ""
  234. };
  235. if(hash_arr.length > 0){
  236. $.each(hash_arr,function(index, itemobj){
  237. var item_arr = itemobj.split("=");
  238. if(item_arr.length == 2){
  239. $.each(form_json,function(key, form_val){
  240. if(item_arr[0].indexOf(key) != "-1"){
  241. form_json[key] = item_arr[1];
  242. }
  243. })
  244. }
  245. })
  246. }
  247. return form_json;
  248. }
  249. /**
  250. * 七天时间
  251. */
  252. function datePick(date_num,event_obj){
  253. $(".date-picker-btn").removeClass("selected");
  254. $(event_obj).addClass('selected');
  255. var now_date = new Date();
  256. Date.prototype.Format = function (fmt,date_num) { //author: meizz
  257. this.setDate(this.getDate()-date_num);
  258. var o = {
  259. "M+": this.getMonth() + 1, //月份
  260. "d+": this.getDate(), //日
  261. "H+": this.getHours(), //小时
  262. "m+": this.getMinutes(), //分
  263. "s+": this.getSeconds(), //秒
  264. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  265. "S": this.getMilliseconds() //毫秒
  266. };
  267. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  268. for (var k in o)
  269. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  270. return fmt;
  271. };
  272. // var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
  273. var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
  274. var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
  275. $("input[name=start_time]").val(before_time,0);
  276. $("input[name=end_time]").val(now_time,date_num-1);
  277. }
  278. </script>
  279. {/block}