You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

283 lines
16 KiB

  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.bootstrapTable({
  77. pageSize: 20,
  78. pageList: [20, 50, 100],
  79. url: $.fn.bootstrapTable.defaults.extend.index_url,
  80. pk: 'id',
  81. sortName: 'id',
  82. showExport: false,
  83. commonSearch: true,
  84. showToggle: false,
  85. columns: [
  86. [
  87. {checkbox: true},
  88. // {field: 'id', title: __('Id'),visible:false},
  89. // {field: 'user_id', title: __('User_id')},
  90. {field: 'user.username', title: __('工号'),operate: 'LIKE'},
  91. {field: 'user.nickname', title: __('名字'),visible:false,operate: 'LIKE'},
  92. {field: 'out_trade_no', title: __('Out_trade_no'),operate:false},
  93. {field: 'order_price', title: __('Order_price'), operate:false},
  94. // {field: 'discount_price', title: __('Discount_price'), operate:'BETWEEN'},
  95. // {field: 'delivery_price', title: __('Delivery_price'), operate:'BETWEEN'},
  96. {field: 'total_price', title: __('Total_price'), operate:false},
  97. {field: 'status', title: __('Status'),operate:false, searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')}, formatter: Table.api.formatter.status},
  98. {field: 'pay_type', title: __('Pay_type'),operate:false, searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')}, formatter: Table.api.formatter.normal},
  99. // {field: 'ip', title: __('Ip'), visible:false},
  100. // {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  101. // {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  102. // {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  103. // {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')}, formatter: Table.api.formatter.statusCustom},
  104. // {field: 'refund_status', title: __('Refund status'),searchList: {"0":__('None'),"1":__('Apply'),"2":__('Waiting for shipment'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  105. // {field: 'have_paid', title: __('Pay time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  106. // {field: 'have_delivered', title: __('Delivered time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  107. // {field: 'have_received', title: __('Received time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  108. // {field: 'have_commented', title: __('Commented time'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  109. {field: 'createtime', title: __('Createtime'),operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  110. {field: 'remark', title: __('Remark'),operate:false},
  111. {field: 'updatetime', title: __('Updatetime'),operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  112. {
  113. field: 'operate',
  114. title: __('Operate'),
  115. table: table,
  116. events: Table.api.events.operate,
  117. formatter: Table.api.formatter.operate,
  118. buttons:[
  119. {
  120. name: 'refund',
  121. text: __('Refund'),
  122. classname: 'btn btn-xs btn-info btn-ajax',
  123. extend: 'data-toggle="tooltip"',
  124. icon: 'fa fa-handshake-o',
  125. url:function(row){
  126. return "unishop/order/doRefund?id="+row.id;
  127. },
  128. confirm:"是否确认退款"
  129. },
  130. // {
  131. // name: 'delivere',
  132. // text: __('Delivere'),
  133. // classname: 'btn btn-xs btn-info btn-delivere',
  134. // extend: 'data-toggle="tooltip"',
  135. // icon: 'fa fa-plane'
  136. // },
  137. // {
  138. // name: 'product',
  139. // text: __('Product'),
  140. // classname: 'btn btn-xs btn-info btn-product',
  141. // extend: 'data-toggle="tooltip"',
  142. // icon: 'fa fa-star-half'
  143. // },
  144. {
  145. name: 'edit',
  146. icon: 'fa fa-pencil',
  147. text: __('Edit'),
  148. extend: 'data-toggle="tooltip"',
  149. classname: 'btn btn-xs btn-success btn-editone',
  150. url: $.fn.bootstrapTable.defaults.extend.edit_url
  151. }
  152. ]
  153. }
  154. ]
  155. ]
  156. });
  157. // 为表格绑定事件
  158. Table.api.bindevent(table);
  159. $(document).on("click", ".btn-export", function () {
  160. window.location.href="order/export"
  161. });
  162. $(document).on("click", ".btn-finish", function () {
  163. // window.location.href="order/finish"
  164. Fast.api.ajax({
  165. url:"unishop/order/finish",
  166. loading:false
  167. }, function(data, ret){
  168. //成功回调
  169. // layer.msg('操作成功!');
  170. });
  171. });
  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. pageSize: 20,
  187. pageList: [20, 50, 100],
  188. columns: [
  189. [
  190. {checkbox: true},
  191. {field: 'id', title: __('Id'),visible:false},
  192. {field: 'user_id', title: __('User_id')},
  193. {field: 'user.username', title: __('User name')},
  194. {field: 'out_trade_no', title: __('Out_trade_no'),operate:false},
  195. {field: 'order_price', title: __('Order_price'), operate:false},
  196. {field: 'discount_price', title: __('Discount_price'), operate:false},
  197. {field: 'delivery_price', title: __('Delivery_price'), operate:false},
  198. {field: 'total_price', title: __('Total_price'),operate:false},
  199. {field: 'pay_type', title: __('Pay_type'), searchList: {"1":__('Online'),"2":__('Offline'),"3":__('wxPay'),"4":__('aliPay')},operate:false, formatter: Table.api.formatter.normal},
  200. {field: 'ip', title: __('Ip'), visible:false},
  201. {field: 'status', title: __('Status'), searchList: {"-1":__('Refund'),"0":__('Cancel'),"1":__('Normal')},operate:false, formatter: Table.api.formatter.status},
  202. {field: 'have_paid_status', title: __('Have_paid'), searchList: {"0":__('No'),"1":__('Yes')},operate:false, formatter: Table.api.formatter.statusCustom},
  203. {field: 'have_delivered_status', title: __('Have_delivered'),searchList: {"0":__('No'),"1":__('Yes')},operate:false, formatter: Table.api.formatter.statusCustom},
  204. {field: 'have_received_status', title: __('Have_received'),searchList: {"0":__('No'),"1":__('Yes')},operate:false, formatter: Table.api.formatter.statusCustom},
  205. {field: 'have_commented_status', title: __('Have_commented'),searchList: {"0":__('No'),"1":__('Yes')},operate:false, formatter: Table.api.formatter.statusCustom},
  206. {field: 'refund_status',operate:false, title: __('Refund status'),searchList: {"0":__('None'),"1":__('Apply'),"2":__('Waiting for shipment'),"3":__('Pass'),"4":__('Refuse')}, formatter: Table.api.formatter.status},
  207. {field: 'have_paid', title: __('Pay time'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  208. {field: 'have_delivered', title: __('Delivered time'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  209. {field: 'have_received', title: __('Received time'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  210. {field: 'have_commented', title: __('Commented time'),operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime,visible:false},
  211. {field: 'createtime', title: __('Createtime'), operate:false, addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  212. {field: 'remark', title: __('Remark'), operate:false, placeholder: '模糊搜索,*表示任意字符'},
  213. {
  214. field: 'deletetime',
  215. title: __('Deletetime'),
  216. operate: 'RANGE',
  217. addclass: 'datetimerange',
  218. formatter: Table.api.formatter.datetime
  219. },
  220. {
  221. field: 'operate',
  222. width: '130px',
  223. title: __('Operate'),
  224. table: table,
  225. events: Table.api.events.operate,
  226. buttons: [
  227. {
  228. name: 'Restore',
  229. text: __('Restore'),
  230. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  231. icon: 'fa fa-rotate-left',
  232. url: 'unishop/order/restore',
  233. refresh: true
  234. },
  235. {
  236. name: 'Destroy',
  237. text: __('Destroy'),
  238. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  239. icon: 'fa fa-times',
  240. url: 'unishop/order/destroy',
  241. refresh: true
  242. }
  243. ],
  244. formatter: Table.api.formatter.operate
  245. }
  246. ]
  247. ]
  248. });
  249. // 为表格绑定事件
  250. Table.api.bindevent(table);
  251. },
  252. add: function () {
  253. Controller.api.bindevent();
  254. },
  255. edit: function () {
  256. Controller.api.bindevent();
  257. },
  258. delivery: function(){
  259. Controller.api.bindevent();
  260. },
  261. product: function(){
  262. Controller.api.bindevent();
  263. },
  264. refund: function(){
  265. Controller.api.bindevent();
  266. },
  267. api: {
  268. bindevent: function () {
  269. Form.api.bindevent($("form[role=form]"));
  270. }
  271. }
  272. };
  273. return Controller;
  274. });