diydata.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) {
  2. //设置弹窗宽高
  3. Fast.config.openArea = ['80%', '80%'];
  4. var Controller = {
  5. index: function () {
  6. // 初始化表格参数配置
  7. Table.api.init({
  8. extend: {
  9. index_url: 'cms/diydata/index/diyform_id/' + Config.diyform_id,
  10. add_url: 'cms/diydata/add/diyform_id/' + Config.diyform_id,
  11. edit_url: 'cms/diydata/edit/diyform_id/' + Config.diyform_id,
  12. del_url: 'cms/diydata/del/diyform_id/' + Config.diyform_id,
  13. import_url: 'cms/diydata/import/diyform_id/' + Config.diyform_id,
  14. multi_url: 'cms/diydata/multi/diyform_id/' + Config.diyform_id,
  15. table: '',
  16. }
  17. });
  18. var table = $("#table");
  19. //默认字段
  20. var columns = [
  21. {checkbox: true},
  22. {field: 'id', title: __('Id'), operate: false},
  23. {
  24. field: 'user_id',
  25. title: __('User_id'),
  26. addclass: 'selectpage',
  27. extend: 'data-source="user/user/index" data-field="nickname"',
  28. operate: '=',
  29. formatter: Table.api.formatter.search
  30. }
  31. ];
  32. //动态追加字段
  33. $.each(Config.fields, function (i, j) {
  34. if (j.type == 'array' || j.type == 'editor') {
  35. return true;
  36. }
  37. var data = {field: j.field, title: j.title, operate: 'like', table: table};
  38. //如果是图片,加上formatter
  39. if (j.type == 'image' || j.type == 'images') {
  40. data.formatter = Table.api.formatter.images;
  41. data.events = Table.api.events.image;
  42. } else if (j.type == 'file' || j.type == 'files') {
  43. data.formatter = Table.api.formatter.files;
  44. } else if (j.type == 'radio' || j.type == 'checkbox' || j.type == 'select' || j.type == 'selects') {
  45. data.formatter = Controller.api.formatter.content;
  46. data.extend = j.content;
  47. data.searchList = j.content;
  48. }
  49. columns.push(data);
  50. });
  51. columns.push({field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime});
  52. columns.push({field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime});
  53. columns.push({field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden'), "rejected": __('Rejected')}, formatter: Table.api.formatter.status});
  54. //追加操作字段
  55. columns.push({
  56. field: 'operate',
  57. title: __('Operate'),
  58. clickToSelect: false,
  59. table: table,
  60. width: '100px',
  61. events: Table.api.events.operate,
  62. formatter: Table.api.formatter.operate
  63. });
  64. // 初始化表格
  65. table.bootstrapTable({
  66. url: $.fn.bootstrapTable.defaults.extend.index_url,
  67. pk: 'id',
  68. sortName: 'id',
  69. search: false,
  70. fixedColumns: true,
  71. fixedRightNumber: 1,
  72. columns: columns
  73. });
  74. // 为表格绑定事件
  75. Table.api.bindevent(table);
  76. },
  77. add: function () {
  78. Controller.api.bindevent();
  79. },
  80. edit: function () {
  81. Controller.api.bindevent();
  82. },
  83. api: {
  84. formatter: {
  85. content: function (value, row, index) {
  86. var extend = this.extend;
  87. if (!value) {
  88. return '';
  89. }
  90. var valueArr = value.toString().split(/,/);
  91. var result = [];
  92. $.each(valueArr, function (i, j) {
  93. result.push(typeof extend[j] !== 'undefined' ? extend[j] : j);
  94. });
  95. return result.join(',');
  96. }
  97. },
  98. bindevent: function () {
  99. $.validator.config({
  100. rules: {
  101. diyname: function (element) {
  102. if (element.value.toString().match(/^\d+$/)) {
  103. return __('Can not be only digital');
  104. }
  105. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  106. return __('Please input character or digital');
  107. }
  108. return $.ajax({
  109. url: 'cms/archives/check_element_available',
  110. type: 'POST',
  111. data: {id: $("#archive-id").val(), name: element.name, value: element.value},
  112. dataType: 'json'
  113. });
  114. }
  115. }
  116. });
  117. Form.api.bindevent($("form[role=form]"));
  118. }
  119. }
  120. };
  121. return Controller;
  122. });