diff --git a/app/Admin/Controllers/MonitorModeController.php b/app/Admin/Controllers/MonitorModeController.php index 557bfec..e6d7415 100644 --- a/app/Admin/Controllers/MonitorModeController.php +++ b/app/Admin/Controllers/MonitorModeController.php @@ -6,12 +6,14 @@ use Slowlyo\OwlAdmin\Renderers\Page; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\TableColumn; use Slowlyo\OwlAdmin\Renderers\TextControl; +use Slowlyo\OwlAdmin\Renderers\SwitchControl; use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\MonitorModeService; use App\Admin\Components; use App\Models\MonitorMode; use App\Models\Device; use App\Models\Keyword; +use Illuminate\Http\Request; /** * @property MonitorModeService $service @@ -35,16 +37,20 @@ class MonitorModeController extends AdminController amis('button')->label(__('admin.reset'))->actionType('clear-and-submit'), amis('submit')->label(__('admin.search'))->level('primary'), ])) + ->quickSaveItemApi(admin_url('quick-edit/monitor-modes/$id')) ->columns([ TableColumn::make()->name('id')->label('ID')->sortable(true), TableColumn::make()->name('name')->label('名称'), TableColumn::make()->name('type')->type('mapping')->map(MonitorMode::typeMap())->label('类型'), + TableColumn::make()->name('is_enable')->type('switch')->label(__('monitor-mode.is_enable'))->quickEdit(SwitchControl::make()->saveImmediately(true)->mode('inline')), TableColumn::make()->name('tags')->type('mapping')->map(Keyword::tagsMap('monitor-mode-group'))->label('分组'), TableColumn::make()->name('created_at')->label(__('admin.created_at'))->type('datetime')->sortable(true), amisMake()->Operation()->label(__('admin.actions'))->buttons([ $this->setAboutDevice(), $this->rowEditButton(true, 'lg'), - $this->rowDeleteButton() + $this->rowDeleteButton(), + amisMake()->Button()->label('设置大屏位置')->level('link')->actionType('url')->blank(true) + ->url(url('/monitor-mode-position').'/'.'${id}') ]), ]); @@ -248,4 +254,32 @@ class MonitorModeController extends AdminController return $this->autoResponse($result, __('admin.save')); } + + public function setMonitorModePosition($id, Request $request){ + $monitorMode = MonitorMode::find($id); + $x = $monitorMode?->position_x ?? 0; + $y = $monitorMode?->position_y ?? 0; + return view('monitor-mode-position', compact('id', 'x', 'y')); + } + + public function saveMonitorModePosition(Request $request) + { + $id = $request->input('id', 0); + $positionX = $request->input('x', 0); + $positionY = $request->input('y', 0); + $monitorMode = MonitorMode::find($id); + if(!$monitorMode){ + return response()->json(['code'=>1, 'msg'=> '非法请求']); + } + if($positionX <= 0 || $positionY <= 0){ + return response()->json(['code'=>2, 'msg'=>'请点击地图,标记位置']); + } + $monitorMode->update([ + 'position_x'=> $positionX, + 'position_y'=> $positionY + ]); + //直接关闭窗口 + echo ''; + return ; + } } diff --git a/app/Admin/routes.php b/app/Admin/routes.php index f17830f..e136d1c 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -60,6 +60,7 @@ Route::group([ //监测点位 $router->resource('monitor-modes', \App\Admin\Controllers\MonitorModeController::class); + $router->post('quick-edit/monitor-modes/{monitor_mode}', [\App\Admin\Controllers\MonitorModeController::class, 'update']); $router->post('monitor-mode-save-devices', '\App\Admin\Controllers\MonitorModeController@saveDevices'); //区域分类 diff --git a/app/Http/Resources/MonitorModeResource.php b/app/Http/Resources/MonitorModeResource.php index bdf5a5a..1f925ef 100644 --- a/app/Http/Resources/MonitorModeResource.php +++ b/app/Http/Resources/MonitorModeResource.php @@ -17,7 +17,11 @@ class MonitorModeResource extends JsonResource return [ 'id' => $this->id, 'type' => $this->type, - 'name' => $this->name + 'is_enable' => $this->is_enable, + 'name' => $this->name, + 'position_x'=> $this->position_x, + 'position_y'=> $this->position_y, + 'canvasbox'=> '1350,900', ]; } } diff --git a/app/Models/MonitorMode.php b/app/Models/MonitorMode.php index 72bd9aa..60f2380 100644 --- a/app/Models/MonitorMode.php +++ b/app/Models/MonitorMode.php @@ -13,7 +13,8 @@ class MonitorMode extends Model protected $fillable = [ 'name', 'type', 'is_enable', 'sort', 'is_recommend', - 'group_tags' + 'group_tags', + 'position_x', 'position_y' ]; protected $appends = ['tags']; diff --git a/database/migrations/2023_09_02_095922_add_map_info_to_monitor_modes_table.php b/database/migrations/2023_09_02_095922_add_map_info_to_monitor_modes_table.php new file mode 100644 index 0000000..65486b0 --- /dev/null +++ b/database/migrations/2023_09_02_095922_add_map_info_to_monitor_modes_table.php @@ -0,0 +1,35 @@ +decimal('position_x')->nullable()->comment('x轴位置'); + $table->decimal('position_y')->nullable()->comment('y轴位置'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('monitor_modes', function (Blueprint $table) { + // + $table->dropColumn(['position_x', 'position_y']); + }); + } +}; diff --git a/lang/zh_CN/monitor-mode.php b/lang/zh_CN/monitor-mode.php new file mode 100644 index 0000000..3c41316 --- /dev/null +++ b/lang/zh_CN/monitor-mode.php @@ -0,0 +1,10 @@ + 'ID', + 'created_at' => '创建时间', + 'is_enable' => '显示', + 'is_recommend' => '推荐', + 'published_at' => '发布时间', + 'sort' => '排序(倒序)', +]; diff --git a/resources/views/monitor-mode-position.blade.php b/resources/views/monitor-mode-position.blade.php new file mode 100644 index 0000000..300339e --- /dev/null +++ b/resources/views/monitor-mode-position.blade.php @@ -0,0 +1,176 @@ + + + + + + 在地图上打标点 + + + + + + +
+
+ @csrf + + + + + +
+
+ + + + diff --git a/routes/web.php b/routes/web.php index 1c62a65..848b4ea 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,3 +21,6 @@ Route::redirect('/', '/admin', 302); $router->get('regions-position/{id}', [\App\Admin\Controllers\RegionController::class, 'setRegionPosition']); $router->post('regions-position/save', [\App\Admin\Controllers\RegionController::class, 'saveRegionPosition']); + +$router->get('monitor-mode-position/{id}', [\App\Admin\Controllers\MonitorModeController::class, 'setMonitorModePosition']); +$router->post('monitor-mode-position/save', [\App\Admin\Controllers\MonitorModeController::class, 'saveMonitorModePosition']);