fields.js 9.1 KB

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