update.html 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>更新页面</title>
  6. <link rel="stylesheet" href="/app/admin/component/pear/css/pear.css" />
  7. <link rel="stylesheet" href="/app/admin/admin/css/reset.css" />
  8. </head>
  9. <body>
  10. <form class="layui-form">
  11. <div class="mainBox">
  12. <div class="main-container mr-5">
  13. <div class="layui-form-item">
  14. <label class="layui-form-label">父级</label>
  15. <div class="layui-input-block">
  16. <div name="pid" id="pid" value="" ></div>
  17. </div>
  18. </div>
  19. <div class="layui-form-item">
  20. <label class="layui-form-label required">角色名</label>
  21. <div class="layui-input-block">
  22. <input type="text" name="name" value="" required lay-verify="required" class="layui-input">
  23. </div>
  24. </div>
  25. <div class="layui-form-item">
  26. <label class="layui-form-label">权限</label>
  27. <div class="layui-input-block">
  28. <div name="rules" id="rules" value="" ></div>
  29. </div>
  30. </div>
  31. </div>
  32. </div>
  33. <div class="bottom">
  34. <div class="button-container">
  35. <button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="save">
  36. 提交
  37. </button>
  38. <button type="reset" class="pear-btn pear-btn-md">
  39. 重置
  40. </button>
  41. </div>
  42. </div>
  43. </form>
  44. <script src="/app/admin/component/layui/layui.js?v=2.8.12"></script>
  45. <script src="/app/admin/component/pear/pear.js"></script>
  46. <script src="/app/admin/admin/js/permission.js"></script>
  47. <script>
  48. // 相关接口
  49. const PRIMARY_KEY = "id";
  50. const SELECT_API = "/app/admin/role/select" + location.search;
  51. const UPDATE_API = "/app/admin/role/update";
  52. // 获取数据库记录
  53. layui.use(["form", "util", "popup"], function () {
  54. let $ = layui.$;
  55. $.ajax({
  56. url: SELECT_API,
  57. dataType: "json",
  58. success: function (res) {
  59. // 给表单初始化数据
  60. layui.each(res.data[0], function (key, value) {
  61. let obj = $('*[name="'+key+'"]');
  62. if (key === "password") {
  63. obj.attr("placeholder", "不更新密码请留空");
  64. return;
  65. }
  66. if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
  67. if (obj[0].nodeName.toLowerCase() === "textarea") {
  68. obj.val(layui.util.escape(value));
  69. } else {
  70. obj.attr("value", value);
  71. }
  72. });
  73. // 字段 权限 rules
  74. layui.use(["jquery", "xmSelect", "popup"], function() {
  75. layui.$.ajax({
  76. url: "/app/admin/role/rules?id=" + res.data[0].pid,
  77. dataType: "json",
  78. success: function (res) {
  79. let value = layui.$("#rules").attr("value");
  80. let initValue = value ? value.split(",") : [];
  81. layui.xmSelect.render({
  82. el: "#rules",
  83. name: "rules",
  84. initValue: initValue,
  85. data: res.data,
  86. tree: {"show":true,expandedKeys:initValue},
  87. toolbar: {show:true,list:["ALL","CLEAR","REVERSE"]},
  88. })
  89. if (res.code) {
  90. layui.popup.failure(res.msg);
  91. }
  92. }
  93. });
  94. });
  95. // 字段 父级角色组 pid
  96. layui.use(["jquery", "xmSelect", "popup"], function() {
  97. layui.$.ajax({
  98. url: "/app/admin/role/select?format=tree",
  99. dataType: "json",
  100. success: function (res) {
  101. let value = layui.$("#pid").attr("value");
  102. let initValue = value ? value.split(",") : [];
  103. layui.xmSelect.render({
  104. el: "#pid",
  105. name: "pid",
  106. initValue: initValue,
  107. tips: "请选择",
  108. toolbar: {show: true, list: ["CLEAR"]},
  109. data: res.data,
  110. value: "0",
  111. model: {"icon":"hidden","label":{"type":"text"}},
  112. clickClose: true,
  113. radio: true,
  114. tree: {show: true,"strict":false,"clickCheck":true,"clickExpand":false,expandedKeys:true},
  115. on: function(data){
  116. let id = data.arr[0] ? data.arr[0].value : "";
  117. if (!id) return;
  118. layui.$.ajax({
  119. url: '/app/admin/role/rules?id=' + id,
  120. dataType: 'json',
  121. success: function (res) {
  122. if (res.code) {
  123. return layui.popup.failure(res.msg);
  124. }
  125. layui.xmSelect.get('#rules')[0].update({data:res.data});
  126. }
  127. });
  128. }
  129. });
  130. if (res.code) {
  131. layui.popup.failure(res.msg);
  132. }
  133. }
  134. });
  135. });
  136. // ajax产生错误
  137. if (res.code) {
  138. layui.popup.failure(res.msg);
  139. }
  140. }
  141. });
  142. });
  143. //提交事件
  144. layui.use(["form", "popup"], function () {
  145. layui.form.on("submit(save)", function (data) {
  146. data.field[PRIMARY_KEY] = layui.url().search[PRIMARY_KEY];
  147. layui.$.ajax({
  148. url: UPDATE_API,
  149. type: "POST",
  150. dateType: "json",
  151. data: data.field,
  152. success: function (res) {
  153. if (res.code) {
  154. return layui.popup.failure(res.msg);
  155. }
  156. return layui.popup.success("操作成功", function () {
  157. parent.refreshTable();
  158. parent.layer.close(parent.layer.getFrameIndex(window.name));
  159. });
  160. }
  161. });
  162. return false;
  163. });
  164. });
  165. </script>
  166. </body>
  167. </html>