lotteryprize.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数
  5. Table.api.init({
  6. extend: {
  7. index_url: 'lottery/lotteryprize/index' + location.search,
  8. add_url: 'lottery/lotteryprize/add',
  9. edit_url: 'lottery/lotteryprize/edit',
  10. del_url: 'lottery/lotteryprize/del',
  11. multi_url: 'lottery/lotteryprize/multi',
  12. import_url: 'lottery/lotteryprize/import',
  13. table: 'shop_lottery_prize',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'id',
  21. sortName: 'sort_order',
  22. sortOrder: 'desc',
  23. fixedColumns: true,
  24. fixedRightNumber: 1,
  25. columns: [
  26. [
  27. {checkbox: true},
  28. {field: 'id', title: __('Id'), operate: false},
  29. {field: 'activity.name', title: __('活动名称'), operate: 'LIKE'},
  30. {field: 'name', title: __('奖品名称'), operate: 'LIKE'},
  31. {field: 'type', title: __('奖品类型'), searchList: {"1":"未中奖","2":"实物奖品","3":"优惠券","4":"红包","5":"兑换码","6":"商城奖品"}, formatter: Table.api.formatter.normal},
  32. {field: 'image', title: __('奖品图片'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  33. {field: 'probability', title: __('中奖概率(%)'), operate: false},
  34. {field: 'total_stock', title: __('总库存'), operate: false},
  35. {field: 'remain_stock', title: __('剩余库存'), operate: false},
  36. {field: 'win_count', title: __('已中奖'), operate: false},
  37. {field: 'sort_order', title: __('排序'), operate: false},
  38. {field: 'deliver_type', title: __('发放方式'), searchList: {"1":"自动发放","2":"手动发放"}, formatter: Table.api.formatter.normal},
  39. {field: 'status', title: __('状态'), searchList: {"0":"禁用","1":"启用"}, formatter: Table.api.formatter.status},
  40. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
  41. buttons: [
  42. {
  43. name: 'importCodes',
  44. title: __('导入兑换码'),
  45. classname: 'btn btn-xs btn-success btn-magic btn-ajax',
  46. icon: 'fa fa-upload',
  47. url: 'lottery/lotteryprize/importCodes',
  48. visible: function (row) {
  49. return row.type == '5'; // 只有兑换码类型才显示
  50. }
  51. },
  52. {
  53. name: 'addStock',
  54. title: __('补充库存'),
  55. classname: 'btn btn-xs btn-info btn-magic btn-ajax',
  56. icon: 'fa fa-plus',
  57. url: 'lottery/lotteryprize/addStock',
  58. visible: function (row) {
  59. return row.type != '1'; // 未中奖类型不显示
  60. }
  61. }
  62. ],
  63. formatter: Table.api.formatter.operate
  64. }
  65. ]
  66. ]
  67. });
  68. // 为表格绑定事件
  69. Table.api.bindevent(table);
  70. },
  71. add: function () {
  72. Controller.api.bindevent();
  73. },
  74. edit: function () {
  75. Controller.api.bindevent();
  76. },
  77. importCodes: function () {
  78. Controller.api.bindevent();
  79. },
  80. addStock: function () {
  81. Controller.api.bindevent();
  82. },
  83. api: {
  84. bindevent: function () {
  85. Form.api.bindevent($("form[role=form]"));
  86. // 奖品类型变化时的处理
  87. $(document).on('change', 'input[name="row[type]"]', function(){
  88. var type = $(this).val();
  89. $('.prize-config-group').hide();
  90. switch(type) {
  91. case '2': // 实物奖品
  92. $('.goods-config-group').show();
  93. break;
  94. case '3': // 优惠券
  95. $('.coupon-config-group').show();
  96. break;
  97. case '4': // 红包
  98. $('.amount-config-group').show();
  99. break;
  100. case '5': // 兑换码
  101. $('.exchange-codes-group').show();
  102. break;
  103. case '6': // 商城奖品
  104. $('.shop-goods-config-group').show();
  105. break;
  106. }
  107. });
  108. // 发放方式变化时的处理
  109. $(document).on('change', 'input[name="row[deliver_type]"]', function(){
  110. var deliver_type = $(this).val();
  111. if(deliver_type == '2') {
  112. layer.msg('手动发放需要在中奖记录中手动操作发放');
  113. }
  114. });
  115. // 概率输入验证
  116. $(document).on('blur', 'input[name="row[probability]"]', function(){
  117. var probability = parseFloat($(this).val());
  118. if(probability < 0 || probability > 100) {
  119. layer.msg('中奖概率必须在0-100之间');
  120. $(this).focus();
  121. return false;
  122. }
  123. });
  124. // 库存数量变化时同步剩余库存
  125. $(document).on('blur', 'input[name="row[total_stock]"]', function(){
  126. var total_stock = parseInt($(this).val());
  127. var win_count = parseInt($('input[name="row[win_count]"]').val()) || 0;
  128. $('input[name="row[remain_stock]"]').val(total_stock - win_count);
  129. });
  130. }
  131. }
  132. };
  133. return Controller;
  134. });