order.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  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. cancelrefund_url: 'unishop/order/cancelrefund',
  33. table: 'unishop_order',
  34. }
  35. });
  36. // 合并操作方法
  37. Table.api.events.operate = $.extend(Table.api.events.operate,
  38. {
  39. 'click .btn-delivere': function (e, value, row, index) {
  40. e.stopPropagation();
  41. e.preventDefault();
  42. var table = $(this).closest('table');
  43. var options = table.bootstrapTable('getOptions');
  44. var ids = row[options.pk];
  45. row = $.extend({}, row ? row : {}, {ids: ids});
  46. var url = options.extend.delivere_url;
  47. Fast.api.open(Table.api.replaceurl(url, row, table), __('Delivere'), $(this).data() || {});
  48. }
  49. },
  50. {
  51. 'click .btn-product': function (e, value, row, index) {
  52. e.stopPropagation();
  53. e.preventDefault();
  54. var table = $(this).closest('table');
  55. var options = table.bootstrapTable('getOptions');
  56. var ids = row[options.pk];
  57. row = $.extend({}, row ? row : {}, {ids: ids});
  58. var url = options.extend.product_url;
  59. Fast.api.open(Table.api.replaceurl(url, row, table), __('Product'), $(this).data() || {});
  60. }
  61. },
  62. {
  63. 'click .btn-refund': function (e, value, row, index) {
  64. e.stopPropagation();
  65. e.preventDefault();
  66. var table = $(this).closest('table');
  67. var options = table.bootstrapTable('getOptions');
  68. var ids = row[options.pk];
  69. row = $.extend({}, row ? row : {}, {ids: ids});
  70. var url = options.extend.refund_url;
  71. Fast.api.open(Table.api.replaceurl(url, row, table), __('Refund'), $(this).data() || {});
  72. }
  73. },
  74. {
  75. 'click .btn-cancelrefund': function (e, value, row, index) {
  76. e.stopPropagation();
  77. e.preventDefault();
  78. var table = $(this).closest('table');
  79. var options = table.bootstrapTable('getOptions');
  80. var ids = row[options.pk];
  81. row = $.extend({}, row ? row : {}, {ids: ids});
  82. var url = options.extend.cancelrefund_url;
  83. Fast.api.open(Table.api.replaceurl(url, row, table), __('Refund'), $(this).data() || {});
  84. }
  85. }
  86. );
  87. var table = $("#table");
  88. // 初始化表格
  89. table.bootstrapTable({
  90. url: $.fn.bootstrapTable.defaults.extend.index_url,
  91. pk: 'id',
  92. sortName: 'id',
  93. fixedColumns:true,
  94. fixedRightNumber:1,
  95. columns: [
  96. [
  97. {checkbox: true},
  98. // {field: 'id', title: __('Id'),visible:false},
  99. {field: 'user_id', title: __('User_id')},
  100. {field: 'user.nickname', title: '昵称'},
  101. {field: 'out_trade_no', title: __('Out_trade_no')},
  102. {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  103. // {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  104. // {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  105. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  106. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  107. {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Wallet'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  108. // {field: 'ip', title: __('Ip'), visible:false},
  109. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  110. // {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  111. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  112. {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  113. // {field: 'refund_status', title: __('Refund status'),searchList: {"0":__('None'),"1":__('Apply'),"2":__('Pass and left User delivery'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  114. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  115. // {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  116. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  117. {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  118. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  119. {field: 'remark', title: __('Remark'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符'},
  120. // {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  121. {
  122. field: 'operate',
  123. title: __('Operate'),
  124. table: table,
  125. events: Table.api.events.operate,
  126. formatter: Table.api.formatter.operate,
  127. buttons:[
  128. {
  129. name: 'refund',
  130. text: __('Refund'),
  131. classname: 'btn btn-xs btn-info btn-refund',
  132. extend: 'data-toggle="tooltip"',
  133. icon: 'fa fa-handshake-o',
  134. hidden: function(row){
  135. if(row.status == -1){
  136. return false;
  137. }
  138. return true;
  139. }
  140. },
  141. {
  142. name: 'cancelrefund',
  143. text: '未发货退款',
  144. classname: 'btn btn-xs btn-info btn-cancelrefund',
  145. extend: 'data-toggle="tooltip"',
  146. icon: 'fa fa-handshake-o',
  147. hidden: function(row){
  148. if(row.status == 0 && row.have_paid != 0 && row.have_delivered == 0){
  149. return false;
  150. }
  151. return true;
  152. }
  153. },
  154. {
  155. name: 'delivere',
  156. text: '发货',
  157. classname: 'btn btn-xs btn-info btn-delivere',
  158. extend: 'data-toggle="tooltip"',
  159. icon: 'fa fa-plane',
  160. hidden: function(row){
  161. if(row.status == 1 && row.have_paid != 0 && row.have_delivered == 0){
  162. return false;
  163. }
  164. if(row.status == -1 && row.have_paid != 0 && row.have_delivered == 0){
  165. return false;
  166. }
  167. return true;
  168. }
  169. },
  170. {
  171. name: 'product',
  172. text: __('Product'),
  173. classname: 'btn btn-xs btn-info btn-product',
  174. extend: 'data-toggle="tooltip"',
  175. icon: 'fa fa-star-half'
  176. },
  177. {
  178. name: 'edit',
  179. icon: 'fa fa-pencil',
  180. text: __('Edit'),
  181. extend: 'data-toggle="tooltip"',
  182. classname: 'btn btn-xs btn-success btn-editone',
  183. url: $.fn.bootstrapTable.defaults.extend.edit_url
  184. }
  185. ]
  186. }
  187. ]
  188. ],
  189. onLoadSuccess:function(){
  190. // 这里就是数据渲染结束后的回调函数
  191. $(".btn-refund").data("area", ['80%','80%']);
  192. }
  193. });
  194. // 为表格绑定事件
  195. Table.api.bindevent(table);
  196. },
  197. recyclebin: function () {
  198. // 初始化表格参数配置
  199. Table.api.init({
  200. extend: {
  201. 'dragsort_url': ''
  202. }
  203. });
  204. var table = $("#table");
  205. // 初始化表格
  206. table.bootstrapTable({
  207. url: 'unishop/order/recyclebin' + location.search,
  208. pk: 'id',
  209. sortName: 'id',
  210. columns: [
  211. [
  212. {checkbox: true},
  213. // {field: 'id', title: __('Id'),visible:false},
  214. {field: 'user_id', title: __('User_id')},
  215. {field: 'user.username', title: __('User name')},
  216. {field: 'out_trade_no', title: __('Out_trade_no')},
  217. {field: 'order_price', title: __('Order_price'), operate:'BETWEEN'},
  218. {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  219. // {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  220. {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'},
  221. {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Wallet'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  222. {field: 'ip', title: __('Ip'), visible:false},
  223. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  224. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  225. // {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  226. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  227. {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  228. // {field: 'refund_status', title: __('Refund status'),searchList: {"0":__('None'),"1":__('Apply'),"2":__('Waiting for shipment'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  229. {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  230. // {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  231. {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  232. {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  233. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  234. {field: 'remark', title: __('Remark'), operate: 'LIKE %...%', placeholder: '模糊搜索,*表示任意字符'},
  235. {
  236. field: 'deletetime',
  237. title: __('Deletetime'),
  238. operate: 'RANGE',
  239. addclass: 'datetimerange',
  240. formatter: Table.api.formatter.datetime
  241. },
  242. {
  243. field: 'operate',
  244. width: '130px',
  245. title: __('Operate'),
  246. table: table,
  247. events: Table.api.events.operate,
  248. buttons: [
  249. {
  250. name: 'Restore',
  251. text: __('Restore'),
  252. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  253. icon: 'fa fa-rotate-left',
  254. url: 'unishop/order/restore',
  255. refresh: true
  256. },
  257. // {
  258. // name: 'Destroy',
  259. // text: __('Destroy'),
  260. // classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  261. // icon: 'fa fa-times',
  262. // url: 'unishop/order/destroy',
  263. // refresh: true
  264. // }
  265. ],
  266. formatter: Table.api.formatter.operate
  267. }
  268. ]
  269. ]
  270. });
  271. // 为表格绑定事件
  272. Table.api.bindevent(table);
  273. },
  274. add: function () {
  275. Controller.api.bindevent();
  276. },
  277. edit: function () {
  278. Controller.api.bindevent();
  279. },
  280. delivery: function(){
  281. Controller.api.bindevent();
  282. },
  283. product: function(){
  284. Controller.api.bindevent();
  285. },
  286. cancelrefund: function(){
  287. Controller.api.bindevent();
  288. },
  289. refund: function(){
  290. Controller.api.bindevent();
  291. },
  292. api: {
  293. bindevent: function () {
  294. Form.api.bindevent($("form[role=form]"));
  295. }
  296. }
  297. };
  298. return Controller;
  299. });