modelx.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. //设置弹窗宽高
  3. Fast.config.openArea = ['80%', '80%'];
  4. var Controller = {
  5. index: function () {
  6. // 初始化表格参数配置
  7. Table.api.init({
  8. extend: {
  9. index_url: 'cms/modelx/index',
  10. add_url: 'cms/modelx/add',
  11. edit_url: 'cms/modelx/edit',
  12. del_url: 'cms/modelx/del',
  13. multi_url: 'cms/modelx/multi',
  14. table: 'cms_model',
  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. fixedColumns: true,
  24. fixedRightNumber: 2,
  25. exportTypes: ['excel'],
  26. columns: [
  27. [
  28. {checkbox: true},
  29. {field: 'id', title: __('Id')},
  30. {field: 'name', title: __('Name')},
  31. {field: 'table', title: __('Table')},
  32. {field: 'channeltpl', title: __('Channeltpl')},
  33. {field: 'listtpl', title: __('Listtpl')},
  34. {field: 'showtpl', title: __('Showtpl')},
  35. {
  36. field: 'createtime',
  37. sortable: true,
  38. visible: false,
  39. title: __('Createtime'),
  40. operate: 'RANGE',
  41. addclass: 'datetimerange',
  42. formatter: Table.api.formatter.datetime
  43. },
  44. {
  45. field: 'updatetime',
  46. sortable: true,
  47. visible: false,
  48. title: __('Updatetime'),
  49. operate: 'RANGE',
  50. addclass: 'datetimerange',
  51. formatter: Table.api.formatter.datetime
  52. },
  53. {
  54. field: 'datalist', title: __('Operate'), clickToSelect: false, table: table, operate: false,
  55. events: {
  56. 'click .btn-duplicate': function (e, value, row) {
  57. Layer.prompt({
  58. title: "请输入你需要新复制的模型表名",
  59. success: function (layero) {
  60. $("input", layero).prop("placeholder", "例如:cms_addontest,请不要加前缀");
  61. }
  62. }, function (value) {
  63. Fast.api.ajax({
  64. url: "cms/modelx/duplicate/ids/" + row.id,
  65. data: {table: value},
  66. }, function (data, ret) {
  67. Layer.closeAll();
  68. table.bootstrapTable('refresh');
  69. return false;
  70. });
  71. });
  72. return false;
  73. }
  74. },
  75. buttons: [
  76. {
  77. name: 'index',
  78. text: __('Main list'),
  79. classname: 'btn btn-xs btn-primary btn-addtabs',
  80. icon: 'fa fa-file',
  81. url: 'cms/archives/index?model_id={ids}'
  82. },
  83. {
  84. name: 'content',
  85. text: __('Addon list'),
  86. classname: 'btn btn-xs btn-success btn-addtabs',
  87. icon: 'fa fa-file',
  88. url: 'cms/archives/content/model_id/{ids}'
  89. },
  90. {
  91. name: 'fields',
  92. text: __('Fields'),
  93. classname: 'btn btn-xs btn-info btn-fields btn-addtabs',
  94. icon: 'fa fa-list',
  95. url: 'cms/fields/index/source/model/source_id/{ids}'
  96. },
  97. {
  98. name: 'duplicate',
  99. text: __('Duplicate'),
  100. classname: 'btn btn-xs btn-warning btn-duplicate',
  101. icon: 'fa fa-copy',
  102. },
  103. ],
  104. formatter: Table.api.formatter.buttons
  105. },
  106. {
  107. field: 'operate',
  108. title: __('Operate'),
  109. clickToSelect: false,
  110. table: table,
  111. events: Table.api.events.operate,
  112. formatter: Table.api.formatter.operate
  113. }
  114. ]
  115. ]
  116. });
  117. // 为表格绑定事件
  118. Table.api.bindevent(table);
  119. },
  120. add: function () {
  121. //获取标题拼音
  122. var si;
  123. $(document).on("keyup", "#c-name", function () {
  124. var value = $(this).val();
  125. if (value != '' && !value.match(/\n/)) {
  126. clearTimeout(si);
  127. si = setTimeout(function () {
  128. Fast.api.ajax({
  129. loading: false,
  130. url: "cms/ajax/get_title_pinyin",
  131. data: {title: value}
  132. }, function (data, ret) {
  133. $("#c-table").val("cms_addon" + data.pinyin);
  134. return false;
  135. }, function (data, ret) {
  136. return false;
  137. });
  138. }, 200);
  139. }
  140. });
  141. $(document).on("change", "#c-modelname", function () {
  142. var value = $(this).val() == "common" ? "" : "_" + $(this).val();
  143. $("#c-channeltpl").val("channel" + value + ".html").selectPageRefresh();
  144. $("#c-listtpl").val("list" + value + ".html").selectPageRefresh();
  145. $("#c-showtpl").val("show" + value + ".html").selectPageRefresh();
  146. $("#c-channeltpl,#c-listtpl,#c-showtpl").selectPageDisabled($(this).val() !== "");
  147. });
  148. Controller.api.bindevent();
  149. },
  150. edit: function () {
  151. Controller.api.bindevent();
  152. },
  153. api: {
  154. bindevent: function () {
  155. $.validator.config({
  156. rules: {
  157. tablename: function (element) {
  158. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  159. return __('Please input character or digital');
  160. }
  161. return true;
  162. }
  163. }
  164. });
  165. Form.api.bindevent($("form[role=form]"));
  166. }
  167. }
  168. };
  169. return Controller;
  170. });