MexChartsController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Module\Mex\AdminControllers;
  3. use App\Module\Mex\Metrics\PriceTrendChart;
  4. use App\Module\Mex\Metrics\VolumeTrendChart;
  5. use Dcat\Admin\Layout\Content;
  6. use Dcat\Admin\Layout\Row;
  7. use Spatie\RouteAttributes\Attributes\Get;
  8. use Spatie\RouteAttributes\Attributes\Resource;
  9. use UCore\DcatAdmin\AdminController;
  10. /**
  11. * 农贸市场图表控制器
  12. *
  13. * 路由:/admin/mex-charts
  14. */
  15. #[Resource('mex-charts', names: 'dcat.admin.mex-charts')]
  16. class MexChartsController extends AdminController
  17. {
  18. /**
  19. * 页面标题
  20. */
  21. protected $title = '农贸市场图表分析';
  22. /**
  23. * 主页面 - 显示所有果实的价格趋势和成交趋势图表
  24. */
  25. #[Get('admin/mex-charts', name: 'admin.mex-charts.index')]
  26. public function index(Content $content)
  27. {
  28. return $content
  29. ->title('农贸市场图表分析')
  30. ->description('价格趋势与成交量分析')
  31. ->body(function (Row $row) {
  32. // 获取所有果实物品
  33. $fruits = $this->getFruitItems();
  34. foreach ($fruits as $fruit) {
  35. $row->column(12, function ($column) use ($fruit) {
  36. // 果实标题
  37. $column->row("<h4 class='mb-3'>{$fruit['name']} (ID: {$fruit['id']})</h4>");
  38. // 价格趋势图和成交趋势图并排显示
  39. $column->row(function ($subRow) use ($fruit) {
  40. // 价格趋势图 - 多线(最低,最高,均价)
  41. $subRow->column(6, new PriceTrendChart($fruit['id'], $fruit['name']));
  42. // 成交趋势图 - 多线(买入,卖出)
  43. $subRow->column(6, new VolumeTrendChart($fruit['id'], $fruit['name']));
  44. });
  45. });
  46. }
  47. });
  48. }
  49. /**
  50. * 获取所有果实物品
  51. *
  52. * @return array
  53. */
  54. protected function getFruitItems(): array
  55. {
  56. // 根据数据库查询结果,返回主要的果实物品
  57. return [
  58. ['id' => 2, 'name' => '萝卜'],
  59. ['id' => 3, 'name' => '辣椒'],
  60. ['id' => 4, 'name' => '苹果'],
  61. ['id' => 5, 'name' => '西瓜'],
  62. ['id' => 6, 'name' => '草莓'],
  63. ['id' => 7, 'name' => '南瓜'],
  64. ['id' => 8, 'name' => '核桃'],
  65. ['id' => 9, 'name' => '可可'],
  66. ['id' => 10, 'name' => '人参'],
  67. ['id' => 11, 'name' => '玫瑰'],
  68. ];
  69. }
  70. }