edit.blade.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. @extends('layouts.app')
  2. @section('title')编辑-用户@endsection
  3. @section('content')
  4. <div class="container-fluid" id="editPanel">
  5. <div class="card">
  6. <div class="card-body">
  7. @if(Session::has('successTip'))
  8. <div class="alert alert-success h1">{{Session::get('successTip')}}!</div>
  9. @endif
  10. <form method="POST" action='{{url("maintenance/user/{$user->id}")}}'>
  11. @csrf
  12. @method('PUT')
  13. <div class="form-group row">
  14. <label for="name" class="col-2 col-form-label text-right">用户名</label>
  15. <div class="col-8">
  16. <input type="text" class="form-control @error('name') is-invalid @enderror"
  17. name="name" autocomplete="off" value="@if(old('name')){{old('name')}}@else{{$user->name}}@endif" required>
  18. @error('name')
  19. <span class="invalid-feedback" role="alert">
  20. <strong>{{ $message }}</strong>
  21. </span>
  22. @enderror
  23. </div>
  24. </div>
  25. <div class="form-group row">
  26. <label for="email" class="col-2 col-form-label text-right">邮箱</label>
  27. <div class="col-8">
  28. <input type="text" class="form-control @error('email') is-invalid @enderror"
  29. name="email" autocomplete="off" value="@if(old('email')){{old('email')}}@else{{$user->email}}@endif" required>
  30. @error('email')
  31. <span class="invalid-feedback" role="alert">
  32. <strong>{{ $message }}</strong>
  33. </span>
  34. @enderror
  35. </div>
  36. </div>
  37. <div class="form-group row">
  38. <label for="email" class="col-2 col-form-label text-right">手机号</label>
  39. <div class="col-8">
  40. <input type="text" class="form-control @error('phone') is-invalid @enderror"
  41. name="phone" autocomplete="off" value="@if(old('phone')){{old('phone')}}@else{{$user->userDetail ? $user->userDetail->mobile_phone : ''}}@endif">
  42. @error('phone')
  43. <span class="invalid-feedback" role="alert">
  44. <strong>{{ $message }}</strong>
  45. </span>
  46. @enderror
  47. </div>
  48. </div>
  49. <div class="form-group row">
  50. <label for="userWorkgroup" class="col-2 col-form-label text-right">工作组</label>
  51. <div class="col-8">
  52. <select class="form-control" name="userWorkgroupID" id="userWorkgroupID" v-model="userWorkgroupID">
  53. <option v-for="userWorkgroup in userWorkgroups" :value="userWorkgroup.id">@{{ userWorkgroup.name }}</option>
  54. </select>
  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 type="text" class="form-control tooltipTarget" placeholder="定位角色"
  61. @input="seekRole($event)" title="输入关键词快速定位"></div>
  62. </div>
  63. <div class="form-group row">
  64. <label class="col-md-3"></label>
  65. <div class="col-md-4">
  66. <input name="role" hidden v-model="roles" >
  67. <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;opacity:0.5;text-align: center;">
  68. <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
  69. <li :data-original-title="role.style ? '双击删除角色' :'双击添加角色'" v-for="role in rolesFilter" :id="role.name" class="list-group-item list-group-item-action pt-0 pb-0"
  70. @dblclick="selectedRole(role)" :class="role.style ? 'active' :''"><span style="cursor: default;" :id="role.name"> @{{ role.name }} </span></li>
  71. </ul>
  72. </div>
  73. </div>
  74. <div class="col-md-3">
  75. <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;text-align: center;">
  76. <ul class="list-group" style="width: 100%" onselectstart="return false;">
  77. <li title="双击删除角色" v-for="role in rolesList" :id="role.name" class="list-group-item list-group-item-action pt-0 pb-0"
  78. @dblclick="selectedRole(role)" ><span style="cursor: default;" > @{{ role.name }} </span></li>
  79. </ul>
  80. </div>
  81. </div>
  82. </div>
  83. <hr class="col-8 offset-2 border-info">
  84. {{--承运商--}}
  85. <div class="form-group row">
  86. <label for="logistic" 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="seekLogistic($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="logistic" hidden v-model="logistics" >
  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="logistic.style ? '双击删除承运商' :'双击添加承运商'" v-for="logistic in logisticsFilter" :id="logistic.name" class="list-group-item list-group-item-action pt-0 pb-0"
  98. @dblclick="selectedLogistic(logistic)" :class="logistic.style ? 'active' :''"><span style="cursor: default;" > @{{ logistic.name }} </span></li>
  99. </ul>
  100. </div>
  101. </div>
  102. <div class="col-md-3">
  103. <input name="logistic" hidden v-model="logistics" >
  104. <div class="input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;text-align: center;">
  105. <ul class="list-group" style="width: 100%" onselectstart="return false;">
  106. <li title="双击删除承运商" v-for="logistic in logisticsList" class="list-group-item list-group-item-action pt-0 pb-0"
  107. @dblclick="selectedLogistic(logistic)" ><span style="cursor: default;" > @{{ logistic.name }} </span></li>
  108. </ul>
  109. </div>
  110. </div>
  111. </div>
  112. <hr class="col-8 offset-2 border-info">
  113. <div class="form-group row">
  114. <label for="supplier" class="col-md-3 col-form-label text-md-right">供应商</label>
  115. <div class="col-md-7">
  116. <input type="text" class="form-control tooltipTarget" placeholder="定位供应商"
  117. @input="seekSupplier($event)" title="输入关键词快速定位"></div>
  118. </div>
  119. <div class="form-group row">
  120. <label class="col-md-3"></label>
  121. <div class="col-md-4">
  122. <input name="supplier" hidden v-model="suppliers" >
  123. <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;opacity:0.5;text-align: center;">
  124. <ul class="list-group tooltipTarget" style="width: 100%" onselectstart="return false;">
  125. <li :data-original-title="supplier.style ? '双击删除供应商' :'双击添加供应商'" v-for="supplier in suppliersFilter" :id="supplier.name" class="list-group-item list-group-item-action pt-0 pb-0"
  126. @dblclick="selectedSupplier(supplier)" :class="supplier.style ? 'active' :''"><span style="cursor: default;" :id="supplier.name"> @{{ supplier.name }} </span></li>
  127. </ul>
  128. </div>
  129. </div>
  130. <div class="col-md-3">
  131. <div class="input-group" style="max-height: 190px; overflow-y: scroll;border-radius:5px;text-align: center;">
  132. <ul class="list-group" style="width: 100%" onselectstart="return false;">
  133. <li title="双击删除供应商" v-for="supplier in suppliersList" :id="supplier.name" class="list-group-item list-group-item-action pt-0 pb-0"
  134. @dblclick="selectedSupplier(supplier)" ><span style="cursor: default;" > @{{ supplier.name }} </span></li>
  135. </ul>
  136. </div>
  137. </div>
  138. </div>
  139. {{-- 工作组、项目组开始 --}}
  140. <hr class="col-8 offset-2 border-info">
  141. <div class="col-8 offset-2 border-info">
  142. <div class="form-group row ">
  143. <div class="col-6">
  144. <div class="card-header row">
  145. <div class="col-4">
  146. <div class="pull-left h5 font-weight-bold mr-3">工作组</div>
  147. <div class="pull-left text-muted">
  148. <div class="custom-control custom-checkbox">
  149. <input type="checkbox" class="custom-control-input" id="check-works" @change="hideNoSelected('workGroup',$event.target.checked)">
  150. <label class="custom-control-label ml-0" for="check-works">已拥有</label>
  151. </div>
  152. </div>
  153. </div>
  154. <div class="col-5">
  155. <div class="btn-group">
  156. <a class="btn border btn-primary" @click="expand(true)">展开全部</a>
  157. <a class="btn border btn-primary" @click="expand(false)">收起全部</a>
  158. </div>
  159. </div>
  160. <div class="col-3">
  161. <a class="pull-right btn btn-outline-success" @click="saveWorkGroups()">保存</a>
  162. </div>
  163. </div>
  164. <div class="card-body overflow-scrollbar-200" style="max-height: 400px" id="workGroup">
  165. <tree :list="workGroup" :column="'name'" ></tree>
  166. </div>
  167. </div>
  168. <div class="col-6">
  169. <div class="card-header row">
  170. <div class="pull-left h5 font-weight-bold mr-3">项目组</div>
  171. <div class="pull-left text-muted">
  172. <div class="custom-control custom-checkbox">
  173. <input type="checkbox" class="custom-control-input" id="check-ownerGroups" @change="hideNoSelected('ownerGroup',$event.target.checked)">
  174. <label class="custom-control-label ml-0" for="check-ownerGroups">已拥有</label>
  175. </div>
  176. </div>
  177. <a class="pull-right btn btn-outline-success" @click="saveOwnerGroups()">保存</a>
  178. </div>
  179. <div class="card-body overflow-scrollbar-200" style="max-height: 400px">
  180. <ul class="list-group">
  181. <li class="list-group-item" v-for="owner in ownerGroup" v-show="!owner.hide">
  182. <div class="form-check">
  183. <label class="form-check-label w-100">
  184. <input type="checkbox" class="form-check-input" name="ownerGroup[]" v-model="ownerGroups" :value="owner.id">@{{ owner.name }}
  185. </label>
  186. </div>
  187. </li>
  188. </ul>
  189. </div>
  190. </div>
  191. </div>
  192. </div>
  193. {{-- 工作组、项目组结束--}}
  194. <hr class="col-8 offset-2 border-info">
  195. <div class="form-group row">
  196. <div class="col-8 offset-2">
  197. <input type="submit" class="btn btn-outline-dark form-control">
  198. </div>
  199. </div>
  200. </form>
  201. </div>
  202. </div>
  203. </div>
  204. @endsection
  205. @section('lastScript')
  206. <script>
  207. let vueList=new Vue({
  208. el:"#editPanel",
  209. data:{
  210. userWorkgroupID:'{{old('userWorkgroupID')??($userWorkgroup?$userWorkgroup->id:'')}}',
  211. userWorkgroups:[
  212. @foreach($userWorkgroups as $userWorkgroup)
  213. {!! $userWorkgroup !!},
  214. @endforeach
  215. ],
  216. rolesAll:[
  217. @foreach( $rolesAll as $role )
  218. {id:'{{$role->id}}',name:'{{$role->name}}',style:false},
  219. @endforeach
  220. ],
  221. rolesFilter:[
  222. @foreach( $rolesAll as $role )
  223. {id:'{{$role->id}}',name:'{{$role->name}}',style:false},
  224. @endforeach
  225. ],
  226. roles:[
  227. @if(old('role'))
  228. {{ old('role') }}
  229. @else
  230. @foreach( $roles as $role )
  231. {{$role->id}},
  232. @endforeach
  233. @endif
  234. ],
  235. rolesList:[],
  236. logisticsAll:[
  237. @foreach($logistics as $logistic)
  238. {id:'{{$logistic->id}}',name:'{{$logistic->name}}',style:false},
  239. @endforeach
  240. ],
  241. logistics:[
  242. @if(old('logistic'))
  243. {{ old('logistic') }}
  244. @else
  245. @foreach( $logisticUser as $logistic )
  246. {{$logistic->id}},
  247. @endforeach
  248. @endif
  249. ],
  250. logisticsFilter:[
  251. @foreach($logistics as $logistic)
  252. {id:'{{$logistic->id}}',name:'{{$logistic->name}}',style:false},
  253. @endforeach
  254. ],
  255. logisticsList:[],
  256. suppliersAll: [
  257. @foreach($suppliers as $supplier)
  258. {id: '{{$supplier->id}}', name: '{{$supplier->name}}', style: false},
  259. @endforeach
  260. ],
  261. suppliersFilter: [
  262. @foreach($suppliers as $supplier)
  263. {id: '{{$supplier->id}}', name: '{{$supplier->name}}', style: false},
  264. @endforeach
  265. ],
  266. suppliers: [
  267. @if(old('supplier'))
  268. {{ old('supplier') }}
  269. @else
  270. @foreach( $supplierUser as $supplier )
  271. {{$supplier->id}},
  272. @endforeach
  273. @endif
  274. ],
  275. suppliersList: [],
  276. workGroup: [@foreach($workGroup as $wg)@json($wg),@endforeach],
  277. workGroups: [@foreach($workGroups as $wgs)@json($wgs),@endforeach],
  278. ownerGroup: [@foreach($ownerGroup as $group)@json($group),@endforeach],
  279. ownerGroups: [@foreach($ownerGroups as $groups){!! "'".$groups."'" !!},@endforeach],
  280. isFirst:0,
  281. },
  282. components:{
  283. 'tree':"url:{{asset("js/vue/tree.vue")}}"
  284. },
  285. mounted:function(){
  286. $(".tooltipTarget").tooltip({'trigger':'hover'});
  287. if (this.roles.length>0){
  288. let rolesAll=this.rolesAll;
  289. let roles=this.roles;
  290. let rolesList=this.rolesList;
  291. for (let i = 0; i < roles.length; i++) {
  292. rolesAll.every(function (roleAll) {
  293. if (roleAll.id == roles[i]) {
  294. roleAll.style = true;
  295. rolesList.push({'id':roleAll.id,'name':roleAll.name});
  296. return false;
  297. }
  298. return true;
  299. });
  300. }
  301. }
  302. if (this.logistics.length>0){
  303. let logisticsAll=this.logisticsAll;
  304. let logistics=this.logistics;
  305. let logisticsList=this.logisticsList;
  306. for (let i = 0; i < logistics.length; i++) {
  307. logisticsAll.every(function (logisticAll) {
  308. if (logisticAll.id == logistics[i]) {
  309. logisticAll.style = true;
  310. logisticsList.push({'id':logisticAll.id,'name':logisticAll.name});
  311. return false;
  312. }
  313. return true;
  314. });
  315. }
  316. }
  317. if (this.suppliers.length>0){
  318. let suppliersAll=this.suppliersAll;
  319. let suppliers=this.suppliers;
  320. let suppliersList=this.suppliersList;
  321. for (let i = 0; i < suppliers.length; i++) {
  322. suppliersAll.every(function (supplierAll) {
  323. if (supplierAll.id == suppliers[i]) {
  324. supplierAll.style = true;
  325. suppliersList.push({'id':supplierAll.id,'name':supplierAll.name});
  326. return false;
  327. }
  328. return true;
  329. });
  330. }
  331. }
  332. },
  333. methods:{
  334. selectedLogistic:function (e) {
  335. let logistics=this.logistics;
  336. let logisticsAll=this.logisticsAll;
  337. let logisticsList=this.logisticsList;
  338. let isLogistic=true;
  339. if (logistics&&logisticsAll) {
  340. for (let i = 0; i < logistics.length; i++) {
  341. if (logistics[i] == e.id) {
  342. logistics.splice(i,1);
  343. logisticsAll.every(function (logisticAll) {
  344. if (logisticAll.id == e.id) {
  345. logisticAll.style = false;
  346. return false;
  347. }
  348. return true;
  349. });
  350. logisticsList.every(function (logistic,i) {
  351. if (logistic.id==e.id){
  352. logisticsList.splice(i,1);
  353. return false;
  354. }
  355. return true;
  356. });
  357. isLogistic= false;
  358. break;
  359. }
  360. isLogistic= true;
  361. }
  362. }
  363. if (isLogistic || !logistics){
  364. logistics.push(e.id);
  365. logisticsAll.every(function (logisticAll) {
  366. if (logisticAll.id==e.id){
  367. logisticAll.style=true;
  368. logisticsList.push({'id':logisticAll.id,'name':logisticAll.name});
  369. return false;
  370. }
  371. return true;
  372. });
  373. }
  374. setTimeout(function(){
  375. $(".tooltipTarget").tooltip({'trigger':'hover'});
  376. },10)
  377. },
  378. selectedSupplier:function (e) {
  379. let suppliers=this.suppliers;
  380. let suppliersAll=this.suppliersAll;
  381. let suppliersList=this.suppliersList;
  382. let isSupplier=true;
  383. if (suppliers&&suppliersAll) {
  384. for (let i = 0; i < suppliers.length; i++) {
  385. if (suppliers[i] == e.id) {
  386. suppliers.splice(i,1);
  387. suppliersAll.every(function (supplierAll) {
  388. if (supplierAll.id == e.id) {
  389. supplierAll.style = false;
  390. return false;
  391. }
  392. return true;
  393. });
  394. suppliersList.every(function (supplier,i) {
  395. if (supplier.id==e.id){
  396. suppliersList.splice(i,1);
  397. return false;
  398. }
  399. return true;
  400. });
  401. isSupplier= false;
  402. break;
  403. }
  404. isSupplier= true;
  405. }
  406. }
  407. if (isSupplier || !suppliers){
  408. suppliers.push(e.id);
  409. suppliersAll.every(function (supplierAll) {
  410. if (supplierAll.id==e.id){
  411. supplierAll.style=true;
  412. suppliersList.push({'id':supplierAll.id,'name':supplierAll.name});
  413. return false;
  414. }
  415. return true;
  416. });
  417. }
  418. setTimeout(function(){
  419. $(".tooltipTarget").tooltip({'trigger':'hover'});
  420. },10)
  421. },
  422. seekLogistic:function (e) {
  423. let $val=e.target.value;
  424. let logisticsAll=this.logisticsAll;
  425. let bool = false;
  426. logisticsAll.every(function (logisticsAll) {
  427. let name=logisticsAll.name;
  428. if (name.includes($val)){
  429. bool = true;
  430. return false;
  431. }
  432. return true;
  433. });
  434. if($val === '' ){
  435. this.rolesFilter = this.rolesAll;
  436. }else if(bool){
  437. this.logisticsFilter = [];
  438. for (let i = 0; i <logisticsAll.length ; i++) {
  439. let logistic = logisticsAll[i];
  440. if(logistic.name.includes($val)){
  441. this.logisticsFilter.push(logistic);
  442. }
  443. }
  444. }
  445. },
  446. selectedRole:function (e) {
  447. let roles=this.roles;
  448. let rolesAll=this.rolesAll;
  449. let rolesList=this.rolesList;
  450. let isRole=true;
  451. if (roles && rolesAll) {
  452. for (let i = 0; i < roles.length; i++) {
  453. if (roles[i] == e.id) {
  454. roles.splice(i,1);
  455. rolesAll.every(function (roleAll) {
  456. if (roleAll.id == e.id) {
  457. roleAll.style = false;
  458. return false;
  459. }
  460. return true;
  461. });
  462. rolesList.every(function (role,i) {
  463. if (role.id==e.id){
  464. rolesList.splice(i,1);
  465. return false;
  466. }
  467. return true;
  468. });
  469. isRole= false;
  470. break;
  471. }
  472. isRole= true;
  473. }
  474. }
  475. if (isRole || !roles){
  476. roles.push(Number(e.id));
  477. rolesAll.every(function (roleAll) {
  478. if (roleAll.id==e.id){
  479. roleAll.style=true;
  480. rolesList.push({'id':roleAll.id,'name':roleAll.name});
  481. return false;
  482. }
  483. return true;
  484. });
  485. }
  486. setTimeout(function(){
  487. $(".tooltipTarget").tooltip({'trigger':'hover'});
  488. },10)
  489. },
  490. seekRole:function (e) {
  491. let $val=e.target.value;
  492. let rolesAll=this.rolesAll;
  493. let bool = false;
  494. rolesAll.every(function (roleAll) {
  495. let name=roleAll.name;
  496. if (name.includes($val)){
  497. bool = true;
  498. return false;
  499. }
  500. return true;
  501. });
  502. if($val === '' ){
  503. this.rolesFilter = this.rolesAll;
  504. }else if(bool){
  505. this.rolesFilter = [];
  506. for (let i = 0; i <rolesAll.length ; i++) {
  507. let role = rolesAll[i];
  508. if(role.name.includes($val)){
  509. this.rolesFilter.push(role);
  510. }
  511. }
  512. }
  513. },
  514. seekSupplier:function (e) {
  515. let $val=e.target.value;
  516. let suppliersAll=this.suppliersAll;
  517. let bool = false;
  518. suppliersAll.every(function (supplierAll) {
  519. let name=supplierAll.name;
  520. if (name.includes($val)){
  521. bool = true;
  522. return false;
  523. }
  524. return true;
  525. });
  526. if($val === '' ){
  527. this.suppliersFilter = this.suppliersAll;
  528. }else if(bool){
  529. this.suppliersFilter = [];
  530. for (let i = 0; i <suppliersAll.length ; i++) {
  531. let supplier = suppliersAll[i];
  532. if(supplier.name.includes($val)){
  533. this.suppliersFilter.push(supplier);
  534. }
  535. }
  536. }
  537. },
  538. hideNoSelected(type,isHide = true){
  539. switch (type) {
  540. case "ownerGroup":
  541. this.owners.forEach((owner,i)=>{
  542. let check = !this._includes(ownerGroups,owner.id) && isHide;
  543. if (owner.hide !== check)this.$set(this.owners[i],"hide",check);
  544. });
  545. break;
  546. case "workGroup":
  547. let nodes = document.getElementById("workGroup").getElementsByTagName("INPUT");
  548. for (let i=0;i<nodes.length;i++){
  549. if (!nodes[i].checked && isHide)nodes[i].parentElement.parentElement.className = "d-none";
  550. else nodes[i].parentElement.parentElement.className = "";
  551. }
  552. break;
  553. default: break;
  554. }
  555. },
  556. expand(isExpand){
  557. if (isExpand) $("#workGroup .up").slideDown();
  558. else $("#workGroup .up").slideUp();
  559. },
  560. _includes(arr,id){
  561. return !(arr.every(data=>{
  562. return !(data==id);
  563. }));
  564. },
  565. saveWorkGroups(){
  566. let workGroups = [];
  567. let nodes = document.getElementById("workGroup").getElementsByTagName("INPUT");
  568. for (let i=0;i<nodes.length;i++)if (nodes[i].checked)workGroups.push(nodes[i].value);
  569. window.tempTip.postBasicRequest("{{url('maintenance/user/saveWorkGroups')}}",{id:"{{$user->id}}",workGroups:workGroups},()=>{
  570. return "保存成功";
  571. });
  572. },
  573. saveOwnerGroups(){
  574. window.tempTip.postBasicRequest("{{url('maintenance/user/saveOwnerGroups')}}",{id:"{{$user->id}}",ownerGroups:this.ownerGroups},()=>{
  575. return "保存成功";
  576. });
  577. },
  578. },
  579. updated() {
  580. if (this.isFirst == 0){
  581. let nodes = document.getElementById("workGroup").getElementsByTagName("INPUT");
  582. for (let i=0;i<nodes.length;i++){
  583. let checked = this._includes(this.workGroups,nodes[i].value);
  584. if (nodes[i].checked!==checked)nodes[i].checked = checked;
  585. this.isFirst = 1;
  586. }
  587. }
  588. }
  589. });
  590. </script>
  591. @endsection