cate.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. let current_kind = 'all';
  3. var Controller = {
  4. index: function () {
  5. // 初始化表格参数配置
  6. Table.api.init({
  7. extend: {
  8. index_url: 'exam/cate/index' + location.search,
  9. add_url: 'exam/cate/add?kind=' + current_kind,
  10. edit_url: 'exam/cate/edit',
  11. del_url: 'exam/cate/del',
  12. multi_url: 'exam/cate/multi',
  13. import_url: 'exam/cate/import',
  14. table: 'exam_cate',
  15. }
  16. });
  17. var table = $("#table");
  18. // 初始化表格
  19. table.bootstrapTable({
  20. url: $.fn.bootstrapTable.defaults.extend.index_url,
  21. pk: 'id',
  22. sortName: 'id',
  23. pagination: false,
  24. commonSearch: false,
  25. search: false,
  26. showExport: false,//隐藏导出
  27. showToggle: false,//隐藏浏览模式
  28. showColumns: false,//隐藏显示隐藏模式
  29. searchFormVisible: true,//默认显示搜索表单
  30. columns: [
  31. [
  32. {checkbox: true},
  33. {field: 'id', title: __('Id'), operate: false},
  34. {
  35. field: 'name', title: __('Name'), operate: false, align: 'left', formatter:function (value, row, index) {
  36. return value.toString().replace(/(&|&)nbsp;/g, ' ');
  37. }},
  38. {
  39. field: 'kind',
  40. title: __('Kind'),
  41. searchList: {"QUESTION": __('Question'), "PAPER": __('Paper'), "ROOM": __('Room')},
  42. formatter: Table.api.formatter.normal
  43. },
  44. // {field: 'icon', title: __('Icon'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  45. // {field: 'parent_id', title: __('Parent_id'), operate: 'LIKE'},
  46. {field: 'sort', title: __('Sort')},
  47. {
  48. field: 'operate',
  49. title: __('Operate'),
  50. table: table,
  51. events: Table.api.events.operate,
  52. formatter: Table.api.formatter.operate
  53. }
  54. ]
  55. ]
  56. });
  57. // 为表格绑定事件
  58. Table.api.bindevent(table);
  59. //绑定TAB事件
  60. $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  61. // var options = table.bootstrapTable(tableOptions);
  62. var typeStr = $(this).attr("href").replace('#', '');
  63. var options = table.bootstrapTable('getOptions');
  64. options.pageNumber = 1;
  65. options.queryParams = function (params) {
  66. params.kind = typeStr;
  67. return params;
  68. };
  69. table.bootstrapTable('refresh', {});
  70. current_kind = typeStr;
  71. if (typeStr == 'all') {
  72. $('.btn-add').addClass('hide')
  73. } else {
  74. $('.btn-add').removeClass('hide')
  75. }
  76. // 重新初始化表格参数
  77. Table.api.init({
  78. extend: {
  79. index_url: 'exam/cate/index' + location.search,
  80. add_url: 'exam/cate/add?kind=' + current_kind,
  81. edit_url: 'exam/cate/edit?kind=' + current_kind,
  82. del_url: 'exam/cate/del',
  83. multi_url: 'exam/cate/multi',
  84. import_url: 'exam/cate/import',
  85. table: 'cate',
  86. }
  87. });
  88. return false;
  89. });
  90. },
  91. recyclebin: function () {
  92. // 初始化表格参数配置
  93. Table.api.init({
  94. extend: {
  95. 'dragsort_url': ''
  96. }
  97. });
  98. var table = $("#table");
  99. // 初始化表格
  100. table.bootstrapTable({
  101. url: 'exam/cate/recyclebin' + location.search,
  102. pk: 'id',
  103. sortName: 'id',
  104. columns: [
  105. [
  106. {checkbox: true},
  107. {field: 'id', title: __('Id')},
  108. {field: 'name', title: __('Name'), align: 'left'},
  109. {
  110. field: 'deletetime',
  111. title: __('Deletetime'),
  112. operate: 'RANGE',
  113. addclass: 'datetimerange',
  114. formatter: Table.api.formatter.datetime
  115. },
  116. {
  117. field: 'operate',
  118. width: '130px',
  119. title: __('Operate'),
  120. table: table,
  121. events: Table.api.events.operate,
  122. buttons: [
  123. {
  124. name: 'Restore',
  125. text: __('Restore'),
  126. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  127. icon: 'fa fa-rotate-left',
  128. url: 'exam/cate/restore',
  129. refresh: true
  130. },
  131. {
  132. name: 'Destroy',
  133. text: __('Destroy'),
  134. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  135. icon: 'fa fa-times',
  136. url: 'exam/cate/destroy',
  137. refresh: true
  138. }
  139. ],
  140. formatter: Table.api.formatter.operate
  141. }
  142. ]
  143. ]
  144. });
  145. // 为表格绑定事件
  146. Table.api.bindevent(table);
  147. },
  148. add: function () {
  149. Controller.api.bindevent();
  150. setTimeout(function () {
  151. $("#c-kind").trigger("change");
  152. }, 100);
  153. },
  154. edit: function () {
  155. Controller.api.bindevent();
  156. $("#c-kind").trigger('change')
  157. },
  158. api: {
  159. bindevent: function () {
  160. $(document).on("change", "#c-kind", function () {
  161. $("#c-parent_id option[data-type='all']").prop("selected", true);
  162. $("#c-parent_id option").removeClass("hide");
  163. // 隐藏非当前kind的数据
  164. $("#c-parent_id option[data-type!='" + $(this).val() + "']").addClass("hide");
  165. // 编辑时隐藏当前数据
  166. let id = $('#id').val()
  167. if (id) {
  168. $("#c-parent_id option[value='" + id + "']").addClass("hide");
  169. }
  170. $("#c-parent_id option[value='0']").removeClass("hide");
  171. // 刷新select项
  172. $("#c-parent_id").data("selectpicker") && $("#c-parent_id").selectpicker("refresh");
  173. });
  174. Form.api.bindevent($("form[role=form]"));
  175. $(document).on("change", "#c-parent_id", function () {
  176. console.log('parent_id', $(this).val())
  177. });
  178. }
  179. }
  180. };
  181. return Controller;
  182. });