การดูและบันทึกเที่ยวรถ
ในหน้านี้ท่านจะเห็นรายการงานที่ได้รับมอบหมายทั้งหมดในแต่ละวัน รวมถึงสถานะและเครื่องมือในการกรองข้อมูล
ส่วนประกอบของรายการเที่ยวรถ (Trip Item)
ในแต่ละแถวหรือบัตรงาน จะประกอบด้วยข้อมูลสำคัญดังนี้:
- เวลาและประเภท: รอบเวลาเดินรถ เช่น
06:00 (In)หรือ17:30 (Out) - ข้อมูลเส้นทาง: ชื่อสายรถที่ท่านต้องวิ่ง
- ชื่อลูกค้า: บริษัทผู้ว่าจ้างที่ท่านต้องไปรับ-ส่งผู้โดยสาร
- สถานะ: ระบุขั้นตอนปัจจุบัน (เช่น ยังไม่ถึงเวลา, รอบันทึก, เสร็จสิ้น, อนุมัติแล้ว)
การดูและกรองตารางเที่ยวรถตามวัน
ท่านสามารถดูงานของวันอื่นๆ ได้โดยใช้ ตัวเลือกวันที่ (Date Picker) ที่ส่วนบนของหน้าจอ:
- วันนี้: แสดงงานที่ต้องปฏิบัติในปัจจุบัน
- พรุ่งนี้: ดูแผนงานล่วงหน้า 1 วัน
- เมื่อวานนี้: ตรวจสอบงานที่ผ่านมาแล้ว
ค่าเริ่มต้นของหน้าเป็น วันนี้ และระบบจะยิง GET /driver/trip-record?selectedDate=YYYY-MM-DD
ตามวันที่ที่เลือกจริงทุกครั้ง ไม่ได้ใช้ค่าช่วงเวลาแบบคร่าว ๆ
ถ้าเลื่อนหน้าลงไปสุด ระบบจะโหลดรายการเพิ่มแบบแบ่งหน้าให้อัตโนมัติ แต่จะเริ่มโหลดเพิ่มก็ต่อเมื่อมีการ scroll จริงแล้ว เพื่อไม่ให้หน้าแรกยิง query ซ้ำโดยไม่จำเป็น
การบันทึกเที่ยวรถ (Trip Record)
เมื่อท่านต้องเริ่มงานหรือจบงานในแต่ละเที่ยว ให้ปฏิบัติดังนี้:
การเริ่มงาน (Start Trip)
- เลือกเที่ยวรถที่มีสถานะ "รอบันทึก" แล้วกดปุ่ม "เริ่ม"
- ถ่ายรูปมาตรวัดระยะทาง (Odometer) เริ่มต้นให้ชัดเจน
- กรอกตัวเลขเลขไมล์เริ่มต้นลงในระบบ แล้วกด "ถัดไป" หรือ "บันทึก"
การจบงาน (End Trip)
- เมื่อถึงจุดหมาย ให้กดปุ่ม "ดำเนินการต่อ" ในเที่ยวรถเดิม
- ถ่ายรูปมาตรวัดระยะทางเมื่อสิ้นสุดงาน
- กรอกตัวเลขเลขไมล์สิ้นสุด และระบุ จำนวนผู้โดยสาร (Passenger Amount)
- ตรวจสอบความถูกต้องแล้วกด "ส่งข้อมูล"
สิ่งที่ฟอร์มบังคับตรวจจากโค้ดจริง
เมื่อเปิดฟอร์มบันทึกหรือแก้ไขเที่ยวรถ ระบบตรวจข้อมูลอย่างน้อยดังนี้:
- ต้องเลือกรถ (
รหัสรถ) - ต้องมี
วันที่และเวลาเริ่มต้น - ต้องมี
วันที่และเวลาเสร็จสิ้น เวลาเริ่มต้นต้องน้อยกว่าเวลาสิ้นสุด- ต้องกรอก
เลขไมล์เริ่มต้นและเลขไมล์สิ้นสุด เลขไมล์เริ่มต้นต้องน้อยกว่าเลขไมล์สิ้นสุด- ต้องกรอก
จำนวนผู้โดยสาร
นอกจากนี้ เมื่อเลือก รหัสรถ ระบบจะเติม ประเภทรถ ให้ตามข้อมูล master ที่ผูกกับรถคันนั้นทันที
Date/Time Picker บนมือถือ
ในหน้าจอบันทึกเที่ยวรถแบบ mobile ระบบไม่ได้ใช้ native date input ตรง ๆ แต่เปิดเป็น Bottom Sheet ที่มีทั้งปฏิทินและตัวเลือกเวลา
สิ่งที่ทำได้จากหน้าจอนี้:
- เลือกวันจากปฏิทิน
- เลือกชั่วโมงและนาทีแบบ 24 ชั่วโมง
- กดปุ่มลัด
วันนี้เพื่อกระโดดกลับมาวันและเวลาปัจจุบันอย่างรวดเร็ว
พฤติกรรมนี้ช่วยให้กรอกเวลาเริ่ม/จบงานได้สม่ำเสมอกว่าเดิม โดยเฉพาะบนมือถือ
หลังจากกดบันทึกจะเกิดอะไรขึ้น
- ถ้ากด
บันทึกร่างระบบจะส่งisDraft=true - ถ้ากด
บันทึกข้อมูลระบบจะส่งisDraft=false - หลังบันทึกสำเร็จ query ของหน้า detail และรายการเที่ยวรถหน้า Home จะถูก refresh ตามข้อมูลล่าสุด
ผลคือเมื่อกลับไปหน้า Home หรือเปิดดูรายการเดิมอีกครั้ง ผู้ใช้ควรเห็นค่าที่เพิ่งบันทึกไว้ทันที โดยไม่ต้องปิดแอปหรือ reload เอง
อ้างอิงโค้ดล่าสุด
/Users/chanchaitasujai/Project-ATP30/atp30-tos-driver/src/views/home/index.tsx/Users/chanchaitasujai/Project-ATP30/atp30-tos-driver/src/hooks/query/useTripRecord.ts/Users/chanchaitasujai/Project-ATP30/atp30-tos-driver/src/views/trip-record/edit/index.tsx/Users/chanchaitasujai/Project-ATP30/atp30-tos-driver/src/hooks/query/useTripRecordMutation.ts/Users/chanchaitasujai/Project-ATP30/atp30-tos-driver/src/components/DateTimeField.tsx
:::warning ข้อควรระวัง การบันทึกเลขไมล์และรูปถ่ายที่ชัดเจน มีผลโดยตรงต่อการคำนวณคะแนนประสิทธิภาพ (X-Ratio) และความถูกต้องของรายได้ของท่าน :::