edit.blade.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. @extends('layouts.app')
  2. @section('title')编辑角色@endsection
  3. @section('content')
  4. <div id="nav2">
  5. @component('maintenance.menu')
  6. @endcomponent
  7. @component('maintenance.role.menu')
  8. <li class="nav-item">
  9. <a class="nav-link" href="{{URL::current()}}" :class="{active:isActive('edit',4)}">修改</a>
  10. </li>
  11. @endcomponent
  12. </div>
  13. <div class="container-fluid mt-3" id="editPanel">
  14. <div class="card">
  15. <div class="card-body">
  16. @if(Session::has('successTip'))
  17. <div class="alert alert-success h1">{{Session::get('successTip')}}!</div>
  18. @endif
  19. <form method="POST" action='{{url("maintenance/role/{$role->id}")}}'>
  20. @csrf
  21. @method('PUT')
  22. <div class="form-group row">
  23. <label for="name" class="col-2 col-form-label text-right">角色名称</label>
  24. <div class="col-8">
  25. <input type="text" class="form-control @error('name') is-invalid @enderror"
  26. name="name" autocomplete="off" value="@if(old('name')){{old('name')}}@else{{$role->name}}@endif" required>
  27. @error('name')
  28. <span class="invalid-feedback" role="alert">
  29. <strong>{{ $message }}</strong>
  30. </span>
  31. @enderror
  32. </div>
  33. </div>
  34. <div class="form-group row">
  35. <label for="authority" class="col-md-3 col-form-label text-md-right">权限</label>
  36. <div class="col-md-7">
  37. <input name="authority" type="hidden" v-model="authoritiesStr" required>
  38. <div class="input-group">
  39. <select id="authorityAddingItem" class="form-control">
  40. <option :value="authority.id" v-for="authority in authoritiesAll">@{{ authority.name }}</option>
  41. </select>
  42. <span class="input-group-append">
  43. <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
  44. 添加左边的权限
  45. </span>
  46. </span>
  47. </div>
  48. <select size="8" class="form-control @error('authority') is-invalid @enderror "
  49. :class="authoritiesStr?'tooltipTarget':''" title="两次点击移除目标">
  50. <option :value="authority.id" v-for="authority in authorities" @click="clickingRoleOption">@{{ authority.name }}</option>
  51. </select>
  52. @error('authority')
  53. <span class="invalid-feedback" authority="alert">
  54. <strong>{{ $message }}</strong>
  55. </span>
  56. @enderror
  57. </div>
  58. </div>
  59. <div class="form-group row">
  60. <div class="col-8 offset-2">
  61. <input type="submit" class="btn btn-outline-dark form-control">
  62. </div>
  63. </div>
  64. </form>
  65. </div>
  66. </div>
  67. </div>
  68. @endsection
  69. @section('lastScript')
  70. <script>
  71. let vueList=new Vue({
  72. el:"#editPanel",
  73. data:{
  74. authoritiesAll:[
  75. @foreach( $authoritiesAll as $authority )
  76. {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',},
  77. @endforeach
  78. ],
  79. authorities:[
  80. @foreach( $authorities as $authority )
  81. {id:'{{$authority->id}}',name:'{{$authority->alias_name}}',},
  82. @endforeach
  83. ],
  84. authoritiesStr:'{{ old('authority') }}'
  85. },
  86. mounted:function(){
  87. $(".tooltipTarget").tooltip({'trigger':'hover'});
  88. this.authoritiesCompileToStr()
  89. },
  90. methods:{
  91. addRole:function () {
  92. let $authorityAddingItem = $('#authorityAddingItem');
  93. let val=$authorityAddingItem.val();
  94. let authorityName = $authorityAddingItem.find("option:selected").text();
  95. let isLackOf=this.authorities.every(function(authority){
  96. return authority.id !== val;
  97. });
  98. if(isLackOf){
  99. this.authorities.push({id:val,name: authorityName});
  100. this.authoritiesCompileToStr()
  101. }else{
  102. tempTip.setDuration(1500);
  103. tempTip.show('已添加'+authorityName)
  104. }
  105. },
  106. clickingRoleOption:function(e){
  107. let target = $(e.target);
  108. if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
  109. target.attr('data-clicked',1);
  110. setTimeout(function(){target.attr('data-clicked','0');},1500)
  111. }
  112. else{
  113. target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
  114. this.removeRole(target.val(),target.find("option:selected").text())
  115. }
  116. },
  117. removeRole:function(id,name){
  118. let _this=this;
  119. tempTip.confirm('确定要删除权限' + name + '吗?',function () {
  120. for(let i=0;i<_this.authorities.length;i++){
  121. if(_this.authorities[i].id===id){
  122. _this.authorities.splice(i, 1);
  123. _this.authoritiesCompileToStr();
  124. break;
  125. }
  126. }
  127. });
  128. },
  129. authoritiesCompileToStr:function(){
  130. let ids=this.authorities.map(function(authority){
  131. return authority.id;
  132. });
  133. this.authoritiesStr=ids.join(',');
  134. setTimeout(function(){
  135. $(".tooltipTarget").tooltip({'trigger':'hover'});
  136. },20);
  137. }
  138. },
  139. });
  140. </script>
  141. @endsection