GridHelperTrait.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. namespace App\Module\Dev\AdminControllers\Helper;
  3. use App\Module\Dev\Enums\DEV_LOG_TYPE;
  4. use App\Module\Dev\Enums\DEV_STATUS;
  5. use Dcat\Admin\Grid;
  6. use Dcat\Admin\Grid\Column;
  7. /**
  8. * 列表页辅助特性
  9. *
  10. * 提供开发工具模块后台控制器的列表页构建功能的具体实现
  11. */
  12. trait GridHelperTrait
  13. {
  14. /**
  15. * 添加开发工具状态列
  16. *
  17. * @param string $field 字段名
  18. * @param string $label 标签名
  19. * @return Column
  20. */
  21. public function columnDevStatus(string $field = 'status', string $label = '状态'): Column
  22. {
  23. return $this->grid->column($field, $label)
  24. ->using(DEV_STATUS::getAll())
  25. ->label([
  26. DEV_STATUS::DISABLED->value => 'danger',
  27. DEV_STATUS::ENABLED->value => 'success',
  28. ]);
  29. }
  30. /**
  31. * 添加开发日志类型列
  32. *
  33. * @param string $field 字段名
  34. * @param string $label 标签名
  35. * @return Column
  36. */
  37. public function columnDevLogType(string $field = 'type', string $label = '日志类型'): Column
  38. {
  39. return $this->grid->column($field, $label)
  40. ->using(DEV_LOG_TYPE::getAll())
  41. ->label([
  42. DEV_LOG_TYPE::INFO->value => 'info',
  43. DEV_LOG_TYPE::WARNING->value => 'warning',
  44. DEV_LOG_TYPE::ERROR->value => 'danger',
  45. DEV_LOG_TYPE::DEBUG->value => 'primary',
  46. ]);
  47. }
  48. /**
  49. * 添加开发日志内容列
  50. *
  51. * @param string $field 字段名
  52. * @param string $label 标签名
  53. * @param int $limit 限制长度
  54. * @return Column
  55. */
  56. public function columnDevLogContent(string $field = 'content', string $label = '日志内容', int $limit = 50): Column
  57. {
  58. return $this->grid->column($field, $label)->limit($limit);
  59. }
  60. /**
  61. * 添加开发日志额外数据列
  62. *
  63. * @param string $field 字段名
  64. * @param string $label 标签名
  65. * @return Column
  66. */
  67. public function columnDevLogExtraData(string $field = 'extra_data', string $label = '额外数据'): Column
  68. {
  69. return $this->grid->column($field, $label)->display(function ($value) {
  70. if (empty($value)) {
  71. return '';
  72. }
  73. if (is_string($value)) {
  74. $value = json_decode($value, true);
  75. }
  76. return '<span class="badge badge-primary">查看详情</span>';
  77. })->modal('额外数据', function ($modal) {
  78. $value = $this->extra_data;
  79. if (is_string($value)) {
  80. $value = json_decode($value, true);
  81. }
  82. return json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
  83. });
  84. }
  85. /**
  86. * 添加开发配置键列
  87. *
  88. * @param string $field 字段名
  89. * @param string $label 标签名
  90. * @return Column
  91. */
  92. public function columnDevConfigKey(string $field = 'key', string $label = '配置键'): Column
  93. {
  94. return $this->grid->column($field, $label);
  95. }
  96. /**
  97. * 添加开发配置值列
  98. *
  99. * @param string $field 字段名
  100. * @param string $label 标签名
  101. * @param int $limit 限制长度
  102. * @return Column
  103. */
  104. public function columnDevConfigValue(string $field = 'value', string $label = '配置值', int $limit = 50): Column
  105. {
  106. return $this->grid->column($field, $label)->limit($limit);
  107. }
  108. /**
  109. * 添加日志文件名列
  110. *
  111. * @param string $field 字段名
  112. * @param string $label 标签名
  113. * @return Column
  114. */
  115. public function columnLogFileName(string $field = 'name', string $label = '文件名'): Column
  116. {
  117. return $this->grid->column($field, $label);
  118. }
  119. /**
  120. * 添加日志文件大小列
  121. *
  122. * @param string $field 字段名
  123. * @param string $label 标签名
  124. * @return Column
  125. */
  126. public function columnLogFileSize(string $field = 'size', string $label = '文件大小'): Column
  127. {
  128. return $this->grid->column($field, $label);
  129. }
  130. /**
  131. * 添加日志文件修改时间列
  132. *
  133. * @param string $field 字段名
  134. * @param string $label 标签名
  135. * @return Column
  136. */
  137. public function columnLogFileModified(string $field = 'modified', string $label = '修改时间'): Column
  138. {
  139. return $this->grid->column($field, $label);
  140. }
  141. }