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){ $data = $request->input(); $key = $data['type'] ?? ''; if($key){ unset($data['type']); return settings()->set($key, $data); } return false; } }