tree.blade.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <div class="{{$viewClass['form-group']}}">
  2. <label class="{{$viewClass['label']}} control-label">{!! $label !!}</label>
  3. <div class="{{$viewClass['field']}} {{ $class }}">
  4. @include('admin::form.error')
  5. <div class="input-group" style="width:100%">
  6. <input {{$disabled}} type="hidden" class="hidden-input" name="{{$name}}" />
  7. <div class="jstree-wrapper">
  8. <div class="d-flex">
  9. {!! $checkboxes !!}
  10. </div>
  11. <div class="da-tree" style="margin-top:10px"></div>
  12. </div>
  13. </div>
  14. @include('admin::form.help-block')
  15. </div>
  16. </div>
  17. <script require="@jstree" init="{!! $selector !!}">
  18. var $tree = $this.find('.jstree-wrapper .da-tree'),
  19. $input = $this.find('.hidden-input'),
  20. opts = {!! admin_javascript_json($options) !!},
  21. parents = {!! json_encode($parents) !!};
  22. opts.core = opts.core || {};
  23. opts.core.data = {!! json_encode($nodes) !!};
  24. $this.find('input[value=1]').on("click", function () {
  25. $(this).parents('.jstree-wrapper').find('.da-tree').jstree($(this).prop("checked") ? "check_all" : "uncheck_all");
  26. });
  27. $this.find('input[value=2]').on("click", function () {
  28. $(this).parents('.jstree-wrapper').find('.da-tree').jstree($(this).prop("checked") ? "open_all" : "close_all");
  29. });
  30. $tree.on("changed.jstree", function (e, data) {
  31. var i, selected = [];
  32. $input.val('');
  33. for (i in data.selected) {
  34. if (Dcat.helpers.inObject(parents, data.selected[i])) { // 过滤父节点
  35. continue;
  36. }
  37. selected.push(data.selected[i]);
  38. }
  39. selected.length && $input.val(selected.join(','));
  40. }).on("loaded.jstree", function () {
  41. @if($expand) $(this).jstree('open_all'); @endif
  42. }).jstree(opts);
  43. </script>