diff --git a/app/Http/Controllers/Admin/MaintenanceController.php b/app/Http/Controllers/Admin/MaintenanceController.php new file mode 100644 index 0000000..3598bd5 --- /dev/null +++ b/app/Http/Controllers/Admin/MaintenanceController.php @@ -0,0 +1,106 @@ +all(); + + return view('admin.maintenances.index', compact('maintenances')); + } + + /** + * Show the form for creating a new resource. + * + * @return View + */ + public function create(): View + { + $modules = (new Module)->all(); + + return view('admin.maintenances.create', compact('modules')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request): RedirectResponse + { + $request->validate([ + 'name' => 'required|string|max:255', + 'content' => 'nullable|string', + 'module_id' => 'nullable|string|max:255', + 'start_at' => 'nullable|date', + 'end_at' => 'nullable|date', + ]); + + (new Maintenance())->create($request->all()); + + return redirect()->route('admin.maintenances.index')->with('success', '维护信息已创建'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Maintenance $maintenance + * @return View + */ + public function edit(Maintenance $maintenance): View + { + $modules = (new Module)->all(); + + return view('admin.maintenances.edit', compact('maintenance', 'modules')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param Maintenance $maintenance + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Maintenance $maintenance): RedirectResponse + { + $request->validate([ + 'name' => 'nullable|string|max:255', + 'content' => 'nullable|string', + 'module_id' => 'nullable|string|max:255', + 'start_at' => 'nullable|date', + 'end_at' => 'nullable|date', + ]); + + $maintenance->update($request->all()); + + return redirect()->route('admin.maintenances.index')->with('success', '维护信息已更新'); + } + + /** + * Remove the specified resource from storage. + * + * @param Maintenance $maintenance + * @return \Illuminate\Http\Response + */ + public function destroy(Maintenance $maintenance): RedirectResponse + { + $maintenance->delete(); + + return redirect()->route('admin.maintenances.index')->with('success', '维护信息已删除'); + } +} diff --git a/app/Models/Maintenance.php b/app/Models/Maintenance.php new file mode 100644 index 0000000..64b1d46 --- /dev/null +++ b/app/Models/Maintenance.php @@ -0,0 +1,37 @@ + 'datetime', + 'end_at' => 'datetime', + ]; + + protected $dates = [ + 'start_at', + 'end_at', + ]; + + protected $with = [ + 'module', + ]; + + public function module() + { + return $this->belongsTo(Module::class); + } +} diff --git a/database/migrations/2023_02_17_142300_create_maintenances_table.php b/database/migrations/2023_02_17_142300_create_maintenances_table.php new file mode 100644 index 0000000..f6c358e --- /dev/null +++ b/database/migrations/2023_02_17_142300_create_maintenances_table.php @@ -0,0 +1,45 @@ +id(); + + // 维护名称 + $table->string('name')->index(); + + // 内容 + $table->text('content')->nullable(); + + // 模块 ID + $table->string('module_id')->index()->nullable(); + $table->foreign('module_id')->references('id')->on('modules')->onDelete('set null'); + + // 开始于 + $table->dateTime('start_at')->nullable(); + + $table->dateTime('end_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + Schema::dropIfExists('maintenances'); + } +}; diff --git a/resources/views/admin/maintenances/create.blade.php b/resources/views/admin/maintenances/create.blade.php new file mode 100644 index 0000000..d20162c --- /dev/null +++ b/resources/views/admin/maintenances/create.blade.php @@ -0,0 +1,46 @@ +@extends('layouts.admin') + +@section('title', '计划维护') + +@section('content') +

计划维护

+ 返回计划列表 + +
+ @csrf + +
+ + +
+ +
+ + +
+ + {{-- 模块 ID --}} +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ +@endsection diff --git a/resources/views/admin/maintenances/edit.blade.php b/resources/views/admin/maintenances/edit.blade.php new file mode 100644 index 0000000..aee9df6 --- /dev/null +++ b/resources/views/admin/maintenances/edit.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.admin') + +@section('title', '编辑: ' . $maintenance->name) + +@section('content') +

{{ $maintenance->name }}

+ 返回计划列表 + +
+ @csrf + @method('PATCH') + +
+ + name }} required> +
+ +
+ + +
+ + {{-- 模块 ID --}} +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ +@endsection diff --git a/resources/views/admin/maintenances/index.blade.php b/resources/views/admin/maintenances/index.blade.php new file mode 100644 index 0000000..44fac23 --- /dev/null +++ b/resources/views/admin/maintenances/index.blade.php @@ -0,0 +1,56 @@ +@extends('layouts.admin') + +@section('title', '维护计划') + +@section('content') + +

维护计划

+ 添加计划 + +
+ + + + + + + + + + + + @foreach ($maintenances as $m) + + + + + + + + + + + + + + @endforeach + +
ID名称模块开始于结束于操作
+ + {{ $m->id }} + + + + {{ $m->name }} + + + {{ $m->module?->name }} + + {{ $m->start_at }} + + {{ $m->end_at }} + + 编辑 +
+
+@endsection diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index d7b0528..2664022 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -75,6 +75,9 @@
  • 通知
  • +
  • + 维护 +
  • diff --git a/routes/admin.php b/routes/admin.php index 1052ce3..4756c78 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Admin\DeviceController; use App\Http\Controllers\Admin\HomeController; use App\Http\Controllers\Admin\HostController; +use App\Http\Controllers\Admin\MaintenanceController; use App\Http\Controllers\Admin\ModuleController; use App\Http\Controllers\Admin\NodeController; use App\Http\Controllers\Admin\NotificationController; @@ -39,6 +40,8 @@ Route::resource('user-groups', UserGroupController::class); +Route::resource('maintenances', MaintenanceController::class); + Route::get('devices', [DeviceController::class, 'index'])->name('devices.index'); Route::delete('devices', [DeviceController::class, 'destroy'])->name('devices.destroy');