create.blade.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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" 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 type="text" class="form-control tooltipTarget" placeholder="定位角色"
  62. @input="seekRole($event)" title="输入关键词快速定位"></div>
  63. </div>
  64. <div class="form-group row">
  65. <label class="col-md-3"></label>
  66. <div class="col-md-4">
  67. <input name="role" hidden v-model="roles" >
  68. <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.5;text-align: center;">
  69. <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
  70. <li :data-original-title="role.style ? '双击删除角色' : '双击添加角色'" v-for="role in rolesAll" :id="role.name"
  71. class="tooltipTarget list-group-item list-group-item-action pt-0 pb-0"
  72. @dblclick="selectedRole(role)" :class="role.style ? 'active' :''"><span style="cursor: default;" > @{{ role.name }} </span></li>
  73. </ul>
  74. </div>
  75. </div>
  76. <div class="col-md-3">
  77. <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;text-align: center;">
  78. <ul class="list-group" style="width: 100%" onselectstart="return false;">
  79. <li title="双击删除角色" v-for="role in rolesList" :id="role.name" class="list-group-item list-group-item-action pt-0 pb-0"
  80. @dblclick="selectedRole(role)" ><span style="cursor: default;" > @{{ role.name }} </span></li>
  81. </ul>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="form-group row">
  86. <label for="carrier" class="col-md-3 col-form-label text-md-right">可见承运商</label>
  87. <div class="col-md-7">
  88. <input type="text" class="form-control tooltipTarget" placeholder="定位承运商"
  89. @input="seekCarrier($event)" title="输入关键词快速定位"></div>
  90. </div>
  91. <div class="form-group row">
  92. <label class="col-md-3"></label>
  93. <div class="col-md-4">
  94. <input name="carrier" hidden v-model="carriers" >
  95. <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:0.5;text-align: center;">
  96. <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
  97. <li :data-original-title="carrier.style ? '双击删除承运商' : '双击添加承运商'" v-for="carrier in carriersAll" :id="carrier.name"
  98. class="tooltipTarget list-group-item list-group-item-action pt-0 pb-0"
  99. @dblclick="selectedCarrier(carrier)" :class="carrier.style ? 'active' :''"><span style="cursor: default;" > @{{ carrier.name }} </span></li>
  100. </ul>
  101. </div>
  102. </div>
  103. <div class="col-md-3">
  104. <input name="carrier" hidden v-model="carriers" >
  105. <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;text-align: center;">
  106. <ul class="list-group" style="width: 100%" onselectstart="return false;">
  107. <li title="双击删除承运商" v-for="carrier in carriersList" class="list-group-item list-group-item-action pt-0 pb-0"
  108. @dblclick="selectedCarrier(carrier)" ><span style="cursor: default;" > @{{ carrier.name }} </span></li>
  109. </ul>
  110. </div>
  111. </div>
  112. </div>
  113. <input type="hidden" name="headTo" value="{{url('maintenance/user/create')}}">
  114. <div class="form-group row mb-0">
  115. <div class="col-md-7 offset-md-4">
  116. <button type="submit" class="btn btn-primary">
  117. 录入
  118. </button>
  119. </div>
  120. </div>
  121. </form>
  122. </div>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. @endsection
  128. @section('lastScript')
  129. <script>
  130. let vueList=new Vue({
  131. el:"#editPanel",
  132. data:{
  133. rolesAll:[
  134. @foreach( $rolesAll as $role )
  135. {id:'{{$role->id}}',name:'{{$role->name}}',style:false},
  136. @endforeach
  137. ],
  138. roles:[{{old('role')}}],
  139. rolesList:[],
  140. carriersAll:[
  141. @foreach($carriers as $carrier)
  142. {id:'{{$carrier->id}}',name:'{{$carrier->name}}',style:false},
  143. @endforeach
  144. ],
  145. carriers:[{{old('carrier')}}],
  146. carriersList:[],
  147. },
  148. mounted:function(){
  149. $(".tooltipTarget").tooltip({'trigger':'hover'});
  150. if (this.roles.length>0){
  151. let rolesAll=this.rolesAll;
  152. let roles=this.roles;
  153. let rolesList=this.rolesList;
  154. for (let i = 0; i < roles.length; i++) {
  155. rolesAll.every(function (roleAll) {
  156. if (roleAll.id == roles[i]) {
  157. roleAll.style = true;
  158. rolesList.push({'id':roleAll.id,'name':roleAll.name});
  159. return false;
  160. }
  161. return true;
  162. });
  163. }
  164. }
  165. if (this.carriers.length>0){
  166. let carriersAll=this.carriersAll;
  167. let carriers=this.carriers;
  168. let carriersList=this.carriersList;
  169. for (let i = 0; i < carriers.length; i++) {
  170. carriersAll.every(function (carrierAll) {
  171. if (carrierAll.id == carriers[i]) {
  172. carrierAll.style = true;
  173. carriersList.push({'id':carrierAll.id,'name':carrierAll.name});
  174. return false;
  175. }
  176. return true;
  177. });
  178. }
  179. }
  180. },
  181. methods:{
  182. selectedCarrier:function (e) {
  183. let carriers=this.carriers;
  184. let carriersAll=this.carriersAll;
  185. let carriersList=this.carriersList;
  186. let isCarrier=true;
  187. if (carriers&&carriersAll) {
  188. for (let i = 0; i < carriers.length; i++) {
  189. if (carriers[i] == e.id) {
  190. carriers.splice(i,1);
  191. carriersAll.every(function (carrierAll) {
  192. if (carrierAll.id == e.id) {
  193. carrierAll.style = false;
  194. return false;
  195. }
  196. return true;
  197. });
  198. carriersList.every(function (carrier,i) {
  199. if (carrier.id==e.id){
  200. carriersList.splice(i,1);
  201. return false;
  202. }
  203. return true;
  204. });
  205. isCarrier= false;
  206. break;
  207. }
  208. isCarrier= true;
  209. }
  210. }
  211. if (isCarrier || !carriers){
  212. carriers.push(e.id);
  213. carriersAll.every(function (carrierAll) {
  214. if (carrierAll.id==e.id){
  215. carrierAll.style=true;
  216. carriersList.push({'id':carrierAll.id,'name':carrierAll.name});
  217. return false;
  218. }
  219. return true;
  220. });
  221. }
  222. setTimeout(function(){
  223. $(".tooltipTarget").tooltip({'trigger':'hover'});
  224. },10)
  225. },
  226. seekCarrier:function (e) {
  227. let $val=e.target.value;
  228. let carriersAll=this.carriersAll;
  229. carriersAll.every(function (carrierAll) {
  230. let name=carrierAll.name;
  231. if (name.includes($val)){
  232. location.href="#"+carrierAll.name;
  233. return false;
  234. }
  235. return true;
  236. });
  237. $(e.target).focus();
  238. },
  239. selectedRole:function (e) {
  240. let roles=this.roles;
  241. let rolesAll=this.rolesAll;
  242. let rolesList=this.rolesList;
  243. let isRole=true;
  244. if (roles&&rolesAll) {
  245. for (let i = 0; i < roles.length; i++) {
  246. if (roles[i] == e.id) {
  247. roles.splice(i,1);
  248. rolesAll.every(function (roleAll) {
  249. if (roleAll.id == e.id) {
  250. roleAll.style = false;
  251. return false;
  252. }
  253. return true;
  254. });
  255. rolesList.every(function (role,i) {
  256. if (role.id==e.id){
  257. rolesList.splice(i,1);
  258. return false;
  259. }
  260. return true;
  261. });
  262. isRole= false;
  263. break;
  264. }
  265. isRole= true;
  266. }
  267. }
  268. if (isRole || !roles){
  269. roles.push(e.id);
  270. rolesAll.every(function (roleAll) {
  271. if (roleAll.id==e.id){
  272. roleAll.style=true;
  273. rolesList.push({'id':roleAll.id,'name':roleAll.name});
  274. return false;
  275. }
  276. return true;
  277. });
  278. }
  279. setTimeout(function(){
  280. $(".tooltipTarget").tooltip({'trigger':'hover'});
  281. },10)
  282. },
  283. seekRole:function (e) {
  284. let $val=e.target.value;
  285. let rolesAll=this.rolesAll;
  286. rolesAll.every(function (roleAll) {
  287. let name=roleAll.name;
  288. if (name.includes($val)){
  289. location.href="#"+roleAll.name;
  290. return false;
  291. }
  292. return true;
  293. });
  294. $(e.target).focus();
  295. },
  296. },
  297. });
  298. </script>
  299. @endsection