From 7ffb4048b2489af0f6e33529ae14bafe2735d45d Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Thu, 11 May 2023 11:16:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Components.php | 4 ++++ app/Admin/Controllers/MonitorModeController.php | 9 ++++++--- app/Models/Device.php | 4 +++- app/Models/Keyword.php | 7 +++++++ app/Models/MonitorMode.php | 14 +++++++++++++- database/seeders/KeywordSeeder.php | 2 +- 6 files changed, 34 insertions(+), 6 deletions(-) diff --git a/app/Admin/Components.php b/app/Admin/Components.php index 925fdba..ea688ff 100644 --- a/app/Admin/Components.php +++ b/app/Admin/Components.php @@ -86,6 +86,10 @@ class Components extends BaseRenderer { ->options(Keyword::getByParentKey($typeKey)->pluck('name', 'id')->toArray()); } + public function keywordsTag($label = '标签'){ + return amisMake()->Tag()->label($label)->displayMode('rounded')->color('inactive'); + } + /** * 生成统计图config * 折线图或者柱状图 diff --git a/app/Admin/Controllers/MonitorModeController.php b/app/Admin/Controllers/MonitorModeController.php index bc8b521..8a0d6e8 100644 --- a/app/Admin/Controllers/MonitorModeController.php +++ b/app/Admin/Controllers/MonitorModeController.php @@ -11,6 +11,7 @@ use App\Services\Admin\MonitorModeService; use App\Admin\Components; use App\Models\MonitorMode; use App\Models\Device; +use App\Models\Keyword; /** * @property MonitorModeService $service @@ -30,7 +31,7 @@ class MonitorModeController extends AdminController ->filter($this->baseFilter()->actions([])->body([ TextControl::make()->name('name')->label('名称')->size('md'), amisMake()->SelectControl()->name('type')->label('类型')->options(MonitorMode::typeMap())->size('md'), - Components::make()->keywordsTagControl('group_tags', '分组', 'device-group')->size('md'), + Components::make()->keywordsTagControl('group_tags', '分组', 'monitor-mode-group')->size('md'), amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])) @@ -38,9 +39,11 @@ class MonitorModeController extends AdminController TableColumn::make()->name('id')->label('ID')->sortable(true), TableColumn::make()->name('name')->label('名称'), TableColumn::make()->name('type')->type('mapping')->map(MonitorMode::typeMap())->label('类型'), + TableColumn::make()->name('tags')->type('mapping')->map(Keyword::tagsMap('monitor-mode-group'))->label('分组'), TableColumn::make()->name('created_at')->label(__('admin.created_at'))->type('datetime')->sortable(true), amisMake()->Operation()->label(__('admin.actions'))->buttons([ $this->setAboutDevice(), + $this->rowEditButton(true, 'lg'), $this->rowDeleteButton() ]), ]); @@ -52,8 +55,8 @@ class MonitorModeController extends AdminController { return $this->baseForm()->body([ TextControl::make()->name('name')->label('名称'), - \amisMake()->RadiosControl()->name('type')->label('类型')->options(MonitorMode::typeMap())->required(true), - Components::make()->keywordsTagControl('group_tags', '分组', 'device-group'), + \amisMake()->RadiosControl()->name('type')->label('类型')->options(MonitorMode::typeMap())->required(true)->disabledOn('data.id > 0'), + Components::make()->keywordsTagControl('group_tags', '分组', 'monitor-mode-group'), Components::make()->sortControl('sort', __('admin.order')), TextControl::make()->name('is_enable')->type('switch')->default(1)->label('显示'), TextControl::make()->name('is_recommend')->type('switch')->default(0)->label('推荐'), diff --git a/app/Models/Device.php b/app/Models/Device.php index 39e3263..f4e8fc6 100644 --- a/app/Models/Device.php +++ b/app/Models/Device.php @@ -17,6 +17,7 @@ class Device extends Model public const TYPE_METEOROLOGICAL = 4; //气象设备 public const TYPE_AIR = 5; //通风设备 public const TYPE_ATOMIZING = 6; //喷雾设备 + public const TYPE_INSECT = 7; //虫情监测 public const STATE_DISABLED = 0; public const STATE_ONLINE = 1; @@ -49,7 +50,8 @@ class Device extends Model // self::TYPE_WATER_QUALITY => '水质设备', self::TYPE_METEOROLOGICAL => '气象设备', self::TYPE_AIR => '通风设备', - self::TYPE_ATOMIZING => '喷雾设备' + self::TYPE_ATOMIZING => '喷雾设备', + self::TYPE_INSECT => '虫情监测', ]; } diff --git a/app/Models/Keyword.php b/app/Models/Keyword.php index e254230..bbb008b 100644 --- a/app/Models/Keyword.php +++ b/app/Models/Keyword.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Builder; +use App\Admin\Components; class Keyword extends Model { @@ -54,4 +55,10 @@ class Keyword extends Model return self::query()->where('type_key', $key)->get(); } + public static function tagsMap(String $key){ + $list = self::query()->where('type_key', $key)->get()->pluck('name', 'id')->toArray(); + return array_map(function($item){ + return Components::make()->keywordsTag($item); + }, $list); + } } diff --git a/app/Models/MonitorMode.php b/app/Models/MonitorMode.php index 0f51f13..dde98ba 100644 --- a/app/Models/MonitorMode.php +++ b/app/Models/MonitorMode.php @@ -4,6 +4,7 @@ namespace App\Models; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Casts\Attribute; class MonitorMode extends Model { @@ -15,12 +16,15 @@ class MonitorMode extends Model 'group_tags' ]; + protected $appends = ['tags']; + public const TYPE_MONITOR = 1; //视频监控 public const TYPE_SOIL = 2; //土壤监测 public const TYPE_WATER_QUALITY = 3; //水质监测 public const TYPE_METEOROLOGICAL = 4; //气象监测 public const TYPE_AIR = 5; //通风控制 public const TYPE_ATOMIZING = 6; //喷雾控制 + public const TYPE_INSECT = 7; //虫情监测 public static function typeMap() { @@ -30,7 +34,8 @@ class MonitorMode extends Model // self::TYPE_WATER_QUALITY => '水质监测', self::TYPE_METEOROLOGICAL => '气象监测', self::TYPE_AIR => '通风控制', - self::TYPE_ATOMIZING => '喷雾控制' + self::TYPE_ATOMIZING => '喷雾控制', + self::TYPE_INSECT => '虫情监测', ]; } @@ -73,4 +78,11 @@ class MonitorMode extends Model protected function serializeDate(\DateTimeInterface $date){ return $date->format('Y-m-d H:i:s'); } + + protected function tags():Attribute + { + return Attribute::make( + get: fn($value) => $this->group_tags ? explode(',', $this->group_tags) : [], + ); + } } diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php index 33534e8..8e2f31c 100644 --- a/database/seeders/KeywordSeeder.php +++ b/database/seeders/KeywordSeeder.php @@ -23,7 +23,7 @@ class KeywordSeeder extends Seeder ['key' => 'device-factory', 'name' => '厂家', 'list' => [ ['name' => 'LINK-OS', 'key'=>'link-os'] ]], - ['key' => 'device-group', 'name' => '设备组', 'list' => [ + ['key' => 'monitor-mode-group', 'name' => '监测组', 'list' => [ ['name' => '农机', 'key'=>'machinery'] ]], ];