create.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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 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. <div class="form-group row">
  83. <label for="role" class="col-md-3 col-form-label text-md-right">承运商</label>
  84. <div class="col-md-7">
  85. <div class="input-group">
  86. <select id="carrierAddingItem" class="form-control">
  87. <option :value="carrier.id" v-for="carrier in carrierAll">@{{ carrier.name }}</option>
  88. </select>
  89. <span class="input-group-append">
  90. <span class="input-group-text btn-outline-info" style="cursor: pointer;" @click="addCarrier">
  91. 添加左边的承运商
  92. </span>
  93. </span>
  94. </div>
  95. <select size="8" class="form-control "
  96. title="两次点击移除目标">
  97. <option :value="carrier.id" v-for="carrier in carriers" @dblclick="clickingCarrierOption">
  98. @{{ carrier.name }}
  99. </option>
  100. </select>
  101. <div hidden v-for="carrier in carriers">
  102. <input hidden name="carrier_id[]" :value="carrier.id">
  103. </div>
  104. </div>
  105. </div>
  106. <input type="hidden" name="headTo" value="{{url('maintenance/user/create')}}">
  107. <div class="form-group row mb-0">
  108. <div class="col-md-7 offset-md-4">
  109. <button type="submit" class="btn btn-primary">
  110. 录入
  111. </button>
  112. </div>
  113. </div>
  114. </form>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. @endsection
  121. @section('lastScript')
  122. <script>
  123. let vueList=new Vue({
  124. el:"#editPanel",
  125. data:{
  126. rolesAll:[
  127. @foreach( $rolesAll as $role )
  128. {id:'{{$role->id}}',name:'{{$role->name}}',},
  129. @endforeach
  130. ],
  131. roles:[],
  132. rolesStr:'{{ old('role') }}',
  133. carrierAll:[
  134. @foreach($carriers as $carrier)
  135. {id:'{{$carrier->id}}',name:'{{$carrier->name}}'},
  136. @endforeach
  137. ],
  138. carriers:[],
  139. },
  140. mounted:function(){
  141. $(".tooltipTarget").tooltip({'trigger':'hover'});
  142. },
  143. methods:{
  144. addRole:function () {
  145. let $roleAddingItem = $('#roleAddingItem');
  146. let val=$roleAddingItem.val();
  147. let roleName = $roleAddingItem.find("option:selected").text();
  148. let isLackOf=this.roles.every(function(role){
  149. return role.id !== val;
  150. });
  151. if(isLackOf){
  152. this.roles.push({id:val,name: roleName})
  153. this.rolesCompileToStr()
  154. }else{
  155. tempTip.setDuration(1500);
  156. tempTip.show('已添加'+roleName)
  157. }
  158. },
  159. clickingRoleOption:function(e){
  160. let target = $(e.target);
  161. if(typeof target.attr('data-clicked')=='undefined'||target.attr('data-clicked')==='0'){
  162. target.attr('data-clicked',1);
  163. setTimeout(function(){target.attr('data-clicked','0');},1500)
  164. }
  165. else{
  166. target.attr('data-clicked',parseInt(target.attr('data-clicked'))+1);
  167. this.removeRole(target.val(),target.find("option:selected").text())
  168. }
  169. },
  170. removeRole:function(id,name){
  171. let _this=this;
  172. tempTip.confirm('确定要删除角色' + name + '吗?',function () {
  173. for(let i=0;i<_this.roles.length;i++){
  174. if(_this.roles[i].id===id){
  175. _this.roles.splice(i, 1);
  176. _this.rolesCompileToStr();
  177. break;
  178. }
  179. }
  180. });
  181. },
  182. rolesCompileToStr:function(){
  183. let ids=this.roles.map(function(role){
  184. return role.id;
  185. });
  186. this.rolesStr=ids.join(',');
  187. setTimeout(function(){
  188. $(".tooltipTarget").tooltip({'trigger':'hover'});
  189. },20);
  190. },
  191. addCarrier:function () {
  192. let $carrierAddingItem = $('#carrierAddingItem');
  193. let val=$carrierAddingItem.val();
  194. let carrierName = $carrierAddingItem.find("option:selected").text();
  195. let isLackOf=this.carriers.every(function(carrier){
  196. return carrier.id !== val;
  197. });
  198. if(isLackOf){
  199. this.carriers.push({id:val,name: carrierName})
  200. }else{
  201. tempTip.setDuration(1500);
  202. tempTip.show('已添加'+carrierName)
  203. }
  204. },
  205. clickingCarrierOption:function(e){
  206. let target = $(e.target);
  207. for (let i=0;i<this.carriers.length;i++){
  208. if(this.carriers[i].id===target.val()){
  209. this.carriers.splice(i,1);
  210. break;
  211. }
  212. }
  213. },
  214. },
  215. });
  216. </script>
  217. @endsection