ui specialTime

เพิ่มตัวแปร checkIn checkOut
This commit is contained in:
AnandaTon 2023-11-07 12:03:20 +07:00
parent 02c8376b7f
commit f8843a2990
5 changed files with 34 additions and 44 deletions

View file

@ -14,24 +14,22 @@ const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { dialogConfirm, date2Thai } = mixin; const { dialogConfirm, date2Thai } = mixin;
const currentDate = ref<Date | null>(new Date()); const currentDate = ref<Date | null>(new Date());
const startTimeMorningRef = ref<Object | null>(null); const checkInRef = ref<Object | null>(null);
const endTimeMorningRef = ref<Object | null>(null); const checkOutRef = ref<Object | null>(null);
const checkInStatusRef = ref<Object | null>(null); const checkInStatusRef = ref<Object | null>(null);
const checkOutStatusRef = ref<Object | null>(null); const checkOutStatusRef = ref<Object | null>(null);
const formData = reactive<dataRowRound>({ const formData = reactive<dataRowRound>({
startTimeMorning: "", checkIn: "",
endTimeMorning: "", checkOut: "",
startTimeAfternoon: "",
endTimeAfternoon: "",
note: "", note: "",
checkInStatus: "", checkInStatus: "",
checkOutStatus: "", checkOutStatus: "",
}); });
const objectRound: MyObjectRoundRef = { const objectRound: MyObjectRoundRef = {
startTimeMorning: startTimeMorningRef, checkIn: checkInRef,
endTimeMorning: endTimeMorningRef, checkOut: checkOutRef,
checkInStatus: checkInStatusRef, checkInStatus: checkInStatusRef,
checkOutStatus: checkOutStatusRef, checkOutStatus: checkOutStatusRef,
}; };
@ -81,17 +79,13 @@ watch(
() => props.modal, () => props.modal,
(newDetailData, oldDetailData) => { (newDetailData, oldDetailData) => {
if (props.editCheck === "APPROVE") { if (props.editCheck === "APPROVE") {
formData.startTimeMorning = ""; formData.checkIn = "";
formData.endTimeMorning = ""; formData.checkOut = "";
formData.startTimeAfternoon = "";
formData.endTimeAfternoon = "";
formData.note = ""; formData.note = "";
} else if (props.editCheck === "PENDING") { } else if (props.editCheck === "PENDING") {
if (props.detailData) { if (props.detailData) {
formData.startTimeMorning = props.detailData.startTimeMorning; formData.checkIn = props.detailData.checkIn;
formData.endTimeMorning = props.detailData.endTimeMorning; formData.checkOut = props.detailData.checkOut;
formData.startTimeAfternoon = props.detailData.startTimeAfternoon;
formData.endTimeAfternoon = props.detailData.endTimeAfternoon;
formData.note = props.detailData.note; formData.note = props.detailData.note;
} }
} }
@ -174,27 +168,21 @@ watch(
<div class="row justify-between q-my-sm items-start"> <div class="row justify-between q-my-sm items-start">
<p class="q-ma-none mt">เวลาเขางาน</p> <p class="q-ma-none mt">เวลาเขางาน</p>
<q-input <q-input
ref="startTimeMorningRef" ref="checkInRef"
class="inputgreen" class="inputgreen"
dense dense
lazy-rules lazy-rules
borderless borderless
outlined outlined
v-model="formData.startTimeMorning" v-model="formData.checkIn"
:rules="[ :rules="[
(val) => !!val || 'กรุณากรอกเวลาเข้างาน', (val) => !!val || 'กรุณากรอกเวลาเข้างาน',
(val) => { (val) => {
if (val && formData.endTimeMorning) { if (val && formData.checkOut) {
if (val > formData.endTimeMorning) { if (val > formData.checkOut) {
return 'ต้องน้อยกว่าเวลาออกงาน'; return 'ต้องน้อยกว่าเวลาออกงาน';
} }
if ( if (val === formData.checkOut) {
val >= formData.startTimeAfternoon &&
val <= formData.endTimeAfternoon
) {
return 'ช่วงเวลาทับซ้อนกับช่วงบ่าย';
}
if (val === formData.endTimeMorning) {
return 'เวลาเข้างานช่วงเช้าต้องไม่ซ้ำกับออกงานเช้า'; return 'เวลาเข้างานช่วงเช้าต้องไม่ซ้ำกับออกงานเช้า';
} }
} }
@ -210,27 +198,21 @@ watch(
<div class="row items-start q-my-sm justify-between"> <div class="row items-start q-my-sm justify-between">
<p class="q-ma-none mt">เวลาออกงาน</p> <p class="q-ma-none mt">เวลาออกงาน</p>
<q-input <q-input
ref="endTimeMorningRef" ref="checkOutRef"
class="inputgreen" class="inputgreen"
dense dense
v-model="formData.endTimeMorning" v-model="formData.checkOut"
lazy-rules lazy-rules
borderless borderless
outlined outlined
:rules="[ :rules="[
(val) => !!val || 'กรุณากรอกเวลาออกงาน', (val) => !!val || 'กรุณากรอกเวลาออกงาน',
(val) => { (val) => {
if (val && formData.startTimeMorning) { if (val && formData.checkIn) {
if (val < formData.startTimeMorning) { if (val < formData.checkIn) {
return 'ต้องมากกว่าเวลาเข้างาน'; return 'ต้องมากกว่าเวลาเข้างาน';
} }
if ( if (val === formData.checkIn) {
val >= formData.startTimeAfternoon &&
val <= formData.endTimeAfternoon
) {
return 'ช่วงเวลาทับซ้อนกับช่วงบ่าย';
}
if (val === formData.startTimeMorning) {
return 'เวลาออกงานช่วงเช้าต้องไม่ซ้ำกับเข้างานเช้า'; return 'เวลาออกงานช่วงเช้าต้องไม่ซ้ำกับเข้างานเช้า';
} }
} }

View file

@ -10,5 +10,7 @@ interface ListData {
status: string; status: string;
checkInStatus: string; checkInStatus: string;
checkOutStatus: string; checkOutStatus: string;
checkOut: string;
checkIn: string;
} }
export type { ListData }; export type { ListData };

View file

@ -8,17 +8,15 @@ interface DataRows {
status: string; status: string;
} }
interface dataRowRound { interface dataRowRound {
startTimeMorning: string; checkIn: string;
endTimeMorning: string; checkOut: string;
startTimeAfternoon: string;
endTimeAfternoon: string;
checkInStatus: string; checkInStatus: string;
checkOutStatus: string; checkOutStatus: string;
note: string; note: string;
} }
interface MyObjectRoundRef { interface MyObjectRoundRef {
startTimeMorning: object | null; checkIn: object | null;
endTimeMorning: object | null; checkOut: object | null;
checkInStatus: object | null; checkInStatus: object | null;
checkOutStatus: object | null; checkOutStatus: object | null;
[key: string]: any; [key: string]: any;

View file

@ -31,6 +31,8 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => {
endTimeMorning: e.endTimeMorning, endTimeMorning: e.endTimeMorning,
startTimeAfternoon: e.startTimeAfternoon, startTimeAfternoon: e.startTimeAfternoon,
endTimeAfternoon: e.endTimeAfternoon, endTimeAfternoon: e.endTimeAfternoon,
checkIn: e.checkOut,
checkOut: e.checkOut,
status: e.status, status: e.status,
checkInStatus: convertStatus(e.checkInStatus), checkInStatus: convertStatus(e.checkInStatus),
checkOutStatus: convertStatus(e.checkOutStatus), checkOutStatus: convertStatus(e.checkOutStatus),

View file

@ -76,6 +76,8 @@ onMounted(async () => {
status: "PENDING", status: "PENDING",
checkInStatus: "normal", checkInStatus: "normal",
checkOutStatus: "late", checkOutStatus: "late",
checkIn: "08:00",
checkOut: "12.00",
}, },
{ {
id: "00000000-0000-0000-0000-000000000000", id: "00000000-0000-0000-0000-000000000000",
@ -89,6 +91,8 @@ onMounted(async () => {
status: "APPROVE", status: "APPROVE",
checkInStatus: "normal", checkInStatus: "normal",
checkOutStatus: "late", checkOutStatus: "late",
checkIn: "08:00",
checkOut: "12.00",
}, },
{ {
id: "00000000-0000-0000-0000-000000000000", id: "00000000-0000-0000-0000-000000000000",
@ -102,6 +106,8 @@ onMounted(async () => {
status: "REJECT", status: "REJECT",
checkInStatus: "normal", checkInStatus: "normal",
checkOutStatus: "late", checkOutStatus: "late",
checkIn: "08:00",
checkOut: "12.00",
}, },
]); ]);
}); });