news.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init({
  6. extend: {
  7. index_url: 'weixin/news/index' + location.search,
  8. add_url: 'weixin/news/add',
  9. edit_url: 'weixin/news/edit',
  10. del_url: 'weixin/news/del',
  11. multi_url: 'weixin/news/multi',
  12. table: 'weixin_news',
  13. }
  14. });
  15. var table = $("#table");
  16. Template.helper("Moment", Moment);
  17. // 初始化表格
  18. table.bootstrapTable({
  19. url: $.fn.bootstrapTable.defaults.extend.index_url,
  20. pk: 'id',
  21. sortName: 'id',
  22. templateView: true,
  23. //禁用默认搜索
  24. search: false,
  25. //启用普通表单搜索
  26. commonSearch: true,
  27. //可以控制是否默认显示搜索单表,false则隐藏,默认为false
  28. searchFormVisible: false,
  29. columns: [
  30. [
  31. {checkbox: true},
  32. {field: 'id', title: __('Id'), operate:false},
  33. {field: 'cate_name', title: __('Cate_name')},
  34. {field: 'image', title: __('Image'), operate:false, events: Table.api.events.image, formatter: Table.api.formatter.image},
  35. {field: 'url', title: __('Url'), operate:false, formatter: Table.api.formatter.url},
  36. {field: 'sort', title: __('Sort'), operate:false},
  37. {field: 'status', title: __('Status'), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status},
  38. {field: 'parent_id', title: __('Parent_id'), operate:false},
  39. {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
  40. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  41. ]
  42. ]
  43. });
  44. // 为表格绑定事件
  45. Table.api.bindevent(table);
  46. },
  47. add: function () {
  48. Controller.api.act();
  49. Controller.api.bindevent();
  50. },
  51. edit: function () {
  52. Controller.api.act();
  53. Controller.api.bindevent();
  54. },
  55. api: {
  56. bindevent: function () {
  57. Form.api.bindevent($("#data-form"));
  58. Form.api.bindevent($("#add-form"), function(data, ret){
  59. //如果我们需要在提交表单成功后做跳转,可以在此使用location.href="链接";进行跳转
  60. Toastr.success("成功");
  61. }, function(data, ret){
  62. //Toastr.success("失败");
  63. }, function(success, error){
  64. //bindevent的第三个参数为提交前的回调
  65. //如果我们需要在表单提交前做一些数据处理,则可以在此方法处理
  66. //注意如果我们需要阻止表单,可以在此使用return false;即可
  67. //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
  68. //Form.api.submit(this, success, error);
  69. //return false;
  70. });
  71. },
  72. form2JsonString: function(){
  73. var paramArray = $("#data-form").serializeArray();
  74. /*请求参数转json对象*/
  75. var jsonObj={};
  76. $(paramArray).each(function(){
  77. jsonObj[this.name]=this.value;
  78. });
  79. // json对象再转换成json字符串
  80. return JSON.stringify(jsonObj);
  81. },
  82. act: function(){
  83. //选中
  84. $(".news-box").on("click", ".newsrow", function () {
  85. $('.active').removeClass('active');
  86. $(this).addClass('active');
  87. var index = $(this).find('input').data('id');
  88. var data = $.parseJSON($(this).find('input').val());
  89. $(this).find('.newsrow-title').text(data.cate_name);
  90. $(this).find('img').attr('src', data.image);
  91. var html = '<li class="col-xs-3"><a href="' + data.image + '" data-url="' + data.image + '" target="_blank" class="thumbnail"><img onerror="this.src=\'/assets/addons/weixin/images/image.png\'" src="' + data.image + '" class="img-responsive"></a><a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a></li>';
  92. $('#p-image').html('').append(html);
  93. $("input[name='image']").val(data.image);
  94. $("input[name='cate_name']").val(data.cate_name);
  95. $("textarea[name='description']").val(data.description);
  96. $("input[name='url']").val(data.url);
  97. $("input[name='sort']").val(data.sort);
  98. $("input[name='id']").val(data.id);
  99. $(".select_index").val(index);
  100. });
  101. $('.newsrow:first').trigger("click");
  102. //删除
  103. $(".news-box").on("click", ".newsrow-del", function () {
  104. var _this = this;
  105. var id = $(_this).attr('data-id');
  106. if (id) {
  107. layer.confirm("确定删除此项?", function () {
  108. layer.close(1);
  109. Fast.api.ajax({
  110. url: 'weixin/news/del/ids/' + id
  111. }, function (data, ret) {
  112. if ((ret.code == 1)) {
  113. $(_this).parent().remove();
  114. $('.newsrow:first').trigger("click");
  115. }
  116. });
  117. });
  118. } else {
  119. $(_this).parent().remove();
  120. $('.newsrow:first').trigger("click");
  121. }
  122. });
  123. //添加
  124. $('.add-news-items').click(function () {
  125. var index = Math.ceil(Math.random() * 9999999999);
  126. var html = '<div>' +
  127. '<div class="operation-item newsrow-del">' +
  128. '<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>' +
  129. '</div>' +
  130. '<div class="newsrow news-item-title transition news-image list_' + index + '" style="margin-bottom: 15px">' +
  131. '<input class="list_' + index + '" type="hidden" name="list[' + index + ']" value=\'{"cate_name":"","description":"","image":"","url":"","sort":"0"}\' data-id="' + index + '">' +
  132. '<div class="right-text newsrow-title"></div>' +
  133. '<img class="left-image" onerror="this.src=\'/assets/addons/weixin/images/image.png\'" src=""/>' +
  134. '</div>' +
  135. '</div>';
  136. $(".news-box").append(html);
  137. });
  138. //表单数据更新
  139. $("input[name='cate_name']").on("input propertychange", function () {
  140. var index = $('.select_index').val();
  141. $('.list_' + index).parent().find('.newsrow-title').text($(this).val());
  142. });
  143. $("#p-image").on("DOMNodeInserted", function () {
  144. var index = $('.select_index').val();
  145. $('.list_' + index).parent().find('img').attr('src', $("input[name='image']").val());
  146. $('.list_' + index).val(Controller.api.form2JsonString());
  147. });
  148. $("input,textarea").on("input propertychange", function () {
  149. var index = $('.select_index').val();
  150. $('.list_' + index).val(Controller.api.form2JsonString());
  151. });
  152. }
  153. }
  154. };
  155. return Controller;
  156. });