treetable.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>树形表格</title>
  6. <link rel="stylesheet" href="../../component/pear/css/pear.css" />
  7. </head>
  8. <body class="pear-container">
  9. <div class="layui-card">
  10. <div class="layui-card-body">
  11. <form class="layui-form" action="">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">关键字</label>
  14. <div class="layui-input-inline">
  15. <input type="text" name="keyword" placeholder="" class="layui-input">
  16. </div>
  17. <button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="power-query">
  18. <i class="layui-icon layui-icon-search"></i>
  19. 查询
  20. </button>
  21. <button type="reset" class="pear-btn pear-btn-md">
  22. <i class="layui-icon layui-icon-refresh"></i>
  23. 重置
  24. </button>
  25. </div>
  26. </form>
  27. </div>
  28. </div>
  29. <div class="layui-card">
  30. <div class="layui-card-body">
  31. <table id="power-table" lay-filter="power-table"></table>
  32. </div>
  33. </div>
  34. <script type="text/html" id="power-toolbar">
  35. <button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
  36. <i class="layui-icon layui-icon-add-1"></i>
  37. 新增
  38. </button>
  39. <button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
  40. <i class="layui-icon layui-icon-delete"></i>
  41. 删除
  42. </button>
  43. <button class="pear-btn pear-btn-success pear-btn-md" lay-event="expandAll">
  44. <i class="layui-icon layui-icon-spread-left"></i>
  45. 展开
  46. </button>
  47. <button class="pear-btn pear-btn-success pear-btn-md" lay-event="foldAll">
  48. <i class="layui-icon layui-icon-shrink-right"></i>
  49. 折叠
  50. </button>
  51. <button class="pear-btn pear-btn-success pear-btn-md" lay-event="reload">
  52. <i class="layui-icon layui-icon-refresh"></i>
  53. 重载
  54. </button>
  55. </script>
  56. <script type="text/html" id="power-bar">
  57. <button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
  58. <button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
  59. </script>
  60. <script type="text/html" id="power-type">
  61. {{#if (d.powerType == '0') { }}
  62. <span>目录</span>
  63. {{# }else if(d.powerType == '1'){ }}
  64. <span>菜单</span>
  65. {{# }else if(d.powerType == '2'){ }}
  66. <span>按钮</span>
  67. {{# } }}
  68. </script>
  69. <script type="text/html" id="power-enable">
  70. <input type="checkbox" name="enable" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable" checked = "{{ d.id == 10003 ? 'true' : 'false' }}">
  71. </script>
  72. <script type="text/html" id="icon">
  73. <i class="layui-icon {{d.icon}}"></i>
  74. </script>
  75. <script src="../../component/layui/layui.js"></script>
  76. <script src="../../component/pear/pear.js"></script>
  77. <script>
  78. layui.use(['table','form','jquery','treetable'],function () {
  79. let table = layui.table;
  80. let form = layui.form;
  81. let $ = layui.jquery;
  82. let treetable = layui.treetable;
  83. let MODULE_PATH = "../system/operate/";
  84. treetable.render({
  85. treeColIndex: 1,
  86. treeIdName: 'powerId',
  87. treePidName: 'parentId',
  88. skin:'line',
  89. treeDefaultClose: true,
  90. toolbar:'#power-toolbar',
  91. elem: '#power-table',
  92. url: '../../demos/data/power.json',
  93. page: false,
  94. cols: [
  95. [
  96. {type: 'checkbox'},
  97. {field: 'powerName', minWidth: 200, title: '权限名称'},
  98. {field: 'icon', title: '图标',templet:'#icon'},
  99. {field: 'powerType', title: '权限类型',templet:'#power-type'},
  100. {field: 'enable', title: '是否可用',templet:'#power-enable'},
  101. {field: 'sort', title: '排序'},
  102. {title: '操作',templet: '#power-bar', width: 150, align: 'center'}
  103. ]
  104. ]
  105. });
  106. table.on('tool(power-table)',function(obj){
  107. if (obj.event === 'remove') {
  108. window.remove(obj);
  109. } else if (obj.event === 'edit') {
  110. window.edit(obj);
  111. }
  112. })
  113. table.on('toolbar(power-table)', function(obj){
  114. if(obj.event === 'add'){
  115. window.add();
  116. } else if(obj.event === 'refresh'){
  117. window.refresh();
  118. } else if(obj.event === 'batchRemove'){
  119. window.batchRemove(obj);
  120. } else if(obj.event === 'expandAll'){
  121. treetable.expandAll("#power-table");
  122. } else if(obj.event === 'foldAll'){
  123. treetable.foldAll("#power-table");
  124. } else if(obj.event === 'reload'){
  125. treetable.reload("#power-table");
  126. }
  127. });
  128. form.on('submit(power-query)', function(data) {
  129. var keyword = data.field.keyword;
  130. treetable.search('#power-table',keyword);
  131. return false;
  132. });
  133. window.add = function(){
  134. layer.open({
  135. type: 2,
  136. title: '新增',
  137. shade: 0.1,
  138. area: ['450px', '500px'],
  139. content: MODULE_PATH + 'add.html'
  140. });
  141. }
  142. window.edit = function(obj){
  143. layer.open({
  144. type: 2,
  145. title: '修改',
  146. shade: 0.1,
  147. area: ['450px', '500px'],
  148. content: MODULE_PATH + 'edit.html'
  149. });
  150. }
  151. window.remove = function(obj){
  152. layer.confirm('确定要删除该权限', {icon: 3, title:'提示'}, function(index){
  153. layer.close(index);
  154. let loading = layer.load();
  155. $.ajax({
  156. url: MODULE_PATH+"remove/"+obj.data['powerId'],
  157. dataType:'json',
  158. type:'delete',
  159. success:function(result){
  160. layer.close(loading);
  161. if(result.success){
  162. layer.msg(result.msg,{icon:1,time:1000},function(){
  163. obj.del();
  164. });
  165. }else{
  166. layer.msg(result.msg,{icon:2,time:1000});
  167. }
  168. }
  169. })
  170. });
  171. }
  172. window.batchRemove = function(obj) {
  173. let data = table.checkStatus(obj.config.id).data;
  174. if (data.length === 0) {
  175. layer.msg("未选中数据", {
  176. icon: 3,
  177. time: 1000
  178. });
  179. return false;
  180. }
  181. let ids = "";
  182. for (let i = 0; i < data.length; i++) {
  183. ids += data[i].powerId + ",";
  184. }
  185. ids = ids.substr(0, ids.length - 1);
  186. layer.confirm('确定要删除这些数据', {
  187. icon: 3,
  188. title: '提示'
  189. }, function(index) {
  190. layer.close(index);
  191. let loading = layer.load();
  192. $.ajax({
  193. url: MODULE_PATH + "batchRemove/" + ids,
  194. dataType: 'json',
  195. type: 'delete',
  196. success: function(result) {
  197. layer.close(loading);
  198. if (result.success) {
  199. layer.msg(result.msg, {
  200. icon: 1,
  201. time: 1000
  202. }, function() {
  203. table.reload('user-table');
  204. });
  205. } else {
  206. layer.msg(result.msg, {
  207. icon: 2,
  208. time: 1000
  209. });
  210. }
  211. }
  212. })
  213. });
  214. }
  215. })
  216. </script>
  217. </body>
  218. </html>