完善后台基础虫情
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()
|
||||
->name($name)
|
||||
->label($label)
|
||||
->height('auto')
|
||||
->height($height)
|
||||
->excludeKeys(['group-video']);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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都要销毁
|
||||
// ],
|
||||
])
|
||||
])
|
||||
])
|
||||
|
|
|
|||
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
])
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
||||
//种植记录
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue