role_menu.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>分配菜单</title>
  7. <link rel="stylesheet" href="../../lib/layui/css/layui.css">
  8. <style>
  9. body { padding: 20px; }
  10. .menu-tree { border: 1px solid #e6e6e6; border-radius: 4px; padding: 10px; max-height: 350px; overflow-y: auto; }
  11. .menu-tree .layui-form-checkbox { display: block; margin: 5px 0; }
  12. .menu-tree .layui-form-checkbox[lay-skin="primary"] { padding-left: 22px; }
  13. </style>
  14. </head>
  15. <body>
  16. <div class="layui-form" id="menuForm">
  17. <div class="menu-tree" id="menuTree"></div>
  18. <div class="layui-form-item" style="margin-top: 20px;">
  19. <div class="layui-input-block">
  20. <button type="button" class="layui-btn" lay-submit lay-filter="submitForm">保存</button>
  21. <button type="button" class="layui-btn layui-btn-primary" id="checkAll">全选</button>
  22. <button type="button" class="layui-btn layui-btn-primary" id="uncheckAll">取消</button>
  23. </div>
  24. </div>
  25. </div>
  26. <script src="../../lib/layui/layui.js"></script>
  27. <script src="../../js/config.js"></script>
  28. <script src="../../js/common.js"></script>
  29. <script>
  30. layui.use(['form', 'layer'], function() {
  31. var form = layui.form;
  32. var layer = layui.layer;
  33. var roleId = Common.getQueryString('roleId');
  34. loadMenuTree();
  35. function loadMenuTree() {
  36. Common.get(Config.api.menu.tree + '?roleId=' + roleId, function(res) {
  37. if (res.code === 200) {
  38. var menus = res.data || [];
  39. var html = buildMenuTree(menus);
  40. $('#menuTree').html(html);
  41. form.render('checkbox');
  42. }
  43. });
  44. }
  45. function buildMenuTree(menus, level) {
  46. level = level || 0;
  47. var html = '';
  48. menus.forEach(function(menu) {
  49. var indent = level * 20;
  50. var checked = menu.checked ? 'checked' : '';
  51. html += '<div style="padding-left: ' + indent + 'px;">';
  52. html += '<input type="checkbox" name="menuIds" value="' + menu.id + '" lay-skin="primary" title="' + menu.menuName + '" ' + checked + '>';
  53. html += '</div>';
  54. if (menu.children && menu.children.length > 0) {
  55. html += buildMenuTree(menu.children, level + 1);
  56. }
  57. });
  58. return html;
  59. }
  60. $('#checkAll').click(function() {
  61. $('#menuTree input[name="menuIds"]').prop('checked', true);
  62. form.render('checkbox');
  63. });
  64. $('#uncheckAll').click(function() {
  65. $('#menuTree input[name="menuIds"]').prop('checked', false);
  66. form.render('checkbox');
  67. });
  68. form.on('submit(submitForm)', function() {
  69. var menuIds = [];
  70. $('#menuTree input[name="menuIds"]:checked').each(function() {
  71. menuIds.push($(this).val());
  72. });
  73. layer.msg('保存中...', { icon: 16, shade: 0.3, time: 0 });
  74. // 获取角色信息并更新
  75. Common.get(Config.api.role.getInfo + '/' + roleId, function(res) {
  76. if (res.code === 200) {
  77. var roleData = res.data;
  78. roleData.menuIds = menuIds;
  79. Common.ajax({
  80. url: Config.api.role.update,
  81. type: 'PUT',
  82. data: roleData,
  83. success: function(res) {
  84. layer.closeAll();
  85. Common.success('保存成功', function() {
  86. var index = parent.layer.getFrameIndex(window.name);
  87. parent.layer.close(index);
  88. });
  89. }
  90. });
  91. }
  92. });
  93. return false;
  94. });
  95. });
  96. </script>
  97. </body>
  98. </html>