1
0
Fork 0

完善后台基础虫情

main
vine_liutk 2023-08-22 10:55:22 +08:00
parent acebcf56de
commit a405f7cf33
9 changed files with 126 additions and 14 deletions

View File

@ -47,12 +47,12 @@ class Components extends BaseRenderer {
/**
* 富文本编辑器
*/
public function fuEditorControl($name ='content', $label = '内容')
public function fuEditorControl($name ='content', $label = '内容', $height = 600)
{
return WangEditor::make()
->name($name)
->label($label)
->height('auto')
->height($height)
->excludeKeys(['group-video']);
}

View File

@ -141,12 +141,12 @@ class CustomRegionController extends AdminController
// // '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都要销毁
],
// [
// 'title' => '虫情记录',//-todo
// 'value' => 'warning',
// 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
// 'unmountOnExit' => true//每次切换tab都要销毁
// ],
])
])
])

View File

@ -469,6 +469,40 @@ class DeviceController extends AdminController
]);
}
public function insectDetail(){
$regionId = request()->input('region_id', 0);
if($regionId){
$region = Region::find($regionId);
$options = $region->monitorModes()->where('type', MonitorMode::TYPE_INSECT)->pluck('name','monitor_id')->toArray();
}else{
$options = MonitorMode::where('type', MonitorMode::TYPE_INSECT)->pluck('name','id')->toArray();
}
$data = $this->basePage()->title('')->body([
\amisMake()->grid()->columns([
\amisMake()->Form()->title('搜索条件')->mode('inline')->body([
amisMake()->SelectControl('monitor_mode', '监测点位')->size('md')->options($options)->selectFirst(true)->required(),
\amisMake()->DateRangeControl('date_range', '时间范围')->clearable(false)->value('-7days,-1days')->shortcuts([
"7daysago",
"1weekslater",
"thismonth",
"1monthsago",
"2monthsago",
])->required(),
amis('submit')->label(__('admin.search'))->level('primary'),
])->target('insect_chart'),
]),
amisMake()->Service()->name('insect_chart')
->data([
'monitor_mode'=>array_key_first($options),
'date_range'=>strtotime(date("Y-m-d 00:00:00", strtotime("-7 days"))).','.strtotime(date("Y-m-d 00:00:00", strtotime("-1 days")))
])->schemaApi(
admin_url('device-chart?monitor_mode=${monitor_mode}&date_range=${date_range}')
),
]);
return $this->response()->success($data);
}
public function saveRegionConfig($id, Request $request)
{
if($id){

View File

@ -133,7 +133,7 @@ class MonitorModeController extends AdminController
amisMake()->PickerControl('picker_devices', '通风设备')->visibleOn('data.type == '.MonitorMode::TYPE_AIR)
->valueField('id')
->labelField('name')
->multiple(true)
->multiple(false)//通风设备只能选择一个
->size('lg')
->source([
'method' => 'get',
@ -200,7 +200,42 @@ class MonitorModeController extends AdminController
]
]
),
])
amisMake()->PickerControl('picker_devices', '虫情监测')->visibleOn('data.type == '.MonitorMode::TYPE_INSECT)
->valueField('id')
->labelField('name')
->multiple(true)
->size('lg')
->source([
'method' => 'get',
'url' => admin_url('devices?_action=getData&type='.Device::TYPE_INSECT),
'data' => [
'name'=>'${device_name}',
]
])
->pickerSchema(
[
'mode' => 'table',
'name' => 'monitor_list',
'headerToolbar' => amisMake()->form()
->wrapWithPanel(false)
->className('text-right')
->target('monitor_list')
->mode('inline')
->body([
amisMake()->TextControl('device_name', '名称')->addOn(
amis('submit')->label(__('admin.search'))->level('primary')
)
]),
'columns' => [
TableColumn::make()->name('id')->label('ID')->sortable(true),
TableColumn::make()->name('name')->label('名称'),
TableColumn::make()->name('sn')->label('编号'),
TableColumn::make()->name('created_at')->label('创建时间')->type('datetime')->sortable(true),
TableColumn::make()->name('updated_at')->label('更新时间')->type('datetime')->sortable(true),
]
]
),
]),
])->footer([
amisMake()->Button()->label('保存')->type('submit')->level('primary'),
])

View File

@ -91,6 +91,8 @@ Route::group([
$router->post('custom-region-atomizing', '\App\Admin\Controllers\DeviceController@atomizingDetail');
$router->post('custom-region-insect', '\App\Admin\Controllers\DeviceController@insectDetail');
$router->post('save-region-config/{id}', '\App\Admin\Controllers\DeviceController@saveRegionConfig');
//种植记录

View File

@ -71,6 +71,11 @@ class MonitorMode extends Model
'box_co2' => 'CO2'
];
break;
case self::TYPE_INSECT:
$arr = [
'worm_num' => '只'
];
break;
}
return $arr;
}
@ -107,6 +112,11 @@ class MonitorMode extends Model
'box_co2' => 'ppm'
];
break;
case self::TYPE_INSECT:
$arr = [
'worm_num' => '数量'
];
break;
}
return $arr;
}

View File

@ -133,7 +133,16 @@ class Region extends Model
'unmountOnExit' => true,//每次切换tab都要销毁
'sort' => 6,
];
break;
break;
case MonitorMode::TYPE_INSECT:
$tabs[] = [
'title' => '虫情监测',
'value' => 'insect',
'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-insect?region_id='.$region->id)),
'unmountOnExit' => true,//每次切换tab都要销毁
'sort' => 6,
];
break;
}
continue;
}

View File

@ -4,7 +4,7 @@ namespace App\Services\Admin;
use App\Models\Device;
use App\Models\MonitorMode;
use App\Models\{MeteorologicalDailyReport, MeteorologicalReport, SoilDailyReport, SoilReport, AirLog, MonitorDevice, RegionMonitor, Region};
use App\Models\{MeteorologicalDailyReport, MeteorologicalReport, SoilDailyReport, SoilReport, AirLog, FarmWormPhoto, MonitorDevice, RegionMonitor, Region, FarmWormReport};
use App\Filters\Admin\DeviceFilter;
use Carbon\Carbon;
use App\Admin\Components;
@ -109,13 +109,27 @@ class DeviceService extends BaseService
$fieldNameMap = MonitorMode::fieldMap(MonitorMode::TYPE_SOIL);
$fieldUnitMap = MonitorMode::fieldUnitMap(MonitorMode::TYPE_SOIL);
break;
case MonitorMode::TYPE_INSECT:
$dayliyReportQuery = FarmWormReport::query();
$reportQuery = FarmWormReport::query();
$fieldNameMap = MonitorMode::fieldMap(MonitorMode::TYPE_INSECT);
$fieldUnitMap = MonitorMode::fieldUnitMap(MonitorMode::TYPE_INSECT);
$columnNum = 1;
break;
}
$monitorMode->load('devices');
$configData = $fieldMap = [];
$deviceIds = [];
foreach($monitorMode->devices as $device){
$_fields = explode(',', $device->pivot->fields);
if($device->type == Device::TYPE_INSECT){
$_fields = [
'worm_num'
];
$deviceIds[] = $device->id;
}else{
$_fields = explode(',', $device->pivot->fields);
}
if($diffDays) {
$modelQuery = $dayliyReportQuery->whereBetween('reported_at', [$startTime, $endTime]);
}else{
@ -171,6 +185,7 @@ class DeviceService extends BaseService
);
break;
//柱状图;
case 'worm_num':
case 'box_noise':
case 'pm10':
case 'pm25':
@ -218,6 +233,12 @@ class DeviceService extends BaseService
amisMake()->Flex()->items(array_splice($chartArr, 0, $columnNum)),
]);
}
if($monitorMode->type == MonitorMode::TYPE_INSECT){
$configData[] = \amisMake()->grid()->columns([//添加照片
amisMake()->Images()->thumbRatio('16:9')->thumbMode(true)->enlargeAble(true)
->options(FarmWormPhoto::whereIn('device_id', $deviceIds)->whereBetween('uploaded_at', [$startTime, $endTime])->pluck('url')->toArray())
]);
}
return $configData;
}

View File

@ -52,6 +52,7 @@ class MonitorModeService extends BaseService
case MonitorMode::TYPE_MONITOR:
case MonitorMode::TYPE_AIR:
case MonitorMode::TYPE_ATOMIZING:
case MonitorMode::TYPE_INSECT:
$syncData = $params['picker_devices'] ?? [];
break;
case MonitorMode::TYPE_SOIL: