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 devices() { return $this->belongsToMany(Device::class, RegionDevice::class, 'region_id', 'device_id')->withTimestamps(); } // 种植记录 public function plants() { return $this->hasMany(RegionPlantLog::class, 'region_id')->orderBy('start_at', 'desc'); } // 当前种植 public function currentPlant() { return $this->hasOne(RegionPlantLog::class, 'region_id')->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?->devices){ foreach($region->devices as $device){ switch($device->type) { case Device::TYPE_MONITOR: $tabs[] = [//有监控设备才有 'title' => '监控视频', 'value' => 'monitor', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-monitor?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 1, ]; break; case Device::TYPE_SOIL: $tabs[] = [//有土壤设备才有 'title' => '土壤数据', 'value' => 'turang', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-soil?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 2, ]; break; case Device::TYPE_WATER_QUALITY: $tabs[] = [//有水质设备才有 'title' => '水质数据', 'value' => 'shuizi', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-water?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 3, ]; break; case Device::TYPE_METEOROLOGICAL: $tabs[] = [//有气象设备才有 'title' => '气象数据', 'value' => 'qixiang', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-meteorological?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 4, ]; break; case Device::TYPE_AIR: $tabs[] = [//有通风设备才有 'title' => '通风设备', 'value' => 'air', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-air?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 5, ]; break; case Device::TYPE_ATOMIZING: $tabs[] = [//有喷雾设备才有 'title' => '喷雾设备', 'value' => 'wasserstrahl', 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-wasserstrahl?id='.$region->id)), 'unmountOnExit' => true,//每次切换tab都要销毁 'sort' => 6, ]; break; } continue; } } $tabs = array_merge(collect($tabs)->sortBy('sort')->toArray(), []); return $tabs; } }