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

87 lines
2.8 KiB
PHP

<?php
namespace App\Admin\Controllers;
use App\Models\Device;
use App\Models\MonitorMode;
use App\Models\WarningNotice;
use Illuminate\Http\Request;
use Slowlyo\OwlAdmin\Controllers\AdminController;
class WarningSettingController extends AdminController
{
public function settingIndex(){
$page = $this->basePage()->body([
amisMake()->Card()->className('border-0')->body([
$this->settingForm()
]),
]);
return $this->response()->success($page);
}
private function settingForm(){
return \amisMake()->Tabs()->name('detailTab')->tabs([
[
'title' => '气象预警',
'value' => 'meteorological',
'tab'=>$this->modeForm(Device::TYPE_METEOROLOGICAL),
'unmountOnExit' => true//每次切换tab都要销毁
],
// [
// 'title' => '水质预警',
// 'value' => 'detail',
// 'tab'=>'',
// 'unmountOnExit' => true//每次切换tab都要销毁
// ],
[
'title' => '土壤预警',
'value' => 'detail',
'tab'=>$this->modeForm(Device::TYPE_SOIL),
'unmountOnExit' => true//每次切换tab都要销毁
],
]);
}
private function modeForm($type)
{
$formData = $formBody = $fields = [];
//获取当前已设置警报内容
$data = settings()->get('mode_warning_'.$type);
$data && $formData = $data;
foreach(MonitorMode::fieldMap($type) as $field => $fieldName){
$fields[] = [
'label' => $fieldName, 'type'=>'number','step'=>'0.01','name'=>$field,
'operators'=> ['between']
];
}
foreach(WarningNotice::lvMap() as $lv => $lvName){
if(!isset($formData[str($lv).'.conjunction'] )){
$formData[str($lv).'.conjunction'] = 'or';
}
$formBody[] = amisMake()->ConditionBuilderControl(str($lv), $lvName)->builderMode('simple')->showANDOR(true)->fields( $fields);
}
return \amisMake()->Form()
->data($formData)
->api(admin_url('warning-setting-save'))
->title('')->body(array_merge($formBody, [
amisMake()->TextControl('type', '类别')->value('mode_warning_'.$type)->hidden(true),
amis('submit')->label(__('admin.save'))->level('primary')
])
);
}
public function saveSettingConfig(Request $request){
$res = false;
$data = $request->input();
$key = $data['type'] ?? '';
if($key){
unset($data['type']);
$res = settings()->set($key, $data);
}
return $this->autoResponse($res, __('admin.save'));
}
}