87 lines
2.8 KiB
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'));
|
|
}
|
|
} |