cate.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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. buttons:[
  51. {
  52. name:'show_question',
  53. text:'查看试题',
  54. title:'查看试题',
  55. icon:'fa fa-exclamation-circle',
  56. classname:'btn btn-xs btn-info btn-dialog btn-show_question',
  57. url:'exam/question/index/cate_id/{ids}',
  58. target:'_self',
  59. },
  60. ],
  61. table: table,
  62. events: Table.api.events.operate,
  63. formatter: Table.api.formatter.operate
  64. }
  65. ]
  66. ],
  67. onLoadSuccess:function(){
  68. // 这里就是数据渲染结束后的回调函数
  69. $(".btn-show_question").data("area", ['90%','90%']);
  70. }
  71. });
  72. // 为表格绑定事件
  73. Table.api.bindevent(table);
  74. //绑定TAB事件
  75. $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  76. // var options = table.bootstrapTable(tableOptions);
  77. var typeStr = $(this).attr("href").replace('#', '');
  78. var options = table.bootstrapTable('getOptions');
  79. options.pageNumber = 1;
  80. options.queryParams = function (params) {
  81. params.kind = typeStr;
  82. return params;
  83. };
  84. table.bootstrapTable('refresh', {});
  85. current_kind = typeStr;
  86. if (typeStr == 'all') {
  87. $('.btn-add').addClass('hide')
  88. } else {
  89. $('.btn-add').removeClass('hide')
  90. }
  91. // 重新初始化表格参数
  92. Table.api.init({
  93. extend: {
  94. index_url: 'exam/cate/index' + location.search,
  95. add_url: 'exam/cate/add?kind=' + current_kind,
  96. edit_url: 'exam/cate/edit?kind=' + current_kind,
  97. del_url: 'exam/cate/del',
  98. multi_url: 'exam/cate/multi',
  99. import_url: 'exam/cate/import',
  100. table: 'cate',
  101. }
  102. });
  103. return false;
  104. });
  105. },
  106. recyclebin: function () {
  107. // 初始化表格参数配置
  108. Table.api.init({
  109. extend: {
  110. 'dragsort_url': ''
  111. }
  112. });
  113. var table = $("#table");
  114. // 初始化表格
  115. table.bootstrapTable({
  116. url: 'exam/cate/recyclebin' + location.search,
  117. pk: 'id',
  118. sortName: 'id',
  119. columns: [
  120. [
  121. {checkbox: true},
  122. {field: 'id', title: __('Id')},
  123. {field: 'name', title: __('Name'), align: 'left'},
  124. {
  125. field: 'deletetime',
  126. title: __('Deletetime'),
  127. operate: 'RANGE',
  128. addclass: 'datetimerange',
  129. formatter: Table.api.formatter.datetime
  130. },
  131. {
  132. field: 'operate',
  133. width: '130px',
  134. title: __('Operate'),
  135. table: table,
  136. events: Table.api.events.operate,
  137. buttons: [
  138. {
  139. name: 'Restore',
  140. text: __('Restore'),
  141. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  142. icon: 'fa fa-rotate-left',
  143. url: 'exam/cate/restore',
  144. refresh: true
  145. },
  146. /*{
  147. name: 'Destroy',
  148. text: __('Destroy'),
  149. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  150. icon: 'fa fa-times',
  151. url: 'exam/cate/destroy',
  152. refresh: true
  153. }*/
  154. ],
  155. formatter: Table.api.formatter.operate
  156. }
  157. ]
  158. ]
  159. });
  160. // 为表格绑定事件
  161. Table.api.bindevent(table);
  162. },
  163. add: function () {
  164. Controller.api.bindevent();
  165. setTimeout(function () {
  166. $("#c-kind").trigger("change");
  167. }, 100);
  168. },
  169. edit: function () {
  170. Controller.api.bindevent();
  171. $("#c-kind").trigger('change')
  172. },
  173. api: {
  174. bindevent: function () {
  175. $(document).on("change", "#c-kind", function () {
  176. $("#c-parent_id option[data-type='all']").prop("selected", true);
  177. $("#c-parent_id option").removeClass("hide");
  178. // 隐藏非当前kind的数据
  179. $("#c-parent_id option[data-type!='" + $(this).val() + "']").addClass("hide");
  180. // 编辑时隐藏当前数据
  181. let id = $('#id').val()
  182. if (id) {
  183. $("#c-parent_id option[value='" + id + "']").addClass("hide");
  184. }
  185. $("#c-parent_id option[value='0']").removeClass("hide");
  186. // 刷新select项
  187. $("#c-parent_id").data("selectpicker") && $("#c-parent_id").selectpicker("refresh");
  188. });
  189. Form.api.bindevent($("form[role=form]"));
  190. $(document).on("change", "#c-parent_id", function () {
  191. console.log('parent_id', $(this).val())
  192. });
  193. }
  194. }
  195. };
  196. return Controller;
  197. });