index.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>layui</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <link rel="stylesheet" href="__PUBLIC__/layui/css/layui.css" media="all">
  10. <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.min.css" media="all"/>
  11. <link rel="stylesheet" href="__CSS__/admin.css" media="all">
  12. </head>
  13. <style type="text/css">
  14. .laytable-cell-1-action {
  15. height: 22px;
  16. }
  17. .layui-icon.layui-tree-head {
  18. line-height: initial;
  19. }
  20. </style>
  21. <body style="padding:10px;">
  22. <div class="tplay-body-div">
  23. <div class="layui-tab">
  24. <ul class="layui-tab-title">
  25. <li class="layui-this">栏目管理</li>
  26. <li><a href="{:url('publish')}" class="a_menu">新增栏目</a></li>
  27. <li><a href="javascript:filemanage()">管理HTML</a></li>
  28. </ul>
  29. </div>
  30. <script type="text/html" id="toolbarDemo">
  31. <div class="layui-btn-container">
  32. <a class="layui-btn layui-btn-sm" lay-event="sort">排序</a>
  33. <a class="layui-btn layui-btn-sm layui-btn-primary" lay-event="switch-tree"><i
  34. class="layui-icon layui-icon-triangle-r"></i>收缩
  35. </a>
  36. <a class="layui-btn layui-btn-sm" lay-event="exportHtml_cover" title="生成HTML并覆盖旧文件"><i
  37. class="layui-icon">&#xe609;</i>生成HTML
  38. </a>
  39. </div>
  40. </script>
  41. <form class="layui-form" id="admin">
  42. <table class="layui-table layui-form" id="treeTable" lay-filter="treeTable"></table>
  43. </form>
  44. {include file="public/foot"}
  45. <script type="text/javascript">
  46. layui.extend({
  47. treeGrid: 'tree_table_treegrid/treeGrid' //拓展一个模块别名
  48. })
  49. var table = null, tableId = 'treeTable';
  50. layui.use(['jquery', 'treeGrid', 'layer'], function () {
  51. var $ = layui.jquery;
  52. table = layui.treeGrid;//很重要
  53. layer = layui.layer;
  54. //第一个实例
  55. var ptable = table.render({
  56. id: tableId,
  57. elem: '#' + tableId,
  58. url: '{:url("index")}', //数据接口
  59. cellMinWidth: 100,
  60. treeId: 'id', //树形id字段名称
  61. treeUpId: 'pid', //树形父id字段名称
  62. treeShowName: 'title', //以树形式显示的字段
  63. size: 'sm', //小尺寸的表格
  64. toolbar: '#toolbarDemo',
  65. // defaultToolbar: [],//此参数无效
  66. page: false,
  67. cols: [[
  68. {
  69. width: '60', field: 'sort', title: '排序', align: 'center', templet: function (row) {
  70. return '<input type="text" name="sorts[]" value="' + row.sort + '" style="width: 20px;" class="sort"><input type="hidden" name="ids[]" value="' + row.id + '">';
  71. }
  72. },
  73. {type: 'checkbox'},
  74. {width: '60', field: 'id', title: 'ID'},
  75. {
  76. width: '250', field: 'title', title: '栏目名称', template: function (row) {
  77. return '<a href="./perview?id=' + row.id + '" target="_blank" title="单击预览">' + row.title + '</a>'
  78. }
  79. },
  80. {field: 'type_text', title: '类型', width: '80'},
  81. {
  82. field: 'catalog_templet', title: '栏目模板', width: '90', templet: function (row) {
  83. return row.catalog_templet ? "<a href='javascript:;' title='单击编辑' onclick=\"fileEdit('" + row.catalog_templet + "')\">" + '<i class="fa fa-file-code-o fa-lg"/> ' + row.catalog_templet + "</a>" : '';
  84. }
  85. },
  86. {
  87. field: 'article_templet', title: '文章模板', width: '90', templet: function (row) {
  88. return row.article_templet ? "<a href='javascript:;' title='单击编辑' onclick=\"fileEdit('" + row.article_templet + "')\">" + '<i class="fa fa-file-code-o fa-lg"/> ' + row.article_templet + "</a>" : '';
  89. }
  90. },
  91. {width: '200', field: 'path', title: '栏目路径'},
  92. {width: '250', field: 'articlelist_rule', title: '列表路径'},
  93. {width: '250', field: 'article_rule', title: '文章路径'},
  94. {width: '100', field: 'article_count', title: '文章数'},
  95. // {field: 'tpath', title: '发布路径', width: '100'},
  96. // {field: 'tree_path', title: 'TREE_PATH', width: '100'},
  97. {
  98. field: 'status', title: '审核', align: 'center', width: '60', templet: function (row) {
  99. return '<a href="javascript:;" style="font-size:18px;" class="status" data-id="' + row.id + '" data-val="' + row.status + '">' + (row.status == 1 ? '<i class="fa fa-toggle-on"></i>' : '<i class="fa fa-toggle-off"></i>') + '</a>';
  100. }
  101. },
  102. {
  103. field: 'action', title: '操作', align: 'center', width: '120',
  104. templet: function (item) {
  105. var editBtn = '<a href="publish?id=' + item.id + '" class="layui-btn layui-btn-xs a_menu" style="margin-right: 0;font-size:12px;"><i class="layui-icon"></i></a>';
  106. var addBtn = "";
  107. if (item.type == 2) {
  108. addBtn = '<a href="publish?pid=' + item.id + '" class="layui-btn layui-btn-xs a_menu" style="margin-right: 0;font-size:12px;"><i class="layui-icon"></i></a>';
  109. }
  110. var delBtn = '<a class="layui-btn layui-btn-xs a_menu" lay-event="del" style="margin-right: 0;font-size:12px;"><i class="layui-icon"></i></a>';
  111. return '<div class="layui-btn-group">' + editBtn + addBtn + delBtn + '</div>';
  112. }
  113. },
  114. ]],
  115. done: function (e) {
  116. //审核
  117. switchStatus('.status', "{:url('status')}");
  118. },
  119. });
  120. table.on('tool(' + tableId + ')', function (obj) {
  121. if (obj.event === 'del') {
  122. var id = obj.data.id;
  123. var title = obj.data.title;
  124. layer.confirm('确定删除 ? ' + title, function (index) {
  125. $.ajax({
  126. url: "{:url('delete')}",
  127. data: {id: id},
  128. dataType: 'json',
  129. type: 'post',
  130. success: function (res) {
  131. layer.msg(res.msg);
  132. if (res.code == 1) {
  133. setTimeout(function () {
  134. location.href = res.url;
  135. }, 1500)
  136. }
  137. }
  138. })
  139. })
  140. }
  141. });
  142. //监听事件
  143. table.on('toolbar(' + tableId + ')', function (obj) {
  144. if (obj.event == 'exportHtml_cover') {
  145. var checkStatus = table.checkStatus(tableId);//获取选中的数据
  146. var data = checkStatus.data;
  147. if (data.length > 0) {
  148. var ids = [];//数组
  149. data.forEach(function (item, key) {
  150. ids[key] = item.id;
  151. })
  152. var load = layer.load(1, {
  153. shade: [0.1, '#fff'] //0.1透明度的白色背景
  154. });
  155. $.ajax({
  156. url: "{:url('exportHtml')}?cover=true",
  157. data: {ids: ids},
  158. type: 'post',
  159. dataType: 'json',
  160. success: function (res) {
  161. layer.alert(res.msg, function (index) {
  162. layer.msg(res.msg);
  163. })
  164. },
  165. complete: function () {
  166. layer.close(load);
  167. }
  168. })
  169. } else {
  170. layer.msg('请先勾选需要操作的记录');
  171. }
  172. }
  173. else if (obj.event == 'sort') {
  174. $.ajax({
  175. url: "{:url('sort')}",
  176. data: $('#admin').serialize(),
  177. type: 'post',
  178. async: false,
  179. success: function (res) {
  180. if (res.code == 1) {
  181. layer.alert(res.msg, function (index) {
  182. location.reload();
  183. })
  184. } else {
  185. layer.msg(res.msg);
  186. }
  187. }
  188. })
  189. }
  190. else if (obj.event == 'switch-tree') {
  191. if (obj.ele.text() == "展开") {
  192. table.treeNodeOpenAll(tableId);
  193. obj.ele.html('<i class="layui-icon layui-icon-triangle-r"></i>收缩')
  194. } else {
  195. table.treeNodeCloseAll(tableId);
  196. obj.ele.html('<i class="layui-icon layui-icon-triangle-d"></i>展开')
  197. }
  198. }
  199. });
  200. });
  201. function filemanage() {
  202. window.parent.tab.tabAdd({
  203. icon: "fa-bookmark",
  204. id: 'filemanage',
  205. title: "管理HTML",
  206. url: "{:url('admin/file_manage/index')}"
  207. });
  208. }
  209. function fileEdit(filename) {
  210. window.parent.tab.tabAdd({
  211. icon: "fa-bookmark",
  212. id: 'templet' + filename,
  213. title: '<i class="fa fa-file-code-o"/> ' + filename,
  214. url: "{:url('admin/templet/publish')}?filename=" + filename
  215. });
  216. }
  217. </script>
  218. </div>
  219. </body>
  220. </html>