# Tiện ích Lái Xe (DriverUtils)

## Tổng quan

Trang tiện ích lái xe cung cấp các chức năng cần thiết cho lái xe trong quá trình làm việc hàng ngày.

## Các chức năng chính

### 1. Check-In

- **Mục đích**: Ghi nhận thời gian lái xe bắt đầu ca làm việc
- **Thông tin cần nhập**:
  - Mã lái xe (bắt buộc)
  - Thời gian check-in (bắt buộc)
  - Địa điểm check-in
  - Ghi chú (tùy chọn)

### 2. Check-Out

- **Mục đích**: Ghi nhận thời gian lái xe kết thúc ca làm việc
- **Thông tin cần nhập**:
  - Mã lái xe (bắt buộc)
  - Thời gian check-out (bắt buộc)
  - Địa điểm check-out
  - Tổng thời gian làm việc (tự động tính)
  - Trạng thái (bình thường/làm thêm/về sớm)
  - Ghi chú

### 3. Nhận Xe

- **Mục đích**: Ghi nhận việc lái xe nhận xe để sử dụng
- **Thông tin cần nhập**:
  - Mã lái xe (bắt buộc)
  - Biển số xe (bắt buộc)
  - Thời gian nhận xe (bắt buộc)
  - Địa điểm nhận xe
  - Số km hiện tại
  - Mức nhiên liệu
  - Kiểm tra tình trạng xe
  - Ghi chú

### 4. Trả Xe

- **Mục đích**: Ghi nhận việc lái xe trả xe sau khi sử dụng
- **Thông tin cần nhập**:
  - Mã lái xe (bắt buộc)
  - Biển số xe (bắt buộc)
  - Thời gian trả xe (bắt buộc)
  - Địa điểm trả xe
  - Số km cuối
  - Quãng đường đã đi (tự động tính)
  - Mức nhiên liệu cuối
  - Nhiên liệu đã tiêu thụ
  - Kiểm tra tình trạng xe
  - Báo cáo vấn đề phát sinh
  - Ghi chú

## Cấu trúc thư mục

```
src/views/business/DriverUtils/
├── index.vue                 # Trang chính với các tab
├── components/
│   ├── CheckIn.vue          # Component Check-In
│   ├── CheckOut.vue         # Component Check-Out
│   ├── ReceiveVehicle.vue   # Component Nhận xe
│   └── ReturnVehicle.vue    # Component Trả xe
└── README.md                # File hướng dẫn này
```

## API Endpoints

### Service: `src/services/driverUtilsService.js`

- `checkIn(data)` - Gửi thông tin check-in
- `checkOut(data)` - Gửi thông tin check-out
- `receiveVehicle(data)` - Gửi thông tin nhận xe
- `returnVehicle(data)` - Gửi thông tin trả xe
- `getDriverByCode(driverCode)` - Lấy thông tin lái xe
- `getVehicleByLicensePlate(licensePlate)` - Lấy thông tin xe
- `getRecentCheckIns(limit)` - Lấy lịch sử check-in gần đây
- `getRecentCheckOuts(limit)` - Lấy lịch sử check-out gần đây
- `getRecentVehicleReceives(limit)` - Lấy lịch sử nhận xe gần đây
- `getRecentVehicleReturns(limit)` - Lấy lịch sử trả xe gần đây

### API Paths: `src/infrastructure/apiPaths/driverUtilsPath.js`

- `/api/driver-utils/check-in`
- `/api/driver-utils/check-out`
- `/api/driver-utils/receive-vehicle`
- `/api/driver-utils/return-vehicle`
- `/api/driver-utils/driver/{driverCode}`
- `/api/driver-utils/vehicle/{licensePlate}`
- `/api/driver-utils/recent-check-ins`
- `/api/driver-utils/recent-check-outs`
- `/api/driver-utils/recent-vehicle-receives`
- `/api/driver-utils/recent-vehicle-returns`

## Routing

Route được định nghĩa trong `src/routers/operations.js`:

```javascript
{
    name: "DriverUtils",
    path: "/tien-ich-lai-xe",
    component: DriverUtilsView,
    meta: {
        title: "Tiện ích lái xe",
    },
}
```

## Tính năng bổ sung

### Lịch sử hoạt động

- Mỗi tab đều có phần hiển thị lịch sử gần đây
- Giúp lái xe theo dõi các hoạt động trước đó

### Hướng dẫn sử dụng

- Mỗi tab có phần hướng dẫn sử dụng
- Giúp lái xe hiểu rõ quy trình thực hiện

### Validation

- Các trường bắt buộc được đánh dấu rõ ràng
- Form validation để đảm bảo dữ liệu chính xác

### Responsive Design

- Giao diện tương thích với các thiết bị khác nhau
- Layout responsive cho mobile và desktop

## Lưu ý khi sử dụng

1. **Dữ liệu bắt buộc**: Các trường có dấu (\*) là bắt buộc phải nhập
2. **Thời gian**: Sử dụng định dạng datetime-local cho các trường thời gian
3. **Kiểm tra xe**: Luôn kiểm tra kỹ tình trạng xe trước khi nhận và sau khi trả
4. **Báo cáo vấn đề**: Ghi nhận ngay các vấn đề phát sinh trong quá trình sử dụng xe
5. **Lưu trữ**: Dữ liệu được lưu trữ và có thể truy xuất lại khi cần thiết

## Phát triển tương lai

- Tích hợp GPS để tự động xác định vị trí
- Tích hợp camera để chụp ảnh tình trạng xe
- Báo cáo thống kê chi tiết
- Tích hợp với hệ thống quản lý nhiên liệu
- Thông báo real-time cho quản lý
