ประวัติการลงเวลา

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-11-01 11:52:22 +07:00
parent 7d602dbdf9
commit 73bca6f4e9
4 changed files with 250 additions and 12 deletions

View file

@ -3,8 +3,8 @@
<div class="col-xs-12 col-sm-12 col-md-12">
<q-card flat class="row col-12 cardNone">
<div :class="getClass(checkIn)">
<!-- <div class="col-2">
<q-btn
<div class="col-2">
<!-- <q-btn
icon="mdi-arrow-left"
unelevated
round
@ -12,15 +12,15 @@
flat
color="white"
@click="router.go(-1)"
/>
</div> -->
<span class="text-body1 text-weight-bold col-12 text-center">
/> -->
</div>
<span class="text-body1 text-weight-bold col-8 text-center">
<span v-if="checkIn">ลงเวลาเข้างาน</span>
<span v-else>ลงเวลาออกงาน</span>
</span>
<!-- <div class="col-2 text-right">
<div class="col-2 text-right">
<q-btn
icon="mdi-history"
icon="history"
unelevated
rounded
dense
@ -30,7 +30,7 @@
:class="$q.screen.gt.xs ? 'q-px-sm' : ''"
@click="router.push('/check-in/history')"
/>
</div> -->
</div>
</div>
<div class="col-12 q-pa-md text-grey-9">
<div class="col-12 row justify-center">
@ -257,12 +257,12 @@
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { useCounterMixin } from "@/stores/mixin";
// import { useRouter } from "vue-router";
import { useRouter } from "vue-router";
import moment, { Moment } from "moment";
const mixin = useCounterMixin();
const { date2Thai } = mixin;
// const router = useRouter();
const router = useRouter();
const dateNow = ref(new Date());
const Thai = ref(dateNow.value);
const checkIn = ref(true); // () true 2 ()

View file

@ -108,7 +108,7 @@
</div>
</template>
<script setup lang="ts">
import { ref, useAttrs } from "vue";
import { ref, useAttrs, defineProps, defineEmits } from "vue";
const attrs = ref<any>(useAttrs());
const table = ref<any>(null);
const filterRef = ref<any>(null);

View file

@ -0,0 +1,233 @@
<template>
<div class="col-12 row justify-center">
<div class="col-xs-12 col-sm-12 col-md-12">
<q-card flat class="row col-12 cardNone">
<div
class="bg-secondary text-white col-12 row items-center q-px-md q-py-sm"
>
<div class="col-2">
<q-btn
icon="arrow_backt"
unelevated
round
dense
flat
color="white"
@click="router.go(-1)"
/>
</div>
<q-space />
<span class="text-body1 text-weight-bold col-8 text-center"
>ประวการลงเวลา</span
>
<div class="col-2"></div>
</div>
<div class="col-12 q-pa-md text-grey-9">
<Table
:style="$q.screen.gt.xs ? 'max-height: 64vh' : ''"
:rows="rows"
:columns="columns"
:filter="filter"
:visible-columns="visibleColumns"
v-model:inputfilter="filter"
v-model:inputvisible="visibleColumns"
:pagination="initialPagination"
:inputShow="false"
:grid="$q.screen.gt.xs ? false : true"
>
<template #columns="props">
<q-tr :props="props">
<q-td key="no" :props="props">
{{ props.rowIndex + 1 }}
</q-td>
<q-td key="date" :props="props">
{{ props.row.date }}
</q-td>
<q-td key="in" :props="props">
{{ props.row.in }}
</q-td>
<q-td key="loIn" :props="props">
{{ props.row.loIn }}
</q-td>
<q-td key="out" :props="props">
{{ props.row.out }}
</q-td>
<q-td key="loOut" :props="props">
{{ props.row.loOut }}
</q-td>
<q-td key="status" :props="props">
<span
:class="
props.row.status == 'ลงเวลาเรียบร้อย'
? 'text-blue'
: 'text-orange'
"
>{{ props.row.status }}</span
>
</q-td>
</q-tr>
</template>
<template #item="props">
<div
class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3 grid-style-transition"
>
<q-card bordered flat class="q-py-sm shadow-0">
<q-list dense>
<q-item
v-for="col in props.cols"
:key="col.name"
:props="props"
>
<q-item-section>
<q-item-label caption>{{ col.label }}</q-item-label>
</q-item-section>
<q-item-section side>
<q-item-label>
<span
v-if="col.name == 'status'"
:class="
props.row.status == 'ลงเวลาเรียบร้อย'
? 'text-blue'
: 'text-orange'
"
>{{ col.value }}</span
>
<span v-else class="text-black">{{ col.value }}</span>
</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-card>
</div>
</template>
</Table>
</div>
</q-card>
</div>
</div>
</template>
<script setup lang="ts">
import type { QTableProps } from "quasar";
import { ref } from "vue";
import { useRouter } from "vue-router";
import Table from "@/modules/checkin/componenst/tableHistory.vue";
const router = useRouter();
const filter = ref<string>("");
const visibleColumns = ref<string[]>([
"no",
"date",
"in",
"loIn",
"out",
"loOut",
"status",
]);
const columns = ref<QTableProps["columns"]>([
{
name: "no",
align: "left",
label: "ลำดับ",
sortable: true,
field: "no",
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:5%;",
},
{
name: "date",
align: "left",
label: "วัน/เดือน/ปี",
sortable: true,
field: "date",
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:15%;",
},
{
name: "in",
align: "left",
label: "เวลาเข้างาน",
sortable: true,
field: "in",
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:15%;",
},
{
name: "loIn",
align: "left",
label: "พิกัด",
sortable: true,
field: "loIn",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "out",
align: "left",
label: "เวลาออกงาน",
sortable: true,
field: "out",
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:15%;",
},
{
name: "loOut",
align: "left",
label: "พิกัด",
sortable: true,
field: "loOut",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "status",
align: "left",
label: "สถานะ",
sortable: true,
field: "status",
headerStyle: "font-size: 14px",
style: "font-size: 14px; width:10%;",
},
]);
const rows = ref<any>([
{
no: "1",
date: "13/08/66",
in: "11:20",
loIn: "สำนักงาน ก.ก ",
out: "",
loOut: "",
status: "",
},
{
no: "2",
date: "12/08/66",
in: "08:04",
loIn: "สำนักงาน ก.ก ",
out: "17:01",
loOut: "สำนักงาน ก.ก ",
status: "ลงเวลาเรียบร้อย",
},
{
no: "3",
date: "11/08/66",
in: "08:34",
loIn: "สำนักงาน ก.ก ",
out: "17:36",
loOut: "สำนักงาน ก.ก ",
status: "สาย ทำงานครบ",
},
{
no: "4",
date: "10/08/66",
in: "08:48",
loIn: "สำนักงาน ก.ก ",
out: "17:00",
loOut: "สำนักงาน ก.ก ",
status: "สาย ทำงานไม่ครบ",
},
]);
const initialPagination = ref({
rowsPerPage: 0,
});
</script>

View file

@ -1,6 +1,6 @@
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import HomeView from "../views/HomeView.vue";
import history from "../modules/checkin/views/HistoryView.vue";
const routes: Array<RouteRecordRaw> = [
{
path: "/",
@ -16,6 +16,11 @@ const routes: Array<RouteRecordRaw> = [
component: () =>
import(/* webpackChunkName: "about" */ "../views/AboutView.vue"),
},
{
path: "/check-in/history",
name: "history",
component: history,
},
];
const router = createRouter({