调整后台首页

main
liutk 2024-05-20 12:33:53 +08:00
parent 1788620e8f
commit 3c19d5e4e5
2 changed files with 38 additions and 21 deletions

View File

@ -2,6 +2,7 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Slowlyo\OwlAdmin\Renderers\Card; use Slowlyo\OwlAdmin\Renderers\Card;
use Slowlyo\OwlAdmin\Renderers\Flex; use Slowlyo\OwlAdmin\Renderers\Flex;
@ -14,19 +15,20 @@ use Slowlyo\OwlAdmin\Renderers\Custom;
use Slowlyo\OwlAdmin\Renderers\Wrapper; use Slowlyo\OwlAdmin\Renderers\Wrapper;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Slowlyo\OwlAdmin\Controllers\AdminController; use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Models\User;
class HomeController extends AdminController class HomeController extends AdminController
{ {
public function index(): JsonResponse|JsonResource public function index(): JsonResponse|JsonResource
{ {
$page = $this->basePage()->css($this->css())->body([ $page = $this->basePage()->css($this->css())->body([
Grid::make()->columns([ // Grid::make()->columns([
$this->frameworkInfo()->md(5), // $this->frameworkInfo()->md(5),
Flex::make()->items([ // Flex::make()->items([
$this->pieChart(), // $this->pieChart(),
$this->cube(), // $this->cube(),
]), // ]),
]), // ]),
Grid::make()->columns([ Grid::make()->columns([
$this->lineChart()->md(8), $this->lineChart()->md(8),
Flex::make()->className('h-full')->items([ Flex::make()->className('h-full')->items([
@ -171,28 +173,43 @@ JS
public function lineChart(): Card public function lineChart(): Card
{ {
$randArr = function () { $days = [];
$_arr = []; for($i=0; $i<7; $i++){
for ($i = 0; $i < 7; $i++) { $days[] = now()->subDays($i)->format('Y-m-d');
$_arr[] = random_int(10, 200); }
$createUser = User::selectRaw('DATE(`created_at`) as day, count(id) as num')
->whereBetween('created_at', [now()->subDays(6)->startOfDay(), now()])
->groupBy('day')
->get()->pluck('num', 'day')->toArray();
$bindUser = User::selectRaw('DATE(`bind_phone_at`) as day, count(id) as num')
->whereBetween('bind_phone_at', [now()->subDays(6)->startOfDay(), now()])
->groupBy('day')
->get()->pluck('num', 'day')->toArray();
foreach($days as $day){
if(!isset($createUser[$day])){
$createUser[$day] = 0;
} }
return '[' . implode(',', $_arr) . ']'; if(!isset($bindUser[$day])){
}; $bindUser[$day] = 0;
}
$random1 = $randArr(); }
$random2 = $randArr(); asort($createUser);asort($bindUser);
$createUser = '['.implode(',', $createUser).']';
$bindUser = '['.implode(',', $bindUser).']';
$chart = Chart::make()->height(380)->className('h-96')->config("{ $chart = Chart::make()->height(380)->className('h-96')->config("{
backgroundColor:'', backgroundColor:'',
title:{ text: '会员增长情况', }, title:{ text: '会员增长情况', },
tooltip: { trigger: 'axis' }, tooltip: { trigger: 'axis' },
xAxis: { type: 'category', boundaryGap: false, data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, xAxis: { type: 'category', boundaryGap: false, data: ['".implode("','", $days)."']},
yAxis: { type: 'value' }, yAxis: { type: 'value' },
grid:{ left: '7%', right:'3%', top: 60, bottom: 30, }, grid:{ left: '7%', right:'3%', top: 60, bottom: 30, },
legend: { data: ['访问量','注册量'] }, legend: { data: ['访问量','注册量'] },
series: [ series: [
{ name: '访问量', data: {$random1}, type: 'line', areaStyle: {}, smooth: true, symbol: 'none', }, { name: '访问量', data: {$createUser}, type: 'line', areaStyle: {}, smooth: true, symbol: 'none', },
{ name:'注册量', data: {$random2}, type: 'line', areaStyle: {}, smooth: true, symbol: 'none', }, { name:'注册量', data: {$bindUser}, type: 'line', areaStyle: {}, smooth: true, symbol: 'none', },
]}"); ]}");
return Card::make()->className('clear-card-mb')->body($chart); return Card::make()->className('clear-card-mb')->body($chart);

View File

@ -2,7 +2,7 @@
return [ return [
// 应用名称 // 应用名称
'name' => 'Owl Admin', 'name' => '竞猜小程序',
// 应用 logo // 应用 logo
'logo' => '/admin-assets/logo.png', 'logo' => '/admin-assets/logo.png',
@ -86,7 +86,7 @@ return [
'layout' => [ 'layout' => [
// 浏览器标题, 功能名称使用 %title% 代替 // 浏览器标题, 功能名称使用 %title% 代替
'title' => '%title% | OwlAdmin', 'title' => '%title% | 竞猜小程序',
'header' => [ 'header' => [
// 是否显示 [刷新] 按钮 // 是否显示 [刷新] 按钮
'refresh' => true, 'refresh' => true,