page.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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: 'shop/page/index',
  10. add_url: 'shop/page/add',
  11. edit_url: 'shop/page/edit',
  12. del_url: 'shop/page/del',
  13. multi_url: 'shop/page/multi',
  14. table: 'shop_page',
  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. columns: [
  24. [
  25. {checkbox: true},
  26. {field: 'id', sortable: true, title: __('Id')},
  27. {field: 'type', title: __('Type'), formatter: Table.api.formatter.search, searchList: Config.typeList},
  28. {field: 'title', title: __('Title'), operate: 'like'},
  29. {field: 'flag', title: __('Flag'), formatter: Table.api.formatter.flag},
  30. {field: 'image', title: __('Image'), events: Table.api.events.image, formatter: Table.api.formatter.image},
  31. {field: 'views', sortable: true, title: __('Views'), operate: 'BETWEEN'},
  32. {
  33. field: 'url', title: __('Url'), formatter: function (value, row, index) {
  34. return '<a href="' + value + '" target="_blank" class="btn btn-default btn-xs"><i class="fa fa-link"></i></a>';
  35. }
  36. },
  37. {field: 'createtime', sortable: true, title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  38. {field: 'updatetime', sortable: true, visible: false, title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  39. {field: 'weigh', sortable: true, title: __('Weigh')},
  40. {field: 'status', title: __('Status'), formatter: Table.api.formatter.status},
  41. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  42. ]
  43. ]
  44. });
  45. // 为表格绑定事件
  46. Table.api.bindevent(table);
  47. },
  48. recyclebin: function () {
  49. // 初始化表格参数配置
  50. Table.api.init({
  51. extend: {
  52. 'dragsort_url': ''
  53. }
  54. });
  55. var table = $("#table");
  56. // 初始化表格
  57. table.bootstrapTable({
  58. url: 'shop/page/recyclebin',
  59. pk: 'id',
  60. sortName: 'id',
  61. columns: [
  62. [
  63. {checkbox: true},
  64. {field: 'id', title: __('Id')},
  65. {field: 'title', title: __('Title'), formatter: Table.api.formatter.search},
  66. {
  67. field: 'deletetime',
  68. title: __('Deletetime'),
  69. operate: 'RANGE',
  70. addclass: 'datetimerange',
  71. formatter: Table.api.formatter.datetime
  72. },
  73. {
  74. field: 'operate',
  75. width: '130px',
  76. title: __('Operate'),
  77. table: table,
  78. events: Table.api.events.operate,
  79. buttons: [
  80. {
  81. name: 'Restore',
  82. text: __('Restore'),
  83. classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
  84. icon: 'fa fa-rotate-left',
  85. url: 'shop/page/restore',
  86. refresh: true
  87. },
  88. {
  89. name: 'Destroy',
  90. text: __('Destroy'),
  91. classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
  92. icon: 'fa fa-times',
  93. url: 'shop/page/destroy',
  94. refresh: true
  95. }
  96. ],
  97. formatter: Table.api.formatter.operate
  98. }
  99. ]
  100. ]
  101. });
  102. // 为表格绑定事件
  103. Table.api.bindevent(table);
  104. },
  105. select: function () {
  106. // 初始化表格参数配置
  107. Table.api.init({
  108. extend: {
  109. index_url: 'shop/page/select',
  110. add_url: 'shop/page/add',
  111. edit_url: 'shop/page/edit',
  112. table: 'page',
  113. }
  114. });
  115. var table = $("#table");
  116. // 初始化表格
  117. table.bootstrapTable({
  118. url: $.fn.bootstrapTable.defaults.extend.index_url,
  119. pk: 'id',
  120. sortName: 'weigh',
  121. columns: [
  122. [
  123. {checkbox: true},
  124. {field: 'id', sortable: true, title: __('Id')},
  125. {field: 'title', title: __('Title')},
  126. {field: 'image', title: __('Image'), formatter: Table.api.formatter.image},
  127. {field: 'status', title: __('Status'), formatter: Table.api.formatter.status},
  128. {
  129. field: 'select', title: __('Operate'), table: table, formatter: Table.api.formatter.buttons,
  130. events: {
  131. 'click .btn-select-one': function (e, value, row) {
  132. Fast.api.close(row);
  133. }
  134. },
  135. buttons: [
  136. {
  137. name: "select",
  138. text: __("Select"),
  139. classname: "btn btn-xs btn-success btn-select-one"
  140. }
  141. ]
  142. },
  143. ]
  144. ]
  145. });
  146. // 为表格绑定事件
  147. Table.api.bindevent(table);
  148. },
  149. add: function () {
  150. Controller.api.bindevent();
  151. },
  152. edit: function () {
  153. Controller.api.bindevent();
  154. },
  155. api: {
  156. bindevent: function () {
  157. //获取标题拼音
  158. var si;
  159. $(document).on("keyup", "#c-title", function () {
  160. var value = $(this).val();
  161. if (value != '' && !value.match(/\n/)) {
  162. clearTimeout(si);
  163. si = setTimeout(function () {
  164. Fast.api.ajax({
  165. loading: false,
  166. url: "shop/ajax/get_title_pinyin",
  167. data: {title: value}
  168. }, function (data, ret) {
  169. $("#c-diyname").val(data.pinyin.substr(0, 100));
  170. return false;
  171. }, function (data, ret) {
  172. return false;
  173. });
  174. }, 200);
  175. }
  176. });
  177. $(document).on("click", ".btn-legal", function (a) {
  178. Fast.api.ajax({
  179. url: "shop/ajax/check_content_islegal",
  180. data: {content: $("#c-content").val()}
  181. }, function (data, ret) {
  182. }, function (data, ret) {
  183. if ($.isArray(data)) {
  184. Layer.alert(__('Banned words') + ":" + data.join(","));
  185. }
  186. });
  187. });
  188. $(document).on("click", ".btn-keywords", function (a) {
  189. Fast.api.ajax({
  190. url: "shop/ajax/get_content_keywords",
  191. data: {title: $("#c-title").val(), content: $("#c-content").val()}
  192. }, function (data, ret) {
  193. $("#c-keywords").val(data.keywords);
  194. $("#c-description").val(data.description);
  195. });
  196. });
  197. $(document).on("keyup", "#c-type_text", function () {
  198. $("#c-type").val($(this).val());
  199. });
  200. $.validator.config({
  201. rules: {
  202. diyname: function (element) {
  203. if (element.value.toString().match(/^\d+$/)) {
  204. return __('Can not be only digital');
  205. }
  206. if (!element.value.toString().match(/^[a-zA-Z0-9\-_]+$/)) {
  207. return __('Please input character or digital');
  208. }
  209. return $.ajax({
  210. url: 'shop/page/check_element_available',
  211. type: 'POST',
  212. data: {id: $("#page-id").val(), name: element.name, value: element.value},
  213. dataType: 'json'
  214. });
  215. }
  216. }
  217. });
  218. Form.api.bindevent($("form[role=form]"));
  219. require(['backend/shop/card'], function (Card) {
  220. Card.api.bindcardevent();
  221. });
  222. }
  223. }
  224. };
  225. return Controller;
  226. });