lists.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. {extend name="base"/}
  2. {block name="resources"}
  3. {/block}
  4. {block name="main"}
  5. <div class="single-filter-box">
  6. <button class="layui-btn" onclick="add()">添加广告</button>
  7. <div class="layui-form">
  8. <div class="layui-input-inline">
  9. <select name="ap_id">
  10. <option value="">所属广告位</option>
  11. {notempty name="adv_position"}
  12. {foreach name="adv_position" item="vo"}
  13. <option value="{$vo.ap_id}" {if $ap_id == $vo.ap_id}selected{/if}>{$vo.ap_name}</option>
  14. {/foreach}
  15. {/notempty}
  16. </select>
  17. </div>
  18. <div class="layui-input-inline len-mid">
  19. <input type="text" name="search_text" placeholder="请输入广告名称" class="layui-input">
  20. <button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
  21. <i class="layui-icon">&#xe615;</i>
  22. </button>
  23. </div>
  24. </div>
  25. <input type="hidden" name="ap_id" value="{$ap_id}" />
  26. </div>
  27. <!-- 列表 -->
  28. <table id="adv_list" lay-filter="adv_list"></table>
  29. <!-- 广告图片 -->
  30. <script type="text/html" id="adv_image">
  31. <div class="img-box">
  32. <img layer-src src="{{ns.img(d.adv_image)}}" />
  33. </div>
  34. </script>
  35. <!-- 排序 -->
  36. <script type="text/html" id="slide_sort">
  37. <input name="slide_sort" type="number" onchange="editSort({{d.adv_id}},'slide_sort', this)" value="{{d.slide_sort}}" class="layui-input sort-len">
  38. </script>
  39. <!-- 广告链接 -->
  40. <script type="text/html" id="adv_url">
  41. <a href="{{d.adv_url}}">{{d.adv_url}}</a>
  42. </script>
  43. <!-- 操作 -->
  44. <script type="text/html" id="action">
  45. <div class="table-btn">
  46. <a class="layui-btn" lay-event="edit">编辑</a>
  47. <a class="layui-btn" lay-event="delete">删除</a>
  48. </div>
  49. </script>
  50. <!-- 批量删除 -->
  51. <script type="text/html" id="toolbarOperation">
  52. <button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
  53. </script>
  54. <!-- 批量删除 -->
  55. <script type="text/html" id="batchOperation">
  56. <button class="layui-btn layui-btn-primary" lay-event="del">批量删除</button>
  57. </script>
  58. {/block}
  59. {block name="script"}
  60. <script>
  61. var ap_id = '{$ap_id}';
  62. layui.use('form', function () {
  63. var table,
  64. form = layui.form,
  65. repeat_flag = false; //防重复标识
  66. form.render();
  67. form.on('switch(state)', function(data){
  68. let state = data.elem.checked ? 1 : 0;
  69. let adv_id = $(data.elem).attr('data-adv-id');
  70. if(repeat_flag) return;
  71. repeat_flag = true;
  72. $.ajax({
  73. url: ns.url("shop/adv/alterAdvState"),
  74. data: {
  75. adv_id : adv_id,
  76. state : state,
  77. },
  78. dataType: 'JSON',
  79. type: 'POST',
  80. success: function(res) {
  81. layer.msg(res.message);
  82. repeat_flag = false;
  83. }
  84. });
  85. })
  86. table = new Table({
  87. elem: '#adv_list',
  88. url: ns.url("shop/adv/lists"),
  89. where: {
  90. 'ap_id': '{$ap_id}'
  91. },
  92. cols: [
  93. [{
  94. width: '3%',
  95. type: 'checkbox',
  96. unresize: 'false',
  97. }, {
  98. field: 'adv_title',
  99. title: '广告名称',
  100. unresize: 'false',
  101. width: '15%'
  102. }, {
  103. title: '广告链接',
  104. unresize: 'false',
  105. width: '15%',
  106. templet: function(data) {
  107. var adv_url = data.adv_url;
  108. if(adv_url){
  109. adv_url = JSON.parse(data.adv_url);
  110. return adv_url.title ? adv_url.title : '';
  111. }else{
  112. return '';
  113. }
  114. }
  115. }, {
  116. field: 'ap_name',
  117. title: '所属广告位',
  118. unresize: 'false',
  119. templet:'#ap_posi',
  120. width: '15%'
  121. }, {
  122. title: '广告图片',
  123. unresize: 'false',
  124. templet: '#adv_image',
  125. width: '15%'
  126. }, {
  127. field: 'slide_sort',
  128. title: '排序',
  129. templet: '#slide_sort',
  130. align: 'center',
  131. sort : true,
  132. width: '12%'
  133. },{
  134. title: '是否启用',
  135. unresize: 'false',
  136. templet: function(data) {
  137. return '<input type="checkbox" name="state" value="1" lay-skin="switch" lay-filter="state" data-adv-id="'+ data.adv_id +'" '+ (data.state == 1 ? 'checked' : '') +' />';
  138. },
  139. width: '10%',
  140. }, {
  141. title: '操作',
  142. toolbar: '#action',
  143. unresize: 'false',
  144. align:'right'
  145. }]
  146. ],
  147. bottomToolbar: "#batchOperation",
  148. toolbar: "#toolbarOperation"
  149. });
  150. /**
  151. * 监听工具栏操作
  152. */
  153. table.tool(function(obj) {
  154. var data = obj.data;
  155. switch (obj.event) {
  156. case 'edit': //编辑
  157. location.href = ns.url("shop/adv/editadv",{"adv_id":data.adv_id, ap_id:ap_id});
  158. break;
  159. case 'delete': //删除
  160. deleteAdv(data.adv_id);
  161. break;
  162. }
  163. });
  164. /**
  165. * 批量操作
  166. */
  167. table.bottomToolbar(function(obj) {
  168. if (obj.data.length < 1) {
  169. layer.msg('请选择要操作的数据');
  170. return;
  171. }
  172. switch (obj.event) {
  173. case "del":
  174. var id_array = new Array();
  175. for (i in obj.data) id_array.push(obj.data[i].adv_id);
  176. deleteAdv(id_array.toString());
  177. break;
  178. }
  179. });
  180. table.on("sort",function (obj) {
  181. table.reload({
  182. page: {
  183. curr: 1
  184. },
  185. where: {
  186. order:obj.field,
  187. sort:obj.type
  188. }
  189. });
  190. });
  191. /**
  192. * 批量操作
  193. */
  194. table.toolbar(function(obj) {
  195. if (obj.data.length < 1) {
  196. layer.msg('请选择要操作的数据');
  197. return;
  198. }
  199. switch (obj.event) {
  200. case "del":
  201. var id_array = new Array();
  202. for (i in obj.data) id_array.push(obj.data[i].adv_id);
  203. deleteAdv(id_array.toString());
  204. break;
  205. }
  206. });
  207. /**
  208. * 删除
  209. */
  210. function deleteAdv(adv_ids) {
  211. if (repeat_flag) return false;
  212. repeat_flag = true;
  213. layer.confirm('确定要删除该广告位吗?', function() {
  214. $.ajax({
  215. url: ns.url("shop/adv/deleteAdv"),
  216. data: {'adv_ids': adv_ids},
  217. dataType: 'JSON',
  218. type: 'POST',
  219. success: function(res) {
  220. layer.msg(res.message);
  221. repeat_flag = false;
  222. if (res.code == 0) {
  223. table.reload();
  224. }
  225. }
  226. });
  227. }, function () {
  228. layer.close();
  229. repeat_flag = false;
  230. });
  231. }
  232. /**
  233. * 监听搜索
  234. */
  235. form.on('submit(search)', function(data){
  236. ap_id = $("select[name='ap_id']").val();
  237. table.reload({
  238. page: {
  239. curr: 1
  240. },
  241. where: data.field
  242. });
  243. });
  244. });
  245. // 监听单元格编辑
  246. function editSort(adv_id, type, event){
  247. var value = $(event).val();
  248. if(!new RegExp("^-?[1-9]\\d*$").test(value)){
  249. layer.msg("排序号只能是整数");
  250. return ;
  251. }
  252. if(value<0){
  253. layer.msg("排序号必须大于0");
  254. return ;
  255. }
  256. $.ajax({
  257. type: 'POST',
  258. url: ns.url("shop/adv/editAdvField"),
  259. data: {'type': type, 'value': value, 'adv_id': adv_id},
  260. dataType: 'JSON',
  261. success: function(res) {
  262. layer.msg(res.message);
  263. if(res.code==0){
  264. table.reload();
  265. }
  266. }
  267. });
  268. }
  269. function add() {
  270. location.href = ns.url("shop/adv/addAdv", {ap_id : ap_id});
  271. }
  272. </script>
  273. {/block}