diydata.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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'};
  38. //如果是图片,加上formatter
  39. if (j.type == 'image') {
  40. data.formatter = Table.api.formatter.image;
  41. } else if (j.type == 'images') {
  42. data.formatter = Table.api.formatter.images;
  43. } else if (j.type == 'radio' || j.type == 'check' || j.type == 'select' || j.type == 'selects') {
  44. data.formatter = Controller.api.formatter.content;
  45. data.extend = j.content;
  46. }
  47. columns.push(data);
  48. });
  49. columns.push({field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime});
  50. columns.push({field: 'updatetime', sortable: true, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime});
  51. columns.push({field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden'), "rejected": __('Rejected')}, formatter: Table.api.formatter.status});
  52. //追加操作字段
  53. columns.push({
  54. field: 'operate',
  55. title: __('Operate'),
  56. table: table,
  57. width: '100px',
  58. events: Table.api.events.operate,
  59. formatter: Table.api.formatter.operate
  60. });
  61. // 初始化表格
  62. table.bootstrapTable({
  63. url: $.fn.bootstrapTable.defaults.extend.index_url,
  64. pk: 'id',
  65. sortName: 'id',
  66. fixedColumns: true,
  67. fixedRightNumber: 1,
  68. columns: columns
  69. });
  70. // 为表格绑定事件
  71. Table.api.bindevent(table);
  72. },
  73. add: function () {
  74. Controller.api.bindevent();
  75. },
  76. edit: function () {
  77. Controller.api.bindevent();
  78. },
  79. api: {
  80. formatter: {
  81. content: function (value, row, index) {
  82. var extend = this.extend;
  83. if (!value) {
  84. return '';
  85. }
  86. var valueArr = value.toString().split(/,/);
  87. var result = [];
  88. $.each(valueArr, function (i, j) {
  89. result.push(typeof extend[j] !== 'undefined' ? extend[j] : j);
  90. });
  91. return result.join(',');
  92. }
  93. },
  94. bindevent: function () {
  95. $.validator.config({
  96. rules: {
  97. diyname: function (element) {
  98. if (element.value.toString().match(/^\d+$/)) {
  99. return __('Can not be only digital');
  100. }
  101. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  102. return __('Please input character or digital');
  103. }
  104. return $.ajax({
  105. url: 'cms/archives/check_element_available',
  106. type: 'POST',
  107. data: {id: $("#archive-id").val(), name: element.name, value: element.value},
  108. dataType: 'json'
  109. });
  110. }
  111. }
  112. });
  113. Form.api.bindevent($("form[role=form]"));
  114. }
  115. }
  116. };
  117. return Controller;
  118. });