JsTreeTable.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace common\widgets\jstree;
  3. use yii\helpers\Json;
  4. use yii\widgets\InputWidget;
  5. use common\enums\StatusEnum;
  6. use common\widgets\jstree\assets\AppAsset;
  7. /**
  8. * Class JsTreeTable
  9. * @package common\widgets\jstree
  10. * @author jianyan74 <751393839@qq.com>
  11. */
  12. class JsTreeTable extends InputWidget
  13. {
  14. public $title = '节点管理';
  15. /**
  16. * ID
  17. *
  18. * @var
  19. */
  20. public $name;
  21. /**
  22. * @var string
  23. */
  24. public $theme = 'table';
  25. /**
  26. * ajax 加载数据
  27. *
  28. * @var bool
  29. */
  30. public $ajax = false;
  31. /**
  32. * 默认数据
  33. *
  34. * @var array
  35. */
  36. public $defaultData = [];
  37. /**
  38. * 列表
  39. *
  40. * @var
  41. */
  42. public $listUrl;
  43. /**
  44. * 编辑
  45. *
  46. * @var string
  47. */
  48. public $editUrl;
  49. /**
  50. * 删除
  51. *
  52. * @var string
  53. */
  54. public $deleteUrl;
  55. /**
  56. * 移动
  57. *
  58. * @var string
  59. */
  60. public $moveUrl;
  61. /**
  62. * @return string
  63. */
  64. public function run()
  65. {
  66. $this->registerClientScript();
  67. $defaultData = $this->defaultData;
  68. $jsTreeData = [];
  69. if (!empty($defaultData)) {
  70. foreach ($defaultData as $datum) {
  71. $jsTreeData[] = [
  72. 'id' => $datum['id'],
  73. 'parent' => !empty($datum['pid']) ? $datum['pid'] : '#',
  74. 'text' => trim($datum['title']),
  75. 'icon' => 'fa fa-folder'
  76. ];
  77. }
  78. }
  79. return $this->render($this->theme, [
  80. 'title' => $this->title,
  81. 'name' => $this->name,
  82. 'editUrl' => $this->editUrl,
  83. 'deleteUrl' => $this->deleteUrl,
  84. 'moveUrl' => $this->moveUrl,
  85. 'listUrl' => $this->listUrl,
  86. 'ajax' => $this->ajax == false ? StatusEnum::DISABLED : StatusEnum::ENABLED,
  87. 'jsTreeData' => Json::encode($jsTreeData),
  88. ]);
  89. }
  90. /**
  91. * 注册资源
  92. */
  93. protected function registerClientScript()
  94. {
  95. $view = $this->getView();
  96. AppAsset::register($view);
  97. }
  98. }
粤ICP备19079148号