create.blade.php 17 KB

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