Skip to main content

ĐẶT LỊCH

 

 

image.png
Màn hình 1

 

1. Màn hình Danh sách Lịch Checklist (Calendar View)

Tên trường / Chức năng Loại (Type) Mô tả giao diện (UI) Logic xử lý (System/Business Logic)
Tab View Button Group

- Hiển thị 2 nút: "Lịch" và "Danh sách".

- Mặc định chọn: Tab "Lịch".
- Trạng thái Active: Màu nền tím nhạt, chữ tím đậm.

Khi switch tab, hệ thống render lại dữ liệu hiển thị theo dạng view tương ứng (Calendar view hoặc List view).
Thanh tìm kiếm Input Text

- Placeholder: "Tìm theo tên lịch...".


- Icon kính lúp ở bên phải.

- Điều kiện tìm: So khớp chuỗi ký tự gần đúng (LIKE %keyword%) với trường "Tên lịch checklist".


- Phạm vi dữ liệu: Query tất cả các lịch trong quá khứ + Lịch hiện tại + Lịch tương lai (trong phạm vi 30 ngày kể từ ngày hiện tại đối với lịch có tần suất).

Bộ lọc Địa điểm Dropdown (Multi-select)

- Hiển thị danh sách các địa điểm đã được cấu hình (site)


- Cho phép tích chọn nhiều.

- Cho phép nhập tìm kiếm theo tên và mã địa điểm

- Quan hệ OR giữa các giá trị chọn.

Bộ lọc Phân loại Dropdown (Multi-select) - Hiển thị danh sách loại checklist. - Lọc theo category_id.
Bộ lọc Nhãn dán Dropdown (Multi-select) - Hiển thị danh sách Tags/Label. - Lọc theo tag_id.
Bộ lọc Năm Dropdown - Hiển thị số năm (VD: 2025, 2026).

- Mặc định: Get Current Year của hệ thống để hiển thị.


- Khi thay đổi, reload lại lịch theo năm chọn.

Bộ lọc Tháng Dropdown - Hiển thị tháng (Jan - Dec).

- Mặc định: Get Current Month của hệ thống.


- Khi thay đổi, reload lại lịch theo tháng chọn.

Lưới lịch (Calendar Grid) UI Component

- Lưới 7 cột (Su - Sa).


- Các ngày có sự kiện: Hiển thị chấm tròn màu (theo trạng thái) hoặc tên vắn tắt.


- Ô ngày hiện tại: Highlight viền hoặc màu nền khác biệt.

- Click vào ô trống (Ngày chưa có lịch): Gọi sự kiện mở Modal "Tạo mới" (Màn hình 2). Truyền tham số start_date = Ngày vừa click.


- Click vào item lịch: Gọi API lấy chi tiết lịch -> Mở Drawer "Chi tiết" (Màn hình 3).

Nút "Đặt lịch" Button

- Nút màu tím (Primary Color).


- Icon dấu cộng (+).

- Sự kiện onClick: Mở Modal "Tạo mới lịch checklist".

2. Màn hình Tạo mới Đặt lịch


2.1. Màn hình tạo mới với tần suất 1 lần

 

image.png
Màn hình 2

 

Khu vực Tên trường Bắt buộc Mô tả giao diện (UI) Logic xử lý (System/Business Logic)
Header Nút Đóng / Lưu -

- Nút "Đóng": Góc phải trên.


- Nút "Lưu": Nút màu tím nổi bật.

- Đóng: Đóng modal, không lưu dữ liệu, clear form.


- Lưu: Trigger validate form -> Nếu Pass -> Gọi API CreateSchedule -> Thông báo thành công -> Reload lại lịch.

Thông tin chung Tên lịch checklist Có

- Input text.


- Hiển thị bộ đếm ký tự góc phải (0/200).

- Validate: Không được để trống.


- Validate: Max length = 200 ký tự.

  Biểu mẫu sử dụng Có

- Dropdown single select.


- Có dòng note hướng dẫn bên dưới.

- Load danh sách Template đang Active.


- Khi chọn, hệ thống mapping ID questionnaire vào lịch.

Thực hiện Người thực hiện Có

 

1. Trạng thái đóng:


- Hiển thị input box.


- Placeholder: "Chọn người thực hiện".



2. Trạng thái mở (Dropdown):


- Có 2 Tab: Cá nhân và Nhóm.


- Có thanh tìm kiếm (Search bar) trên cùng.


- Nút "Lưu" màu tím ở dưới cùng của dropdown.



3. Tab Cá nhân (Default):


- List user kèm thông tin bổ sung (Role/Location).


- Mỗi dòng có Checkbox hoặc cơ chế chọn nhiều.


- Đã chọn: Hiển thị dấu tích (Checkmark) bên phải.



4. Tab Nhóm:


- List danh sách các nhóm (Nhóm 1, Nhóm 2...).


- Cơ chế chọn: Single select (Chọn 1).

 

1. Logic Tìm kiếm:


- Filter danh sách user/nhóm theo từ khóa nhập vào (Local search hoặc API search).



2. Logic Tab Cá nhân (Multi-select):


- Cho phép tích chọn nhiều User ID vào mảng selected_users.


- Quy tắc Reset: Ngay khi user thực hiện chọn (click) vào 1 user bất kỳ tại tab này -> Hệ thống tự động Clear (Xóa rỗng) giá trị của selected_group_id (nếu trước đó đã chọn nhóm).



3. Logic Tab Nhóm (Single-select):


- Chỉ cho phép chọn duy nhất 1 Group ID vào biến selected_group_id.


- Quy tắc Reset: Ngay khi user thực hiện chọn (click) vào 1 nhóm bất kỳ -> Hệ thống tự động Clear (Xóa rỗng) toàn bộ mảng selected_users (nếu trước đó đã chọn cá nhân).



4. Nút Lưu (trong dropdown):


- Sự kiện: Đóng dropdown.


- Hiển thị text lên input box:


+ Nếu chọn Cá nhân: Hiển thị tên các user (cách nhau dấu phẩy) hoặc dạng Tags.


+ Nếu chọn Nhóm: Hiển thị tên nhóm.

  Địa điểm thực hiện Không - Dropdown Multi-select. - Lưu danh sách site_id
Thời gian Múi giờ Không - Dropdown chọn múi giờ. - Mặc định: Auto-detect múi giờ theo setting của User hiện tại (Client time).
  Thời lượng thực hiện Có

- 2 ô Input: Ngày bắt đầu (Date) + Giờ (Time) và Ngày kết thúc + Giờ.


- Note: "Mỗi lịch được thực hiện trong X giờ".

- Validate: End_Time phải lớn hơn Start_Time.


- Hệ thống tự tính toán Duration = End - Start để hiển thị gợi ý.

  Tần suất Có - Dropdown select.

- Mặc định: Set giá trị là "Một lần" (One-time).


- Nếu chọn loại khác (Hàng ngày/tuần...), hiển thị thêm UI cấu hình lặp lại (Recurrence Rules).

  Hoàn thành sau hạn Không

- Toggle Switch (On/Off).


- Note: "Cho phép nộp trễ tới X ngày".

- OFF (False): Đến End_Time trạng thái chuyển sang "Hết hạn", không cho submit.


- ON (True): Cho phép submit sau End_Time nhưng đánh dấu là "Late".


3. Màn hình Chi tiết Lịch (View Mode)

Tên trường / Nút Loại hiển thị Mô tả giao diện (UI) Logic xử lý (System/Business Logic)
Header Nút Action

- Nút "Tạm ngừng": Style Danger/Warning.


- Nút "Sửa": Style Primary.


- Mã lịch: Hiển thị ID dạng text (Read-only).

- Tạm ngừng: Update status = Inactive (hoặc Paused). Ngăn chặn sinh ra checklist mới từ lịch này.


- Sửa: Mở lại form Tạo mới (Màn hình 2) nhưng bind dữ liệu cũ vào các trường để user chỉnh sửa.

Thông tin chính Tiêu đề & Trạng thái

- Tiêu đề: Font to, in đậm.


- Trạng thái: Badge màu (Xanh: Active, Xám: Inactive).

- Hiển thị đúng tên lịch đã lưu.


- Mapping trạng thái từ DB ra màu sắc tương ứng.

Chi tiết Các trường thông tin

- Hiển thị dạng Label: Value.


- Các trường: Biểu mẫu, Người thực hiện, Địa điểm, Múi giờ...

- Tất cả đều ở trạng thái Read-only (Chỉ xem).


- Dữ liệu Người thực hiện: Nếu > 5 người, hiển thị Avatar stack (+5) để tiết kiệm diện tích.

Cấu hình Tần suất & Deadline

- Tần suất: Hiển thị text.


- Hoàn thành sau hạn: Text "Cho phép" / "Không".

- Hiển thị cấu hình hiện tại của lịch.