create.blade.php 12 KB

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