From f296df4ac52e759d2e656efcd08d171759db1bfb Mon Sep 17 00:00:00 2001 From: lijunjie Date: Thu, 22 Sep 2022 17:47:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 + .../Controllers/CommandLogController.php | 135 ++++++++++++++++++ app/Admin/Controllers/EquipController.php | 6 - app/Admin/routes.php | 1 + .../backups/20220831140018.nb3 | Bin database/backups/20220920145757.nb3 | Bin 0 -> 35840 bytes 6 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 app/Admin/Controllers/CommandLogController.php rename 20220831140018.nb3 => database/backups/20220831140018.nb3 (100%) create mode 100644 database/backups/20220920145757.nb3 diff --git a/README.md b/README.md index a2a3c73..baa9f84 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,7 @@ 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request + + +onenet秘钥 大江测试 uEMPPhc4XKb25VLQSRJ3u=goLuw= + 李雅婷测试 l5KGPjSqQVuwSSjlUAuBohPNVrM= \ No newline at end of file diff --git a/app/Admin/Controllers/CommandLogController.php b/app/Admin/Controllers/CommandLogController.php new file mode 100644 index 0000000..5579af4 --- /dev/null +++ b/app/Admin/Controllers/CommandLogController.php @@ -0,0 +1,135 @@ +disableCreateButton(); + $grid->quickSearch()->placeholder('设备ID'); + + $param = request()->all(); + $grid->column('id', '设备ID')->sortable(); + $grid->column('title'); + $grid->column('online', '是否在线'); + $grid->column('desc'); + $grid->column('缓存命令')->display('写设备资源')->modal(function (Grid\Displayers\Modal $modal) use ($api_key) { + // 标题 + $modal->title('缓存命令-写设备资源'); + // 自定义图标 + $modal->icon('feather icon-edit'); + // 传递当前行字段值 + + return EquipCacheForm::make()->payload([ + 'imei' => key($this->auth_info ?? []), + 'obj_id' => $this->id, + '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'); + + $grid->column('protocol'); + $grid->column('location'); + $grid->column('auth_info'); + $grid->column('other'); + $grid->column('create_time', '设备创建时间'); + $grid->disableActions(); + + $grid->model()->setData(EquipInfoService::getInfos($param)); + + $grid->filter(function (Grid\Filter $filter) { + $filter->equal('id'); + + }); + }); + } + + /** + * Make a show builder. + * + * @param mixed $id + * + * @return Show + */ + protected function detail($id) + { + return Show::make($id, new Equip(), function (Show $show) { + $show->field('id'); + $show->field('title'); + $show->field('desc'); + $show->field('tags'); + $show->field('protocol'); + $show->field('location'); + $show->field('private'); + $show->field('auth_info'); + $show->field('auth'); + $show->field('obsv'); + $show->field('other'); + $show->field('chip'); + $show->field('psk'); + $show->field('created_at'); + $show->field('updated_at'); + }); + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form() + { + return Form::make(new Equip(), function (Form $form) { + $form->display('id'); + $form->text('title'); + $form->text('desc'); + $form->text('tags'); + $form->text('protocol'); + $form->text('location'); + $form->text('private'); + $form->text('auth_info'); + $form->text('auth'); + $form->text('obsv'); + $form->text('other'); + $form->text('chip'); + $form->text('psk'); + + $form->display('created_at'); + $form->display('updated_at'); + }); + } +} diff --git a/app/Admin/Controllers/EquipController.php b/app/Admin/Controllers/EquipController.php index b254d33..b1fdecc 100644 --- a/app/Admin/Controllers/EquipController.php +++ b/app/Admin/Controllers/EquipController.php @@ -2,19 +2,13 @@ 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; use App\Admin\Services\AdminSettingService; use App\Admin\Services\EquipInfoService; use Dcat\Admin\Form; use Dcat\Admin\Grid; -use Dcat\Admin\Layout\Content; use Dcat\Admin\Show; use Dcat\Admin\Http\Controllers\AdminController; diff --git a/app/Admin/routes.php b/app/Admin/routes.php index e755188..bc80f15 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -14,6 +14,7 @@ Route::group([ $router->get('/', 'HomeController@index'); $router->resource('equip_resource', 'EquipResourceRecordController'); $router->resource('equip', 'EquipController'); + $router->resource('command_log', 'CommandLogController'); $router->get('equip_info', 'EquipInfoController@index'); // $router->resource('admin_set', 'AdminSettingController'); diff --git a/20220831140018.nb3 b/database/backups/20220831140018.nb3 similarity index 100% rename from 20220831140018.nb3 rename to database/backups/20220831140018.nb3 diff --git a/database/backups/20220920145757.nb3 b/database/backups/20220920145757.nb3 new file mode 100644 index 0000000000000000000000000000000000000000..c869871a7fe0eb063e3eceac0727bc1ed844956e GIT binary patch literal 35840 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 literal 0 HcmV?d00001