fields.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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/fields/index' + Config.params,
  10. add_url: 'cms/fields/add' + Config.params,
  11. edit_url: 'cms/fields/edit' + Config.params,
  12. del_url: 'cms/fields/del' + Config.params,
  13. multi_url: 'cms/fields/multi' + Config.params,
  14. table: 'cms_fields',
  15. }
  16. });
  17. var table = $("#table");
  18. // 初始化表格
  19. table.bootstrapTable({
  20. url: $.fn.bootstrapTable.defaults.extend.index_url,
  21. pk: 'id',
  22. sortName: 'weigh',
  23. pagination: false,
  24. search: false,
  25. commonSearch: false,
  26. columns: [
  27. [
  28. {
  29. field: 'state', checkbox: true, formatter: function (value, row, index) {
  30. return {
  31. disabled: row.state === false ? true : false,
  32. }
  33. }
  34. },
  35. {
  36. field: 'id', sortable: true, title: __('Id'), formatter: function (value, row, index) {
  37. return isNaN(value) ? '-' : value;
  38. }
  39. },
  40. {field: 'source', visible: false, operate: false, title: __('Source')},
  41. {field: 'source_id', visible: false, operate: false, title: __('Source_id')},
  42. {
  43. field: 'name', title: __('Name'), operate: 'like', formatter: function (value, row, index) {
  44. return row.issystem ? "<span class='text-muted'>" + value + "</span>" : value;
  45. }
  46. },
  47. {
  48. field: 'type', title: __('Type'), formatter: function (value, row, index) {
  49. return row.issystem ? "<span class='text-muted'>" + value + "</span>" : value;
  50. }
  51. },
  52. {
  53. field: 'title', title: __('Title'), operate: 'like', formatter: function (value, row, index) {
  54. return row.issystem ? "<span class='text-muted'>" + value + "</span>" : value;
  55. }
  56. },
  57. {
  58. field: 'isfilter', visible: Config.withoutModelList.indexOf(Config.source) < 0, title: __('Isfilter'), searchList: {"1": __('Yes'), "0": __('No')}, formatter: function (value, row, index) {
  59. return Table.api.formatter.toggle.call(this, value, row, index);
  60. }
  61. },
  62. {
  63. field: 'isorder', visible: Config.withoutModelList.indexOf(Config.source) < 0, title: __('Isorder'), searchList: {"1": __('Yes'), "0": __('No')}, formatter: function (value, row, index) {
  64. return Table.api.formatter.toggle.call(this, value, row, index);
  65. }
  66. },
  67. {
  68. field: 'iscontribute', visible: Config.withoutModelList.indexOf(Config.source) < 0, title: __('Iscontribute'), searchList: {"1": __('Yes'), "0": __('No')}, formatter: function (value, row, index) {
  69. return row.issystem && Config.contributeFields.indexOf(row.name) === -1 ? "-" : Table.api.formatter.toggle.call(this, value, row, index);
  70. }
  71. },
  72. {
  73. field: 'ispublish', visible: Config.withoutModelList.indexOf(Config.source) < 0, title: __('Ispublish'), searchList: {"1": __('Yes'), "0": __('No')}, formatter: function (value, row, index) {
  74. return (row.issystem && Config.publishFields.indexOf(row.name) === -1) || !row.issystem ? "-" : Table.api.formatter.toggle.call(this, value, row, index);
  75. }
  76. },
  77. {field: 'weigh', title: __('Weigh'), visible: false},
  78. {field: 'createtime', title: __('Createtime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  79. {field: 'updatetime', title: __('Updatetime'), visible: false, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  80. {
  81. field: 'status', title: __('Status'), formatter: function (value, row, index) {
  82. return row.issystem ? "-" : Table.api.formatter.status.call(this, value, row, index);
  83. }
  84. },
  85. {
  86. field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
  87. formatter: function (value, row, index) {
  88. var that = $.extend({}, this);
  89. if (row.issystem) {
  90. if (Config.withoutModelList.indexOf(Config.source) > -1) {
  91. return '-';
  92. }
  93. that.buttons = [{name: 'del', visible: false}];
  94. }
  95. return Table.api.formatter.operate.call(that, value, row, index);
  96. }
  97. }
  98. ]
  99. ],
  100. });
  101. // 为表格绑定事件
  102. Table.api.bindevent(table);
  103. },
  104. add: function () {
  105. Controller.api.bindevent();
  106. },
  107. edit: function () {
  108. Controller.api.bindevent();
  109. },
  110. api: {
  111. bindevent: function () {
  112. //渲染关联显示字段和存储字段
  113. var renderselect = function (id, data, defaultvalue) {
  114. var html = [];
  115. for (var i = 0; i < data.length; i++) {
  116. html.push("<option value='" + data[i].name + "' " + (defaultvalue == data[i].name ? "selected" : "") + " data-subtext='" + data[i].title + "'>" + data[i].name + "</option>");
  117. }
  118. var select = $(id);
  119. $(select).html(html.join(""));
  120. select.trigger("change");
  121. if (select.data("selectpicker")) {
  122. select.selectpicker('refresh');
  123. }
  124. };
  125. //关联表切换
  126. $(document).on('change', "#c-selectpage-table", function (e, first) {
  127. var that = this;
  128. Fast.api.ajax({
  129. url: "cms/ajax/get_fields_list",
  130. data: {table: $(that).val()},
  131. }, function (data, ret) {
  132. renderselect("#c-selectpage-primarykey", data.fieldList, first ? $("#c-selectpage-primarykey").data("value") : '');
  133. renderselect("#c-selectpage-field", data.fieldList, first ? $("#c-selectpage-field").data("value") : '');
  134. return false;
  135. });
  136. return false;
  137. });
  138. //如果编辑模式则渲染已知数据
  139. if (['selectpage', 'selectpages'].indexOf($("#c-type").val()) > -1) {
  140. $("#c-selectpage-table").trigger("change", true);
  141. }
  142. $.validator.config({
  143. rules: {
  144. fieldname: function (element) {
  145. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  146. return __('Please input character or digital');
  147. }
  148. return true;
  149. }
  150. }
  151. });
  152. //不可见的元素不验证
  153. $("form#add-form").data("validator-options", {ignore: ':hidden'});
  154. $(document).on("change", "#c-type", function () {
  155. $(".tf").addClass("hidden");
  156. $(".tf.tf-" + $(this).val()).removeClass("hidden");
  157. });
  158. $(document).on("change", "#c-isfilter", function () {
  159. $("#filterdom").toggleClass("hidden");
  160. });
  161. Form.api.bindevent($("form[role=form]"));
  162. $("#c-type").trigger("change");
  163. }
  164. }
  165. };
  166. return Controller;
  167. });