diff --git a/app/Admin/Controllers/AdminSettingController.php b/app/Admin/Controllers/AdminSettingController.php index 177a653..9ec03b2 100644 --- a/app/Admin/Controllers/AdminSettingController.php +++ b/app/Admin/Controllers/AdminSettingController.php @@ -5,11 +5,26 @@ namespace App\Admin\Controllers; use App\Admin\Repositories\AdminSetting; use Dcat\Admin\Form; use Dcat\Admin\Grid; +use Dcat\Admin\Layout\Content; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; class AdminSettingController extends AdminController { + + public function test(Content $content) + { + return $content->body( + Form::make(new AdminSetting(), function (Form $form) { + $form->text('slug1')->disable(true); + $form->text('value'); + + $form->display('created_at'); + $form->display('updated_at'); + }) + ); + } + /** * Make a grid builder. * @@ -18,14 +33,14 @@ class AdminSettingController extends AdminController protected function grid() { return Grid::make(new AdminSetting(), function (Grid $grid) { - $grid->column('slug')->sortable(); + $grid->column('slug')->disable(true); $grid->column('value'); $grid->column('created_at'); $grid->column('updated_at')->sortable(); - + $grid->filter(function (Grid\Filter $filter) { $filter->equal('slug'); - + }); }); } @@ -57,7 +72,7 @@ class AdminSettingController extends AdminController return Form::make(new AdminSetting(), function (Form $form) { $form->display('slug'); $form->text('value'); - + $form->display('created_at'); $form->display('updated_at'); }); diff --git a/app/Admin/Controllers/EquipController.php b/app/Admin/Controllers/EquipController.php index 6dacbc6..2dfee67 100644 --- a/app/Admin/Controllers/EquipController.php +++ b/app/Admin/Controllers/EquipController.php @@ -4,6 +4,9 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Grid\CloneEquipResourceRecordAction; use App\Admin\Forms\EquipCacheForm; +use App\Admin\Renderable\EquipDatapointTable; +use App\Admin\Renderable\PostTable; +use App\Admin\Renderable\UserTable; use App\Admin\Renders\EquipResourceRecordRender; use App\Admin\Repositories\AdminSetting; use App\Admin\Repositories\Equip; @@ -17,15 +20,6 @@ use Dcat\Admin\Http\Controllers\AdminController; class EquipController extends AdminController { - public function index(Content $content) - { - return $content - ->translation($this->translation()) - ->title('设备列表') - ->description($this->description()['index'] ?? trans('admin.list')) - ->body($this->grid()); - } - /** * Make a grid builder. * @@ -36,10 +30,11 @@ class EquipController extends AdminController $api_key = AdminSettingService::getConfig('onenet_api_key'); return Grid::make(null, function (Grid $grid) use ($api_key) { + $grid->disableCreateButton(); $grid->quickSearch()->placeholder('设备ID'); $param = request()->all(); - $grid->column('id')->sortable(); + $grid->column('id', '设备ID')->sortable(); $grid->column('title'); $grid->column('online', '是否在线'); $grid->column('desc'); @@ -55,6 +50,20 @@ class EquipController extends AdminController 'api_key' => $api_key, ]); }); +// $grid->column('设备数据点')->display('设备数据点') +// ->modal('设备数据点', UserTable::make()); + + $grid->column('设备数据点')->display('设备数据点') + ->modal(function (Grid\Displayers\Modal $modal) use ($api_key) { + // 标题 + $modal->title('缓存命令-写设备资源'); + // 自定义图标 + $modal->icon('feather icon-edit'); + // 传递当前行字段值 + return EquipDatapointTable::make()->payload([ + 'obj_id' => $this->id, + ]); + }); $grid->column('tags'); diff --git a/app/Admin/Controllers/TestController.php b/app/Admin/Controllers/TestController.php index a0f0e0b..c675171 100644 --- a/app/Admin/Controllers/TestController.php +++ b/app/Admin/Controllers/TestController.php @@ -12,6 +12,10 @@ use GuzzleHttp\Client; class TestController extends Controller { + public function test() + { + return + } public function platformCacheList() { $query = http_build_query([ diff --git a/app/Admin/Renderable/AdminSetting.php b/app/Admin/Renderable/AdminSetting.php new file mode 100644 index 0000000..093cd67 --- /dev/null +++ b/app/Admin/Renderable/AdminSetting.php @@ -0,0 +1,14 @@ +all(); + if (!empty($param['app-admin-renderable-equipdatapointtable_at'])){ + $param['at'] = $param['app-admin-renderable-equipdatapointtable_at']; + } + $param['_search_'] = $this->payload['obj_id']; + + return Grid::make(null, function (Grid $grid) use ($param) { + $grid->fixColumns(1, -1); + $grid->disableRowSelector(); + $grid->column('valve_status1', '阀开关'); + $grid->column('valve_status2', '阀门动作'); + $grid->column('valve_status3', '行程开关'); + $grid->column('valve_status4', '电位器'); + $grid->column('valve_status5', '电池电量'); + $grid->column('valve_status6', '回水传感器'); + $grid->column('valve_status7', '加速度传感器'); + $grid->column('valve_status8', '角度'); + $grid->combine('阀门状态', ['valve_status2', 'valve_status3', 'valve_status4', 'valve_status5', 'valve_status6', 'valve_status7', 'valve_status8']); + $grid->column('set_opening', '设定开度'); + $grid->column('actual_opening', '实际开度'); + $grid->column('water_inlet_temperature', '进水温度'); + $grid->column('water_return_temperature', '回水温度'); + $grid->column('battery_power', '电池电量'); + $grid->column('accelerated_x', '加速度X轴'); + $grid->column('accelerated_y', '加速度Y轴'); + $grid->column('accelerated_z', '加速度Z轴'); + $grid->column('signal_strength', '信号强度'); + $grid->column('valve_time', '阀门时间'); + $grid->column('reporting_interval', '上报间隔'); + $grid->column('interval_unit', '间隔单位'); + $grid->column('effective_time', '上报有效时长'); + $grid->column('total_number_reports', '总上报次数'); + $grid->column('other', '其他'); + $grid->column('check', '累加校验和'); + $grid->column('finish', '结束符'); + $grid->column('value', '原始数据'); + $grid->column('at', '时间'); + if (empty($param['at']['start'])){ + $param['at']['start'] = date("Y-m-d H:i:s",strtotime("-1 day")); + } + + $grid->model()->setData(EquipInfoService::getDatapoints($param)); + $grid->disableCreateButton(); + $grid->disableActions(); + $grid->disableBatchDelete(); + $grid->showPagination(); +// $grid->simplePaginate(false); + $grid->disablePagination(); + + $grid->filter(function (Grid\Filter $filter) { + $filter->expand(true); + $filter->between('at', 'At')->default(['start' => date("Y-m-d H:i:s",strtotime("-1 day"))])->datetime(); + + }); + }); + } +} diff --git a/app/Admin/Renderable/ModalForm.php b/app/Admin/Renderable/ModalForm.php new file mode 100644 index 0000000..46161fa --- /dev/null +++ b/app/Admin/Renderable/ModalForm.php @@ -0,0 +1,14 @@ +setCurrentUrl($this->current); + } +} diff --git a/app/Admin/Renderable/PostTable.php b/app/Admin/Renderable/PostTable.php new file mode 100644 index 0000000..7e7cc8c --- /dev/null +++ b/app/Admin/Renderable/PostTable.php @@ -0,0 +1,27 @@ +title, + $faker->email, + $faker->date(), + ]; + } + + return Table::make(['Title', 'Email', 'date'], $data); + } +} diff --git a/app/Admin/Renderable/UserTable.php b/app/Admin/Renderable/UserTable.php new file mode 100644 index 0000000..c2d5a72 --- /dev/null +++ b/app/Admin/Renderable/UserTable.php @@ -0,0 +1,46 @@ +column('id', 'ID')->sortable(); + $grid->column('username'); + $grid->column('name'); + $grid->column('name1'); + $grid->column('name2'); + $grid->column('name3'); + $grid->column('name4'); + $grid->column('name5'); + $grid->column('name6'); + $grid->column('name7'); + $grid->column('name8'); + $grid->column('name9'); + $grid->column('created_at'); + $grid->column('updated_at'); + + $grid->quickSearch(['id', 'username', 'name']); + + $grid->paginate(10); + $grid->disableActions(); + + $grid->filter(function (Grid\Filter $filter) { + $filter->like('username')->width(4); + $filter->like('name')->width(4); + }); + }); + } +} diff --git a/app/Admin/Services/EquipInfoService.php b/app/Admin/Services/EquipInfoService.php index 83b22c5..ab3ba88 100644 --- a/app/Admin/Services/EquipInfoService.php +++ b/app/Admin/Services/EquipInfoService.php @@ -2,6 +2,7 @@ namespace App\Admin\Services; +use Dcat\Admin\Grid; use GuzzleHttp\Client; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Http; @@ -51,6 +52,13 @@ class EquipInfoService return $res; } + + /** + * 得到数据点 + * @param $param + * @return array + * @throws \GuzzleHttp\Exception\GuzzleException + */ public static function getDatapoints($param) { if (empty($param['_search_'])){ diff --git a/app/Admin/routes.php b/app/Admin/routes.php index ed6933d..67c94dd 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -16,11 +16,13 @@ Route::group([ $router->get('/test', 'HomeController@test'); $router->resource('equip_resource', 'EquipResourceRecordController'); $router->resource('equip', 'EquipController'); +// $router->resource('admin_set', 'AdminSettingController'); $router->get('equip_info', 'EquipInfoController@index'); $router->get('/test/platformCacheList', 'TestController@platformCacheList'); $router->get('/test/cancelAllCache', 'TestController@cancelAllCache'); $router->get('/test/getDatapoints', 'TestController@getDatapoints'); + $router->get('/admin_set/test', 'AdminSettingController@test'); }); diff --git a/app/Models/Equip.php b/app/Models/Equip.php index 235de62..e8eeeba 100644 --- a/app/Models/Equip.php +++ b/app/Models/Equip.php @@ -46,4 +46,6 @@ use Illuminate\Database\Eloquent\Model; */ class Equip extends Model { - use HasDateTimeFormatter; } + use HasDateTimeFormatter; + protected $table = 'equips'; +} diff --git a/lang/en/equip.php b/lang/en/equip.php index 9d26034..03e0c50 100644 --- a/lang/en/equip.php +++ b/lang/en/equip.php @@ -1,8 +1,8 @@ - [ - 'Equip' => 'Equip', - 'equip' => 'Equip', + 'Equip' => '设备列表', + 'equip' => '设备列表', ], 'fields' => [ 'title' => '设备名称', diff --git a/resources/views/admin/test.blade.php b/resources/views/admin/test.blade.php new file mode 100644 index 0000000..de23392 --- /dev/null +++ b/resources/views/admin/test.blade.php @@ -0,0 +1,132 @@ + + + + + + + Laravel + + + + + + + + + + +
+ @if (Route::has('login')) + + @endif + +
+
+ + + + + +
+ +
+
+
+ + +
+
+ Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end. +
+
+
+ +
+
+ + +
+ +
+
+ Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process. +
+
+
+ +
+
+ + +
+ +
+
+ Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials. +
+
+
+ +
+
+ +
Vibrant Ecosystem
+
+ +
+
+ Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more. +
+
+
+
+
+ +
+
+
+ + + + + + Shop + + + + + + + + Sponsor + +
+
+ +
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
+
+
+
+ +