edit.blade.php 10 KB

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