From 3df33fa6e6d1579f8793af52f332d646cd480d2d Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Sun, 29 Dec 2024 21:24:20 +0600 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/routers/employees.py | 30 +++++ frontend/src/components/AddEmployeeButton.vue | 20 +++ frontend/src/router/index.ts | 9 +- frontend/src/views/admin/AddEmployeeView.vue | 118 ++++++++++++++++++ 4 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 backend/app/routers/employees.py create mode 100644 frontend/src/components/AddEmployeeButton.vue create mode 100644 frontend/src/views/admin/AddEmployeeView.vue diff --git a/backend/app/routers/employees.py b/backend/app/routers/employees.py new file mode 100644 index 0000000..ddb2282 --- /dev/null +++ b/backend/app/routers/employees.py @@ -0,0 +1,30 @@ +"""Employee management routes""" +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from ..database import get_db +from ..crud import employees as employees_crud +from ..models.employee import EmployeeCreate +from ..utils.loggers import auth_logger + +router = APIRouter() + +@router.post("/") +async def create_employee(employee: EmployeeCreate, db: Session = Depends(get_db)): + """Create new employee""" + try: + db_employee = employees_crud.create_employee(db, employee) + auth_logger.info( + "Employee created", + extra={"employee_id": db_employee.id} + ) + return { + "id": db_employee.id, + "firstName": db_employee.first_name, + "lastName": db_employee.last_name, + "department": db_employee.department, + "office": db_employee.office, + "createdAt": db_employee.created_at + } + except Exception as e: + auth_logger.error(f"Error creating employee: {e}", exc_info=True) + raise HTTPException(status_code=500, detail="Ошибка при создании сотрудника") \ No newline at end of file diff --git a/frontend/src/components/AddEmployeeButton.vue b/frontend/src/components/AddEmployeeButton.vue new file mode 100644 index 0000000..5be3af7 --- /dev/null +++ b/frontend/src/components/AddEmployeeButton.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 86bd1da..2ffac53 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -13,22 +13,25 @@ const router = createRouter({ { path: '/support', name: 'support', - // Ошибка: Не найден модуль '../views/SupportView.vue' component: () => import('../views/SupportView.vue'), meta: { requiresAuth: true } }, { path: '/admin', name: 'admin-login', - // Ошибка: Не найден модуль '../views/admin/AdminLoginView.vue' component: () => import('../views/admin/AdminLoginView.vue') }, { path: '/admin/dashboard', name: 'admin-dashboard', - // Ошибка: Не найден модуль '../views/admin/DashboardView.vue' component: () => import('../views/admin/DashboardView.vue'), meta: { requiresAdmin: true } + }, + { + path: '/admin/employees/add', + name: 'add-employee', + component: () => import('../views/admin/AddEmployeeView.vue'), + meta: { requiresAdmin: true } } ] }); diff --git a/frontend/src/views/admin/AddEmployeeView.vue b/frontend/src/views/admin/AddEmployeeView.vue new file mode 100644 index 0000000..ad9d866 --- /dev/null +++ b/frontend/src/views/admin/AddEmployeeView.vue @@ -0,0 +1,118 @@ +template> +
+

Добавить работника

+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + + \ No newline at end of file