order.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  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. var Controller = {
  20. index: function () {
  21. // 初始化表格参数配置
  22. Table.api.init({
  23. extend: {
  24. index_url: 'unishop/order/index' + location.search,
  25. add_url: 'unishop/order/add',
  26. edit_url: 'unishop/order/edit',
  27. del_url: 'unishop/order/del',
  28. multi_url: 'unishop/order/multi',
  29. delivere_url: 'unishop/order/delivery',
  30. product_url: 'unishop/order/product',
  31. refund_url: 'unishop/order/refund',
  32. table: 'unishop_order',
  33. }
  34. });
  35. // 合并操作方法
  36. Table.api.events.operate = $.extend(Table.api.events.operate,
  37. {
  38. 'click .btn-delivere': function (e, value, row, index) {
  39. e.stopPropagation();
  40. e.preventDefault();
  41. var table = $(this).closest('table');
  42. var options = table.bootstrapTable('getOptions');
  43. var ids = row[options.pk];
  44. row = $.extend({}, row ? row : {}, {ids: ids});
  45. var url = options.extend.delivere_url;
  46. Fast.api.open(Table.api.replaceurl(url, row, table), __('Delivere'), $(this).data() || {});
  47. }
  48. },
  49. {
  50. 'click .btn-product': function (e, value, row, index) {
  51. e.stopPropagation();
  52. e.preventDefault();
  53. var table = $(this).closest('table');
  54. var options = table.bootstrapTable('getOptions');
  55. var ids = row[options.pk];
  56. row = $.extend({}, row ? row : {}, {ids: ids});
  57. var url = options.extend.product_url;
  58. Fast.api.open(Table.api.replaceurl(url, row, table), __('Product'), $(this).data() || {});
  59. }
  60. },
  61. {
  62. 'click .btn-refund': function (e, value, row, index) {
  63. e.stopPropagation();
  64. e.preventDefault();
  65. var table = $(this).closest('table');
  66. var options = table.bootstrapTable('getOptions');
  67. var ids = row[options.pk];
  68. row = $.extend({}, row ? row : {}, {ids: ids});
  69. var url = options.extend.refund_url;
  70. Fast.api.open(Table.api.replaceurl(url, row, table), __('Refund'), $(this).data() || {});
  71. }
  72. }
  73. );
  74. var table = $("#table");
  75. //当表格数据加载完成时
  76. table.on('load-success.bs.table', function (e, data) {
  77. //这里可以获取从服务端获取的JSON数据
  78. console.log(data);
  79. //这里我们手动设置底部的值
  80. $("#sum_price").text(data.extend.sum_price);
  81. });
  82. // 初始化表格
  83. table.bootstrapTable({
  84. url: $.fn.bootstrapTable.defaults.extend.index_url,
  85. pk: 'id',
  86. sortName: 'createtime',
  87. fixedColumns:true,
  88. fixedRightNumber:1,
  89. search:false,
  90. columns: [
  91. [
  92. {checkbox: true},
  93. // {field: 'id', title: __('Id'),visible:false},
  94. {field: 'user_id', title: __('User_id')},
  95. {field: 'user.nickname', title: __('User name')},
  96. // {field: 'intro.nickname', title: '推广人'},
  97. // {field: 'intro.mobile', title: '推广人手机'},
  98. {field: 'hexiao.nickname', title: '核销人'},
  99. // {field: 'hexiao.mobile', title: '核销人手机'},
  100. {field: 'out_trade_no', title: __('Out_trade_no')},
  101. {field: 'op.product_id', title: '活动ID'},
  102. {field: 'op.title', title: '活动标题'},
  103. // {field: 'op.spec', title: '商品规格'},
  104. {field: 'op.price', title: '活动单价'},
  105. {field: 'op.number', title: '报名人数'},
  106. {field: 'book_realname', title: __('book_realname'),operate:'LIKE'},
  107. {field: 'book_mobile', title: __('book_mobile'), operate:'LIKE'},
  108. // {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  109. // {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  110. // {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  111. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  112. {field: 'status', title: __('Status'), searchList: {/*"-1":__('Refund'),*/"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  113. // {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  114. // {field: 'ip', title: __('Ip'), visible:false},
  115. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  116. // {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  117. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  118. // {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  119. {field: 'refund_status', title: __('Refund status'),searchList: {"0":__('None'),"3":__('Pass')}, formatter: Table.api.formatter.status},
  120. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  121. // {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  122. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  123. // {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  124. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  125. // {field: 'booktime', title: __('booktime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  126. // {field: 'remark', title: __('Remark'), operate: false},
  127. // {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  128. {
  129. field: 'operate',
  130. title: __('Operate'),
  131. table: table,
  132. events: Table.api.events.operate,
  133. formatter: Table.api.formatter.operate,
  134. buttons:[
  135. /*{
  136. name: 'refund',
  137. text: __('Refund'),
  138. classname: 'btn btn-xs btn-info btn-refund',
  139. extend: 'data-toggle="tooltip"',
  140. icon: 'fa fa-handshake-o'
  141. },
  142. {
  143. name: 'delivere',
  144. text: __('Delivere'),
  145. classname: 'btn btn-xs btn-info btn-delivere',
  146. extend: 'data-toggle="tooltip"',
  147. icon: 'fa fa-plane'
  148. },*/
  149. {
  150. name: 'product',
  151. text: '活动',
  152. title: '活动',
  153. classname: 'btn btn-xs btn-info btn-product',
  154. extend: 'data-toggle="tooltip"',
  155. icon: 'fa fa-star-half'
  156. },
  157. {
  158. name: 'edit',
  159. icon: 'fa fa-pencil',
  160. text: __('Edit'),
  161. extend: 'data-toggle="tooltip"',
  162. classname: 'btn btn-xs btn-success btn-editone',
  163. url: $.fn.bootstrapTable.defaults.extend.edit_url
  164. }
  165. ]
  166. }
  167. ]
  168. ]
  169. });
  170. // 为表格绑定事件
  171. Table.api.bindevent(table);
  172. },
  173. recyclebin: function () {
  174. // 初始化表格参数配置
  175. Table.api.init({
  176. extend: {
  177. 'dragsort_url': ''
  178. }
  179. });
  180. var table = $("#table");
  181. // 初始化表格
  182. table.bootstrapTable({
  183. url: 'unishop/order/recyclebin' + location.search,
  184. pk: 'id',
  185. sortName: 'id',
  186. columns: [
  187. [
  188. {checkbox: true},
  189. // {field: 'id', title: __('Id'),visible:false},
  190. {field: 'user_id', title: __('User_id')},
  191. {field: 'user.nickname', title: __('User name')},
  192. {field: 'out_trade_no', title: __('Out_trade_no')},
  193. {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  194. {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  195. // {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  196. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  197. // {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  198. // {field: 'ip', title: __('Ip'), visible:false},
  199. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  200. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  201. // {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  202. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  203. // {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  204. {field: 'refund_status', title: __('Refund status'),operate:false,searchList: {"0":__('None'),"1":__('Apply'),"2":__('Waiting for shipment'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  205. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  206. // {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  207. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  208. // {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  209. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  210. {field: 'remark', title: __('Remark'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符'},
  211. {
  212. field: 'deletetime',
  213. title: __('Deletetime'),
  214. operate: 'RANGE',
  215. addclass: 'datetimerange',
  216. formatter: Table.api.formatter.datetime
  217. },
  218. {
  219. field: 'operate',
  220. width: '130px',
  221. title: __('Operate'),
  222. table: table,
  223. events: Table.api.events.operate,
  224. buttons: [
  225. {
  226. name: 'Restore',
  227. text: __('Restore'),
  228. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  229. icon: 'fa fa-rotate-left',
  230. url: 'unishop/order/restore',
  231. refresh: true
  232. },
  233. /*{
  234. name: 'Destroy',
  235. text: __('Destroy'),
  236. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  237. icon: 'fa fa-times',
  238. url: 'unishop/order/destroy',
  239. refresh: true
  240. }*/
  241. ],
  242. formatter: Table.api.formatter.operate
  243. }
  244. ]
  245. ]
  246. });
  247. // 为表格绑定事件
  248. Table.api.bindevent(table);
  249. },
  250. add: function () {
  251. Controller.api.bindevent();
  252. },
  253. edit: function () {
  254. Controller.api.bindevent();
  255. },
  256. delivery: function(){
  257. Controller.api.bindevent();
  258. },
  259. product: function(){
  260. Controller.api.bindevent();
  261. },
  262. refund: function(){
  263. Controller.api.bindevent();
  264. },
  265. api: {
  266. bindevent: function () {
  267. Form.api.bindevent($("form[role=form]"));
  268. }
  269. }
  270. };
  271. return Controller;
  272. });