level.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  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: 'commission/level/index' + location.search,
  8. add_url: 'commission/level/add',
  9. edit_url: 'commission/level/edit',
  10. del_url: 'commission/level/delete',
  11. multi_url: 'commission/level/multi',
  12. import_url: 'commission/level/import',
  13. table: 'commission_level',
  14. }
  15. });
  16. var table = $("#table");
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'level',
  21. sortName: 'level',
  22. columns: [
  23. [
  24. {checkbox: true},
  25. {field: 'level', title: __('等级权重'), width: 80, formatter: function(value, row, index) {
  26. return '等级' + value;
  27. }},
  28. {field: 'name', title: __('等级名称'), operate: 'LIKE'},
  29. {field: 'image', title: __('等级徽章'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  30. {field: 'commission_rules', title: __('一级佣金比例'), operate: false, formatter: function(value, row, index) {
  31. if (typeof value === 'string') {
  32. try {
  33. value = JSON.parse(value);
  34. } catch (e) {
  35. value = {};
  36. }
  37. }
  38. return (value.commission_1 || '0.00') + '%';
  39. }},
  40. {field: 'commission_rules', title: __('二级佣金比例'), operate: false, formatter: function(value, row, index) {
  41. if (typeof value === 'string') {
  42. try {
  43. value = JSON.parse(value);
  44. } catch (e) {
  45. value = {};
  46. }
  47. }
  48. return (value.commission_2 || '0.00') + '%';
  49. }},
  50. {field: 'commission_rules', title: __('三级佣金比例'), operate: false, formatter: function(value, row, index) {
  51. if (typeof value === 'string') {
  52. try {
  53. value = JSON.parse(value);
  54. } catch (e) {
  55. value = {};
  56. }
  57. }
  58. return (value.commission_3 || '0.00') + '%';
  59. }},
  60. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
  61. buttons: [
  62. {
  63. name: 'edit',
  64. text: __('编辑'),
  65. title: __('编辑'),
  66. classname: 'btn btn-xs btn-success btn-editone',
  67. icon: 'fa fa-edit',
  68. url: 'commission/level/edit',
  69. callback: function (data) {
  70. table.bootstrapTable('refresh');
  71. }
  72. }
  73. ],
  74. formatter: Table.api.formatter.operate}
  75. ]
  76. ]
  77. });
  78. // 为表格绑定事件
  79. Table.api.bindevent(table);
  80. },
  81. add: function () {
  82. Controller.api.bindevent();
  83. },
  84. edit: function () {
  85. Controller.api.bindevent();
  86. },
  87. select: function () {
  88. // 初始化表格参数
  89. Table.api.init({
  90. extend: {
  91. index_url: 'commission/level/select' + location.search,
  92. }
  93. });
  94. var table = $("#table");
  95. // 初始化表格
  96. table.bootstrapTable({
  97. url: $.fn.bootstrapTable.defaults.extend.index_url,
  98. pk: 'level',
  99. sortName: 'level',
  100. columns: [
  101. [
  102. {checkbox: true},
  103. {field: 'level', title: __('等级权重'), width: 80},
  104. {field: 'name', title: __('等级名称')},
  105. {field: 'image', title: __('等级徽章'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  106. {field: 'commission_rules.commission_1', title: __('一级佣金比例'), operate: false, formatter: function(value, row, index) {
  107. return (value || '0.00') + '%';
  108. }},
  109. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
  110. buttons: [
  111. {
  112. name: 'choose',
  113. text: __('选择'),
  114. title: __('选择'),
  115. classname: 'btn btn-xs btn-primary btn-choose',
  116. icon: 'fa fa-check',
  117. click: function (data) {
  118. var multiple = Backend.api.query('multiple');
  119. multiple = multiple == 'true' ? true : false;
  120. Fast.api.close(data);
  121. }
  122. }
  123. ],
  124. formatter: Table.api.formatter.operate}
  125. ]
  126. ]
  127. });
  128. // 为表格绑定事件
  129. Table.api.bindevent(table);
  130. },
  131. api: {
  132. // 默认等级选项
  133. defaultLevels: [
  134. {name: '一级', level: 1},
  135. {name: '二级', level: 2},
  136. {name: '三级', level: 3},
  137. {name: '四级', level: 4},
  138. {name: '五级', level: 5},
  139. {name: '六级', level: 6},
  140. {name: '七级', level: 7},
  141. {name: '八级', level: 8},
  142. {name: '九级', level: 9},
  143. {name: '十级', level: 10}
  144. ],
  145. bindevent: function () {
  146. Form.api.bindevent($("form[role=form]"));
  147. var self = this;
  148. // 初始化页面数据
  149. self.initPageData();
  150. // 绑定等级选择事件
  151. $(document).on('click', '.level-select-item', function() {
  152. var level = $(this).data('level');
  153. // 如果是禁用的按钮,不执行任何操作
  154. if ($(this).hasClass('disabled')) {
  155. return false;
  156. }
  157. var existLevels = $('.level-select-item.disabled').map(function() {
  158. return $(this).data('level');
  159. }).get();
  160. if (existLevels.indexOf(level) === -1) {
  161. $('.level-select-item').removeClass('active');
  162. $(this).addClass('active');
  163. $('input[name="row[level]"]').val(level);
  164. }
  165. });
  166. },
  167. initPageData: function() {
  168. var self = this;
  169. var currentLevel = $('input[name="row[level]"]').val();
  170. var isEdit = currentLevel ? true : false;
  171. // 获取已存在的等级
  172. $.ajax({
  173. url: Fast.api.fixurl('commission/level/select'),
  174. type: 'GET',
  175. success: function(ret) {
  176. if (ret.code === 1) {
  177. var existLevels = ret.data.map(function(item) {
  178. return parseInt(item.level);
  179. });
  180. if (isEdit) {
  181. // 编辑模式,移除当前编辑的等级
  182. var index = existLevels.indexOf(parseInt(currentLevel));
  183. if (index > -1) {
  184. existLevels.splice(index, 1);
  185. }
  186. }
  187. self.renderLevelSelect(existLevels, currentLevel);
  188. } else {
  189. // 请求成功但返回错误,至少显示基本的等级选择器
  190. self.renderLevelSelect([], currentLevel);
  191. }
  192. },
  193. error: function(xhr, status, error) {
  194. // Ajax请求失败,至少显示基本的等级选择器
  195. self.renderLevelSelect([], currentLevel);
  196. }
  197. });
  198. },
  199. renderLevelSelect: function(existLevels, currentLevel) {
  200. var html = '';
  201. // 如果是编辑1级(默认等级),只显示1级并禁用选择
  202. if (currentLevel && parseInt(currentLevel) === 1) {
  203. html += '<div class="level-select-item btn btn-default active disabled" data-level="1">';
  204. html += '一级(默认等级,不可修改)';
  205. html += '</div>';
  206. } else {
  207. // 非1级或新建时,显示可选等级
  208. this.defaultLevels.forEach(function(item) {
  209. var disabled = existLevels.indexOf(item.level) !== -1 ? 'disabled' : '';
  210. var active = (currentLevel && parseInt(currentLevel) === item.level) ? 'active' : '';
  211. html += '<div class="level-select-item btn btn-default ' + disabled + ' ' + active + '" data-level="' + item.level + '">';
  212. html += item.name;
  213. html += '</div>';
  214. });
  215. }
  216. $('.level-select-container').html(html);
  217. }
  218. }
  219. };
  220. return Controller;
  221. });