From 7af537d3ed08990bf59bf54f634e46af70400014 Mon Sep 17 00:00:00 2001 From: cmz Date: Tue, 3 Sep 2024 23:59:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=A6=82=E8=A7=88=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E6=96=B0=E5=A2=9Etooltip=E6=98=BE=E7=A4=BA=E3=80=81?= =?UTF-8?q?=E6=95=99=E5=B8=88=E6=A8=A1=E5=9D=97=E6=96=B0=E5=A2=9E=E5=BC=80?= =?UTF-8?q?=E6=88=B7=E4=BA=BA=E8=BF=87=E6=BB=A4=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TeacherScanCodeUserController.php | 7 +- app/Admin/Metrics/Chart/ColumnCharts.php | 53 ++++++++++++ .../Metrics/Chart/FemaleColumnCharts.php | 52 ++++++++++++ .../Chart/FullPaymentRateColumnCharts.php | 83 ++++++++++++------- app/Admin/Metrics/Chart/MaleColumnCharts.php | 53 ++++++++++++ 5 files changed, 216 insertions(+), 32 deletions(-) diff --git a/app/Admin/Controllers/TeacherScanCodeUserController.php b/app/Admin/Controllers/TeacherScanCodeUserController.php index e40ef96..a46197d 100644 --- a/app/Admin/Controllers/TeacherScanCodeUserController.php +++ b/app/Admin/Controllers/TeacherScanCodeUserController.php @@ -23,6 +23,9 @@ class TeacherScanCodeUserController extends AdminController // 开启字段选择器功能 $grid->showColumnSelector(); + $list = TeacherScanCodeUsers::where('is_authority', TeacherScanCodeUsers::IS_AUTHORITY_YES) + ->pluck('name', 'id')->toArray(); + $grid->column('id')->sortable(); $grid->column('name'); $grid->column('mobile'); @@ -41,6 +44,7 @@ class TeacherScanCodeUserController extends AdminController }); $grid->column('open_number_id')->display(function () { + $open_number_id = $this->open_number_id; if (!empty($open_number_id)) { if ($open_number_id == $this->id) { @@ -53,8 +57,9 @@ class TeacherScanCodeUserController extends AdminController return $name->name; } } + return "超级管理员"; - }); + })->filter(Grid\Column\Filter\In::make($list)); $grid->column('status')->select([1=>"正常", 2=>"禁用"]); $grid->column('create_time')->display(function (){ if(!empty($this->create_time)){ diff --git a/app/Admin/Metrics/Chart/ColumnCharts.php b/app/Admin/Metrics/Chart/ColumnCharts.php index 6549ad7..803f6de 100644 --- a/app/Admin/Metrics/Chart/ColumnCharts.php +++ b/app/Admin/Metrics/Chart/ColumnCharts.php @@ -8,6 +8,7 @@ use App\Models\OfflineStep; use App\Models\SecondaryCollege; use App\Models\Speciality; use App\Models\UsersMember; +use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\ApexCharts\Chart; class ColumnCharts extends Chart @@ -33,6 +34,18 @@ class ColumnCharts extends Chart $data = [[ "name" => "报到率", "data" => [], + "tooltip" => [ + [ + "name" => "已报到人数", + "data" => [], + "color" => '#ff6b6b' + ], + [ + "name" => "录入人数", + "data" => [], + "color"=>"#a21919" + ] + ], ]]; $label = []; @@ -85,6 +98,8 @@ class ColumnCharts extends Chart } $list[$key]["registering"] = $registering; + $list[$key]["studentsNum"] = $completedOfflineStep; + $list[$key]["completedOfflineStep"] = count($importStudents); } } } @@ -94,8 +109,12 @@ class ColumnCharts extends Chart array_push($label, $item["name"]); if(!empty($item["registering"])){ array_push($data[0]["data"], $item["registering"]); + array_push($data[0]['tooltip'][0]['data'], $item["studentsNum"]); + array_push($data[0]['tooltip'][1]['data'], $item["completedOfflineStep"]); }else{ array_push($data[0]["data"], 0); + array_push($data[0]['tooltip'][0]['data'], 0); + array_push($data[0]['tooltip'][1]['data'], 0); } } } @@ -105,5 +124,39 @@ class ColumnCharts extends Chart $this->option("labels",$label); $this->option("yaxis",["max" => 100]); //Y轴最大值 + $tooltipCustomFunction = <<{ + newStr += `
+
+ +
+
+ \${item.name}: \${item.data[dataPointIndex]} +
+
` + }) + + return ` +
+
\${w.config.labels[dataPointIndex]}
+
+
+ +
+
+ \${w.config.series[0].name}: \${w.config.series[0].data[dataPointIndex]} +
+
+ \${newStr} +
+ `; +} +JS; + + $this->option('tooltip.custom', JavaScript::make($tooltipCustomFunction)); + } } diff --git a/app/Admin/Metrics/Chart/FemaleColumnCharts.php b/app/Admin/Metrics/Chart/FemaleColumnCharts.php index b11c979..26630b5 100644 --- a/app/Admin/Metrics/Chart/FemaleColumnCharts.php +++ b/app/Admin/Metrics/Chart/FemaleColumnCharts.php @@ -9,6 +9,7 @@ use App\Models\PaymentList; use App\Models\SecondaryCollege; use App\Models\Speciality; use App\Models\UsersMember; +use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\ApexCharts\Chart; use Illuminate\Support\Facades\DB; @@ -36,6 +37,18 @@ class FemaleColumnCharts extends Chart $data = [[ "name" => "报道率", "data" => [], + "tooltip" => [ + [ + "name" => "已报到女生", + "data" => [], + "color" => '#ff6b6b' + ], + [ + "name" => "录入女生", + "data" => [], + "color"=>"#a21919" + ] + ], ]]; $label = []; @@ -93,6 +106,8 @@ class FemaleColumnCharts extends Chart } $list[$key]["registering"] = $registering; + $list[$key]["studentsNum"] = $completedOfflineStep; + $list[$key]["completedOfflineStep"] = $studentsNum; } } } @@ -102,8 +117,12 @@ class FemaleColumnCharts extends Chart array_push($label, $item["name"]); if(!empty($item["registering"])){ array_push($data[0]["data"], $item["registering"]); + array_push($data[0]['tooltip'][0]['data'], $item["studentsNum"]); + array_push($data[0]['tooltip'][1]['data'], $item["completedOfflineStep"]); }else{ array_push($data[0]["data"], 0); + array_push($data[0]['tooltip'][0]['data'], 0); + array_push($data[0]['tooltip'][1]['data'], 0); } } } @@ -113,5 +132,38 @@ class FemaleColumnCharts extends Chart $this->option("labels",$label); $this->option("yaxis",["max" => 100]); //Y轴最大值 + $tooltipCustomFunction = <<{ + newStr += `
+
+ +
+
+ \${item.name}: \${item.data[dataPointIndex]} +
+
` + }) + + return ` +
+
\${w.config.labels[dataPointIndex]}
+
+
+ +
+
+ \${w.config.series[0].name}: \${w.config.series[0].data[dataPointIndex]} +
+
+ \${newStr} +
+ `; +} +JS; + + $this->option('tooltip.custom', JavaScript::make($tooltipCustomFunction)); } } diff --git a/app/Admin/Metrics/Chart/FullPaymentRateColumnCharts.php b/app/Admin/Metrics/Chart/FullPaymentRateColumnCharts.php index d640f5b..bfeb71b 100644 --- a/app/Admin/Metrics/Chart/FullPaymentRateColumnCharts.php +++ b/app/Admin/Metrics/Chart/FullPaymentRateColumnCharts.php @@ -40,6 +40,18 @@ class FullPaymentRateColumnCharts extends Chart [ "name" => "缴费率", "data" => [], + "tooltip" => [ + [ + "name" => "全额缴费人数", + "data" => [], + "color" => '#ff6b6b' + ], + [ + "name" => "缴费人数", + "data" => [], + "color"=>"#a21919" + ] + ], ] ]; $label = []; @@ -81,11 +93,6 @@ class FullPaymentRateColumnCharts extends Chart if(!empty($userList)){ $userList = array_column($userList, "unique_number"); - //线下迎新有几步 - /*$stepCount = OfflineStep::query()->where("status", OfflineStep::STATUS_YES)->count(); - //检测是否存在线下报到步骤,存在则视为已到校(实际报到学生) - $completedOfflineStep = CompletedOfflineStep::query()->whereIn("unique_number", $userList)->where("annual_session", $config->data)->where("step_id",">=",$stepCount)->count();*/ - //已缴费人数 $payNum = Order::query()->whereIn("unique_number", $userList)->where([ "status" => Order::STATUS_PAID, @@ -113,17 +120,22 @@ class FullPaymentRateColumnCharts extends Chart } $list[$key]["registering"] = $registering; + $list[$key]["studentsNum"] = $studentsNum; //全额缴费人数 + $list[$key]["completedOfflineStep"] = $completedOfflineStep; //已缴费人数 } } } - foreach($list as $item){ array_push($label, $item["name"]); if(!empty($item["registering"])){ array_push($data[0]["data"], $item["registering"]); + array_push($data[0]['tooltip'][0]['data'], $item["studentsNum"]); //全额缴费人数 + array_push($data[0]['tooltip'][1]['data'], $item["completedOfflineStep"]);//已缴费人数 }else{ array_push($data[0]["data"], 0); + array_push($data[0]['tooltip'][0]['data'], 0); //全额缴费人数 + array_push($data[0]['tooltip'][1]['data'], 0);//已缴费人数 } } } @@ -133,31 +145,40 @@ class FullPaymentRateColumnCharts extends Chart $this->option("labels",$label); $this->option("yaxis",["max" => 100]); //Y轴最大值 - $this->option( - 'tooltip.custom', - JavaScript::make("function({ series, seriesIndex, dataPointIndex, w }) { -
-
- 信息工程学院
-
- - -
-
- 缴费率: - 87.65 -
-
- - - - -
-
-
-
- }") // 这个值最后段代码会作为JS代码执行 - ); + + $tooltipCustomFunction = <<{ + newStr += `
+
+ +
+
+ \${item.name}: \${item.data[dataPointIndex]} +
+
` + }) + + return ` +
+
\${w.config.labels[dataPointIndex]}
+
+
+ +
+
+ \${w.config.series[0].name}: \${w.config.series[0].data[dataPointIndex]} +
+
+ \${newStr} +
+ `; +} +JS; + + $this->option('tooltip.custom', JavaScript::make($tooltipCustomFunction)); } diff --git a/app/Admin/Metrics/Chart/MaleColumnCharts.php b/app/Admin/Metrics/Chart/MaleColumnCharts.php index 94068b9..3446716 100644 --- a/app/Admin/Metrics/Chart/MaleColumnCharts.php +++ b/app/Admin/Metrics/Chart/MaleColumnCharts.php @@ -9,6 +9,7 @@ use App\Models\PaymentList; use App\Models\SecondaryCollege; use App\Models\Speciality; use App\Models\UsersMember; +use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\ApexCharts\Chart; use Illuminate\Support\Facades\DB; @@ -36,6 +37,18 @@ class MaleColumnCharts extends Chart $data = [[ "name" => "报道率", "data" => [], + "tooltip" => [ + [ + "name" => "已报到男生", + "data" => [], + "color" => '#ff6b6b' + ], + [ + "name" => "录入男生", + "data" => [], + "color"=>"#a21919" + ] + ], ]]; $label = []; @@ -93,6 +106,8 @@ class MaleColumnCharts extends Chart } $list[$key]["registering"] = $registering; + $list[$key]["studentsNum"] = $completedOfflineStep; + $list[$key]["completedOfflineStep"] = $studentsNum; } } } @@ -102,8 +117,12 @@ class MaleColumnCharts extends Chart array_push($label, $item["name"]); if(!empty($item["registering"])){ array_push($data[0]["data"], $item["registering"]); + array_push($data[0]['tooltip'][0]['data'], $item["studentsNum"]); + array_push($data[0]['tooltip'][1]['data'], $item["completedOfflineStep"]); }else{ array_push($data[0]["data"], 0); + array_push($data[0]['tooltip'][0]['data'], 0); + array_push($data[0]['tooltip'][1]['data'], 0); } } } @@ -113,5 +132,39 @@ class MaleColumnCharts extends Chart $this->option("labels",$label); $this->option("yaxis",["max" => 100]); //Y轴最大值 + $tooltipCustomFunction = <<{ + newStr += `
+
+ +
+
+ \${item.name}: \${item.data[dataPointIndex]} +
+
` + }) + + return ` +
+
\${w.config.labels[dataPointIndex]}
+
+
+ +
+
+ \${w.config.series[0].name}: \${w.config.series[0].data[dataPointIndex]} +
+
+ \${newStr} +
+ `; +} +JS; + + $this->option('tooltip.custom', JavaScript::make($tooltipCustomFunction)); + } }