edit.blade.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. @section('title', '菜单编辑')
  2. @section('content')
  3. <div class="layui-form-item">
  4. <label class="layui-form-label">上级:</label>
  5. <div class="layui-input-block">
  6. <select name="category" lay-verify="required">
  7. <option value=""></option>
  8. <option value="0" {{empty($menu)||(isset($menu['parent_id'])&&$menu['parent_id']==0)?'selected':''}}>一级菜单</option>
  9. @if(is_array($menus)&&$menus)
  10. @foreach($menus as $menus_child)
  11. <option value="{{$menus_child['id']}}" {{(isset($menu['parent_id'])&&$menu['parent_id'] == $menus_child['id']) ? 'selected' : ''}}>{{$menus_child==0?'':'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├─'}}{{$menus_child['title']}}</option>
  12. @endforeach
  13. @endif
  14. </select>
  15. </div>
  16. </div>
  17. <div class="layui-form-item">
  18. <label class="layui-form-label">名称:</label>
  19. <div class="layui-input-block">
  20. <input type="text" value="{{$menu['title'] or ''}}" name="name" required lay-verify="name" placeholder="请输入名称" autocomplete="off" class="layui-input">
  21. </div>
  22. </div>
  23. <div class="layui-form-item">
  24. <label class="layui-form-label">排序:</label>
  25. <div class="layui-input-block">
  26. <input type="number" value="{{$menu['order'] or ''}}" name="order" required lay-verify="order" placeholder="请输入数字" autocomplete="off" class="layui-input">
  27. </div>
  28. </div>
  29. <div class="layui-form-item">
  30. <label class="layui-form-label">图标:</label>
  31. <div class="layui-input-block">
  32. <input type="hidden" name="icon" value="{{$menu['icon'] or ''}}" required lay-verify="required" placeholder="请选择图标" autocomplete="off" class="layui-input" readonly>
  33. <div id="icon" style="margin-top: 4px;"></div>
  34. <div id="icon_page"></div>
  35. </div>
  36. </div>
  37. <div class="layui-form-item">
  38. <label class="layui-form-label">URL:</label>
  39. <div class="layui-input-block">
  40. <input type="text" value="{{$menu['uri'] or ''}}" name="uri" required lay-verify="uri" placeholder="请输入URL,样式如:/fzs" autocomplete="off" class="layui-input">
  41. </div>
  42. </div>
  43. <div class="layui-form-item">
  44. <label class="layui-form-label">角色:</label>
  45. <div class="layui-input-block">
  46. @foreach($roles as $role)
  47. <input type="checkbox" value="{{$role['id']}}" required {{isset($menu['roleIds'])&&in_array($role['id'],$menu['roleIds'])?'checked':''}} lay-filter="roles_check" name="roles[]" title="{{$role['display_name']}}">
  48. @endforeach
  49. </div>
  50. </div>
  51. @endsection
  52. @section('id',$id)
  53. @section('js')
  54. <script>
  55. function chose_icon(obj){
  56. $("input[name='icon']").val('&#xe'+$(obj).attr('data-icon'));
  57. if($(obj).hasClass('layui-btn-warm'))$(obj).removeClass('layui-btn-warm');
  58. else {
  59. var icons = $('.fzs-icon');
  60. icons.each(function(index, item) {
  61. $(item).removeClass('layui-btn-warm');
  62. });
  63. $(obj).addClass('layui-btn-warm');
  64. }
  65. }
  66. layui.use(['form','laypage', 'layer'], function() {
  67. var form = layui.form();
  68. form.render();
  69. var laypage = layui.laypage
  70. ,layer = layui.layer;
  71. var data = [
  72. ['播放','&#xe652;'],['播放暂停','&#xe651;'],['音乐','&#xe6fc;'],['视频','&#xe6ed;'],['语音','&#xe688;'],['喇叭','&#xe645;'],['对话','&#xe611;'],['设置','&#xe614;'],['隐身','&#xe60f;'],['搜索','&#xe615;'],['分享','&#xe641;'],['刷新','&#x1002;'],['loading','&#xe63d;'],['loading','&#xe63e;'],['设置','&#xe620;'],['引擎','&#xe628;'],['阅卷错号','&#x1006;'],['错','&#x1007;'],['报表','&#xe629;'],['star','&#xe600;'],['圆点','&#xe617;'],['客服','&#xe606;'],['发布','&#xe609;'],['列表','&#xe60a;'],['图表','&#xe62c;'],['正确','&#x1005;'],['换肤','&#xe61b;'],['在线','&#xe610;'],['右右','&#xe602;'],['左左','&#xe603;'],['表格','&#xe62d;'],['树状','&#xe62e;'],['上传','&#xe62f;'],['添加','&#xe61f;'],['下载','&#xe601;'],['选择模版','&#xe630;'],['工具','&#xe631;'],['添加','&#xe654;'],['编辑','&#xe642;'],['删除','&#xe640;'],['向下','&#xe61a;'],['文件','&#xe621;'],['布局','&#xe632;'],['添加','&#xe608;'],['直播-翻页','&#xe633;'],['404','&#xe61c;'],['轮播组图','&#xe634;'],['帮助','&#xe607;'],['代码','&#xe635;'],['进水','&#xe636;'],['关于','&#xe60b;'],['向上','&#xe619;'],['日期','&#xe637;'],['文件','&#xe61d;'],['top','&#xe604;'],['对','&#xe605;'],['窗口','&#xe638;'],['表情','&#xe60c;'],['正确','&#xe616;'],['文件下载','&#xe61e;'],['图片','&#xe60d;'],['链接','&#xe64c;'],['记录','&#xe60e;'],['文件夹','&#xe622;'],['删除线','&#xe64f;'],['unlink','&#xe64d;'],['编辑_文字','&#xe639;'],['三角','&#xe623;'],['单选框-候选','&#xe63f;'],['单选框-选中','&#xe643;'],['居中对齐','&#xe647;'],['右对齐','&#xe648;'],['左对齐','&#xe649;'],['勾选框(未打勾)','&#xe626;'],['勾选框(已打勾)','&#xe627;'],['加粗','&#xe62b;'],['聊天','&#xe63a;'],['文件夹_反','&#xe624;'],['手机','&#xe63b;'],['表情','&#xe650;'],['html','&#xe64b;'],['表单','&#xe63c;'],['tab','&#xe62a;'],['代码','&#xe64e;'],['字体-下划线','&#xe646;'],['三角','&#xe625;'],['图片','&#xe64a;'],['斜体','&#xe644;'],['好友请求','&#xe612;']];
  73. var nums = 50;
  74. var render = function(data,curr){
  75. var arr = []
  76. ,thisData = data.concat().splice(curr*nums-nums, nums);
  77. console.log($("input[name='icon']").val().slice(4));
  78. layui.each(thisData, function(index, item){
  79. var iconclass = '';
  80. if($("input[name='icon']").val()==item[1])iconclass = 'layui-btn-warm';
  81. arr.push('<div class="layui-btn layui-btn-primary layui-btn-small fzs-icon '+iconclass+'" data-icon="'+item[1].slice(4)+'" style="margin-bottom: 8px;margin-left:0px;margin-right:10px;" onclick="chose_icon(this)" title="'+item[0]+'"><i class="layui-icon">'+ item[1] +'</i></div>');
  82. });
  83. return arr.join("");
  84. };
  85. laypage({
  86. cont: 'icon_page'
  87. ,pages: Math.ceil(data.length/nums)
  88. ,groups:4
  89. ,jump: function(obj){
  90. document.getElementById('icon').innerHTML = render(data, obj.curr);
  91. }
  92. });
  93. form.verify({
  94. name: [/^.{2,12}$/, '菜单名长度2到12位之间'],
  95. uri: [/^\/(.*)$/, 'URL格式错误'],
  96. });
  97. form.on('submit(formDemo)', function(data) {
  98. var chk_value =[];
  99. var is_have_admin = 1;
  100. $('input[name="roles[]"]:checked').each(function(){
  101. chk_value.push($(this).val());
  102. if($(this).val()==1)is_have_admin--;
  103. });
  104. if(chk_value.length==0){
  105. layer.msg('至少选择一个所属角色',{shift: 6,icon:5});
  106. return false;
  107. }
  108. if(is_have_admin){
  109. layer.msg('必选选择超级管理员角色',{shift: 6,icon:5});
  110. return false;
  111. }
  112. $.ajax({
  113. url:"{{url('/menus')}}",
  114. data:$('form').serialize(),
  115. type:'post',
  116. dataType:'json',
  117. success:function(res){
  118. if(res.status == true){
  119. layer.msg(res.msg,{icon:6});
  120. var index = parent.layer.getFrameIndex(window.name);
  121. setTimeout('parent.layer.close('+index+')',2000);
  122. //parent.layer.close(index);
  123. }else{
  124. layer.msg(res.msg,{shift: 6,icon:5});
  125. }
  126. },
  127. error : function(XMLHttpRequest, textStatus, errorThrown) {
  128. layer.msg('xxxxxx', {time: 1000});
  129. }
  130. });
  131. return false;
  132. });
  133. });
  134. </script>
  135. @endsection
  136. @extends('common.edit')