create.blade.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. @extends('layouts.app')
  2. @section('content')
  3. <div id="nav2">
  4. @component('maintenance.menu')@endcomponent
  5. @component('maintenance.user.menu')@endcomponent
  6. </div>
  7. <div class="container-fluid mt-3" id="editPanel">
  8. <div class="row justify-content-center">
  9. @if(Session::has('successTip'))
  10. <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
  11. @endif
  12. <div class="col-md-8">
  13. <div class="card">
  14. <div class="card-header">录入用户</div>
  15. <div class="card-body">
  16. <form method="POST" action="{{ route('register') }}">
  17. @csrf
  18. <div class="form-group row">
  19. <label for="name" class="col-md-3 col-form-label text-md-right">姓名</label>
  20. <div class="col-md-7">
  21. <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus>
  22. @error('name')
  23. <span class="invalid-feedback" role="alert">
  24. <strong>{{ $message }}</strong>
  25. </span>
  26. @enderror
  27. </div>
  28. </div>
  29. <div class="form-group row">
  30. <label for="email" class="col-md-3 col-form-label text-md-right">Email地址</label>
  31. <div class="col-md-7">
  32. <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
  33. @error('email')
  34. <span class="invalid-feedback" role="alert">
  35. <strong>{{ $message }}</strong>
  36. </span>
  37. @enderror
  38. </div>
  39. </div>
  40. <div class="form-group row">
  41. <label for="password" class="col-md-3 col-form-label text-md-right">密码</label>
  42. <div class="col-md-7">
  43. <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
  44. @error('password')
  45. <span class="invalid-feedback" role="alert">
  46. <strong>{{ $message }}</strong>
  47. </span>
  48. @enderror
  49. </div>
  50. </div>
  51. <div class="form-group row">
  52. <label for="password-confirm" class="col-md-3 col-form-label text-md-right">重输密码</label>
  53. <div class="col-md-7">
  54. <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password">
  55. </div>
  56. </div>
  57. <div class="form-group row">
  58. <label for="role" class="col-md-3 col-form-label text-md-right">角色</label>
  59. <div class="col-md-7">
  60. <input name="role" type="hidden" v-model="rolesStr" required>
  61. <div class="input-group">
  62. <select id="roleAddingItem" class="form-control">
  63. <option :value="role.id" v-for="role in rolesAll">@{{ role.name }}</option>
  64. </select>
  65. <span class="input-group-append">
  66. <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addRole">
  67. 添加左边的角色
  68. </span>
  69. </span>
  70. </div>
  71. <select size="8" class="form-control @error('role') is-invalid @enderror "
  72. :class="rolesStr?'tooltipTarget':''" title="两次点击移除目标">
  73. <option :value="role.id" v-for="role in roles" @click="clickingRoleOption">@{{ role.name }}</option>
  74. </select>
  75. @error('role')
  76. <span class="invalid-feedback" role="alert">
  77. <strong>{{ $message }}</strong>
  78. </span>
  79. @enderror
  80. </div>
  81. </div>
  82. <input type="hidden" name="headTo" value="{{url('maintenance/user/create')}}">
  83. <div class="form-group row mb-0">
  84. <div class="col-md-7 offset-md-4">
  85. <button type="submit" class="btn btn-primary">
  86. 录入
  87. </button>
  88. </div>
  89. </div>
  90. </form>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. @endsection
  97. @section('lastScript')
  98. <script>
  99. let vueList=new Vue({
  100. el:"#editPanel",
  101. data:{
  102. rolesAll:[
  103. @foreach( $rolesAll as $role )
  104. {id:'{{$role->id}}',name:'{{$role->name}}',},
  105. @endforeach
  106. ],
  107. roles:[],
  108. rolesStr:'{{ old('role') }}'
  109. },
  110. mounted:function(){
  111. $(".tooltipTarget").tooltip({'trigger':'hover'});
  112. },
  113. methods:{
  114. addRole:function () {
  115. let $roleAddingItem = $('#roleAddingItem');
  116. let val=$roleAddingItem.val();
  117. let roleName = $roleAddingItem.find("option:selected").text();
  118. let isLackOf=this.roles.every(function(role){
  119. return role.id !== val;
  120. });
  121. if(isLackOf){
  122. this.roles.push({id:val,name: roleName})
  123. this.rolesCompileToStr()
  124. }else{
  125. tempTip.setDuration(1500);
  126. tempTip.show('已添加'+roleName)
  127. }
  128. },
  129. clickingRoleOption:function(e){
  130. let target = $(e.target);
  131. if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
  132. target.attr('data-clicked',1);
  133. setTimeout(function(){target.attr('data-clicked','0');},1500)
  134. }
  135. else{
  136. target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
  137. this.removeRole(target.val(),target.find("option:selected").text())
  138. }
  139. },
  140. removeRole:function(id,name){
  141. let _this=this;
  142. tempTip.confirm('确定要删除角色' + name + '吗?',function () {
  143. for(let i=0;i<_this.roles.length;i++){
  144. if(_this.roles[i].id===id){
  145. _this.roles.splice(i, 1);
  146. _this.rolesCompileToStr();
  147. break;
  148. }
  149. }
  150. });
  151. },
  152. rolesCompileToStr:function(){
  153. let ids=this.roles.map(function(role){
  154. return role.id;
  155. });
  156. this.rolesStr=ids.join(',');
  157. setTimeout(function(){
  158. $(".tooltipTarget").tooltip({'trigger':'hover'});
  159. },20);
  160. }
  161. },
  162. });
  163. </script>
  164. @endsection