From cf8f326515ddd292b33774ac46535889d9f84f5f Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Fri, 12 May 2023 15:38:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/DeviceController.php | 6 +++--- app/Filters/Admin/DeviceFilter.php | 12 ++++++------ .../2023_03_20_162006_create_devices_table.php | 1 + .../2023_03_21_104958_create_regions_table.php | 1 + .../2023_05_10_173853_create_monitor_modes_table.php | 1 + ...023_05_10_175324_create_monitor_devices_table.php | 5 +++++ ...023_05_10_175642_create_region_monitors_table.php | 4 ++++ 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/Admin/Controllers/DeviceController.php b/app/Admin/Controllers/DeviceController.php index 710ca5b..cd3cac7 100644 --- a/app/Admin/Controllers/DeviceController.php +++ b/app/Admin/Controllers/DeviceController.php @@ -95,9 +95,9 @@ class DeviceController extends AdminController $regionId = request()->input('region_id', 0); if($regionId){ $region = Region::find($regionId); - $query = $region->monitorModes(); + $query = $region->monitorModes()->where('type', MonitorMode::TYPE_MONITOR)->pluck('name','monitor_id'); }else{ - $query = MonitorMode::query(); + $query = MonitorMode::where('type', MonitorMode::TYPE_MONITOR)->pluck('name','id'); } return CRUDTable::make() ->mode('cards') @@ -111,7 +111,7 @@ class DeviceController extends AdminController ->footerToolbar(['statistics', 'pagination']) ->headerToolbar([]) ->filter($this->baseFilter()->actions([])->body([ - amisMake()->SelectControl('monitor_mode', '点位名称')->size('md')->options($query->where('type', MonitorMode::TYPE_MONITOR)->pluck('name','id')->toArray()), + amisMake()->SelectControl('monitor_mode', '点位名称')->size('md')->options($query->toArray())->selectFirst(true), Button::make()->label(__('admin.reset'))->actionType('clear-and-submit'), Component::make()->setType('submit')->label(__('admin.search'))->level('primary'), ])) diff --git a/app/Filters/Admin/DeviceFilter.php b/app/Filters/Admin/DeviceFilter.php index 65d49a2..8aef7f7 100644 --- a/app/Filters/Admin/DeviceFilter.php +++ b/app/Filters/Admin/DeviceFilter.php @@ -29,12 +29,12 @@ class DeviceFilter extends ModelFilter return $this->where('type', $type); } - // public function monitorMode($monitorMode){ - // if($monitorMode){ - // $monitorMode = MonitorMode::find($monitorMode)?->; - // } - // return $this->whereIn(); - // } + public function monitorMode($monitorMode){ + if($monitorMode){ + $deviceIds = MonitorMode::find($monitorMode)?->devices()->get()->pluck('id')->toArray(); + } + return $this->whereIn('id', $deviceIds); + } /** * 类型 diff --git a/database/migrations/2023_03_20_162006_create_devices_table.php b/database/migrations/2023_03_20_162006_create_devices_table.php index 4969e20..481b6de 100644 --- a/database/migrations/2023_03_20_162006_create_devices_table.php +++ b/database/migrations/2023_03_20_162006_create_devices_table.php @@ -14,6 +14,7 @@ return new class extends Migration public function up() { Schema::create('devices', function (Blueprint $table) { + $table->engine = 'InnoDB'; $table->id(); $table->string('name')->comment('设备名称'); $table->string('sn')->comment('设备唯一编码'); diff --git a/database/migrations/2023_03_21_104958_create_regions_table.php b/database/migrations/2023_03_21_104958_create_regions_table.php index 0a9ca53..b923d2c 100644 --- a/database/migrations/2023_03_21_104958_create_regions_table.php +++ b/database/migrations/2023_03_21_104958_create_regions_table.php @@ -14,6 +14,7 @@ return new class extends Migration public function up() { Schema::create('regions', function (Blueprint $table) { + $table->engine = 'InnoDB'; $table->id(); $table->string('name'); $table->string('cover')->nullable()->comment('封面图'); diff --git a/database/migrations/2023_05_10_173853_create_monitor_modes_table.php b/database/migrations/2023_05_10_173853_create_monitor_modes_table.php index 32efc97..aecf348 100644 --- a/database/migrations/2023_05_10_173853_create_monitor_modes_table.php +++ b/database/migrations/2023_05_10_173853_create_monitor_modes_table.php @@ -14,6 +14,7 @@ return new class extends Migration public function up() { Schema::create('monitor_modes', function (Blueprint $table) { + $table->engine = 'InnoDB'; $table->id(); $table->string('name')->comment('名称'); $table->unsignedTinyInteger('type')->comment('类型: 1 视频监控, 2 土壤监测, 3 水质监测, 4 气象监测, 5 通风控制'); diff --git a/database/migrations/2023_05_10_175324_create_monitor_devices_table.php b/database/migrations/2023_05_10_175324_create_monitor_devices_table.php index 69a3e0c..ef40b2b 100644 --- a/database/migrations/2023_05_10_175324_create_monitor_devices_table.php +++ b/database/migrations/2023_05_10_175324_create_monitor_devices_table.php @@ -14,10 +14,15 @@ return new class extends Migration public function up() { Schema::create('monitor_devices', function (Blueprint $table) { + $table->engine = 'InnoDB'; $table->id(); $table->unsignedBigInteger('monitor_id'); $table->unsignedBigInteger('device_id'); $table->text('fields')->nullable()->comment('监测字段'); + $table->unsignedInteger('sort')->default(0)->comment('排序'); + + $table->foreign('monitor_id')->references('id')->on('monitor_modes')->onDelete('cascade'); + $table->foreign('device_id')->references('id')->on('devices')->onDelete('cascade'); }); } diff --git a/database/migrations/2023_05_10_175642_create_region_monitors_table.php b/database/migrations/2023_05_10_175642_create_region_monitors_table.php index 0a1c1f0..0cb9c75 100644 --- a/database/migrations/2023_05_10_175642_create_region_monitors_table.php +++ b/database/migrations/2023_05_10_175642_create_region_monitors_table.php @@ -14,11 +14,15 @@ return new class extends Migration public function up() { Schema::create('region_monitors', function (Blueprint $table) { + $table->engine = 'InnoDB'; $table->id(); $table->unsignedBigInteger('region_id'); $table->unsignedBigInteger('monitor_id'); $table->text('config')->nullable()->comment('配置信息'); $table->timestamps(); + + $table->foreign('monitor_id')->references('id')->on('monitor_modes')->onDelete('cascade'); + $table->foreign('region_id')->references('id')->on('regions')->onDelete('cascade'); }); }