modelx.js 7.8 KB

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