diff --git a/app/Admin/Controllers/RegionController.php b/app/Admin/Controllers/RegionController.php index dc941d9..d439312 100644 --- a/app/Admin/Controllers/RegionController.php +++ b/app/Admin/Controllers/RegionController.php @@ -10,8 +10,9 @@ use Slowlyo\OwlAdmin\Controllers\AdminController; use App\Services\Admin\RegionService; use Slowlyo\OwlAdmin\Renderers\Button; use App\Admin\Components; -use App\Models\Device; use App\Models\MonitorMode; +use App\Models\Region; +use Illuminate\Http\Request; class RegionController extends AdminController { @@ -50,7 +51,9 @@ class RegionController extends AdminController amisMake()->Operation()->label(__('admin.actions'))->buttons([ $this->showRegion(), $this->rowEditButton(true, 'lg'), - $this->rowDeleteButton() + $this->rowDeleteButton(), + amisMake()->Button()->label('设置大屏位置')->level('link')->actionType('url')->blank(true) + ->url(url('/regions-position').'/'.'${id}') ]), ]); @@ -93,4 +96,32 @@ class RegionController extends AdminController ])->size('full')->actions([]) ); } + + public function setRegionPosition($id, Request $request){ + $region = Region::find($id); + $x = $region?->position_x ?? 0; + $y = $region?->position_y ?? 0; + return view('region-position', compact('id', 'x', 'y')); + } + + public function saveRegionPosition(Request $request) + { + $id = $request->input('id', 0); + $positionX = $request->input('x', 0); + $positionY = $request->input('y', 0); + $region = Region::find($id); + if(!$region){ + return response()->json(['code'=>1, 'msg'=> '非法请求']); + } + if($positionX <= 0 || $positionY <= 0){ + return response()->json(['code'=>2, 'msg'=>'请点击地图,标记位置']); + } + $region->update([ + 'position_x'=> $positionX, + 'position_y'=> $positionY + ]); + //直接关闭窗口 + echo ''; + return ; + } } diff --git a/public/admin/dashboard-map.png b/public/admin/dashboard-map.png new file mode 100644 index 0000000..bd961fd Binary files /dev/null and b/public/admin/dashboard-map.png differ diff --git a/public/admin/js/uuidv4.min.js b/public/admin/js/uuidv4.min.js new file mode 100644 index 0000000..e9df84b --- /dev/null +++ b/public/admin/js/uuidv4.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).uuidv4=e()}(this,(function(){"use strict";var t,e=new Uint8Array(16);function o(){if(!t&&!(t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return t(e)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(t){return"string"==typeof t&&n.test(t)}for(var i=[],u=0;u<256;++u)i.push((u+256).toString(16).substr(1));return function(t,e,n){var u=(t=t||{}).random||(t.rng||o)();if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,e){n=n||0;for(var f=0;f<16;++f)e[n+f]=u[f];return e}return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError("Stringified UUID is invalid");return o}(u)}})); \ No newline at end of file diff --git a/public/admin/map-marker.png b/public/admin/map-marker.png new file mode 100644 index 0000000..bb1f669 Binary files /dev/null and b/public/admin/map-marker.png differ diff --git a/resources/views/region-position.blade.php b/resources/views/region-position.blade.php new file mode 100644 index 0000000..06ffed3 --- /dev/null +++ b/resources/views/region-position.blade.php @@ -0,0 +1,176 @@ + + + +
+ +