DemoRanking.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Module\Admin\AdminControllers\Metrics;
  3. use UCore\DcatAdmin\Metrics\Examples\Ranking;
  4. use Illuminate\Http\Request;
  5. /**
  6. * 演示排名卡片
  7. * 展示Ranking组件的使用方法和效果
  8. */
  9. class DemoRanking extends Ranking
  10. {
  11. /**
  12. * 初始化卡片内容
  13. */
  14. protected function init()
  15. {
  16. parent::init();
  17. $this->title('演示排行榜');
  18. $this->dropdown([
  19. 'sales' => '销售排行榜',
  20. 'users' => '用户活跃榜',
  21. 'products' => '产品热度榜',
  22. 'regions' => '地区排行榜',
  23. ]);
  24. }
  25. /**
  26. * 处理请求
  27. *
  28. * @param Request $request
  29. * @return mixed|void
  30. */
  31. public function handle(Request $request)
  32. {
  33. $type = $request->get('option', 'sales');
  34. $data = $this->getDemoRankingData($type);
  35. // 卡片内容
  36. $this->withContent($data);
  37. }
  38. /**
  39. * 获取演示排名数据
  40. *
  41. * @param string $type 排名类型
  42. * @return array
  43. */
  44. protected function getDemoRankingData(string $type): array
  45. {
  46. switch ($type) {
  47. case 'sales':
  48. return $this->getSalesRanking();
  49. case 'users':
  50. return $this->getUsersRanking();
  51. case 'products':
  52. return $this->getProductsRanking();
  53. case 'regions':
  54. return $this->getRegionsRanking();
  55. default:
  56. return $this->getSalesRanking();
  57. }
  58. }
  59. /**
  60. * 销售排行榜数据
  61. */
  62. private function getSalesRanking(): array
  63. {
  64. return [
  65. ['rank' => 1, 'title' => '张三', 'number' => '¥128,500'],
  66. ['rank' => 2, 'title' => '李四', 'number' => '¥95,200'],
  67. ['rank' => 3, 'title' => '王五', 'number' => '¥87,300'],
  68. ['rank' => 4, 'title' => '赵六', 'number' => '¥76,800'],
  69. ['rank' => 5, 'title' => '钱七', 'number' => '¥65,400'],
  70. ['rank' => 6, 'title' => '孙八', 'number' => '¥58,900'],
  71. ['rank' => 7, 'title' => '周九', 'number' => '¥52,100'],
  72. ['rank' => 8, 'title' => '吴十', 'number' => '¥48,600'],
  73. ];
  74. }
  75. /**
  76. * 用户活跃榜数据
  77. */
  78. private function getUsersRanking(): array
  79. {
  80. return [
  81. ['rank' => 1, 'title' => 'admin', 'number' => '2,580 次'],
  82. ['rank' => 2, 'title' => 'user001', 'number' => '1,920 次'],
  83. ['rank' => 3, 'title' => 'manager', 'number' => '1,650 次'],
  84. ['rank' => 4, 'title' => 'editor', 'number' => '1,340 次'],
  85. ['rank' => 5, 'title' => 'viewer', 'number' => '1,120 次'],
  86. ['rank' => 6, 'title' => 'guest', 'number' => '890 次'],
  87. ['rank' => 7, 'title' => 'tester', 'number' => '720 次'],
  88. ['rank' => 8, 'title' => 'demo', 'number' => '650 次'],
  89. ];
  90. }
  91. /**
  92. * 产品热度榜数据
  93. */
  94. private function getProductsRanking(): array
  95. {
  96. return [
  97. ['rank' => 1, 'title' => 'iPhone 15 Pro', 'number' => '8,520 次浏览'],
  98. ['rank' => 2, 'title' => 'MacBook Pro', 'number' => '7,230 次浏览'],
  99. ['rank' => 3, 'title' => 'iPad Air', 'number' => '6,890 次浏览'],
  100. ['rank' => 4, 'title' => 'AirPods Pro', 'number' => '5,670 次浏览'],
  101. ['rank' => 5, 'title' => 'Apple Watch', 'number' => '4,920 次浏览'],
  102. ['rank' => 6, 'title' => 'iMac', 'number' => '3,850 次浏览'],
  103. ['rank' => 7, 'title' => 'Mac Mini', 'number' => '2,940 次浏览'],
  104. ['rank' => 8, 'title' => 'Studio Display', 'number' => '2,180 次浏览'],
  105. ];
  106. }
  107. /**
  108. * 地区排行榜数据
  109. */
  110. private function getRegionsRanking(): array
  111. {
  112. return [
  113. ['rank' => 1, 'title' => '北京', 'number' => '45,200 订单'],
  114. ['rank' => 2, 'title' => '上海', 'number' => '38,900 订单'],
  115. ['rank' => 3, 'title' => '广州', 'number' => '32,600 订单'],
  116. ['rank' => 4, 'title' => '深圳', 'number' => '29,800 订单'],
  117. ['rank' => 5, 'title' => '杭州', 'number' => '24,500 订单'],
  118. ['rank' => 6, 'title' => '成都', 'number' => '21,300 订单'],
  119. ['rank' => 7, 'title' => '武汉', 'number' => '18,700 订单'],
  120. ['rank' => 8, 'title' => '南京', 'number' => '16,400 订单'],
  121. ];
  122. }
  123. }