ปรับ ui สถิติการลา

This commit is contained in:
AnandaTon 2023-12-18 16:26:56 +07:00
parent fbbd68570a
commit 1c5a865d93
2 changed files with 100 additions and 104 deletions

View file

@ -38,4 +38,13 @@ interface TypeLeave {
name: string
}
export type { OptionData, FormLeavetMainData, formListLeaveData, TypeLeave }
interface LeaveItem {
text: string
color: string
value: number
all: number
use: number
remain: number
}
export type { OptionData, FormLeavetMainData, formListLeaveData, TypeLeave, LeaveItem }

View file

@ -1,10 +1,10 @@
<script setup lang="ts">
import { ref, onMounted } from "vue"
import { ref, onMounted, computed } from "vue"
import { useQuasar } from "quasar"
import { useRouter } from "vue-router"
import http from "@/plugins/http"
import config from "@/app.config"
import type { LeaveItem } from "@/modules/05_leave/interface/index/main"
import type { QTableProps } from "quasar"
import CalendarView from "@/modules/05_leave/components/Calendar.vue"
@ -22,7 +22,7 @@ const $q = useQuasar()
const filterLeaveType = ref(["ลาป่วย", "ลากิจส่วนตัว", "ลาพักผ่อน"])
const itemPie = ref<any>([])
const itemPie = ref<LeaveItem[]>([])
const knob = ref(80)
const columns = ref<QTableProps["columns"]>([
{
@ -124,6 +124,7 @@ async function fetchStatsTable() {
}))
})
stat.forEach(item => itemPie.value.push(...item))
row.value = data.map((e: any) => ({
leaveTypeName: e.leaveTypeName,
leaveLimit: e.leaveTypeName === "ลาพักผ่อน" ? e.leaveLimit : e.leaveTypeName === "ลากิจส่วนตัว" ? "-" : "-",
@ -153,6 +154,18 @@ async function addAbsence() {
router.push(`/leave/add`)
}
/**
* find อมลจาก api
*/
const filteredItems = computed(() => {
return itemPie.value.filter(item => item.text === "ลาพักผ่อน")
})
const filteredSick = computed(() => {
return itemPie.value.filter(item => item.text === "ลาป่วย")
})
const filteredBusi = computed(() => {
return itemPie.value.filter(item => item.text === "ลากิจส่วนตัว")
})
onMounted(async () => {
await fetchStatsTable()
})
@ -167,106 +180,80 @@ onMounted(async () => {
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-11 row">
<!-- สถการลา -->
<div class="col-12 row q-pb-sm">
<q-card bordered class="col-12 row caedNone">
<div class="row col-12 items-center q-px-md q-py-sm">
<div class="text-weight-bold">สถการลา</div>
<q-space />
<q-btn
dense
flat
class="text-blue"
icon="mdi-chart-line-variant"
@click="onClickOpenStat"
label="ตารางสถิติการลา"
/>
</div>
<div bordered class="col-12 row justify-center q-px-md q-pb-md q-col-gutter-sm">
<div class="col-xs-12 col-sm-6" >
<q-card
bordered
flat
class="col-12 row shadow-0 no-wrap">
<div class="col-xs-12 col-sm-8 row justify-center q-py-md" >
<div class="col-12 row items-center justify-center q-pb-sm">
<q-knob
readonly
v-model="knob"
show-value
size="60px"
:thickness="0.15"
track-color="grey-3"
class="text-indigo"
>
<span class="text-subtitle2 text-weight-bold"
>50 %</span
>
</q-knob>
</div>
<div class="col-12 text-center text-weight-medium">
ลาพกผอน
</div>
</div>
<div class="row gt-xs"><q-separator vertical /></div>
<div class="col-xs-12 col-sm-4 gt-xs row">
<div
class="col-12 row text-dark text-body2 items-center"
>
<div class="col-12 row q-pa-xs q-px-md row">
<span class="text-grey-7 col-6">ได</span>
<span class="text-weight-bold">10</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 row q-pa-xs q-px-md">
<span class="text-grey-7 col-6">ใชไป</span>
<span class="text-weight-bold">5</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 row q-pa-xs q-px-md">
<span class="text-grey-7 col-6">คงเหล</span>
<span class="text-weight-bold">5</span>
</div>
</div>
</div>
</q-card>
</div>
<div class="col-xs-12 col-sm-6 row q-col-gutter-sm" >
<div class="col-12 row">
<q-card
bordered
flat
class="shadow-0 col-12 fit row items-center q-px-lg"
>
<div class="text-subtitle2 col-4">ลาปวย</div>
<div class="text-subtitle2 col-8">
<span class="text-grey-7 q-pr-md">ใชไป</span>
<span class="text-weight-bold">5</span>
<span class="text-grey-7 q-pl-md">ลา</span>
</div>
</q-card>
</div>
<div class="col-12 row">
<q-card
bordered
flat
class="shadow-0 col-12 fit row items-center q-px-lg"
>
<div class="text-subtitle2 col-4">ลากจสวนต</div>
<div class="text-subtitle2 col-8">
<span class="text-grey-7 q-pr-md">ใชไป</span>
<span class="text-weight-bold">5</span>
<span class="text-grey-7 q-pl-md">ลา</span>
</div>
</q-card>
</div>
</div>
</div>
</q-card>
</div>
<div class="col-xs-12 col-sm-12 col-md-11 row">
<!-- สถการลา -->
<div class="col-12 row q-pb-sm">
<q-card bordered class="col-12 row caedNone">
<div class="row col-12 items-center q-px-md q-py-sm">
<div class="text-weight-bold">สถการลา</div>
<q-space />
<q-btn dense flat class="text-blue" icon="mdi-chart-line-variant" @click="onClickOpenStat" label="ตารางสถิติการลา" />
</div>
<div bordered class="col-6 row justify-center q-px-md q-pb-md q-col-gutter-sm" v-for="item in filteredItems" :key="item.text">
<div class="col-xs-12 col-sm-12">
<q-card bordered flat class="col-12 row shadow-0 no-wrap" v-if="item.text === 'ลาพักผ่อน'">
<div class="col-xs-12 col-sm-8 row justify-center q-py-md">
<div class="col-12 row items-center justify-center q-pb-sm">
<q-knob readonly v-model="knob" show-value size="60px" :thickness="0.15" track-color="grey-3" class="text-indigo">
<span class="text-subtitle2 text-weight-bold">{{ item.value }}</span>
</q-knob>
</div>
<div class="col-12 text-center text-weight-medium">ลาพกผอน</div>
</div>
<div class="row gt-xs"><q-separator vertical /></div>
<div class="col-xs-12 col-sm-4 gt-xs row">
<div class="col-12 row text-dark text-body2 items-center">
<div class="col-12 row q-pa-xs q-px-md row">
<span class="text-grey-7 col-6">ได</span>
<span class="text-weight-bold">{{ item.all }}</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 row q-pa-xs q-px-md">
<span class="text-grey-7 col-6">ใชไป</span>
<span class="text-weight-bold">{{ item.use }}</span>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-12 row q-pa-xs q-px-md">
<span class="text-grey-7 col-6">คงเหล</span>
<span class="text-weight-bold">{{ item.remain }}</span>
</div>
</div>
</div>
</q-card>
</div>
</div>
<div class="col-6 row">
<div bordered class="col-12 row justify-center q-px-md q-pb-md q-col-gutter-sm" v-for="item in filteredSick" :key="item.text">
<div class="col-xs-12 col-sm-12 row q-col-gutter-sm">
<div class="col-12 row" v-if="item.text === 'ลาป่วย'">
<q-card bordered flat class="shadow-0 col-12 fit row items-center q-px-lg">
<div class="text-subtitle2 col-4">ลาปวย</div>
<div class="text-subtitle2 col-8">
<span class="text-grey-7 q-pr-md">ใชไป</span>
<span class="text-weight-bold">{{ item.use }}</span>
<span class="text-grey-7 q-pl-md">ลา</span>
</div>
</q-card>
</div>
</div>
</div>
<div bordered class="col-12 row justify-center q-px-md q-pb-md q-col-gutter-sm" v-for="item in filteredBusi" :key="item.text">
<div class="col-xs-12 col-sm-12 row q-col-gutter-sm">
<div class="col-12 row" v-if="item.text === 'ลากิจส่วนตัว'">
<q-card bordered flat class="shadow-0 col-12 fit row items-center q-px-lg">
<div class="text-subtitle2 col-4">ลากจสวนต</div>
<div class="text-subtitle2 col-8">
<span class="text-grey-7 q-pr-md">ใชไป</span>
<span class="text-weight-bold">{{ item.use }}</span>
<span class="text-grey-7 q-pl-md">ลา</span>
</div>
</q-card>
</div>
</div>
</div>
</div>
</q-card>
</div>
<div class="row col-12">
<!-- แสดงปฏ -->