เลื่อนเงินเดือน

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-03-26 18:02:29 +07:00
parent 5dacf1c73a
commit ce38c8a410
7 changed files with 879 additions and 85 deletions

View file

@ -1,4 +1,357 @@
<template>
<q-card class="q-pa-sm"> แสดง dashboard สำหร สกจ. </q-card>
<script setup lang="ts">
import { ref, onMounted, reactive, computed } from "vue";
import type { QTableProps } from "quasar";
import { useSalaryEmployeeListSDataStore } from "@/modules/13_salary/store/SalaryEmployeeListsStore";
const store = useSalaryEmployeeListSDataStore();
/** itemsCard*/
const itemsCardAPR = ref([
{
lable: "จำนวนคนทั้งหมด",
name: "group1",
color: "secondary",
total: 0,
},
{
lable: "15% ของจำนวนคน",
name: "group2",
color: "light-blue-4",
total: 0,
},
{
lable: "เลือกไปแล้ว",
name: "group2",
color: "primary",
total: 0,
},
{
lable: "คงเหลือโควตา",
name: "group2",
color: "indigo-6",
total: 0,
},
{
lable: "สำรอง",
name: "group2",
color: "red-6",
total: 0,
},
]);
const itemsCardOCT = ref([
{
lable: "จำนวนเงินคนครองปัจจุบัน",
name: "group1",
color: "secondary",
total: 0,
},
{
lable: "วงเงิน 6%",
name: "group2",
color: "light-blue-4",
total: 0,
},
{
lable: "ยอดเงินที่ใช้ไป",
name: "group2",
color: "primary",
total: 0,
},
{
lable: "วงเงิน 6%-ยอดเงินที่ใช้ไป",
name: "group2",
color: "indigo-6",
total: 0,
},
{
lable: "ใช้ไปเท่าไหร่",
name: "group2",
color: "blue-6",
total: 0,
},
{
lable: "เหลือเท่าไหร่",
name: "group2",
color: "green-6",
total: 0,
},
{
lable: "สำรอง",
name: "group2",
color: "red-6",
total: 0,
},
]);
const itemsCard = computed(() => {
const items =
store.roundMainCode === "APR"
? itemsCardAPR.value
: store.roundMainCode === "OCT"
? itemsCardOCT.value
: [];
return items;
});
const rows = ref<any>([]);
const columnsAPR = ref<QTableProps["columns"]>([
{
name: "org",
align: "left",
label: "หน่วยงาน",
sortable: true,
field: "org",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "total",
align: "left",
label: "จำนวนคนทั้งหมด",
sortable: true,
field: "total",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fifteenPercent",
align: "left",
label: "15% ของจำนวนคน",
sortable: true,
field: "fifteenPercent",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "chosen",
align: "left",
label: "เลือกไปแล้ว",
sortable: true,
field: "chosen",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "remaining",
align: "left",
label: "คงเหลือโควตา",
sortable: true,
field: "remaining",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalBackup",
align: "left",
label: "สำรอง",
sortable: true,
field: "totalBackup",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const columnsOCT = ref<QTableProps["columns"]>([
{
name: "org",
align: "left",
label: "หน่วยงาน",
sortable: true,
field: "org",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "currentAmount",
align: "left",
label: "จำนวนเงินคนครองปัจจุบัน",
sortable: true,
field: "currentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "sixPercentAmount",
align: "left",
label: "วงเงิน 6%",
sortable: true,
field: "sixPercentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "spentAmount",
align: "left",
label: "ยอดเงินที่ใช้ไป",
sortable: true,
field: "spentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "sixPercentSpentAmount",
align: "left",
label: "วงเงิน 6%-ยอดเงินที่ใช้ไป",
sortable: true,
field: "sixPercentSpentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "useAmount",
align: "left",
label: "ใช้ไปเท่าไหร่",
sortable: true,
field: "useAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "remainingAmount",
align: "left",
label: "เหลือเท่าไหร่",
sortable: true,
field: "remainingAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalBackup",
align: "left",
label: "สำรอง",
sortable: true,
field: "totalBackup",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const columns = computed(() => {
const columnsss =
store.roundMainCode === "APR"
? columnsAPR.value
: store.roundMainCode === "OCT"
? columnsOCT.value
: [];
return columnsss;
});
const visibleColumns = ref<string[]>(
store.roundMainCode === "APR"
? ["org", "total", "fifteenPercent", "chosen", "remaining", "totalBackup"]
: store.roundMainCode === "OCT"
? [
"org",
"currentAmount",
"sixPercentAmount",
"spentAmount",
"sixPercentSpentAmount",
"useAmount",
"remainingAmount",
"totalBackup",
]
: []
);
const gruup = ref<string>("กลุ่ม 1");
const options = ref(["ทั้งหมด", "กลุ่ม 1", "กลุ่ม 2"]);
</script>
<template>
<!-- Card โควต -->
<q-toolbar class="q-pa-md">
<q-select
dense
outlined
v-model="gruup"
:options="options"
label="กลุ่ม"
style="width: 150px"
/>
</q-toolbar>
<div class="row col-12 q-pa-md bg-grey-2">
<div class="row col-12 q-col-gutter-sm">
<div
v-for="(item, index) in itemsCard"
:key="index"
:class="
store.roundMainCode === 'APR'
? 'col-6 col-sm-4 col-md-3 col-lg-2'
: 'col-3'
"
>
<q-card>
<q-card-section>
<div class="row items-center no-wrap">
<div class="col">
<div class="">{{ item.lable }}</div>
</div>
<div :class="`text-${item.color} text-bold`">
{{ item.total ? item.total.toLocaleString() : 0 }}
</div>
</div>
</q-card-section>
</q-card>
</div>
<!-- <div class="row col justify-end self-center">
<q-btn-dropdown color="blue-5" label="ดาวน์โหลด">
<q-list>
<q-item
v-for="(item, index) in store.roundMainCode === 'APR'
? store.itemDownloadApr
: store.roundMainCode === 'OCT'
? store.itemDownloadOct
: []"
:key="index"
clickable
v-close-popup
@click="onClickDownload(item)"
>
<q-item-section>
<q-item-label>{{ item.name }}</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</div> -->
</div>
</div>
<q-separator />
<div class="col-12 q-pa-md">
<d-table
for="table"
ref="table"
:columns="columns"
:rows="rows"
row-key="subject"
flat
bordered
dense
class="custom-header-table"
:visible-columns="visibleColumns"
>
<template v-slot:header="props">
<q-tr :props="props">
<q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium">{{ col.label }}</span>
</q-th>
</q-tr>
</template>
<template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div class="table_ellipsis">
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>
</template>
</d-table>
</div>
</template>
<style scoped></style>

View file

@ -400,7 +400,7 @@ const updateIsShowRetire = async () => {
:name="item.name"
>
<!-- Card โควต -->
<div class="row col-12 q-pa-md">
<div class="row col-12 q-pa-md" v-if="store.roundMainCode !== 'SPECIAL'">
<div
:class="`row col-12 ${
store.roundMainCode === 'APR' ? `q-col-gutter-md` : `q-gutter-md`
@ -433,7 +433,10 @@ const updateIsShowRetire = async () => {
</q-card-section>
</q-card>
</div>
<div class="row col justify-end self-center">
<div
class="row col justify-end self-center"
v-if="store.roundMainCode !== 'SPECIAL'"
>
<q-btn-dropdown color="blue-5" label="ดาวน์โหลด">
<q-list>
<q-item
@ -469,7 +472,7 @@ const updateIsShowRetire = async () => {
@update:model-value="updateIsShowRetire"
class="q-pr-md"
>
เฉพาะผเกษยณอายราชการ
แสดงเฉพาะผเกษยณอายราชการ
</q-toggle>
</div>

View file

@ -1,4 +1,357 @@
<template>
<q-card class="q-pa-sm"> แสดง dashboard สำหร สกจ. </q-card>
<script setup lang="ts">
import { ref, onMounted, reactive, computed } from "vue";
import type { QTableProps } from "quasar";
import { useSalaryListSDataStore } from "@/modules/13_salary/store/SalaryListsStore";
const store = useSalaryListSDataStore();
/** itemsCard*/
const itemsCardAPR = ref([
{
lable: "จำนวนคนทั้งหมด",
name: "group1",
color: "secondary",
total: 0,
},
{
lable: "15% ของจำนวนคน",
name: "group2",
color: "light-blue-4",
total: 0,
},
{
lable: "เลือกไปแล้ว",
name: "group2",
color: "primary",
total: 0,
},
{
lable: "คงเหลือโควตา",
name: "group2",
color: "indigo-6",
total: 0,
},
{
lable: "สำรอง",
name: "group2",
color: "red-6",
total: 0,
},
]);
const itemsCardOCT = ref([
{
lable: "จำนวนเงินคนครองปัจจุบัน",
name: "group1",
color: "secondary",
total: 0,
},
{
lable: "วงเงิน 6%",
name: "group2",
color: "light-blue-4",
total: 0,
},
{
lable: "ยอดเงินที่ใช้ไป",
name: "group2",
color: "primary",
total: 0,
},
{
lable: "วงเงิน 6%-ยอดเงินที่ใช้ไป",
name: "group2",
color: "indigo-6",
total: 0,
},
{
lable: "ใช้ไปเท่าไหร่",
name: "group2",
color: "blue-6",
total: 0,
},
{
lable: "เหลือเท่าไหร่",
name: "group2",
color: "green-6",
total: 0,
},
{
lable: "สำรอง",
name: "group2",
color: "red-6",
total: 0,
},
]);
const itemsCard = computed(() => {
const items =
store.roundMainCode === "APR"
? itemsCardAPR.value
: store.roundMainCode === "OCT"
? itemsCardOCT.value
: [];
return items;
});
const rows = ref<any>([]);
const columnsAPR = ref<QTableProps["columns"]>([
{
name: "org",
align: "left",
label: "หน่วยงาน",
sortable: true,
field: "org",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "total",
align: "left",
label: "จำนวนคนทั้งหมด",
sortable: true,
field: "total",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fifteenPercent",
align: "left",
label: "15% ของจำนวนคน",
sortable: true,
field: "fifteenPercent",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "chosen",
align: "left",
label: "เลือกไปแล้ว",
sortable: true,
field: "chosen",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "remaining",
align: "left",
label: "คงเหลือโควตา",
sortable: true,
field: "remaining",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalBackup",
align: "left",
label: "สำรอง",
sortable: true,
field: "totalBackup",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const columnsOCT = ref<QTableProps["columns"]>([
{
name: "org",
align: "left",
label: "หน่วยงาน",
sortable: true,
field: "org",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "currentAmount",
align: "left",
label: "จำนวนเงินคนครองปัจจุบัน",
sortable: true,
field: "currentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "sixPercentAmount",
align: "left",
label: "วงเงิน 6%",
sortable: true,
field: "sixPercentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "spentAmount",
align: "left",
label: "ยอดเงินที่ใช้ไป",
sortable: true,
field: "spentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "sixPercentSpentAmount",
align: "left",
label: "วงเงิน 6%-ยอดเงินที่ใช้ไป",
sortable: true,
field: "sixPercentSpentAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "useAmount",
align: "left",
label: "ใช้ไปเท่าไหร่",
sortable: true,
field: "useAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "remainingAmount",
align: "left",
label: "เหลือเท่าไหร่",
sortable: true,
field: "remainingAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalBackup",
align: "left",
label: "สำรอง",
sortable: true,
field: "totalBackup",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const columns = computed(() => {
const columnsss =
store.roundMainCode === "APR"
? columnsAPR.value
: store.roundMainCode === "OCT"
? columnsOCT.value
: [];
return columnsss;
});
const visibleColumns = ref<string[]>(
store.roundMainCode === "APR"
? ["org", "total", "fifteenPercent", "chosen", "remaining", "totalBackup"]
: store.roundMainCode === "OCT"
? [
"org",
"currentAmount",
"sixPercentAmount",
"spentAmount",
"sixPercentSpentAmount",
"useAmount",
"remainingAmount",
"totalBackup",
]
: []
);
const gruup = ref<string>("กลุ่ม 1");
const options = ref(["ทั้งหมด", "กลุ่ม 1", "กลุ่ม 2"]);
</script>
<template>
<!-- Card โควต -->
<q-toolbar class="q-pa-md">
<q-select
dense
outlined
v-model="gruup"
:options="options"
label="กลุ่ม"
style="width: 150px"
/>
</q-toolbar>
<div class="row col-12 q-pa-md bg-grey-2">
<div class="row col-12 q-col-gutter-sm">
<div
v-for="(item, index) in itemsCard"
:key="index"
:class="
store.roundMainCode === 'APR'
? 'col-6 col-sm-4 col-md-3 col-lg-2'
: 'col-3'
"
>
<q-card>
<q-card-section>
<div class="row items-center no-wrap">
<div class="col">
<div class="">{{ item.lable }}</div>
</div>
<div :class="`text-${item.color} text-bold`">
{{ item.total ? item.total.toLocaleString() : 0 }}
</div>
</div>
</q-card-section>
</q-card>
</div>
<!-- <div class="row col justify-end self-center">
<q-btn-dropdown color="blue-5" label="ดาวน์โหลด">
<q-list>
<q-item
v-for="(item, index) in store.roundMainCode === 'APR'
? store.itemDownloadApr
: store.roundMainCode === 'OCT'
? store.itemDownloadOct
: []"
:key="index"
clickable
v-close-popup
@click="onClickDownload(item)"
>
<q-item-section>
<q-item-label>{{ item.name }}</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</div> -->
</div>
</div>
<q-separator />
<div class="col-12 q-pa-md">
<d-table
for="table"
ref="table"
:columns="columns"
:rows="rows"
row-key="subject"
flat
bordered
dense
class="custom-header-table"
:visible-columns="visibleColumns"
>
<template v-slot:header="props">
<q-tr :props="props">
<q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium">{{ col.label }}</span>
</q-th>
</q-tr>
</template>
<template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div class="table_ellipsis">
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>
</template>
</d-table>
</div>
</template>
<style scoped></style>

View file

@ -21,7 +21,6 @@ import TableTabType2 from "@/modules/13_salary/components/SalaryLists/TableTypeO
/** importStore*/
import { useCounterMixin } from "@/stores/mixin";
import { useSalaryListSDataStore } from "@/modules/13_salary/store/SalaryListsStore";
import { log } from "console";
/** use*/
const $q = useQuasar();
@ -390,7 +389,8 @@ const updateIsShowRetire = async () => {
:key="index"
@click="changeTabGroup"
>
<q-tab :name="item.name" :label="item.lable">
<q-tab :name="item.name">
<div>{{ item.lable }} <q-icon name="info" size="18px" /></div>
<q-tooltip>
<q-list dense v-if="item.name === 'group1'" class="tootip-txt-normal">
<q-item>
@ -479,7 +479,7 @@ const updateIsShowRetire = async () => {
:name="item.name"
>
<!-- Card โควต -->
<div class="row col-12 q-pa-md">
<div class="row col-12 q-pa-md" v-if="store.roundMainCode !== 'SPECIAL'">
<div
:class="`row col-12 ${
store.roundMainCode === 'APR' ? `q-col-gutter-md` : `q-gutter-md`
@ -512,7 +512,11 @@ const updateIsShowRetire = async () => {
</q-card-section>
</q-card>
</div>
<div class="row col justify-end self-center">
<div
class="row col justify-end self-center"
v-if="store.roundMainCode !== 'SPECIAL'"
>
<q-btn-dropdown color="blue-5" label="ดาวน์โหลด">
<q-list>
<q-item
@ -548,7 +552,7 @@ const updateIsShowRetire = async () => {
@update:model-value="updateIsShowRetire"
class="q-pr-md"
>
เฉพาะผเกษยณอายราชการ
แสดงเฉพาะผเกษยณอายราชการ
</q-toggle>
</div>