article_select.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .select-article{margin: 20px;}
  5. .select-article .single-filter-box{padding: 0;}
  6. .select-article .single-filter-box .layui-form{margin: inherit;}
  7. .select-article .single-filter-box .layui-form div{margin: 0;}
  8. </style>
  9. {/block}
  10. {block name="body"}
  11. <div class="select-article">
  12. <div class="single-filter-box">
  13. <div class="layui-form">
  14. <div class="layui-input-inline">
  15. <input type="text" name="search_text" placeholder="请输入文章名称" autocomplete="off" class="layui-input">
  16. <button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
  17. <i class="layui-icon">&#xe615;</i>
  18. </button>
  19. </div>
  20. </div>
  21. </div>
  22. <table id="article_list" lay-filter="article_list"></table>
  23. </div>
  24. {/block}
  25. {block name="script"}
  26. <script type="text/html" id="checkbox">
  27. <input type="checkbox" data-article-id="{{d.article_id}}" name="article_checkbox" lay-skin="primary" lay-filter="article_checkbox">
  28. <input type="hidden" data-article-id="{{d.article_id}}" name="article_json" value='{{ JSON.stringify(d) }}' />
  29. </script>
  30. <script>
  31. var select_id = localStorage.getItem('article_select_id') || '', // "{$select_id}", //选中文章id
  32. articleList ={:json_encode($article_list)},
  33. selectList = {}, //选中文章所有数据res
  34. articleIdArr = select_id.length ? select_id.split(',') : [], //已选中的文章id
  35. table, form,laytpl,element;
  36. $(function () {
  37. for (var k in articleList) {
  38. selectList['article_id_' + articleList[k].article_id] = {
  39. article_id: articleList[k].article_id,
  40. article_title: articleList[k].article_title,
  41. cover_img: articleList[k].cover_img,
  42. article_abstract: articleList[k].article_abstract,
  43. read_num: articleList[k].read_num,
  44. }
  45. }
  46. layui.use(['form', 'laytpl', 'element'], function () {
  47. form = layui.form;
  48. laytpl = layui.laytpl;
  49. element = layui.element;
  50. table = new Table({
  51. elem: '#article_list',
  52. url: '{:addon_url("shop/article/articleselect")}',
  53. cols: [
  54. [
  55. {
  56. title: '<input type="checkbox" name="article_checkbox_all" lay-skin="primary" lay-filter="article_checkbox_all">',
  57. width: "8%",
  58. templet: '#checkbox'
  59. },
  60. {
  61. field: 'article_title',
  62. title: '文章名称',
  63. width: '35%'
  64. },
  65. {
  66. field: 'category_name',
  67. title: '文章分类',
  68. width: '30%'
  69. },
  70. {
  71. field: 'cover_img',
  72. title: '封面图',
  73. width: '20%',
  74. templet: function (d) {
  75. return `<img layer-src src="${ns.img(d.cover_img)}"/>`;
  76. }
  77. },
  78. ]
  79. ],
  80. callback: function (res) {
  81. // 更新复选框状态
  82. for (var i = 0; i < articleIdArr.length; i++) {
  83. var selected_article = $("input[name='article_checkbox'][data-article-id='" + articleIdArr[i] + "']");
  84. if (selected_article.length) {
  85. selected_article.prop("checked", true);
  86. }
  87. }
  88. form.render();
  89. dealWithTableSelectedNum();
  90. }
  91. });
  92. form.on('submit(search)', function (data) {
  93. formSearch();
  94. return false;
  95. });
  96. //公共搜索方法
  97. function formSearch() {
  98. var data = {};
  99. data.search_text = $("input[name='search_text']").val();
  100. data.article_ids = articleIdArr.toString();
  101. table.reload({
  102. page: {
  103. curr: 1
  104. },
  105. where: data
  106. });
  107. }
  108. // 勾选文章
  109. form.on('checkbox(article_checkbox_all)', function (data) {
  110. var all_checked = data.elem.checked;
  111. $("input[name='article_checkbox']").each(function () {
  112. var checked = $(this).prop('checked');
  113. if (all_checked != checked) {
  114. $(this).next().click();
  115. }
  116. })
  117. });
  118. // 勾选文章
  119. form.on('checkbox(article_checkbox)', function (data) {
  120. var article_id = $(data.elem).attr("data-article-id");
  121. var spuLen = $("input[name='article_checkbox'][data-article-id=" + article_id + "]:checked").length;
  122. if (spuLen) {
  123. var item = JSON.parse($("input[name='article_json'][data-article-id=" + article_id + "]").val());
  124. delete item.LAY_INDEX;
  125. delete item.LAY_TABLE_INDEX;
  126. selectList['article_id_' + article_id] = item;
  127. } else {
  128. delete selectList['article_id_' + article_id];
  129. }
  130. dealWithTableSelectedNum();
  131. });
  132. });
  133. });
  134. function selectArticle(callback) {
  135. articleIdArr = [];
  136. for (var key in selectList){
  137. articleIdArr.push(selectList[key].article_id);
  138. }
  139. if(articleIdArr.length == 0) {
  140. layer.msg('请选择文章');
  141. return;
  142. }
  143. callback({
  144. articleIds: articleIdArr,
  145. list: selectList
  146. });
  147. }
  148. //在表格底部增加了一个容器
  149. function dealWithTableSelectedNum() {
  150. $(".layui-table-bottom-left-container").html('已选择 '+ Object.keys(selectList).length +' 个文章');
  151. }
  152. </script>
  153. {/block}