role.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. layui.use([ 'laypage', 'layer', 'table', 'element','form', 'transfer', 'util'], function(){
  2. var laypage = layui.laypage //分页
  3. ,layer = layui.layer //弹层
  4. ,table = layui.table //表格
  5. ,transfer = layui.transfer
  6. ,util = layui.util
  7. ,element = layui.element //元素操作
  8. ,form = layui.form;
  9. //第一个实例
  10. table.render({
  11. elem: '#rolelist'
  12. ,url: '/auth/rolelistfrom' //数据接口
  13. ,where:{token:csrfToken}
  14. ,method:'post'
  15. ,id:'tablerReload'
  16. ,page: true //开启分页
  17. ,text:'数据加载中'
  18. ,cols: [[ //表头
  19. // {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left',align:'center'},
  20. {type:'numbers',title:'序号'}
  21. ,{field: 'name', title: '角色名称', width:200,align:'center'}
  22. ,{field: 'describe', title: '描述', align:'center'}
  23. ,{field: 'state', title: '状态', width:100,align:'center', templet: function (d) {
  24. if (d.state == 2) {
  25. return '<input type="checkbox" value="' + d.id + '" data-state="1" name="open" lay-skin="switch" lay-filter="switchTest3" lay-text="开启|禁用">'
  26. } else {
  27. return '<input type="checkbox" checked value="' + d.id + '" data-state="2" name="open" lay-skin="switch" lay-filter="switchTest3" lay-text="开启|禁用">'
  28. }
  29. }}
  30. ,{field: 'create_at', title: '添加时间', width:200,align:'center'}
  31. ,{field: 'update_at', title: '更新时间', width:200,align:'center'}
  32. ,{fixed: 'right',title:'操作', width: 300, align:'center', toolbar: '#operate'}
  33. ]]
  34. });
  35. table.reload('tablerReload'); //重新加载
  36. //列表操作
  37. table.on('tool(rolelist)', function(obj){
  38. var layEvent = obj.event,
  39. data = obj.data;
  40. if(layEvent === 'edit'){
  41. layer.open({
  42. type: 2,
  43. title: '编辑节点',
  44. closeBtn: 1, //不显示关闭按钮
  45. // shade: [0],
  46. area: ['600px', '500px'],
  47. anim: 2,
  48. content: ['/auth/editrole?id='+data.id, 'yes'], //iframe的url,no代表不显示滚动条
  49. });
  50. } else if(layEvent === 'del') {
  51. layer.confirm('您确定要删除这条数据吗?',{btn:['确定','取消']},function () {
  52. $.post('/auth/roledel',{'token':csrfToken,'id':data.id},function (data) {
  53. if(data.code == 200){
  54. layer.msg(data.msg);
  55. table.reload('nodelist');
  56. return ;
  57. }
  58. layer.msg(data.msg);
  59. })
  60. table.reload('rolelist');
  61. })
  62. } else if(layEvent === 'addnode') {
  63. layer.open({
  64. type: 2,
  65. title: '为角色添加节点权限',
  66. closeBtn: 1, //不显示关闭按钮
  67. // shade: [0],
  68. area: ['60%', '75%'],
  69. anim: 2,
  70. content: ['/auth/addrolenode?id='+data.id, 'yes'], //iframe的url,no代表不显示滚动条
  71. });
  72. } else if(layEvent === 'addmenu') {
  73. var index = layui.layer.open({
  74. title : '['+data.name+"]角色添加菜单权限",
  75. type : 2,
  76. closeBtn: 1, //不显示关闭按钮
  77. area: ['60%', '75%'],
  78. // maxmin: true,
  79. content:'/auth/addrolemenu?id='+data.id,
  80. })
  81. // layui.layer.full(index);
  82. // // // //改变窗口大小时,重置弹窗的宽高,防止超出可视区域(如F12调出debug的操作)
  83. // $(window).on("resize",function(){
  84. // layui.layer.full(index);
  85. // })
  86. }
  87. });
  88. //监听指定开关
  89. form.on('switch(switchTest3)', function (data) {
  90. var id = data.value;
  91. var state = $(this).data('state');
  92. layer.confirm('确定要修改此操作吗?', {btn: ['确定', '取消']}, function () {
  93. $.post('/auth/roledelstate', {id:id, state: state}, function (data) {
  94. layer.msg(data.msg);
  95. table.reload('tablerReload');
  96. })
  97. }, function (aa) {
  98. table.reload('tablerReload'); //重新加载
  99. })
  100. });
  101. var $ = layui.$, active = {
  102. addData: function(){ //获取选中数据
  103. layer.open({
  104. type: 2,
  105. title: '添加角色',
  106. closeBtn: 1, //不显示关闭按钮
  107. shade: [0],
  108. area: ['600px', '500px'],
  109. anim: 2,
  110. content: ['/auth/addrole', 'no'], //iframe的url,no代表不显示滚动条
  111. // end: function(){ //此处用于演示
  112. // layer.open({
  113. // type: 2,
  114. // title: '很多时候,我们想最大化看,比如像这个页面。',
  115. // shadeClose: true,
  116. // shade: false,
  117. // maxmin: true, //开启最大化最小化按钮
  118. // area: ['893px', '600px'],
  119. // content: '//fly.layui.com/'
  120. // });
  121. // }
  122. });
  123. // var checkStatus = table.checkStatus('idTest')
  124. // ,data = checkStatus.data;
  125. // layer.alert(JSON.stringify(data));
  126. }
  127. };
  128. $('.demoTable .layui-btn').on('click', function(){
  129. var type = $(this).data('type');
  130. active[type] ? active[type].call(this) : '';
  131. });
  132. /**
  133. * 2020.6.24 lyy 权限管理之添加节点
  134. *begin
  135. * ****/
  136. var data1 = [];
  137. var data2 = [];
  138. $('#userrolelist .y_role').each(function () {
  139. let t = {"value": $(this).data('id'), "title": $(this).data('name')};
  140. data1.push(t);
  141. })
  142. $('#userrolelist .c_role').each(function () {
  143. data2.push($(this).data('id'))
  144. })
  145. //显示搜索框
  146. transfer.render({
  147. elem: '#test4'
  148. , data: data1
  149. , value: data2
  150. ,width:400
  151. ,height:550
  152. , title: ['未赋予', '已赋予']
  153. , showSearch: true
  154. , id: "keyuserrole"
  155. })
  156. util.event('lay-demoTransferActive', {
  157. getData: function (othis) {
  158. var getData = transfer.getData('keyuserrole'); //获取右侧数据
  159. var nid = [];
  160. for(var v of getData){
  161. nid.push(v.value);
  162. }
  163. var index = top.layer.msg('数据提交中,请稍候', {icon: 16, time: false, shade: 0.8}); //数据提交提示
  164. $.post('/auth/addroleandnodefrom', {nid:nid,rid:$(this).data('id'),type:$(this).data('type')}, function (data) {
  165. if (data.code == 200) {
  166. top.layer.close(index); //关闭数据提交信息
  167. layer.msg(data.msg);
  168. parent.layui.table.reload('userlist');
  169. TableClose();
  170. } else if (data.code == 300) {
  171. top.layer.close(index); //关闭数据提交信息
  172. layer.msg(data.msg);
  173. }
  174. })
  175. }
  176. , reload: function () {
  177. //实例重载
  178. transfer.reload('keyuserrole', {
  179. title: ['未赋予', '已赋予']
  180. , data: data1
  181. , value: data2
  182. , showSearch: true
  183. })
  184. }
  185. });
  186. //添加
  187. form.on('submit(rolesubmit)', function(data){
  188. $.post('/auth/addrolefrom',{'data':data.field},function (data) {
  189. if(data.code == 200)
  190. {
  191. layer.msg(data.msg);
  192. parent.layui.table.reload('rolelist');
  193. TableClose();
  194. } else if(data.code == 300 ) {
  195. layer.msg(data.msg);
  196. }
  197. })
  198. return false;
  199. });
  200. //修改
  201. form.on('submit(editsubmit)', function(data){
  202. $.post('/auth/editrolefrom',{'data':data.field},function (data) {
  203. if(data.code == 200)
  204. {
  205. layer.msg(data.msg);
  206. parent.layui.table.reload('rolelist');
  207. TableClose();
  208. } else if(data.code == 300 ) {
  209. layer.msg(data.msg);
  210. }
  211. })
  212. return false;
  213. });
  214. //给角色添加菜单栏
  215. form.on('submit(add_Role_Menu)', function(data){
  216. var index = layer.msg('数据提交中,请稍候',{icon: 16,time:false,shade:0.8}); //数据提交提示
  217. var oCks = xtree1.GetChecked(); //这是方法
  218. var formData = new FormData($('#menuListform')[0]);
  219. for (var i = 0; i < oCks.length; i++) {
  220. formData.append('nid[]',oCks[i].value);
  221. // nodeArr.push(oCks[i].value);
  222. }
  223. $.ajax({
  224. cache : true,
  225. type : "post",
  226. url : "/auth/addroleandnodefrom",
  227. data : formData, // 你的formid
  228. // async : false, //async 默认为true异步,修改为false为同步
  229. contentType: false, //jax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件
  230. processData: false, //当设置为true的时候,jquery ajax 提交的时候不会序列化 data,而是直接使用data
  231. error : function(request) {
  232. layer.close(index); //关闭数据提交信息
  233. layer.alert("网络超时");
  234. },
  235. success : function(data) {
  236. if (data.code == 200) {
  237. layer.msg(data.msg);
  238. TableClose();
  239. } else {
  240. layer.msg(data.msg);
  241. }
  242. }
  243. });
  244. return false;
  245. });
  246. //1、最基础的用法 - 直接绑定json
  247. // 判断是否存在才进行以下操作 2019-1-2 添加判断
  248. if($('#xtree1').length > 0){
  249. var xtree1 = new layuiXtree({
  250. elem: 'xtree1' //(必填) 放置xtree的容器,样式参照 .xtree_contianer
  251. , form: form //(必填) layui 的 from
  252. , data: '/auth/addrolemenuform?id='+$("input[name='id']").val() //(必填) json数据
  253. , isopen: false //加载完毕后的展开状态,默认值:true
  254. , ckall: true //启用全选功能,默认值:false
  255. , ckallback: function () { } //全选框状态改变后执行的回调函数
  256. , icon: { //三种图标样式,更改几个都可以,用的是layui的图标
  257. open: "&#xe625;" //节点打开的图标
  258. , close: "&#xe623;" //节点关闭的图标
  259. , end: "&#xe61f;" //末尾节点的图标
  260. }
  261. , color: { //三种图标颜色,独立配色,更改几个都可以
  262. open: "#229905" //节点图标打开的颜色
  263. , close: "#229905" //节点图标关闭的颜色
  264. , end: "#009688" //末级节点图标的颜色
  265. }
  266. , click: function (data) { //节点选中状态改变事件监听,全选框有自己的监听事件
  267. // console.log(data.elem); //得到checkbox原始DOM对象
  268. // console.log(data.elem.checked); //开关是否开启,true或者false
  269. // console.log(data.value); //开关value值,也可以通过data.elem.value得到
  270. // console.log(data.othis); //得到美化后的DOM对象
  271. }
  272. });
  273. }
  274. //获取全部[选中的][末级节点]原checkbox DOM对象,返回Array
  275. // 判断是否存在才进行以下操作 2019-1-2 添加判断
  276. if($('#btn1').length > 0){
  277. document.getElementById('btn1').onclick = function () {
  278. var oCks = xtree1.GetChecked(); //这是方法
  279. for (var i = 0; i < oCks.length; i++) {
  280. console.log(oCks[i].value);
  281. }
  282. }
  283. }
  284. });