完善后台基础虫情
parent
acebcf56de
commit
a405f7cf33
|
|
@ -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()
|
return WangEditor::make()
|
||||||
->name($name)
|
->name($name)
|
||||||
->label($label)
|
->label($label)
|
||||||
->height('auto')
|
->height($height)
|
||||||
->excludeKeys(['group-video']);
|
->excludeKeys(['group-video']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -141,12 +141,12 @@ class CustomRegionController extends AdminController
|
||||||
// // 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
|
// // 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
|
||||||
// 'unmountOnExit' => true//每次切换tab都要销毁
|
// 'unmountOnExit' => true//每次切换tab都要销毁
|
||||||
// ],
|
// ],
|
||||||
[
|
// [
|
||||||
'title' => '虫情记录',
|
// 'title' => '虫情记录',//-todo
|
||||||
'value' => 'warning',
|
// 'value' => 'warning',
|
||||||
// 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
|
// 'tab'=>\amisMake()->Service()->schemaApi(admin_url('custom-region-detail?id='.$region['id'])),
|
||||||
'unmountOnExit' => true//每次切换tab都要销毁
|
// 'unmountOnExit' => true//每次切换tab都要销毁
|
||||||
],
|
// ],
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -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)
|
public function saveRegionConfig($id, Request $request)
|
||||||
{
|
{
|
||||||
if($id){
|
if($id){
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ class MonitorModeController extends AdminController
|
||||||
amisMake()->PickerControl('picker_devices', '通风设备')->visibleOn('data.type == '.MonitorMode::TYPE_AIR)
|
amisMake()->PickerControl('picker_devices', '通风设备')->visibleOn('data.type == '.MonitorMode::TYPE_AIR)
|
||||||
->valueField('id')
|
->valueField('id')
|
||||||
->labelField('name')
|
->labelField('name')
|
||||||
->multiple(true)
|
->multiple(false)//通风设备只能选择一个
|
||||||
->size('lg')
|
->size('lg')
|
||||||
->source([
|
->source([
|
||||||
'method' => 'get',
|
'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([
|
])->footer([
|
||||||
amisMake()->Button()->label('保存')->type('submit')->level('primary'),
|
amisMake()->Button()->label('保存')->type('submit')->level('primary'),
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,8 @@ Route::group([
|
||||||
|
|
||||||
$router->post('custom-region-atomizing', '\App\Admin\Controllers\DeviceController@atomizingDetail');
|
$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');
|
$router->post('save-region-config/{id}', '\App\Admin\Controllers\DeviceController@saveRegionConfig');
|
||||||
|
|
||||||
//种植记录
|
//种植记录
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,11 @@ class MonitorMode extends Model
|
||||||
'box_co2' => 'CO2'
|
'box_co2' => 'CO2'
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case self::TYPE_INSECT:
|
||||||
|
$arr = [
|
||||||
|
'worm_num' => '只'
|
||||||
|
];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return $arr;
|
return $arr;
|
||||||
}
|
}
|
||||||
|
|
@ -107,6 +112,11 @@ class MonitorMode extends Model
|
||||||
'box_co2' => 'ppm'
|
'box_co2' => 'ppm'
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case self::TYPE_INSECT:
|
||||||
|
$arr = [
|
||||||
|
'worm_num' => '数量'
|
||||||
|
];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return $arr;
|
return $arr;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,16 @@ class Region extends Model
|
||||||
'unmountOnExit' => true,//每次切换tab都要销毁
|
'unmountOnExit' => true,//每次切换tab都要销毁
|
||||||
'sort' => 6,
|
'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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ namespace App\Services\Admin;
|
||||||
|
|
||||||
use App\Models\Device;
|
use App\Models\Device;
|
||||||
use App\Models\MonitorMode;
|
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 App\Filters\Admin\DeviceFilter;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use App\Admin\Components;
|
use App\Admin\Components;
|
||||||
|
|
@ -109,13 +109,27 @@ class DeviceService extends BaseService
|
||||||
$fieldNameMap = MonitorMode::fieldMap(MonitorMode::TYPE_SOIL);
|
$fieldNameMap = MonitorMode::fieldMap(MonitorMode::TYPE_SOIL);
|
||||||
$fieldUnitMap = MonitorMode::fieldUnitMap(MonitorMode::TYPE_SOIL);
|
$fieldUnitMap = MonitorMode::fieldUnitMap(MonitorMode::TYPE_SOIL);
|
||||||
break;
|
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');
|
$monitorMode->load('devices');
|
||||||
$configData = $fieldMap = [];
|
$configData = $fieldMap = [];
|
||||||
|
|
||||||
|
$deviceIds = [];
|
||||||
foreach($monitorMode->devices as $device){
|
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) {
|
if($diffDays) {
|
||||||
$modelQuery = $dayliyReportQuery->whereBetween('reported_at', [$startTime, $endTime]);
|
$modelQuery = $dayliyReportQuery->whereBetween('reported_at', [$startTime, $endTime]);
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -171,6 +185,7 @@ class DeviceService extends BaseService
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
//柱状图;
|
//柱状图;
|
||||||
|
case 'worm_num':
|
||||||
case 'box_noise':
|
case 'box_noise':
|
||||||
case 'pm10':
|
case 'pm10':
|
||||||
case 'pm25':
|
case 'pm25':
|
||||||
|
|
@ -218,6 +233,12 @@ class DeviceService extends BaseService
|
||||||
amisMake()->Flex()->items(array_splice($chartArr, 0, $columnNum)),
|
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;
|
return $configData;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ class MonitorModeService extends BaseService
|
||||||
case MonitorMode::TYPE_MONITOR:
|
case MonitorMode::TYPE_MONITOR:
|
||||||
case MonitorMode::TYPE_AIR:
|
case MonitorMode::TYPE_AIR:
|
||||||
case MonitorMode::TYPE_ATOMIZING:
|
case MonitorMode::TYPE_ATOMIZING:
|
||||||
|
case MonitorMode::TYPE_INSECT:
|
||||||
$syncData = $params['picker_devices'] ?? [];
|
$syncData = $params['picker_devices'] ?? [];
|
||||||
break;
|
break;
|
||||||
case MonitorMode::TYPE_SOIL:
|
case MonitorMode::TYPE_SOIL:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue