order.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. // 合并格式化方法
  3. Table.api.formatter = $.extend(Table.api.formatter,
  4. {
  5. statusCustom : function (value, row, index) {
  6. let number = value == 0 ? 0 : 1;
  7. let display = value == 0 ? '否' : '是';
  8. let color = value == 0 ? 'primary' : 'success';
  9. var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + display + '</span>';
  10. if (value != 0){
  11. html = '<a href="javascript:;" class="searchit" data-operate="=" data-field="' + this.field + '" data-value="' + number + '" data-toggle="tooltip" title="' + __('Time: %s', Moment(parseInt(value) * 1000).format('YYYY-MM-DD HH:mm:ss')) + '" >' + html + '</a>';
  12. } else {
  13. html = '<a href="javascript:;" class="searchit" data-operate="=" data-field="' + this.field + '" data-value="' + number + '" data-toggle="tooltip" title="' + __('Click to search %s', display) + '" >' + html + '</a>';
  14. }
  15. return html;
  16. }
  17. }
  18. );
  19. // 合并格式化方法
  20. Table.api.formatter = $.extend(Table.api.formatter,
  21. {
  22. payStatus : function (value, row, index) {
  23. let number = 0;
  24. let display = '状态未知';
  25. let color = 'primary';
  26. if(value == 0) {
  27. number = 0;
  28. display = '待付款';
  29. color = 'primary';
  30. } else if(value == 1) {
  31. number = 1;
  32. display = '待审核';
  33. color = 'warning';
  34. } else if(value == 2) {
  35. number = 2;
  36. display = '已完成';
  37. color = 'success';
  38. } else if(value == 3) {
  39. number = 3;
  40. display = '已取消';
  41. color = 'default';
  42. }
  43. var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + display + '</span>';
  44. html = '<a href="javascript:;" class="searchit" data-operate="=" data-field="' + this.field + '" data-value="' + number + '" data-toggle="tooltip" title="' + __('Click to search %s', display) + '" >' + html + '</a>';
  45. return html;
  46. }
  47. }
  48. );
  49. var Controller = {
  50. index: function () {
  51. // 初始化表格参数配置
  52. Table.api.init({
  53. extend: {
  54. index_url: 'unishop/order/index' + location.search,
  55. add_url: 'unishop/order/add',
  56. edit_url: 'unishop/order/edit',
  57. del_url: 'unishop/order/del',
  58. multi_url: 'unishop/order/multi',
  59. delivere_url: 'unishop/order/delivery',
  60. product_url: 'unishop/order/product',
  61. refund_url: 'unishop/order/refund',
  62. table: 'unishop_order',
  63. }
  64. });
  65. // 合并操作方法
  66. Table.api.events.operate = $.extend(Table.api.events.operate,
  67. {
  68. 'click .btn-delivere': function (e, value, row, index) {
  69. e.stopPropagation();
  70. e.preventDefault();
  71. var table = $(this).closest('table');
  72. var options = table.bootstrapTable('getOptions');
  73. var ids = row[options.pk];
  74. row = $.extend({}, row ? row : {}, {ids: ids});
  75. var url = options.extend.delivere_url;
  76. Fast.api.open(Table.api.replaceurl(url, row, table), __('Delivere'), $(this).data() || {});
  77. }
  78. },
  79. {
  80. 'click .btn-product': function (e, value, row, index) {
  81. e.stopPropagation();
  82. e.preventDefault();
  83. var table = $(this).closest('table');
  84. var options = table.bootstrapTable('getOptions');
  85. var ids = row[options.pk];
  86. row = $.extend({}, row ? row : {}, {ids: ids});
  87. var url = options.extend.product_url;
  88. Fast.api.open(Table.api.replaceurl(url, row, table), __('Product'), $(this).data() || {});
  89. }
  90. },
  91. {
  92. 'click .btn-refund': function (e, value, row, index) {
  93. e.stopPropagation();
  94. e.preventDefault();
  95. var table = $(this).closest('table');
  96. var options = table.bootstrapTable('getOptions');
  97. var ids = row[options.pk];
  98. row = $.extend({}, row ? row : {}, {ids: ids});
  99. var url = options.extend.refund_url;
  100. Fast.api.open(Table.api.replaceurl(url, row, table), __('Refund'), $(this).data() || {});
  101. }
  102. }
  103. );
  104. var table = $("#table");
  105. // 初始化表格
  106. table.bootstrapTable({
  107. url: $.fn.bootstrapTable.defaults.extend.index_url,
  108. pk: 'id',
  109. sortName: 'id',
  110. columns: [
  111. [
  112. {checkbox: true},
  113. {field: 'id', title: __('Id'),visible:false},
  114. {field: 'user_id', title: __('User_id')},
  115. {field: 'user.username', title: __('User name')},
  116. {field: 'out_trade_no', title: __('Out_trade_no')},
  117. {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  118. {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  119. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  120. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  121. {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  122. {field: 'ip', title: __('Ip'), visible:false},
  123. {field: 'shenhe', title: __('付款状态'), searchList: {"0":__('待付款'),"1":__('待审核'),"2":__('已完成'),"3":__('已取消')}, formatter: Table.api.formatter.payStatus},
  124. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  125. {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  126. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  127. {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  128. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  129. {field: 'remark', title: __('Remark'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符'},
  130. {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  131. {
  132. field: 'operate',
  133. title: __('Operate'),
  134. table: table,
  135. events: Table.api.events.operate,
  136. formatter: Table.api.formatter.operate,
  137. buttons:[
  138. {
  139. name: 'product',
  140. text: __('Product'),
  141. classname: 'btn btn-xs btn-info btn-product',
  142. extend: 'data-toggle="tooltip"',
  143. icon: 'fa fa-star-half'
  144. },
  145. {
  146. name: 'edit',
  147. icon: 'fa fa-pencil',
  148. text: __('Edit'),
  149. extend: 'data-toggle="tooltip"',
  150. classname: 'btn btn-xs btn-success btn-editone',
  151. url: $.fn.bootstrapTable.defaults.extend.edit_url
  152. }
  153. ]
  154. }
  155. ]
  156. ]
  157. });
  158. // 为表格绑定事件
  159. Table.api.bindevent(table);
  160. },
  161. recyclebin: function () {
  162. // 初始化表格参数配置
  163. Table.api.init({
  164. extend: {
  165. 'dragsort_url': ''
  166. }
  167. });
  168. var table = $("#table");
  169. // 初始化表格
  170. table.bootstrapTable({
  171. url: 'unishop/order/recyclebin' + location.search,
  172. pk: 'id',
  173. sortName: 'id',
  174. columns: [
  175. [
  176. {checkbox: true},
  177. {field: 'id', title: __('Id'),visible:false},
  178. {field: 'user_id', title: __('User_id')},
  179. {field: 'user.username', title: __('User name')},
  180. {field: 'out_trade_no', title: __('Out_trade_no')},
  181. {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  182. {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  183. {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  184. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  185. {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  186. {field: 'ip', title: __('Ip'), visible:false},
  187. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  188. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  189. {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  190. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  191. {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  192. {field: 'refund_status', title: __('Refund status'),searchList: {"0":__('None'),"1":__('Apply'),"2":__('Waiting for shipment'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  193. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  194. {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  195. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  196. {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  197. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  198. {field: 'remark', title: __('Remark'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符'},
  199. {
  200. field: 'deletetime',
  201. title: __('Deletetime'),
  202. operate: 'RANGE',
  203. addclass: 'datetimerange',
  204. formatter: Table.api.formatter.datetime
  205. },
  206. {
  207. field: 'operate',
  208. width: '130px',
  209. title: __('Operate'),
  210. table: table,
  211. events: Table.api.events.operate,
  212. buttons: [
  213. {
  214. name: 'Restore',
  215. text: __('Restore'),
  216. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  217. icon: 'fa fa-rotate-left',
  218. url: 'unishop/order/restore',
  219. refresh: true
  220. },
  221. {
  222. name: 'Destroy',
  223. text: __('Destroy'),
  224. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  225. icon: 'fa fa-times',
  226. url: 'unishop/order/destroy',
  227. refresh: true
  228. }
  229. ],
  230. formatter: Table.api.formatter.operate
  231. }
  232. ]
  233. ]
  234. });
  235. // 为表格绑定事件
  236. Table.api.bindevent(table);
  237. },
  238. add: function () {
  239. Controller.api.bindevent();
  240. },
  241. edit: function () {
  242. Controller.api.bindevent();
  243. },
  244. delivery: function(){
  245. Controller.api.bindevent();
  246. },
  247. product: function(){
  248. Controller.api.bindevent();
  249. },
  250. refund: function(){
  251. Controller.api.bindevent();
  252. },
  253. api: {
  254. bindevent: function () {
  255. Form.api.bindevent($("form[role=form]"));
  256. }
  257. }
  258. };
  259. return Controller;
  260. });