Skip to main content

เมนูหลักสำหรับการปฏิบัติงาน

หน้านี้อธิบายเมนูที่ driver เห็นจริงจาก src/config/menu.config.ts และพฤติกรรมหน้าแรกจาก src/views/home/index.tsx

เมนูที่มีจริงในระบบ​

เมนูroutepermission
หน้าแรก/homedriver-dashboard:view
บันทึกการเติมน้ำมัน/ชาร์จไฟฟ้า/fuel-recorddriver-refuel-record:view
สมุดประจำรถ/vehicle-log-bookdriver-vehicle-record:view
บันทึกงาน Standby/standby-workdriver-standby-record:view
รายได้ของฉัน/incomedriver-my-income:view

หลักการแสดงเมนู​

  • เมนูทุกตัวถูกประกาศไว้ใน menu.config.ts
  • ก่อนแสดงผลจริง ระบบจะกรองเมนูผ่าน filterMenuByPermission
  • ถ้าบัญชีของคนขับไม่มี permission ของเมนูนั้น เมนูจะไม่แสดงใน sidebar

หน้าแรกของ driver ทำอะไรบ้าง​

หน้า /home รวมข้อมูล 2 ส่วนหลัก

1. ข้อมูลโปรไฟล์ของคนขับ​

ดึงจาก DriverContext ซึ่งเรียก /auth/me

ค่าที่หน้าใช้จริง:

  • fullName
  • vehicles[0].ownership
  • vehicles[0].vehicleType.name
  • vehicles[0].vehicleCode
  • phone
  • vehicles[0].workArea.name
  • profileImage

2. รายการเที่ยวรถของวันที่เลือก​

ดึงจาก useTripRecord(selectedDate) ซึ่งเรียก GET /driver/trip-record

หน้าจอจะส่งวันที่จาก PeriodFilter ไปเป็น selectedDate

Logic สถานะเที่ยวรถในหน้าแรก​

หน้า home ไม่ได้ใช้สถานะจาก backend ตรง ๆ อย่างเดียว แต่ map สถานะการ์ดใน UI เพิ่มจากเงื่อนไขดังนี้

เงื่อนไขสถานะที่แสดง
isDraft === falseCOMPLETED
isDraft === true และเวลารอบรถผ่านไปแล้วPENDING
isDraft === true และยังไม่ถึงเวลารอบรถSCHEDULED

การคำนวณนี้ใช้:

  • tripRecord.date
  • tripRecord.routeRound.time
  • เวลา current จาก dayjs()

ลำดับการใช้งานที่แนะนำ​

  1. เปิด หน้าแรก เพื่อตรวจดูงานของวัน
  2. เปิดรายละเอียดเที่ยวรถจากการ์ดงานที่ได้รับ
  3. ถ้ามี refuel หรือชาร์จไฟ ให้เข้า บันทึกการเติมน้ำมัน/ชาร์จไฟฟ้า
  4. ปิดวันด้วย สมุดประจำรถ
  5. ถ้ามีงานนอกตาราง ให้บันทึกผ่าน บันทึกงาน Standby
  6. ตรวจยอดที่ รายได้ของฉัน

การเข้าใช้งานระบบ​

driver เข้าระบบผ่านหน้า login ที่ route / หรือ /login

  • login page ใช้ GuestGuard
  • route หลักทั้งหมดใช้ AuthGuard
  • หลัง login สำเร็จ ระบบจะตรวจ userType
  • ถ้าไม่ใช่ COMPANY_DRIVER หรือ PARTNER_DRIVER ระบบจะไม่ให้เข้าต่อ

การออกจากระบบ​

  • มีปุ่ม ออกจากระบบ อยู่ส่วนล่างของ sidebar
  • ถูก render ผ่าน FooterMenuList

อ้างอิงโค้ด​

  • atp30-tos-driver/src/config/menu.config.ts
  • atp30-tos-driver/src/utils/filterMenuByPermission.ts
  • atp30-tos-driver/src/routes/LoginRoutes.tsx
  • atp30-tos-driver/src/routes/MainRoutes.tsx
  • atp30-tos-driver/src/views/home/index.tsx
  • atp30-tos-driver/src/contexts/DriverContext.tsx
  • atp30-tos-driver/src/layout/MainLayout/MenuList/FooterMenuList.tsx