1
0
Fork 0
internet-everythings-agricu.../app/Admin/Controllers/CustomRegionController.php

229 lines
11 KiB
PHP

<?php
namespace App\Admin\Controllers;
use Illuminate\Http\Request;
use Slowlyo\OwlAdmin\Renderers\Page;
use Slowlyo\OwlAdmin\Controllers\AdminController;
use App\Admin\Components;
use App\Models\Region;
use App\Models\Device;
class CustomRegionController extends AdminController
{
protected string $queryPath = 'custom-region';
public function regionIndex($type)
{
switch($type){
case 'yuyang':
// $this->pageTitle = '育秧列表';
$categoryId = 1;
break;
case 'daotian':
// $this->pageTitle = '稻田列表';
$categoryId = 2;
break;
}
$page = $this->basePage()->body([
\amisMake()->GridNav()->options(
$this->regionList($categoryId)
)
]);
return $this->response()->success($page);
}
private function regionList($categoryId){
$regionList = Region::with('devices')->where('category_id', $categoryId)->get();
$resList = [];
foreach($regionList as $region){
$tabs = [
[
'title' => '基地详情',
'value' => 'detail',
'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region->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(), []);
$resList[] = [
"icon"=> $region->cover ?? '',
"text"=> $region->name,
'clickAction' => [
'actionType'=> 'dialog',
'dialog' => \amisMake()->Dialog()->title($region['name'])
->size('full')->actions([])->body([
\amisMake()->Tabs()->tabsMode('simple')->name('detailTab')->tabs($tabs),
])
]
];
}
return $resList;
}
public function regionDetail(Request $request)
{
$id = $request->id;
$region = Region::find($id);
return amisMake()->Grid()->columns([
amisMake()->Wrapper()->sm(4)->body([
amisMake()->Panel()->title('基础详情')
->subFormMode('horizontal')
->labelWidth(100)
// ->headerClassName('text-white')
->body([
\amisMake()->TextControl()->static(true)->name('name')->label('名称')->value('试验田1'),
\amisMake()->TextControl()->static(true)->name('name1')->label('负责人')->value('负责人'),
\amisMake()->TextControl()->static(true)->name('category')->label('分类')->value($region->category?->name ?? ''),
\amisMake()->TextControl()->static(true)->name('area')->label('面积m²')->value($region?->area ?? ''),
\amisMake()->TextControl()->static(true)->name('sort')->label('排序')->value($region?->sort ?? '0'),
\amisMake()->SwitchControl()->static(true)->name('is_enable')->name('is_enable')->label('显示')->value($region?->is_enable ?? 0),
]),
amisMake()->Panel()->title('基础介绍')
// ->headerClassName('text-white')
->body([
amisMake()->Tpl()->tpl($region?->content ?? '')
])
]),
amisMake()->Wrapper()->sm(8)->body([
amisMake()->Panel()->title('种植记录')
// ->headerClassName('text-white')
->body([
\amisMake()->Button()->className('absolute top-1 right-4')->actionType('dialog')->label('新增')->dialog([
"title"=> "种植记录",
"body"=> [
"type"=> "form",
"api"=> "post:/amis/api/mock2/sample",
"body"=> [
\amisMake()->TextControl()->label('作物名称'),
\amisMake()->TextControl()->label('负责人'),
\amisMake()->TextControl()->label('种植面积'),
\amisMake()->DateControl()->label('种植时间'),
]
]
])->level('enhance'),
\amisMake()->CRUDTable()->title('')
->data([
'items' => [
[
'name'=> '作物名称',
'name1'=> '负责人',
'area'=> '100',
'time1'=> '2023-03-21',
],
[
'name'=> '作物名称2',
'name1'=> '负责人',
'area'=> '100',
'time1'=> '2023-03-21',
]
]
])
->columns([
amisMake()->TableColumn()->name('name')->label('名称'),
amisMake()->TableColumn()->name('name1')->label('负责人'),
amisMake()->TableColumn()->name('area')->label('种植面积'),
amisMake()->TableColumn()->name('time1')->label('种植时间'),
])
->itemAction([
'type'=>'button',
'actionType'=>'dialog',
'dialog'=> \amisMake()->Dialog()->title('作物名称')
->size('full')->actions([])->body([
\amisMake()->Tabs()->tabsMode('simple')->name('detailTab')->tabs([
[
'title' => '种植详情',
'value' => 'detail',
'tab'=>\amisMake()->Service()->schemaApi(admin_url('crop-plan-detail?id=')),//传id
'unmountOnExit' => true//每次切换tab都要销毁
],
[
'title' => '报警记录',
'value' => 'warning',
// 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
'unmountOnExit' => true//每次切换tab都要销毁
],
[
'title' => '虫情记录',
'value' => 'warning',
// 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
'unmountOnExit' => true//每次切换tab都要销毁
],
])
])
])
// ->itemActions([
// \amisMake()->DialogAction()->label('新增收获')->level('link')
// ])
])
]),
]);
}
}