pickuporder.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. /**
  2. * 渲染订单列表
  3. */
  4. Order = function () {
  5. };
  6. /**
  7. * 设置数据集
  8. */
  9. Order.prototype.setData = function (data) {
  10. Order.prototype.data = data;
  11. };
  12. /**
  13. * 列名数据
  14. */
  15. Order.prototype.cols = [
  16. {
  17. type: 'checkbox',
  18. fixed: 'left',
  19. width: '3%',
  20. merge: true,
  21. template: function (orderitem, order) {
  22. var json = {}
  23. json.order_id = order.order_id;
  24. json.order_no = order.order_no;
  25. json.full_address = order.full_address;
  26. if(order.order_type == 4 && order.order_data_status == 3){
  27. var h = '<div class="sub-selected-checkbox" data-json='+ JSON.stringify(json) +' data-id='+ order.order_id +' disabled>';
  28. h += '<input type="checkbox" lay-skin="primary" lay-filter="subCheckbox" name="" disabled>';
  29. h += '</div>';
  30. }else{
  31. var h = '<div class="sub-selected-checkbox" data-json='+ JSON.stringify(json) +' data-id='+ order.order_id +' >';
  32. h += '<input type="checkbox" lay-skin="primary" lay-filter="subCheckbox" name="" >';
  33. h += '</div>';
  34. }
  35. return h;
  36. }
  37. },
  38. {
  39. title: '<span>商品</span>',
  40. width: "33%",
  41. className: "product-info",
  42. template: function (orderitem, order) {
  43. var h = '<div class="img-block">';
  44. h += '<img layer-src="' + ns.img(orderitem.sku_image,'big') + '" src="' + ns.img(orderitem.sku_image,'small') + '">';
  45. h += '</div>';
  46. h += '<div class="info">';
  47. h += '<a href="' + ns.url("shop/order/detail", {order_id: orderitem.order_id}) + '" target="_blank" title="' + orderitem.sku_name + '" class="multi-line-hiding text-color-sub">' + orderitem.sku_name + '</a>';
  48. if(orderitem.sku_no){
  49. h += '<span class="text-tile" title="' + orderitem.sku_no + '" >' + orderitem.sku_no + '</span>';
  50. }
  51. h += '</div>';
  52. return h;
  53. }
  54. },
  55. {
  56. title: "单价(元) / 数量",
  57. width: "9%",
  58. align: "right",
  59. className: "order-price",
  60. template: function (orderitem, order) {
  61. var h = '<div style="padding-right: 15px;">';
  62. h += '<div>';
  63. h += '<span>' + orderitem.price + '</span>';
  64. h += '</div>';
  65. h += '<div>';
  66. h += '<span>' + orderitem.num + '件</span>';
  67. h += '</div>';
  68. h += '</div>';
  69. return h;
  70. }
  71. },
  72. {
  73. title: "实付金额(元)",
  74. width: "9%",
  75. align: "right",
  76. className: "order-money",
  77. merge: true,
  78. template: function (orderitem, order) {
  79. var h = '<div style="padding-right: 15px;">';
  80. h += '<span>' + order.order_money + '</span>';
  81. h += '</div>';
  82. return h;
  83. }
  84. },
  85. {
  86. title: "提货门店",
  87. width: "15%",
  88. align: "left",
  89. className: "order-money",
  90. merge: true,
  91. template: function (orderitem, order) {
  92. var h = '<div>';
  93. h += '<span>' + order.delivery_store_name + '</span>';
  94. h += '</div>';
  95. return h;
  96. }
  97. },
  98. {
  99. title: "买家/收货人",
  100. width: "15%",
  101. align: "left",
  102. className: "buyers",
  103. merge: true,
  104. template: function (orderitem, order) {
  105. var h = '';
  106. h += '<p>';
  107. h += '<a class="text-color" target="_blank" href="' + ns.url("shop/member/editmember?member_id=") + order.member_id + '">' + order.nickname + '</a>';
  108. h += '</p>';
  109. h += '<p>';
  110. h += '<span style="margin-left:22px;">' + order.mobile + '</span>';
  111. h += '</p>';
  112. h += '<span class="line-hiding address_box" title="' + order.full_address + ' ' + order.address + '">' + order.full_address + " " + order.address + '</span>';
  113. h += '<input type="text" class="address_input" id="'+ order.order_id +'_address" value="'+ order.full_address +'-'+ order.address +',收货人:'+ order.name +',手机号:'+ order.mobile +'">'
  114. h += '<a style="vertical-align: top" href="javascript:ns.copy(\''+ order.order_id +'_address\');" class="iconfont iconfuzhi"></a>'
  115. return h;
  116. }
  117. },
  118. {
  119. title: "操作",
  120. align: "right",
  121. className: "operation",
  122. width:"11%",
  123. merge: true,
  124. template: function (orderitem, order) {
  125. var url = "shop/order/detail";
  126. var html = '';
  127. var action_json = order.order_status_action;
  128. var action_arr = JSON.parse(action_json);
  129. var action = action_arr.action;
  130. html += '<div class="table-btn operation-type">';
  131. for (var k = 0; k < action.length; k++) {
  132. //视频号订单不能改价
  133. if(order.is_video_number == 1){
  134. if(action[k].action != "orderAdjustMoney"){
  135. html += '<a class="layui-btn text-color" href="javascript:orderAction(\'' + action[k].action + '\', ' + order.order_id + ')">' + action[k].title + '</a>';
  136. }
  137. }else{
  138. html += '<a class="layui-btn text-color" href="javascript:orderAction(\'' + action[k].action + '\', ' + order.order_id + ')">' + action[k].title + '</a>';
  139. }
  140. }
  141. if(order.order_type == 2 && order.order_status == 2){
  142. html += '<a class="layui-btn" href="javascript:storeOrderTakedelivery(' + order.order_id + ')">提货</a>';
  143. }
  144. html += '</div>';
  145. return html;
  146. }
  147. }
  148. ];
  149. /**
  150. * 渲染表头
  151. */
  152. Order.prototype.header = function (hasThead) {
  153. var colgroup = '<colgroup>';
  154. var thead = '';
  155. if (hasThead) thead = '<thead><tr>';
  156. for (var i = 0; i < this.cols.length; i++) {
  157. var align = this.cols[i].align ? "text-align:" + this.cols[i].align : "";
  158. colgroup += '<col width="' + this.cols[i].width + '">';
  159. if (hasThead) {
  160. thead += '<th style="' + align + '" class="' + (this.cols[i].className || "") + '">';
  161. thead += '<div class="layui-table-cell">';
  162. if(this.cols[i].type){
  163. thead += '<div class="all-selected-checkbox">';
  164. thead += '<input type="checkbox" lay-skin="primary" lay-filter="allCheckbox" name="">';
  165. thead += '</div>';
  166. }else{
  167. thead += this.cols[i].title;
  168. }
  169. thead += '</div>';
  170. thead += '</th>';
  171. }
  172. }
  173. colgroup += '</colgroup>';
  174. if (hasThead) thead += '</tr></thead>';
  175. return colgroup + thead;
  176. };
  177. /**
  178. * 渲染内容
  179. */
  180. Order.prototype.tbody = function () {
  181. var tbody = '<tbody>';
  182. for (var i = 0; i < this.data.list.length; i++) {
  183. var order = this.data.list[i];
  184. var orderitemList = order.order_goods;
  185. var pay_type_name = order.pay_type_name != '' ? order.pay_type_name : "";
  186. var buyer_ask_delivery_time = order.buyer_ask_delivery_time != '' ? order.buyer_ask_delivery_time : "";
  187. var order_type = order.order_type;
  188. if (i > 0) {
  189. //分割行
  190. tbody += '<tr class="separation-row">';
  191. tbody += '<td colspan="' + this.cols.length + '"></td>';
  192. tbody += '</tr>';
  193. }
  194. //订单项头部
  195. tbody += '<tr class="header-row">';
  196. tbody += '<td colspan="6">';
  197. tbody += '<span class="order-item-header" style="margin-right:10px;">订单号:' + order.order_no + '</span>';
  198. tbody += '<span class="order-item-header text-color more" style="margin-right:50px;" onclick="showMore(' + order.order_id + ')">更多';
  199. tbody += '<div class="more-operation" data-order-id="' + order.order_id + '">';
  200. tbody += '<span>支付流水号:' + order.out_trade_no + '</span>';
  201. tbody += '</div></span>';
  202. tbody += '<span class="order-item-header" style="margin-right:50px;">下单时间:' + ns.time_to_date(order.create_time) + '</span>';
  203. tbody += '<span class="order-item-header" style="margin-right:50px;">订单来源:'+ order.order_from_name + (order.is_video_number ? '(视频号)' : '') +'</span>';
  204. // tbody += '<span class="order-item-header" style="margin-right:50px;">订单类型:' + order.order_type_name + '</span>';
  205. if (pay_type_name) tbody += '<span class="order-item-header">支付方式:' + pay_type_name +'</span>';
  206. if (order_type == 2) {
  207. if (order.buyer_ask_delivery_time != '' && order.buyer_ask_delivery_time != 0) tbody += '<span class="order-item-header" style="margin-left:50px;">要求自提时间:' + (order.buyer_ask_delivery_time.indexOf('-') != -1 ? order.buyer_ask_delivery_time : ns.time_to_date(order.buyer_ask_delivery_time) ) + '</span>';
  208. else tbody += '<span class="order-item-header" style="margin-left:50px;">要求自提时间:立即自提</span>';
  209. }
  210. if (order_type == 3) {
  211. if (order.buyer_ask_delivery_time != '' && order.buyer_ask_delivery_time != 0) tbody += '<span class="order-item-header" style="margin-left:50px;">要求送达时间:' + (order.buyer_ask_delivery_time.indexOf('-') != -1 ? order.buyer_ask_delivery_time : ns.time_to_date(order.buyer_ask_delivery_time) ) + '</span>';
  212. else tbody += '<span class="order-item-header" style="margin-left:50px;">要求送达时间:立即送达</span>';
  213. }
  214. tbody += '</td>';
  215. tbody += '<td>';
  216. tbody += '<div class="table-btn order-list-top-line">';
  217. if (order.order_type == 1 && (order.order_status == 1 || order.order_status == 3 || order.order_status == 10)) {
  218. tbody += '<a class="layui-btn" href="javascript:printDeliverOrder(' + order.order_id + ');" >打印发货单</a>';
  219. // tbody += '<a href="'+ ns.url('shop/order/printOrder',{order_id:order.order_id}) +'" target="_blank" class="layui-btn">打印发货单</a>';
  220. }
  221. if (order.order_status == 0) {
  222. tbody += '<a class="layui-btn" href="javascript:offlinePay(' + order.order_id + ');">线下支付</a> ';
  223. }
  224. tbody += '<a class="layui-btn" href="' + ns.url("shop/order/detail", {order_id: order.order_id}) + '" target="_blank">详情</a>';
  225. if (order.order_status == -1) {
  226. tbody += '<a class="layui-btn" href="javascript:orderDelete(' + order.order_id + ');" >删除</a>';
  227. }
  228. tbody += '<a class="layui-btn" href="javascript:orderRemark(' + order.order_id + ');">备注</a> ';
  229. tbody += '</div>';
  230. tbody += '</td>';
  231. tbody += '</tr>';
  232. // tbody += '<tr class="separation-row"><td colspan="6"><hr /></td></tr>';
  233. var orderitemHtml = '';
  234. loadImgMagnify();
  235. for (var j = 0; j < orderitemList.length; j++) {
  236. var orderitem = orderitemList[j];
  237. orderitemHtml += '<tr class="content-row">';
  238. for (var k = 0; k < this.cols.length; k++) {
  239. if (j == 0 && this.cols[k].merge && this.cols[k].template) {
  240. orderitemHtml += '<td class="' + (this.cols[k].className || "") + '" align="' + (this.cols[k].align || "") + '" style="' + (this.cols[k].style || "") + '" rowspan="' + orderitemList.length + '">';
  241. orderitemHtml += this.cols[k].template(orderitem, order);
  242. orderitemHtml += '</td>';
  243. } else if (this.cols[k].template && !this.cols[k].merge) {
  244. orderitemHtml += '<td class="' + (this.cols[k].className || "") + '" align="' + (this.cols[k].align || "") + '" style="' + (this.cols[k].style || "") + '">';
  245. orderitemHtml += this.cols[k].template(orderitem, order);
  246. orderitemHtml += '</td>';
  247. }
  248. }
  249. orderitemHtml += '</tr>';
  250. }
  251. tbody += orderitemHtml;
  252. if(order.buyer_message != '') {
  253. //订单项底部
  254. tbody += '<tr class="bottom-row">';
  255. tbody += '<td colspan="6">';
  256. tbody += '<span class="order-item-header" style="margin-right:10px;">买家备注:' + order.buyer_message + '</span>';
  257. tbody += '</td>';
  258. tbody += '</tr>';
  259. }
  260. if (order.remark != '') {
  261. tbody += '<tr class="remark-row">';
  262. tbody += '<td colspan="' + this.cols.length + '">卖家备注:' + order.remark + '</td>';
  263. tbody += '</tr>';
  264. }
  265. }
  266. tbody += '</tbody>';
  267. return tbody;
  268. };
  269. /**
  270. * 渲染表格
  271. */
  272. Order.prototype.fetch = function () {
  273. if (this.data.list.length > 0) {
  274. return '<table class="layui-table layui-form">' + this.header(true) + '</table><table class="layui-table order-list-table layui-form">' + this.header(false) + this.tbody() + '</table>';
  275. } else {
  276. return '<table class="layui-table order-list-table layui-form">' + this.header(true) + '</table>' + '<div class="order-no-data-block"><ul><li><i class="layui-icon layui-icon-tabs"></i> </li><li>暂无订单</li></ul></div>';
  277. }
  278. };
  279. function showMore(order_id) {
  280. $(".more-operation[data-order-id]").hide();
  281. $(".more-operation[data-order-id='" + order_id + "']").show();
  282. $("body").click(function (e) {
  283. if (!$(e.target).closest(".order-item-header.more").length) {
  284. $(".more-operation[data-order-id='" + order_id + "']").hide();
  285. }
  286. });
  287. }
  288. $(".layui-colla-title").on("click", function(){
  289. if($(".layui-colla-title>i").hasClass("layui-icon-down") === false && $(".layui-colla-title>i").hasClass("layui-icon-up") === false){
  290. $(".layui-colla-title .put-open").html("展开");
  291. }else if($(".layui-colla-title>i").hasClass("layui-icon-down") === true){
  292. $(".layui-colla-title .put-open").html("展开");
  293. }else if($(".layui-colla-title>i").hasClass("layui-icon-up") === true){
  294. $(".layui-colla-title .put-open").html("收起");
  295. }
  296. })