diyform.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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/diyform/index',
  10. add_url: 'cms/diyform/add',
  11. edit_url: 'cms/diyform/edit',
  12. del_url: 'cms/diyform/del',
  13. multi_url: 'cms/diyform/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. exportTypes: ['excel'],
  24. columns: [
  25. [
  26. {checkbox: true},
  27. {field: 'id', title: __('Id')},
  28. {field: 'name', title: __('Name'), operate: 'like'},
  29. {field: 'table', title: __('Table')},
  30. {
  31. field: 'createtime',
  32. sortable: true,
  33. visible: false,
  34. title: __('Createtime'),
  35. operate: 'RANGE',
  36. addclass: 'datetimerange',
  37. formatter: Table.api.formatter.datetime
  38. },
  39. {
  40. field: 'updatetime',
  41. sortable: true,
  42. visible: false,
  43. title: __('Updatetime'),
  44. operate: 'RANGE',
  45. addclass: 'datetimerange',
  46. formatter: Table.api.formatter.datetime
  47. },
  48. {
  49. field: 'url', title: __('Url'), operate: false, formatter: function (value, row, index) {
  50. return '<a href="' + value + '" target="_blank" class="btn btn-default btn-xs"><i class="fa fa-link"></i></a>';
  51. }
  52. },
  53. {
  54. field: 'spiders', title: __('Spiders'), visible: Config.spiderRecord || false, operate: false, formatter: function (value, row, index) {
  55. if (!$.isArray(value) || value.length === 0) {
  56. return '-';
  57. }
  58. var html = [];
  59. $.each(value, function (i, j) {
  60. var color = 'default', title = '暂无来访记录';
  61. if (j.status === 'today') {
  62. color = 'danger';
  63. title = "今天有来访记录";
  64. } else if (j.status === 'pass') {
  65. color = 'success';
  66. title = "最后来访日期:" + j.date;
  67. }
  68. html.push('<span class="label label-' + color + '" data-toggle="tooltip" data-title="' + j.title + ' ' + title + '">' + j.title.substr(0, 1) + '</span>');
  69. });
  70. return html.join(" ");
  71. }
  72. },
  73. {
  74. field: 'datalist', title: __('Operate'), table: table, operate: false,
  75. buttons: [
  76. {
  77. name: 'content',
  78. text: __('数据列表'),
  79. classname: 'btn btn-xs btn-success btn-addtabs',
  80. icon: 'fa fa-file',
  81. url: 'cms/diydata/index/diyform_id/{ids}'
  82. },
  83. {
  84. name: 'fields',
  85. text: __('字段列表'),
  86. classname: 'btn btn-xs btn-info btn-fields btn-addtabs',
  87. icon: 'fa fa-list',
  88. url: 'cms/fields/index/source/diyform/source_id/{ids}'
  89. },
  90. ],
  91. formatter: Table.api.formatter.buttons
  92. },
  93. {field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden')}, formatter: Table.api.formatter.status},
  94. {
  95. field: 'operate',
  96. title: __('Operate'),
  97. table: table,
  98. events: Table.api.events.operate,
  99. formatter: Table.api.formatter.operate
  100. }
  101. ]
  102. ]
  103. });
  104. // 为表格绑定事件
  105. Table.api.bindevent(table);
  106. },
  107. add: function () {
  108. //获取标题拼音
  109. var si;
  110. $(document).on("keyup", "#c-name", function () {
  111. var value = $(this).val();
  112. if (value != '' && !value.match(/\n/)) {
  113. clearTimeout(si);
  114. si = setTimeout(function () {
  115. Fast.api.ajax({
  116. loading: false,
  117. url: "cms/ajax/get_title_pinyin",
  118. data: {title: value}
  119. }, function (data, ret) {
  120. $("#c-table").val("cms_diyform_" + data.pinyin);
  121. $("#c-diyname").val(data.pinyin.substr(0, 100));
  122. return false;
  123. }, function (data, ret) {
  124. return false;
  125. });
  126. }, 200);
  127. }
  128. });
  129. Controller.api.bindevent();
  130. },
  131. edit: function () {
  132. Controller.api.bindevent();
  133. },
  134. api: {
  135. bindevent: function () {
  136. $.validator.config({
  137. rules: {
  138. diyname: function (element) {
  139. if (element.value.toString().match(/^\d+$/)) {
  140. return __('Can not be only digital');
  141. }
  142. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  143. return __('Please input character or digital');
  144. }
  145. return $.ajax({
  146. url: 'cms/diyform/check_element_available',
  147. type: 'POST',
  148. data: {id: $("#diyform-id").val(), name: element.name, value: element.value},
  149. dataType: 'json'
  150. });
  151. }
  152. }
  153. });
  154. Form.api.bindevent($("form[role=form]"));
  155. }
  156. }
  157. };
  158. return Controller;
  159. });