refactor: 重构后端目录结构和命名规范

- 将后端目录名从大写改为小写 (Controller->controller 等)
- 将命名空间从 App\ 改为 app\ (符合 webman 官方规范)
- 移除不必要的 bootstrap 目录
- 完善出差审批业务功能:
  - 添加删除草稿功能
  - 添加审批操作功能(同意/拒绝)
  - 完善审批详情页,显示审批人和审批记录
- 前端优化:
  - 调整列表页行高
  - 隐藏底部导航栏
  - 仪表盘只显示3个快捷入口

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-25 18:09:04 +08:00
parent 09d4cb8054
commit 582f454a5a
47 changed files with 1297 additions and 360 deletions
+33 -32
View File
@@ -2,41 +2,42 @@
use Webman\Route;
// API 路由
// 认证路由(不需要认证)
Route::group('/api/v1', function () {
// 认证路由(不需要认证)
Route::post('/auth/login', [App\Controller\AuthController::class, 'login']);
Route::post('/auth/feishu-login', [App\Controller\AuthController::class, 'feishuLogin']);
// 用户路由(需要认证)
Route::group(function () {
Route::get('/user/info', [App\Controller\UserController::class, 'info']);
Route::get('/user/menu', [App\Controller\UserController::class, 'menu']);
Route::get('/user/companies', [App\Controller\UserController::class, 'companies']);
Route::get('/user/list', [App\Controller\UserController::class, 'list']);
Route::post('/user/switch-company', [App\Controller\UserController::class, 'switchCompany']);
});
// 审批路由(需要认证)
Route::group(function () {
Route::get('/approval/list', [App\Controller\ApprovalController::class, 'list']);
Route::get('/approval/detail/{id}', [App\Controller\ApprovalController::class, 'detail']);
Route::post('/approval/approve/{id}', [App\Controller\ApprovalController::class, 'approve']);
Route::post('/approval/reject/{id}', [App\Controller\ApprovalController::class, 'reject']);
Route::post('/approval/cancel/{id}', [App\Controller\ApprovalController::class, 'cancel']);
});
// 出差审批路由(需要认证)
Route::group(function () {
Route::get('/business-trip/list', [App\Controller\BusinessTripController::class, 'list']);
Route::get('/business-trip/detail/{id}', [App\Controller\BusinessTripController::class, 'detail']);
Route::post('/business-trip/create', [App\Controller\BusinessTripController::class, 'create']);
Route::post('/business-trip/update/{id}', [App\Controller\BusinessTripController::class, 'update']);
Route::post('/business-trip/submit/{id}', [App\Controller\BusinessTripController::class, 'submit']);
Route::post('/business-trip/cancel/{id}', [App\Controller\BusinessTripController::class, 'cancel']);
});
Route::post('/auth/login', [app\controller\AuthController::class, 'login']);
Route::post('/auth/feishu-login', [app\controller\AuthController::class, 'feishuLogin']);
});
// 用户路由(需要认证)
Route::group('/api/v1/user', function () {
Route::get('/info', [app\controller\UserController::class, 'info']);
Route::get('/menu', [app\controller\UserController::class, 'menu']);
Route::get('/companies', [app\controller\UserController::class, 'companies']);
Route::get('/list', [app\controller\UserController::class, 'list']);
Route::post('/switch-company', [app\controller\UserController::class, 'switchCompany']);
})->middleware([\app\middleware\AuthMiddleware::class]);
// 审批路由(需要认证)
Route::group('/api/v1/approval', function () {
Route::get('/list', [app\controller\ApprovalController::class, 'list']);
Route::get('/detail/{id}', [app\controller\ApprovalController::class, 'detail']);
Route::post('/approve/{id}', [app\controller\ApprovalController::class, 'approve']);
Route::post('/reject/{id}', [app\controller\ApprovalController::class, 'reject']);
Route::post('/cancel/{id}', [app\controller\ApprovalController::class, 'cancel']);
})->middleware([\app\middleware\AuthMiddleware::class]);
// 出差审批路由(需要认证)
Route::group('/api/v1/business-trip', function () {
Route::get('/list', [app\controller\BusinessTripController::class, 'list']);
Route::get('/detail/{id}', [app\controller\BusinessTripController::class, 'detail']);
Route::post('/create', [app\controller\BusinessTripController::class, 'create']);
Route::post('/update/{id}', [app\controller\BusinessTripController::class, 'update']);
Route::post('/submit/{id}', [app\controller\BusinessTripController::class, 'submit']);
Route::post('/cancel/{id}', [app\controller\BusinessTripController::class, 'cancel']);
Route::delete('/{id}', [app\controller\BusinessTripController::class, 'deleteDraft']);
Route::post('/approve/{id}', [app\controller\BusinessTripController::class, 'approve']);
})->middleware([\app\middleware\AuthMiddleware::class]);
// 默认路由
Route::fallback(function () {
return json(['code' => 404, 'message' => 'Not Found']);