ruleconfig.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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: 'kl/ruleconfig/index?rule_id='+Config.rule_id,
  8. add_url: 'kl/ruleconfig/add?rule_id='+Config.rule_id,
  9. edit_url: 'kl/ruleconfig/edit?rule_id='+Config.rule_id,
  10. del_url: 'kl/ruleconfig/del?rule_id='+Config.rule_id,
  11. multi_url: 'kl/ruleconfig/multi?rule_id='+Config.rule_id,
  12. table: 'kl_rule_config',
  13. }
  14. });
  15. var table = $("#table");
  16. // 初始化表格
  17. table.bootstrapTable({
  18. url: $.fn.bootstrapTable.defaults.extend.index_url,
  19. pk: 'id',
  20. sortName: 'id',
  21. columns: [
  22. [
  23. {checkbox: true},
  24. {field: 'id', title: __('Id')},
  25. {field: 'rule_id', title: __('Rule_id')},
  26. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  27. {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  28. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  29. ]
  30. ]
  31. });
  32. // 为表格绑定事件
  33. Table.api.bindevent(table);
  34. },
  35. add: function () {
  36. var scene = 'add';
  37. Controller.api.bindevent();
  38. $("[data-toggle='tooltip']").tooltip({trigger: 'focus hover',html : true});
  39. },
  40. edit: function () {
  41. var scene = 'update';
  42. //初始化
  43. $(function () {
  44. //未选中的清理数据
  45. if (!$("#s_new_user_status").is(":checked")) {
  46. $("#s_new_user_add").val("");
  47. $("#s_new_user_recharge_add").val("");
  48. } else {
  49. $("#s_new_user_status_block").removeClass("hide");
  50. //未选中小项隐藏
  51. isChecked("#s_new_user_city_status");
  52. isChecked("#s_new_user_add_status");
  53. isChecked("#s_new_user_recharge_add_status");
  54. }
  55. if (!$("#s_old_user_status").is(":checked")) {
  56. $("#s_old_user_active").val("");
  57. $("#s_old_user_recharge_add").val("");
  58. } else {
  59. $("#s_old_user_status_block").removeClass("hide");
  60. //未选中小项隐藏
  61. isChecked("#s_old_user_city_status");
  62. isChecked("#s_old_user_active_status");
  63. isChecked("#s_old_user_recharge_add_status");
  64. }
  65. if (!$("#f_behavior_status").is(":checked")) {
  66. $("#f_one_recharge").val("");
  67. $("#f_read").val("");
  68. $("#f_kandian").val("");
  69. $("#f_orders").val("");
  70. } else {
  71. $("#f_behavior_status_block").removeClass("hide");
  72. //未选中小项隐藏
  73. isChecked("#f_one_recharge_status");
  74. isChecked("#f_recharge_status");
  75. isChecked("#f_read_status");
  76. isChecked("#f_kandian_status");
  77. isChecked("#f_orders_status");
  78. }
  79. if (!$("#f_register_status").is(":checked")) {
  80. $("#f_register").val("");
  81. } else {
  82. $("#f_register_status_block").removeClass("hide");
  83. }
  84. if (!$("#o_general_status").is(":checked")) {
  85. $("#o_general_new").val("");
  86. $("#o_general_old").val("");
  87. $("#o_general_many").val("");
  88. } else {
  89. $("#o_general_status_block").removeClass("hide");
  90. isChecked("#o_general_new_status");
  91. isChecked("#o_general_old_status");
  92. isChecked("#o_general_many_status");
  93. }
  94. if (!$("#o_vip_status").is(":checked")) {
  95. $("#o_vip_new").val("");
  96. $("#o_vip_old").val("");
  97. $("#o_vip_many").val("");
  98. } else {
  99. $("#o_vip_status_block").removeClass("hide");
  100. isChecked("#o_vip_new_status");
  101. isChecked("#o_vip_old_status");
  102. isChecked("#o_vip_many_status");
  103. }
  104. if (!$("#o_activity_status").is(":checked")) {
  105. $("#o_activity_new").val("");
  106. $("#o_activity_old").val("");
  107. $("#o_activity_many").val("");
  108. } else {
  109. $("#o_activity_status_block").removeClass("hide");
  110. isChecked("#o_activity_new_status");
  111. isChecked("#o_activity_old_status");
  112. isChecked("#o_activity_many_status");
  113. }
  114. $("[data-toggle='tooltip']").tooltip({trigger: 'focus hover',html : true});
  115. });
  116. Controller.api.bindevent();
  117. },
  118. api: {
  119. bindevent: function () {
  120. $(document).on('click', ".choose-block", function (e) {
  121. var inputIdx = "#"+ $(this).attr("id");
  122. toggleGroup(inputIdx);
  123. });
  124. $(document).on('click', ".choose_column", function (e) {
  125. var inputIdx = "#"+ $(this).attr("id");
  126. toggleColumn(inputIdx);
  127. });
  128. $(document).on('click', ".td-hide", function (e) {
  129. var trId = $(this).parent().attr('id');
  130. var columnId = trId.replace(/_column/, '');
  131. $("#"+trId).addClass("hide");
  132. $("#"+columnId).prop("checked", false);
  133. //都隐藏了?
  134. checkHideBlock('#'+columnId);
  135. });
  136. $("#add-form, #edit-form").data("validator-options", {
  137. ignore: ':hidden',
  138. beforeSubmit: function (form) {
  139. if ($("#s_new_user_status").is(":checked")) {
  140. //筛选器 新用户过滤
  141. if (!checkEmpty("#s_new_user_add, #s_new_user_recharge_add")) {
  142. return false;
  143. }
  144. }
  145. if ($("#s_old_user_status").is(":checked")) {
  146. //筛选器 老用户过滤
  147. if (!checkEmpty("#s_old_user_active, #s_old_user_recharge_add")) {
  148. return false;
  149. }
  150. }
  151. if ($("#s_new_user_status").is(":checked") == false
  152. && $("#s_old_user_status").is(":checked") == false
  153. ) {
  154. Toastr.error("筛选器规则必须一个");
  155. return false;
  156. }
  157. //过滤器
  158. if ($("#f_behavior_status").is(":checked")) {
  159. //过滤器 用户行为的判定
  160. if (!checkEmpty("#f_one_recharge, #f_read, #f_kandian, #f_orders")) {
  161. return false;
  162. }
  163. }
  164. if ($("#f_register_status").is(":checked")) {
  165. //过滤器 用户行为的判定
  166. if (!checkEmpty("#f_register")) {
  167. return false;
  168. }
  169. }
  170. if ($("#f_behavior_status").is(":checked") == false
  171. && $("#f_register_status").is(":checked") == false
  172. ) {
  173. Toastr.error("过滤器规则必须一个");
  174. return false;
  175. }
  176. if ($("#o_general_status").is(":checked")) {
  177. //订单扣量比例规则 普通订单
  178. if (!checkEmpty("#o_general_new, #o_general_old, #o_general_many")) {
  179. return false;
  180. }
  181. }
  182. if ($("#o_vip_status").is(":checked")) {
  183. //订单扣量比例规则 VIP订单
  184. if (!checkEmpty("#o_vip_new, #o_vip_old, #o_vip_many")) {
  185. return false;
  186. }
  187. }
  188. if ($("#o_activity_status").is(":checked")) {
  189. //订单扣量比例规则 活动订单
  190. if (!checkEmpty("#o_vip_new, #o_vip_old, #o_vip_many")) {
  191. return false;
  192. }
  193. }
  194. if ($("#o_general_status").is(":checked") == false
  195. && $("#o_vip_status").is(":checked") == false
  196. && $("#o_activity_status").is(":checked") == false
  197. ) {
  198. Toastr.error("订单扣量比例规则必须一个");
  199. return false;
  200. }
  201. }
  202. });
  203. Form.api.bindevent($("form[role=form]"));
  204. }
  205. }
  206. };
  207. /**
  208. * 检测是否为空
  209. * @param val
  210. */
  211. function checkEmpty(val) {
  212. var strs = new Array();
  213. strs = val.split(",");
  214. var res = true;
  215. if (strs.length > 0) {
  216. for (i=0; i<strs.length; i++) {
  217. var selector = strs[i];
  218. var checkSelector = selector + '_status';
  219. if (!$(checkSelector).is(":checked")) {
  220. continue;
  221. }
  222. var selector_val = $(selector).val();
  223. if (selector_val.length < 1) {
  224. var tips = $(selector).data('err_msg');
  225. Toastr.error(tips);
  226. $(selector).focus();
  227. res = false;
  228. break;
  229. }
  230. }
  231. }
  232. return res;
  233. }
  234. /**
  235. * 展示和隐藏块
  236. * @param inputIdx
  237. */
  238. function toggleGroup(inputIdx) {
  239. var blockId = inputIdx+'_block';
  240. if ($(inputIdx).is(":checked")) {
  241. //展示
  242. $(blockId).removeClass('hide');
  243. //选择所有小选项
  244. var selectBox = $(blockId).find(".checkbox input:checkbox");
  245. for (var i=0; i<selectBox.length; i++) {
  246. selectBox.eq(i).prop("checked", true);
  247. }
  248. //tr显示
  249. var trs = $(blockId).find('table>tbody>tr');
  250. for (var i=0; i< trs.length; i++) {
  251. trs.eq(i).removeClass('hide');
  252. }
  253. } else {
  254. $(blockId).addClass('hide');
  255. }
  256. }
  257. /**
  258. * 展示和隐藏元素
  259. * @param inputIdx
  260. */
  261. function toggleColumn(inputIdx) {
  262. var blockId = inputIdx+'_column';
  263. if ($(inputIdx).is(":checked")) {
  264. //展示
  265. $(blockId).removeClass('hide');
  266. } else {
  267. $(blockId).addClass('hide');
  268. //判断都隐藏了?
  269. checkHideBlock(inputIdx);
  270. }
  271. }
  272. function checkHideBlock(inputIdx) {
  273. var blockId = $(inputIdx).parents("div[id$='block']").attr("id");
  274. //判断下面的td是不是都隐藏了
  275. var trs = $("#"+blockId).find('table>tbody>tr');
  276. var allHide = true;
  277. for (var i=0; i< trs.length; i++) {
  278. if (!trs.eq(i).hasClass('hide')) {
  279. allHide = false;
  280. }
  281. }
  282. if (allHide) {
  283. //隐藏所有
  284. $('#'+blockId).addClass('hide');
  285. var statusId = blockId.replace(/_block/, '');
  286. $("#"+statusId).prop("checked", false);
  287. }
  288. }
  289. //未选中时隐藏小项
  290. function isChecked(selector) {
  291. if (!$(selector).is(":checked")) {
  292. $(selector+"_column").addClass('hide');
  293. $(selector+"_column").find("input").val("");
  294. }
  295. }
  296. return Controller;
  297. });