index.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. ;
  2. layui.config({
  3. base: "../../../admin/js/layuiPlugins/"
  4. }).use(['form', 'layer', 'jquery', 'laypage', 'element', 'table', 'laydate', 'cascade', 'step', 'eleTree', 'laytpl'], function () {
  5. var form = layui.form,
  6. layer = layui.layer,
  7. laypage = layui.laypage,
  8. $ = layui.jquery,
  9. table = layui.table,
  10. element = layui.element,
  11. laydate = layui.laydate,
  12. laytpl = layui.laytpl,
  13. eleTree = layui.eleTree;
  14. cascade = layui.cascade;
  15. //自定义验证
  16. form.verify({
  17. namelength: [
  18. /^.{0,18}$/,
  19. "长度限制在0-18个字符噢"
  20. ]
  21. });
  22. var obj = {
  23. roleId: ''
  24. }
  25. obj.main = function () {
  26. var _this = this;
  27. _this.getRole();
  28. if(!layui.data('auth').data.add){
  29. $('#addRole').hide();
  30. }
  31. }
  32. obj.getRole = function () {
  33. var _this = this;
  34. $.ajax({
  35. type: "get",
  36. url: 'roleListUrl',
  37. success: function (data) {
  38. if (data.code === 0) {
  39. var getTpl = roleTpl.innerHTML, view = document.getElementById('roleInfo');
  40. laytpl(getTpl).render(data, function (html) {
  41. view.innerHTML = html;
  42. });
  43. } else {
  44. parent.layer.msg(res.msg, {
  45. icon: 1
  46. });
  47. }
  48. }
  49. });
  50. }
  51. function getMenu(id, data, open) {
  52. eleTree.render({
  53. elem: '#system' + id,
  54. data: data,
  55. showCheckbox: true,
  56. drag: false,
  57. accordion: false,
  58. showIcon: true,
  59. menuShow: true,
  60. open: open,
  61. });
  62. }
  63. function getSystem(roleId) {
  64. $.ajax({
  65. type: "get",
  66. url: 'menuListUrl?roleId=' + roleId,
  67. success: function (data) {
  68. if (data.code === 0) {
  69. var getTpl = systemTpl.innerHTML, view = document.getElementById('systemInfo');
  70. laytpl(getTpl).render(data, function (html) {
  71. view.innerHTML = html;
  72. });
  73. for (let i = 0; i < data.data.length; i++) {
  74. getMenu(data.data[i].sysId, data.data[i].list, data.data[i].open)
  75. form.render();
  76. }
  77. } else {
  78. parent.layer.msg(res.msg, {
  79. icon: 1
  80. });
  81. }
  82. }
  83. });
  84. }
  85. // 点击角色获取菜单权限
  86. $('#roleInfo').on('click', '.li-item', function () {
  87. let roleId = $(this).attr('roleId');
  88. $(this).addClass('active').siblings().removeClass('active');
  89. obj.roleId = roleId
  90. if ($(this).children('.role-forbid').length > 0) {
  91. $('#systemInfo').empty();
  92. return
  93. }
  94. getSystem(obj.roleId);
  95. })
  96. // 编辑角色
  97. $('#roleInfo').on('click', '#roleEdit', function (e) {
  98. e.stopPropagation();
  99. let roleId = $(this).parents('.li-item').attr('roleId');
  100. layer.open({
  101. type: 2,
  102. anim: 0,
  103. title: "添加角色",
  104. area: ['700px', '350px'],
  105. fixed: true,
  106. scrollbar: true,
  107. maxmin: true,
  108. content: "add_role.html?id=" + roleId,
  109. end: function () {
  110. obj.getRole(obj.regionId)
  111. }
  112. });
  113. })
  114. // 删除角色
  115. $('#roleInfo').on('click', '#roleDel', function (e) {
  116. e.stopPropagation();
  117. let roleId = $(this).parents('.li-item').attr('roleId');
  118. layer.confirm('真的删除吗?', function (index) {
  119. layer.close(index);
  120. var index1 = layer.msg('删除中,请稍候', {
  121. icon: 16,
  122. time: false,
  123. shade: 0.8
  124. });
  125. $.ajax({
  126. type: "DELETE",
  127. url: 'roleFormUrl?roleId=' + roleId,
  128. contentType: 'application/json',
  129. success: function (res) {
  130. if (!(res.code - 0)) {
  131. layer.close(index1);
  132. layer.msg(res.msg, {
  133. icon: 1
  134. });
  135. obj.getRole(obj.regionId)
  136. } else {
  137. layer.msg(res.msg, {
  138. icon: 2
  139. });
  140. }
  141. }
  142. });
  143. });
  144. })
  145. // 禁用角色
  146. $('#roleInfo').on('click', '#roleForbid', function (e) {
  147. e.stopPropagation();
  148. let roleId = $(this).parents('.li-item').attr('roleId')
  149. let forbidId = {
  150. id: roleId,
  151. status: '2'
  152. }
  153. layer.confirm('确定禁用吗?', function (index) {
  154. layer.close(index);
  155. $.ajax({
  156. type: "PUT",
  157. url: 'roleFormUrl',
  158. data: JSON.stringify(forbidId),
  159. contentType: 'application/json',
  160. success: function (res) {
  161. if (!(res.code - 0)) {
  162. layer.msg('禁用成功', {
  163. icon: 1
  164. });
  165. obj.getRole(obj.regionId)
  166. } else {
  167. layer.msg(res.msg, {
  168. icon: 2
  169. });
  170. }
  171. }
  172. });
  173. });
  174. })
  175. // 启用角色
  176. $('#roleInfo').on('click', '#roleEnable', function (e) {
  177. e.stopPropagation();
  178. let roleId = $(this).parents('.li-item').attr('roleId')
  179. let forbidId = {
  180. id: roleId,
  181. status: '0'
  182. }
  183. layer.confirm('确定启用吗?', function (index) {
  184. layer.close(index);
  185. $.ajax({
  186. type: "PUT",
  187. url: 'roleFormUrl',
  188. data: JSON.stringify(forbidId),
  189. contentType: 'application/json',
  190. success: function (res) {
  191. if (!(res.code - 0)) {
  192. layer.msg('启用成功', {
  193. icon: 1
  194. });
  195. obj.getRole(obj.regionId)
  196. } else {
  197. layer.msg(res.msg, {
  198. icon: 2
  199. });
  200. }
  201. }
  202. });
  203. });
  204. })
  205. // 保存菜单权限
  206. $("#saveMenus").on("click", function () {
  207. let arr1 = [], sysReqs = [], tempArray = [], parentNode = [];
  208. $('#systemInfo').find('li').each(function () {
  209. if ($(this).attr('opened') == 1) {
  210. sysReqs.push($(this).attr('id'));
  211. }
  212. });
  213. for (let i = 0; i < sysReqs.length; i++) {
  214. this['ids' + i] = [];
  215. }
  216. for (let i = 0; i < sysReqs.length; i++) {
  217. this['ids' + i] = eleTree.checkedData("#system" + sysReqs[i]);
  218. $("#system" + sysReqs[i]).find("input[eletree-status='2']").each(function () {
  219. parentNode.push($(this).val())
  220. });
  221. if (this['ids' + i].length == 0) {
  222. let title = $("#system" + sysReqs[i]).prev().find('h4').text();
  223. layer.msg(title + '下必须有选中菜单')
  224. return false;
  225. }
  226. for (let j = 0; j < this['ids' + i].length; j++) {
  227. arr1.push(this['ids' + i][j].id)
  228. }
  229. }
  230. // for (let i = 0; i < arr1.length; i++) {
  231. // if (tempArray.indexOf(arr1[i]) == -1) {
  232. // tempArray.push(arr1[i]);
  233. // }
  234. // }
  235. let temp = {
  236. roleId: obj.roleId,
  237. menuReq: arr1.concat(parentNode),
  238. sysReq: sysReqs
  239. }
  240. $.ajax({
  241. type: "post",
  242. url: 'menuFormUrl',
  243. data: JSON.stringify(temp),
  244. contentType: 'application/json',
  245. success: function (res) {
  246. if (!(res.code - 0)) {
  247. layer.msg(res.msg, {
  248. icon: 1
  249. });
  250. getSystem(obj.roleId);
  251. } else {
  252. layer.msg(res.msg, {
  253. icon: 2
  254. });
  255. }
  256. }
  257. });
  258. })
  259. // 点击开关控制菜单权限 是否可选
  260. form.on('switch(switchTest)', function (data) {
  261. if (data.elem.checked == true) {
  262. data.othis.parents('.group').find('.eleTree-checkbox').removeClass('eleTree-checkbox-disabled')
  263. data.othis.parents('.group').attr('opened', '1')
  264. } else {
  265. data.othis.parents('.group').find('.eleTree-checkbox').addClass('eleTree-checkbox-disabled')
  266. data.othis.parents('.group').attr('opened', '0')
  267. }
  268. });
  269. // 添加角色
  270. $("#addRole").on("click", function () {
  271. var id = this.getAttribute('layId');
  272. layer.open({
  273. type: 2,
  274. anim: 0,
  275. title: "添加角色",
  276. area: ['700px', '350px'],
  277. fixed: true,
  278. scrollbar: true,
  279. maxmin: true,
  280. content: id + ".html",
  281. end: function () {
  282. obj.getRole()
  283. }
  284. });
  285. });
  286. obj.main();
  287. });