ปรับ code รายการลงเวลาปฏิบัติงาน

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-11-24 09:48:30 +07:00
parent 0ddac48605
commit c1fce2e3c5
7 changed files with 96 additions and 61 deletions

View file

@ -48,13 +48,6 @@ const formData = reactive<FormDetail>({
fullName: "", fullName: "",
checkOutDescription: "", checkOutDescription: "",
}); });
watch(props, () => {
if (props.modal) {
if (props.detail) {
fetchDetailByid(props.detail.id);
}
}
});
/** /**
* function เรยกรายการลงเวลาตาม * function เรยกรายการลงเวลาตาม
@ -105,6 +98,13 @@ async function fetchDetailByid(id: string) {
function colsePopup() { function colsePopup() {
props.colse ? props.colse() : false; props.colse ? props.colse() : false;
} }
watch(
() => props.modal,
() => {
props.modal === true && props.detail && fetchDetailByid(props.detail.id);
}
);
</script> </script>
<template> <template>

View file

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onUnmounted } from "vue"; import { ref, onMounted } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
@ -10,7 +10,6 @@ import type {
DataResTime, DataResTime,
TableRowsTime, TableRowsTime,
} from "@/modules/09_leave/interface/response/work"; } from "@/modules/09_leave/interface/response/work";
import type { DataOption } from "@/modules/09_leave/interface/index/Main";
/** importComponents */ /** importComponents */
import ToolBar from "@/modules/09_leave/components/1_Work/ToolBar.vue"; import ToolBar from "@/modules/09_leave/components/1_Work/ToolBar.vue";
@ -26,13 +25,14 @@ const { date2Thai, dateToISO, showLoader, hideLoader, messageError } = mixin;
const $q = useQuasar(); // noti quasar const $q = useQuasar(); // noti quasar
/** ตัวแปร querySting*/
const keyword = ref<string>(""); const keyword = ref<string>("");
const page = ref<number>(1); const page = ref<number>(1);
const rowsPerPage = ref<number>(3); const rowsPerPage = ref<number>(10);
const maxPage = ref<number>(1); const maxPage = ref<number>(1);
const filetStatus = ref<string>("LATE"); const filetStatus = ref<string>("ALL");
/** ข้อมูลหัวตาราง*/ /** ข้อมูลตาราง*/
const columns = ref<QTableProps["columns"]>([ const columns = ref<QTableProps["columns"]>([
{ {
name: "no", name: "no",
@ -119,6 +119,7 @@ const visibleColumns = ref<string[]>([
]); ]);
const rows = ref<TableRowsTime[]>([]); const rows = ref<TableRowsTime[]>([]);
/** function เรียกข้อมูล รายการลงเวลาที่ประมวลผลแล้ว*/
async function fetchListTimeRecord() { async function fetchListTimeRecord() {
const date = new Date(workStore.selectDate as string | Date); const date = new Date(workStore.selectDate as string | Date);
const querySting = { const querySting = {
@ -168,6 +169,13 @@ async function fetchListTimeRecord() {
}); });
} }
/**
* function updatePaging และเรยกขอมลอกรอบ
* @param params pagin
* @param currentPage page
* @param key คำคนหา
* @param status สถานะ
*/
async function updatePaging( async function updatePaging(
params: any, params: any,
currentPage: number, currentPage: number,
@ -183,13 +191,10 @@ async function updatePaging(
/** Hook*/ /** Hook*/
onMounted(async () => { onMounted(async () => {
console.log("TAB1");
workStore.columns = columns.value; workStore.columns = columns.value;
workStore.visibleColumns = visibleColumns.value; workStore.visibleColumns = visibleColumns.value;
await fetchListTimeRecord(); await fetchListTimeRecord();
}); });
onUnmounted(() => {});
</script> </script>
<template> <template>
<ToolBar :filetStatus="filetStatus" @update:pagination="updatePaging" /> <ToolBar :filetStatus="filetStatus" @update:pagination="updatePaging" />

View file

@ -5,7 +5,6 @@ import config from "@/app.config";
/** importType*/ /** importType*/
import type { QTableProps } from "quasar"; import type { QTableProps } from "quasar";
/** import Type */
import type { import type {
DataResLog, DataResLog,
TableRows, TableRows,
@ -23,7 +22,7 @@ const mixin = useCounterMixin();
const workStore = useWorklistDataStore(); const workStore = useWorklistDataStore();
const { date2Thai, dateToISO, showLoader, hideLoader } = mixin; const { date2Thai, dateToISO, showLoader, hideLoader } = mixin;
/** ข้อมูลหัวตาราง*/ /** ข้อมูลตาราง*/
const columns = ref<QTableProps["columns"]>([ const columns = ref<QTableProps["columns"]>([
{ {
name: "no", name: "no",
@ -88,16 +87,15 @@ const visibleColumns = ref<string[]>([
"checkOutTime", "checkOutTime",
"checkOutLocation", "checkOutLocation",
]); ]);
const rows = ref<TableRows[]>([]); const rows = ref<TableRows[]>([]);
/** QueryString*/ /** ตัวแปร QueryString*/
const keyword = ref<string>(""); const keyword = ref<string>("");
const page = ref<number>(1); const page = ref<number>(1);
const rowsPerPage = ref<number>(2); const rowsPerPage = ref<number>(2);
const maxPage = ref<number>(1); const maxPage = ref<number>(1);
/** เรียกข้อมูลรายการลงเวลาปฏิบัติงาน (รายการลงเวลา) */ /** function เรียกข้อมูลรายการลงเวลาปฏิบัติงาน (รายการลงเวลา) */
async function fetchListLogRecord() { async function fetchListLogRecord() {
showLoader(); showLoader();
const date = new Date(workStore.selectDate as string | Date); const date = new Date(workStore.selectDate as string | Date);

View file

@ -37,18 +37,29 @@ const props = defineProps({
}); });
const emit = defineEmits(["update:pagination"]); const emit = defineEmits(["update:pagination"]);
const updateProp = (newPagination: any, page: number) => {
// event parent component props
emit("update:pagination", newPagination, page);
};
/** Hook */
onMounted(() => {});
/** ข้อมูล popup */ /** ข้อมูล popup */
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
const dataDetail = ref<any>([]); const dataDetail = ref<any>([]);
/** pagination */
const currentPage = ref<number>(1);
const pagination = ref({
descending: false,
page: Number(props.page),
rowsPerPage: props.rowsPerPage,
});
/**
* function ปเดท props
* @param newPagination paging
* @param page หนาป
*/
function updateProp(newPagination: any, page: number) {
// event parent component props
emit("update:pagination", newPagination, page);
}
/** /**
* Function openPopup และแสดงรายละเอยด * Function openPopup และแสดงรายละเอยด
* @param data อมลรายละเอยด * @param data อมลรายละเอยด
@ -63,14 +74,7 @@ function colseDeyail() {
modal.value = false; modal.value = false;
} }
/** pagination */ /** function Callblck ทำงานเมื่อ pagination มีการเปลี่ยนแปลง */
const pagination = ref({
descending: false,
page: Number(props.page),
rowsPerPage: props.rowsPerPage,
});
const currentPage = ref<number>(1);
watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => { watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => {
updateProp(pagination.value, currentPage.value); updateProp(pagination.value, currentPage.value);
}); });

View file

@ -1,6 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue"; import { ref } from "vue";
/** importType*/
import type { DataOption } from "@/modules/09_leave/interface/index/Main";
/** importStores */ /** importStores */
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useWorklistDataStore } from "@/modules/09_leave/stores/WorkStore"; import { useWorklistDataStore } from "@/modules/09_leave/stores/WorkStore";
@ -9,6 +12,7 @@ const workStore = useWorklistDataStore();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { date2Thai } = mixin; const { date2Thai } = mixin;
/** props จาก Tab 1*/
const props = defineProps({ const props = defineProps({
filetStatus: { filetStatus: {
type: String, type: String,
@ -17,32 +21,49 @@ const props = defineProps({
}); });
const emit = defineEmits(["update:pagination"]); const emit = defineEmits(["update:pagination"]);
const updateProp = (newPagination: any, keyword: string, status: string) => {
// event parent component props
emit("update:pagination", newPagination, 1, keyword, status);
};
const option = ref<any[]>([ /** ตัแปร filter**/
const filetStatus = ref<string>(
props.filetStatus?.toString() || "default-value"
);
const keyword = ref<string>("");
const optionMain = ref<DataOption[]>([
{ id: "ALL", name: "ทั้งหมด" }, { id: "ALL", name: "ทั้งหมด" },
{ id: "NORMAL", name: "ปกติ" }, { id: "NORMAL", name: "ปกติ" },
{ id: "LATE", name: "สาย" }, { id: "LATE", name: "สาย" },
{ id: "ABSENT", name: "ขาดราชการ" }, { id: "ABSENT", name: "ขาดราชการ" },
]); ]);
const option = ref<DataOption[]>(optionMain.value);
// const filetStatus = ref<string>( /**
// props.filetStatus?.toString() || "default-value" * function updateProps
// ); * @param newPagination paging
* @param keyword คำค
// const filetStatus = ref<string>(props.filetStatus.toString()); * @param status สถานะ
const filetStatus = ref<string>( */
props.filetStatus?.toString() || "default-value" function updateProp(newPagination: any, keyword: string, status: string) {
); // event parent component props
const keyword = ref<string>(""); emit("update:pagination", newPagination, 1, keyword, status);
}
/** function ค้นหาข้อมูลแล้วไปอัปเดท props*/
function filterFn() { function filterFn() {
updateProp([], keyword.value, filetStatus.value); updateProp([], keyword.value, filetStatus.value);
} }
/**
* function นหาขอมลใน option
* @param val คำคนหา
* @param update function
*/
function filterOptionFn(val: string, update: Function) {
update(() => {
option.value = optionMain.value.filter(
(e: any) => e.name.search(val) !== -1
);
});
}
/** Functicon หาค่ามากสุดและปิดวันที่ไม่ให้เลือกวันล่วงหน้า*/ /** Functicon หาค่ามากสุดและปิดวันที่ไม่ให้เลือกวันล่วงหน้า*/
function calculateMaxDate() { function calculateMaxDate() {
const today = new Date(); const today = new Date();
@ -104,6 +125,7 @@ function calculateMaxDate() {
v-model="filetStatus" v-model="filetStatus"
:options="option" :options="option"
@update:model-value="filterFn" @update:model-value="filterFn"
@filter="filterOptionFn"
> >
<template v-slot:no-option> <template v-slot:no-option>
<q-item> <q-item>

View file

@ -9,14 +9,23 @@ const workStore = useWorklistDataStore();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { date2Thai } = mixin; const { date2Thai } = mixin;
/** คำค้นหา*/
const keyword = ref<string>("");
const emit = defineEmits(["update:pagination"]); const emit = defineEmits(["update:pagination"]);
const updateProp = (newPagination: any, keyword: string) => {
/** ตัวแปร filter*/
const keyword = ref<string>("");
const pagination = ref({
page: 1,
});
/**
* function updateProps
* @param newPagination paging
* @param keyword คำคนหา
*/
function updateProp(newPagination: any, keyword: string) {
// event parent component props // event parent component props
emit("update:pagination", newPagination, 1, keyword); emit("update:pagination", newPagination, 1, keyword);
}; }
/** Functicon หาค่ามากสุดและปิดวันที่ไม่ให้เลือกวันล่วงหน้า*/ /** Functicon หาค่ามากสุดและปิดวันที่ไม่ให้เลือกวันล่วงหน้า*/
function calculateMaxDate() { function calculateMaxDate() {
@ -25,10 +34,7 @@ function calculateMaxDate() {
return today; return today;
} }
/** pagination */ /** function ค้นหาข้อมูล แล้ว อัปเดท Props*/
const pagination = ref({
page: 1,
});
function filterFn() { function filterFn() {
updateProp(pagination.value, keyword.value); updateProp(pagination.value, keyword.value);
} }

View file

@ -33,11 +33,11 @@ export const useWorklistDataStore = defineStore("work", () => {
*/ */
function convertSatatus(val: string) { function convertSatatus(val: string) {
switch (val) { switch (val) {
case "normal": case "NORMAL ":
return "ปกติ"; return "ปกติ";
case "late": case "LATE":
return "สาย"; return "สาย";
case "absent": case "ABSENT":
return "ขาดราชการ"; return "ขาดราชการ";
} }
} }