This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-02-26 15:30:25 +07:00
parent 9349bd216e
commit df93a526fa
18 changed files with 87 additions and 63 deletions

View file

@ -16,9 +16,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Table*/
* Table
*/
const TABLE_COLUMNS = [ const TABLE_COLUMNS = [
{ {
name: "prefix", name: "prefix",
@ -71,6 +69,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "prefix",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -230,10 +231,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">
@ -276,7 +277,7 @@ onMounted(async () => {
</q-btn> </q-btn>
</q-td> </q-td>
<q-td v-for="col in props.cols" :key="col.id"> <q-td v-for="col in props.cols" :key="col.id">
{{ col.value }} {{ col.value ?? "-" }}
</q-td> </q-td>
</q-tr> </q-tr>
</template> </template>

View file

@ -16,9 +16,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "rank", name: "rank",
@ -71,6 +69,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "rank",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -227,10 +228,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -16,9 +16,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "gender", name: "gender",
@ -71,6 +69,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "gender",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -227,10 +228,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -16,9 +16,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "relationship", name: "relationship",
@ -71,6 +69,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "relationship",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -227,10 +228,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -16,9 +16,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "bloodGroup", name: "bloodGroup",
@ -71,6 +69,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "bloodGroup",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -226,10 +227,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -71,6 +71,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "religion",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -227,10 +230,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -18,9 +18,7 @@ const store = usePersonalDataStore();
const { messageError, showLoader, hideLoader, success, dialogRemove } = const { messageError, showLoader, hideLoader, success, dialogRemove } =
useCounterMixin(); useCounterMixin();
/** /** Teble*/
* Teble
*/
const columns = [ const columns = [
{ {
name: "name", name: "name",
@ -73,6 +71,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "name",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -242,6 +243,7 @@ onMounted(async () => {
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -80,6 +80,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "name",
});
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
const dialog = ref<boolean>(false); // , const dialog = ref<boolean>(false); // ,
@ -241,10 +244,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -25,9 +25,7 @@ const {
dialogRemove, dialogRemove,
} = useCounterMixin(); } = useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "name", name: "name",
@ -80,6 +78,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "name",
});
const id = ref<string>(route.params.id as string); // id const id = ref<string>(route.params.id as string); // id
const filterKeyword = ref<string>(""); // const filterKeyword = ref<string>(""); //
@ -288,10 +289,10 @@ onMounted(async () => {
row-key="name" row-key="name"
flat flat
bordered bordered
:paging="true"
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -25,9 +25,7 @@ const {
dialogRemove, dialogRemove,
} = useCounterMixin(); } = useCounterMixin();
/** /** Table*/
* Table
*/
const columns = [ const columns = [
{ {
name: "name", name: "name",
@ -92,6 +90,9 @@ const visibleColumns = ref<string[]>([
"lastUpdatedAt", "lastUpdatedAt",
"lastUpdateFullName", "lastUpdateFullName",
]); ]);
const pagination = ref({
sortBy: "name",
});
const id = ref<string>(route.params.id as string); // / const id = ref<string>(route.params.id as string); // /
const rows = ref<FormSubDistrict[]>([]); // / const rows = ref<FormSubDistrict[]>([]); // /
@ -298,6 +299,7 @@ onMounted(async () => {
dense dense
class="custom-header-table" class="custom-header-table"
:visible-columns="visibleColumns" :visible-columns="visibleColumns"
v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -48,7 +48,9 @@ const columns = [
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
sort: (a: string, b: string) => sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
}, },
{ {
name: "createdAt", name: "createdAt",

View file

@ -80,7 +80,7 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
sort: (a: string, b: string) => sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), a.toString().localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
}, },
]); ]);
const visibleColumns = ref<string[]>([ const visibleColumns = ref<string[]>([

View file

@ -44,7 +44,7 @@ const columns = ref<QTableProps["columns"]>([
name: "no", name: "no",
align: "left", align: "left",
label: "ลำดับ", label: "ลำดับ",
sortable: true, sortable: false,
field: (row) => field: (row) =>
(currentPage.value - 1) * pageSize.value + rows.value.indexOf(row) + 1, (currentPage.value - 1) * pageSize.value + rows.value.indexOf(row) + 1,
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
@ -54,7 +54,7 @@ const columns = ref<QTableProps["columns"]>([
name: "username", name: "username",
align: "left", align: "left",
label: "ชื่อผู้ใช้งาน", label: "ชื่อผู้ใช้งาน",
sortable: true, sortable: false,
field: "username", field: "username",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -63,7 +63,7 @@ const columns = ref<QTableProps["columns"]>([
name: "email", name: "email",
align: "left", align: "left",
label: "อีเมล", label: "อีเมล",
sortable: true, sortable: false,
field: "email", field: "email",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -72,7 +72,7 @@ const columns = ref<QTableProps["columns"]>([
name: "firstname", name: "firstname",
align: "left", align: "left",
label: "ชื่อ", label: "ชื่อ",
sortable: true, sortable: false,
field: "firstname", field: "firstname",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -81,7 +81,7 @@ const columns = ref<QTableProps["columns"]>([
name: "lastname", name: "lastname",
align: "left", align: "left",
label: "นามสกุล", label: "นามสกุล",
sortable: true, sortable: false,
field: "lastname", field: "lastname",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -90,7 +90,7 @@ const columns = ref<QTableProps["columns"]>([
name: "role", name: "role",
align: "left", align: "left",
label: "สิทธิ์", label: "สิทธิ์",
sortable: true, sortable: false,
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
field: (row) => { field: (row) => {
@ -102,7 +102,7 @@ const columns = ref<QTableProps["columns"]>([
name: "enabled", name: "enabled",
align: "left", align: "left",
label: "สถานะการใช้งาน", label: "สถานะการใช้งาน",
sortable: true, sortable: false,
field: "enabled", field: "enabled",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",

View file

@ -36,8 +36,8 @@ const columns = ref<QTableProps["columns"]>([
name: "no", name: "no",
align: "left", align: "left",
label: "ลำดับ", label: "ลำดับ",
sortable: true, sortable: false,
field: (row) => rows.value.indexOf(row) + 1, field: "no",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
@ -226,7 +226,10 @@ onMounted(() => {
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props"> <q-tr :props="props">
<q-td v-for="col in props.cols" :key="col.name" :props="props"> <q-td v-for="col in props.cols" :key="col.name" :props="props">
<div> <div v-if="col.name === 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else>
{{ col.value ? col.value : "-" }} {{ col.value ? col.value : "-" }}
</div> </div>
</q-td> </q-td>

View file

@ -170,7 +170,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionName", name: "positionName",
align: "left", align: "left",
label: "ตำแหน่งในสายงาน", label: "ตำแหน่งในสายงาน",
sortable: true, sortable: false,
field: "positionName", field: "positionName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -179,7 +179,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionField", name: "positionField",
align: "left", align: "left",
label: "สายงาน", label: "สายงาน",
sortable: true, sortable: false,
field: "positionField", field: "positionField",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -188,7 +188,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posTypeName", name: "posTypeName",
align: "left", align: "left",
label: "ประเภทตำเเหน่ง", label: "ประเภทตำเเหน่ง",
sortable: true, sortable: false,
field: "posTypeName", field: "posTypeName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -197,7 +197,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posLevelName", name: "posLevelName",
align: "left", align: "left",
label: "ระดับตำแหน่ง", label: "ระดับตำแหน่ง",
sortable: true, sortable: false,
field: "posLevelName", field: "posLevelName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -206,7 +206,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posExecutiveName", name: "posExecutiveName",
align: "left", align: "left",
label: "ตำแหน่งทางการบริหาร", label: "ตำแหน่งทางการบริหาร",
sortable: true, sortable: false,
field: "posExecutiveName", field: "posExecutiveName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -215,7 +215,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionExecutiveField", name: "positionExecutiveField",
align: "left", align: "left",
label: "ด้านทางการบริหาร", label: "ด้านทางการบริหาร",
sortable: true, sortable: false,
field: "positionExecutiveField", field: "positionExecutiveField",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -224,7 +224,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionArea", name: "positionArea",
align: "left", align: "left",
label: "ด้าน/สาขา", label: "ด้าน/สาขา",
sortable: true, sortable: false,
field: "positionArea", field: "positionArea",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",

View file

@ -164,7 +164,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionName", name: "positionName",
align: "left", align: "left",
label: "ตำแหน่งในสายงาน", label: "ตำแหน่งในสายงาน",
sortable: true, sortable: false,
field: "positionName", field: "positionName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -173,7 +173,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionField", name: "positionField",
align: "left", align: "left",
label: "สายงาน", label: "สายงาน",
sortable: true, sortable: false,
field: "positionField", field: "positionField",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -182,7 +182,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posTypeName", name: "posTypeName",
align: "left", align: "left",
label: "ประเภทตำเเหน่ง", label: "ประเภทตำเเหน่ง",
sortable: true, sortable: false,
field: "posTypeName", field: "posTypeName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -191,7 +191,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posLevelName", name: "posLevelName",
align: "left", align: "left",
label: "ระดับตำแหน่ง", label: "ระดับตำแหน่ง",
sortable: true, sortable: false,
field: "posLevelName", field: "posLevelName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -200,7 +200,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "posExecutiveName", name: "posExecutiveName",
align: "left", align: "left",
label: "ตำแหน่งทางการบริหาร", label: "ตำแหน่งทางการบริหาร",
sortable: true, sortable: false,
field: "posExecutiveName", field: "posExecutiveName",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -209,7 +209,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionExecutiveField", name: "positionExecutiveField",
align: "left", align: "left",
label: "ด้านทางการบริหาร", label: "ด้านทางการบริหาร",
sortable: true, sortable: false,
field: "positionExecutiveField", field: "positionExecutiveField",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
@ -218,7 +218,7 @@ const columnsExpand = ref<QTableProps["columns"]>([
name: "positionArea", name: "positionArea",
align: "left", align: "left",
label: "ด้าน/สาขา", label: "ด้าน/สาขา",
sortable: true, sortable: false,
field: "positionArea", field: "positionArea",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",

View file

@ -32,8 +32,8 @@ const columns = ref<QTableProps["columns"]>([
name: "no", name: "no",
align: "left", align: "left",
label: "ลำดับ", label: "ลำดับ",
sortable: true, sortable: false,
field: (row) => rows.value.indexOf(row) + 1, field: "no",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
@ -185,7 +185,10 @@ onMounted(async () => {
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props"> <q-td v-for="col in props.cols" :key="col.name" :props="props">
<div> <div v-if="col.name === 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else>
{{ col.value ? col.value : "-" }} {{ col.value ? col.value : "-" }}
</div> </div>
</q-td> </q-td>

View file

@ -74,7 +74,7 @@ const columns = ref<QTableProps["columns"]>([
name: "isActive", name: "isActive",
align: "center", align: "center",
label: "สถานะการใช้งาน", label: "สถานะการใช้งาน",
sortable: false, sortable: true,
field: "isActive", field: "isActive",
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",