Storage::class, ]; protected function serializeDate(\DateTimeInterface $date){ return $date->format('Y-m-d H:i:s'); } public function scopeShow($q) { return $q->where('is_enable', 1); } public function scopeSort($q) { return $q->orderBy('sort', 'desc')->latest('id'); } // 试验田分类 public function category() { return $this->belongsTo(RegionCategory::class, 'category_id'); } public function monitorModes(){ return $this->belongsToMany(MonitorMode::class, RegionMonitor::class, 'region_id', 'monitor_id')->withTimestamps()->withPivot('config'); } // 种植记录 public function plants() { return $this->hasMany(RegionPlantLog::class, 'region_id')->orderBy('start_at', 'desc'); } // 当前种植 public function currentPlant() { return $this->hasOne(RegionPlantLog::class, 'region_id')->whereNull('end_at')->orderBy('start_at', 'desc'); } // 收货记录 public function harvests() { return $this->hasMany(PlantHarvestLog::class, 'region_id')->orderBy('harvest_at', 'desc'); } public static function regionTabConfig($region = null){ $tabs = [ [ 'title' => '基地详情', 'value' => 'detail', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.($region?->id ?? '${id}'))), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 0, ], ]; if($region?->monitorModes){ foreach($region->monitorModes as $monitorMode){ switch($monitorMode->type) { case MonitorMode::TYPE_MONITOR: $tabs[] = [//有监控设备才有 'title' => '监控视频', 'value' => 'monitor', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-monitor?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 1, ]; break; case MonitorMode::TYPE_SOIL: $tabs[] = [//有土壤设备才有 'title' => '土壤数据', 'value' => 'soil', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-soil?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 2, ]; break; case MonitorMode::TYPE_WATER_QUALITY: $tabs[] = [//有水质设备才有 'title' => '水质数据', 'value' => 'quality', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-water?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 3, ]; break; case MonitorMode::TYPE_METEOROLOGICAL: $tabs[] = [//有气象设备才有 'title' => '气象数据', 'value' => 'meteorological', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-meteorological?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 4, ]; break; case MonitorMode::TYPE_AIR: $tabs[] = [//有通风设备才有 'title' => '通风设备', 'value' => 'air', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-air?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 5, ]; break; case MonitorMode::TYPE_ATOMIZING: $tabs[] = [//有喷雾设备才有 'title' => '喷雾设备', 'value' => 'atomizing', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-atomizing?region_id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 6, ]; break; } continue; } } $tabs = array_merge(collect($tabs)->sortBy('sort')->toArray(), []); return $tabs; } }