[FEAT] 完善帳號管理狀態切換功能、優化多語系提示與 UI 樣式一致性
All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 42s

This commit is contained in:
2026-03-25 17:16:41 +08:00
parent c015666f87
commit b7ff8ac01c
17 changed files with 349 additions and 46 deletions

View File

@@ -25,7 +25,7 @@ class MachineSettingController extends AdminController
public function index(Request $request): View
{
$tab = $request->input('tab', 'machines');
$per_page = $request->input('per_page', 20);
$per_page = $request->input('per_page', 10);
$search = $request->input('search');
// 1. 處理機台清單 (Machines Tab)
@@ -36,14 +36,14 @@ class MachineSettingController extends AdminController
->orWhere('serial_no', 'like', "%{$search}%");
});
}
$machines = $machineQuery->latest()->paginate($per_page, ['*'], 'machines_page')->withQueryString();
$machines = $machineQuery->latest()->paginate($per_page)->withQueryString();
// 2. 處理型號清單 (Models Tab)
$modelQuery = MachineModel::query()->withCount('machines');
if ($tab === 'models' && $search) {
$modelQuery->where('name', 'like', "%{$search}%");
}
$models_list = $modelQuery->latest()->paginate($per_page, ['*'], 'models_page')->withQueryString();
$models_list = $modelQuery->latest()->paginate($per_page)->withQueryString();
// 3. 基礎下拉資料 (用於新增/編輯機台的彈窗)
$models = MachineModel::select('id', 'name')->get();

View File

@@ -133,10 +133,32 @@ class CompanyController extends Controller
]);
$company->update($validated);
// 分支邏輯:若停用客戶,連帶停用其所有帳號
if ($validated['status'] == 0) {
$company->users()->update(['status' => 0]);
}
return redirect()->back()->with('success', __('Customer updated successfully.'));
}
/**
* 切換客戶狀態
*/
public function toggleStatus(Company $company)
{
$newStatus = $company->status == 1 ? 0 : 1;
$company->update(['status' => $newStatus]);
// 若切換為停用,同步更新所有旗下帳號
if ($newStatus == 0) {
$company->users()->update(['status' => 0]);
return redirect()->back()->with('success', __('Customer and associated accounts disabled successfully.'));
}
return redirect()->back()->with('success', __('Customer enabled successfully.'));
}
/**
* Remove the specified resource from storage.
*/

View File

@@ -14,7 +14,7 @@ class MachineController extends AdminController
public function index(Request $request): View
{
$tab = $request->input('tab', 'list');
$per_page = $tab === 'list' ? $request->input('per_page', 10) : $request->input('per_page', 12);
$per_page = $request->input('per_page', 10);
$query = Machine::query();
@@ -73,7 +73,7 @@ class MachineController extends AdminController
*/
public function logsAjax(Request $request, Machine $machine)
{
$per_page = $request->input('per_page', 20);
$per_page = $request->input('per_page', 10);
$startDate = $request->get('start_date', now()->format('Y-m-d'));
$endDate = $request->get('end_date', now()->format('Y-m-d'));

View File

@@ -73,6 +73,7 @@ class MaintenanceController extends Controller
'content' => 'nullable|string',
'maintenance_at' => 'required|date',
'photos.*' => 'nullable|image|max:5120', // 每張上限 5MB
'is_confirmed' => 'required|accepted',
]);
$machine = Machine::findOrFail($validated['machine_id']);
@@ -97,6 +98,7 @@ class MaintenanceController extends Controller
'content' => $validated['content'],
'photos' => $photoPaths,
'maintenance_at' => $validated['maintenance_at'],
'is_confirmed' => true, // 既然通過驗證(accepted),則存為 true
]);
return redirect()->route('admin.maintenance.index')

View File

@@ -503,4 +503,20 @@ class PermissionController extends Controller
return redirect()->back()->with('success', __('Account deleted successfully.'));
}
public function toggleAccountStatus($id)
{
$user = \App\Models\System\User::findOrFail($id);
// 禁止切換 Super Admin 狀態
if ($user->hasRole('super-admin')) {
return back()->with('error', __('Cannot change Super Admin status.'));
}
$user->status = $user->status ? 0 : 1;
$user->save();
$statusText = $user->status ? __('Enabled') : __('Disabled');
return back()->with('success', __('Account :name status has been changed to :status.', ['name' => $user->name, 'status' => $statusText]));
}
}