Merge branch 'develop' into dev-tee

This commit is contained in:
setthawutttty 2023-10-26 16:43:03 +07:00
commit d0056f1c5e
16 changed files with 210 additions and 353 deletions

View file

@ -208,15 +208,9 @@
> >
<q-item-section style="min-width: 0px" avatar class="q-py-sm"> <q-item-section style="min-width: 0px" avatar class="q-py-sm">
</q-item-section> </q-item-section>
<q-item-section>แตงต</q-item-section> <q-item-section>ปรบระดบชนงาน - าย</q-item-section>
</q-item> </q-item>
<q-separator /> <q-separator />
<!-- <q-item clickable v-close-popup @click="relocationPost">
<q-item-section style="min-width: 0px" avatar class="q-py-sm">
</q-item-section>
<q-item-section>าย</q-item-section>
</q-item>
<q-separator /> -->
<q-item <q-item
clickable clickable
v-close-popup v-close-popup
@ -1097,6 +1091,7 @@ const helpPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/help-government')
}); });
}); });
}; };
@ -1116,6 +1111,7 @@ const repatriationPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/repatriate')
}); });
}); });
}; };
@ -1135,6 +1131,7 @@ const appointPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/appoint-promote')
}); });
}); });
}; };
@ -1155,6 +1152,7 @@ const appointEmployeePost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/appoint-employee')
}); });
}); });
}; };
@ -1182,6 +1180,7 @@ const outPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/dismiss-order')
}); });
}); });
}; };
@ -1201,6 +1200,7 @@ const dischargePost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/discharged')
}); });
}); });
}; };
@ -1220,6 +1220,7 @@ const expulsionPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/expulsion')
}); });
}); });
}; };
@ -1239,6 +1240,7 @@ const otherPost = async () => {
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
router.push('/other')
}); });
}); });
}; };

View file

@ -182,7 +182,7 @@ const clickSave = async () => {
await http await http
.post(config.API.insigniaManageBorrow(), { .post(config.API.insigniaManageBorrow(), {
borrowDate: receivedate.value, borrowDate: receivedate.value,
borrowOrganizationId: OrganazationId.value, // borrowOrganizationId: OrganazationId.value,
insigniaNoteProfileId: insigniaNoteProfileId.value, insigniaNoteProfileId: insigniaNoteProfileId.value,
}) })
.then(() => { .then(() => {
@ -425,7 +425,7 @@ onMounted(() => {
</datepicker> </datepicker>
</div> </div>
<div class="col-xs-12 col-sm-6"> <!-- <div class="col-xs-12 col-sm-6">
<q-select <q-select
hide-bottom-space hide-bottom-space
:options="filterOrgList" :options="filterOrgList"
@ -445,7 +445,7 @@ onMounted(() => {
doneFn:Function) => filterSelector(inputValue, doneFn,'filterOrgList' doneFn:Function) => filterSelector(inputValue, doneFn,'filterOrgList'
) " ) "
/> />
</div> </div> -->
</div> </div>
<div <div
@ -499,7 +499,7 @@ onMounted(() => {
</datepicker> </datepicker>
</div> </div>
<div class="col-xs-12 col-sm-6"> <!-- <div class="col-xs-12 col-sm-6">
<q-select <q-select
hide-bottom-space hide-bottom-space
:options="filterOrgList" :options="filterOrgList"
@ -519,7 +519,7 @@ onMounted(() => {
doneFn:Function) => filterSelector(inputValue, doneFn,'filterOrgList' doneFn:Function) => filterSelector(inputValue, doneFn,'filterOrgList'
) " ) "
/> />
</div> </div> -->
<div class="col-12"> <div class="col-12">
<q-input <q-input

View file

@ -848,7 +848,7 @@ const clearInsigniaFilters = (name: string) => {
</q-item-section> </q-item-section>
<q-item-section>เเกไขขอม</q-item-section> <q-item-section>เเกไขขอม</q-item-section>
</q-item> </q-item>
<!-- <q-item <q-item
clickable clickable
v-close-popup v-close-popup
@click="OpenModal(props.row)" @click="OpenModal(props.row)"
@ -867,7 +867,7 @@ const clearInsigniaFilters = (name: string) => {
<q-item-section no-wrap <q-item-section no-wrap
>-นเครองราชฯ</q-item-section >-นเครองราชฯ</q-item-section
> >
</q-item> --> </q-item>
</q-list> </q-list>
</q-menu> </q-menu>
</q-btn> </q-btn>

View file

@ -311,71 +311,29 @@ const paginationHis = ref({
<q-card flat bordered class="col-12 q-px-lg q-py-md"> <q-card flat bordered class="col-12 q-px-lg q-py-md">
<div class="flex items-center"> <div class="flex items-center">
<div class="flex items-center"> <div class="flex items-center">
<q-icon <q-icon name="mdi-clipboard" size="1.5em" color="grey-5" class="q-mr-md" />
name="mdi-clipboard"
size="1.5em"
color="grey-5"
class="q-mr-md"
/>
<div class="text-bold text-subtitle2 col-12 row items-center"> <div class="text-bold text-subtitle2 col-12 row items-center">
อมลการจาง อมลการจาง
</div> </div>
</div> </div>
<div class="q-gutter-sm q-mx-sm"> <div class="q-gutter-sm q-mx-sm">
<q-btn <q-btn size="12px" flat round color="primary" @click="onClickAdd" icon="mdi-plus">
size="12px"
flat
round
color="primary"
@click="onClickAdd"
icon="mdi-plus"
>
<q-tooltip>เพมขอมลการจาง</q-tooltip> <q-tooltip>เพมขอมลการจาง</q-tooltip>
</q-btn> </q-btn>
</div> </div>
<q-space /> <q-space />
<div class="q-gutter-sm" style="display: flex"> <div class="q-gutter-sm" style="display: flex">
<q-input <q-input outlined dense v-model="filter" label="ค้นหา" style="min-width: 150px" />
outlined
dense
v-model="filter"
label="ค้นหา"
style="min-width: 150px"
/>
<q-select <q-select v-model="visibleColumns" multiple outlined dense options-dense :display-value="$q.lang.table.columns"
v-model="visibleColumns" emit-value map-options :options="columns" option-value="name" options-cover style="min-width: 150px" />
multiple
outlined
dense
options-dense
:display-value="$q.lang.table.columns"
emit-value
map-options
:options="columns"
option-value="name"
options-cover
style="min-width: 150px"
/>
</div> </div>
</div> </div>
<div class="q-mt-sm"> <div class="q-mt-sm">
<d-table <d-table flat bordered id="table" ref="table" :columns="columns" :rows="rows" :filter="filter"
flat row-key="dateEmployment" :paging="true" dense :visible-columns="visibleColumns" v-model:pagination="pagination">
bordered
id="table"
ref="table"
:columns="columns"
:rows="rows"
:filter="filter"
row-key="dateEmployment"
:paging="true"
dense
: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">
<q-th v-for="col in props.cols" :key="col.name" :props="props"> <q-th v-for="col in props.cols" :key="col.name" :props="props">
@ -394,38 +352,16 @@ const paginationHis = ref({
</div> </div>
</q-td> </q-td>
<q-td> <q-td>
<q-btn <q-btn dense flat round color="primary" icon="mdi-pencil" @click="clickEdit(props.row, 'edit')">
dense
flat
round
color="primary"
icon="mdi-pencil"
@click="clickEdit(props.row, 'edit')"
>
<q-tooltip>แกไขขอม</q-tooltip> <q-tooltip>แกไขขอม</q-tooltip>
</q-btn> </q-btn>
</q-td> </q-td>
<q-td> <q-td>
<q-btn <q-btn dense flat round color="red" icon="mdi-delete" @click="cilckDelete(props.row.id)">
dense <q-tooltip>ลบขอม</q-tooltip></q-btn>
flat
round
color="red"
icon="mdi-delete"
@click="cilckDelete(props.row.id)"
>
<q-tooltip>ลบขอม</q-tooltip></q-btn
>
</q-td> </q-td>
<q-td> <q-td>
<q-btn <q-btn dense flat round color="info" @click="openPopupHistory(props.row.id)" icon="mdi-history">
dense
flat
round
color="info"
@click="openPopupHistory(props.row.id)"
icon="mdi-history"
>
<q-tooltip>ประวอมลการจาง </q-tooltip> <q-tooltip>ประวอมลการจาง </q-tooltip>
</q-btn> </q-btn>
</q-td> </q-td>
@ -444,32 +380,17 @@ const paginationHis = ref({
</span> </span>
<span style="margin-right: 0" v-else> เพิ่มข้อมูลการจ้าง </span> <span style="margin-right: 0" v-else> เพิ่มข้อมูลการจ้าง </span>
</q-toolbar-title> </q-toolbar-title>
<q-btn <q-btn for="closeDialog" icon="close" unelevated round dense style="color: #eb0505; background-color: #ffdede"
for="closeDialog" @click="colsePopup" />
icon="close"
unelevated
round
dense
style="color: #eb0505; background-color: #ffdede"
@click="colsePopup"
/>
</q-toolbar> </q-toolbar>
<q-separator />
<form @submit.prevent="validateForm"> <form @submit.prevent="validateForm">
<q-card-section class="q-pt-none"> <q-card-section class="q-pt-none">
<div class="col-12 row q-pa-md"> <div class="col-12 row q-pa-md">
<div <div class="col-xs-12 col-sm-12 row q-col-gutter-x-md q-col-gutter-y-xs">
class="col-xs-12 col-sm-12 row q-col-gutter-x-md q-col-gutter-y-xs"
>
<div class="col-xs-12 col-sm-6"> <div class="col-xs-12 col-sm-6">
<datepicker <datepicker menu-class-name="modalfix" v-model="formData.dateEmployment" :locale="'th'" autoApply
menu-class-name="modalfix" borderless :enableTimePicker="false" week-start="0">
v-model="formData.dateEmployment"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }"> <template #year="{ year }">
{{ year + 543 }} {{ year + 543 }}
</template> </template>
@ -477,27 +398,13 @@ const paginationHis = ref({
{{ parseInt(value + 543) }} {{ parseInt(value + 543) }}
</template> </template>
<template #trigger> <template #trigger>
<q-input <q-input for="inputdateEmployment" ref="dateEmploymentRef" outlined dense
for="inputdateEmployment" class="full-width datepicker" :model-value="formData.dateEmployment != null
ref="dateEmploymentRef"
outlined
dense
class="full-width datepicker"
:model-value="
formData.dateEmployment != null
? date2Thai(formData.dateEmployment) ? date2Thai(formData.dateEmployment)
: null : null
" " label="นทาง" :rules="[(val) => !!val || `${'กรุณาเลือกวันที่จ้าง'}`]" lazy-rules>
label="วันที่จ้าง"
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่จ้าง'}`]"
lazy-rules
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon <q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
@ -506,16 +413,9 @@ const paginationHis = ref({
</div> </div>
<div class="col-xs-12 col-sm-6"> <div class="col-xs-12 col-sm-6">
<q-input <q-input for="inputOrderEmployment" ref="orderEmploymentRef" dense outlined
for="inputOrderEmployment" v-model="formData.orderEmployment" label="คำสั่งจ้าง"
ref="orderEmploymentRef" :rules="[(val) => !!val || `${'กรุณากรอกคำสั่งจ้าง'}`]" lazy-rules />
dense
outlined
v-model="formData.orderEmployment"
label="คำสั่งจ้าง"
:rules="[(val) => !!val || `${'กรุณากรอกคำสั่งจ้าง'}`]"
lazy-rules
/>
</div> </div>
</div> </div>
</div> </div>
@ -525,16 +425,8 @@ const paginationHis = ref({
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right" class="bg-white text-teal"> <q-card-actions align="right" class="bg-white text-teal">
<q-btn <q-btn for="ButtonOnSubmit" id="onSubmit" flat round color="secondary" icon="mdi-content-save-outline"
for="ButtonOnSubmit" type="submit"><q-tooltip>บทกขอม</q-tooltip></q-btn>
id="onSubmit"
flat
round
color="secondary"
icon="mdi-content-save-outline"
type="submit"
><q-tooltip>บทกขอม</q-tooltip></q-btn
>
</q-card-actions> </q-card-actions>
</form> </form>
</q-card> </q-card>
@ -546,15 +438,8 @@ const paginationHis = ref({
<q-toolbar-title class="text-subtitle1 text-weight-bold"> <q-toolbar-title class="text-subtitle1 text-weight-bold">
<span style="margin-right: 0"> ประวอมลการจาง </span> <span style="margin-right: 0"> ประวอมลการจาง </span>
</q-toolbar-title> </q-toolbar-title>
<q-btn <q-btn for="closeDialog" icon="close" unelevated round dense style="color: #eb0505; background-color: #ffdede"
for="closeDialog" @click="colsePopup" />
icon="close"
unelevated
round
dense
style="color: #eb0505; background-color: #ffdede"
@click="colsePopup"
/>
</q-toolbar> </q-toolbar>
<q-separator /> <q-separator />
@ -562,44 +447,16 @@ const paginationHis = ref({
<q-toolbar class="q-pa-none"> <q-toolbar class="q-pa-none">
<q-space /> <q-space />
<div class="q-gutter-sm" style="display: flex"> <div class="q-gutter-sm" style="display: flex">
<q-input <q-input outlined dense v-model="filterHis" label="ค้นหา" style="min-width: 150px" />
outlined
dense
v-model="filterHis"
label="ค้นหา"
style="min-width: 150px"
/>
<q-select <q-select v-model="visibleColumnsHis" multiple outlined dense options-dense
v-model="visibleColumnsHis" :display-value="$q.lang.table.columns" emit-value map-options :options="columnsHis" option-value="name"
multiple options-cover style="min-width: 150px" />
outlined
dense
options-dense
:display-value="$q.lang.table.columns"
emit-value
map-options
:options="columnsHis"
option-value="name"
options-cover
style="min-width: 150px"
/>
</div> </div>
</q-toolbar> </q-toolbar>
<d-table <d-table flat bordered id="table" ref="table" :columns="columnsHis" :rows="rowsHis" :filter="filterHis"
flat row-key="dateEmployment" :paging="true" dense :visible-columns="visibleColumnsHis"
bordered v-model:pagination="paginationHis">
id="table"
ref="table"
:columns="columnsHis"
:rows="rowsHis"
:filter="filterHis"
row-key="dateEmployment"
:paging="true"
dense
:visible-columns="visibleColumnsHis"
v-model:pagination="paginationHis"
>
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">
<q-th v-for="col in props.cols" :key="col.name" :props="props"> <q-th v-for="col in props.cols" :key="col.name" :props="props">

View file

@ -29,18 +29,18 @@ async function fetchListComplaints() {
detail: "มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน", detail: "มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน",
complainant: "นางศิรินภา คงน้อย", complainant: "นางศิรินภา คงน้อย",
offenseDescription: "ร้ายแรง", offenseDescription: "ร้ายแรง",
creationDate: "2023-10-16", creationDate: new Date("2023-12-01"),
considerationLevel: "ด่วนมาก", considerationLevel: "ด่วนมาก",
considerationDeadlineDate: "2023-11-01", considerationDeadlineDate: new Date("2023-12-02"),
}, },
{ {
subject: "ทุจริตในหน้าที่", subject: "ทุจริตในหน้าที่",
detail: "มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน", detail: "มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน",
complainant: "นายแก้ว คำ", complainant: "นายแก้ว คำ",
offenseDescription: "ร้ายแรง", offenseDescription: "ร้ายแรง",
creationDate: "2023-10-16", creationDate: new Date("2023-12-01"),
considerationLevel: "ด่วนมาก", considerationLevel: "ด่วนมาก",
considerationDeadlineDate: "2023-11-01", considerationDeadlineDate: new Date("2023-12-02"),
}, },
{ {
subject: "ทุจริตในหน้าที่", subject: "ทุจริตในหน้าที่",
@ -48,9 +48,9 @@ async function fetchListComplaints() {
"มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน", "มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน มีข้อร้องเรียนเรื่องการทุจริตทางการเงิน",
complainant: "นายภัทรานุย คงนอย", complainant: "นายภัทรานุย คงนอย",
offenseDescription: "ร้ายแรง", offenseDescription: "ร้ายแรง",
creationDate: "2023-10-16", creationDate: new Date("2023-12-01"),
considerationLevel: "ด่วนมาก", considerationLevel: "ด่วนมาก",
considerationDeadlineDate: "2023-11-01", considerationDeadlineDate: new Date("2023-12-02"),
}, },
]; ];
await fetchComplainst(listData); await fetchComplainst(listData);

View file

@ -111,32 +111,13 @@ const checkSelected = computed(() => {
const saveDirector = () => { const saveDirector = () => {
dialogConfirm( dialogConfirm(
$q, $q,
() => Ordersave(), () => DirectorSave(),
"ยืนยันเพิ่มรายชื่อกรรมการ", "ยืนยันเพิ่มรายชื่อกรรมการ",
"ต้องการยืนยันเพิ่มรายชื่อกรรมการ?" "ต้องการยืนยันเพิ่มรายชื่อกรรมการ?"
); );
}; };
// //
const Ordersave = async () => { const DirectorSave = async () => {};
// const id = selected.value.map((r) => r.id);
// const body = {
// id,
// };
// showLoader();
// await http
// .post(config.API.transferReport, body)
// .then((res: any) => {
// success($q, "");
// props.closeModal?.();
// })
// .catch((e) => {
// messageError($q, e);
// })
// .finally(async () => {
// props.getData?.();
// hideLoader();
// });
};
const emit = defineEmits(["update:filterKeyword2", "update:selected"]); const emit = defineEmits(["update:filterKeyword2", "update:selected"]);
const updateInput = (value: any) => { const updateInput = (value: any) => {
@ -158,7 +139,7 @@ watchEffect(() => {
<DialogHeader title="เลือกรายชื่อกรรมการ" :close="clickClose" /> <DialogHeader title="เลือกรายชื่อกรรมการ" :close="clickClose" />
<q-separator /> <q-separator />
<q-card-section class="q-pt-none"> <q-card-section class="q-pt-none">
<div class="row justify-end"> <div>
<div> <div>
<q-toolbar style="padding: 0"> <q-toolbar style="padding: 0">
<q-input <q-input
@ -170,7 +151,7 @@ watchEffect(() => {
:model-value="filterKeyword2" :model-value="filterKeyword2"
@update:model-value="updateInput" @update:model-value="updateInput"
placeholder="ค้นหารายชื่อ" placeholder="ค้นหารายชื่อ"
style="width: 850px; max-width: auto" style="max-width: 100%"
> >
<template v-slot:append> <template v-slot:append>
<q-icon v-if="filterKeyword2 == ''" name="search" /> <q-icon v-if="filterKeyword2 == ''" name="search" />
@ -182,21 +163,6 @@ watchEffect(() => {
/> />
</template> </template>
</q-input> </q-input>
<!-- <q-select
v-model="visibleColumns2"
multiple
outlined
dense
options-dense
:display-value="$q.lang.table.columns"
emit-value
map-options
:options="columns2"
option-value="name"
options-cover
style="min-width: 150px"
class="gt-xs q-ml-sm"
/> -->
</q-toolbar> </q-toolbar>
</div> </div>
</div> </div>
@ -205,7 +171,7 @@ watchEffect(() => {
:columns="columns2" :columns="columns2"
:rows="rows2" :rows="rows2"
:filter="filterKeyword2" :filter="filterKeyword2"
row-key="id" row-key="nameDirector"
:visible-columns="visibleColumns2" :visible-columns="visibleColumns2"
selection="single" selection="single"
v-model:selected="selected" v-model:selected="selected"
@ -229,26 +195,12 @@ watchEffect(() => {
v-model="props.selected" v-model="props.selected"
/> />
</q-td> </q-td>
<q-td key="no" :props="props"> <q-td v-for="col in props.cols" :key="col.name" :props="props">
{{ props.rowIndex + 1 }} <div v-if="col.name == 'no'">
</q-td> {{ props.rowIndex + 1 }}
<q-td key="nameDirector" :props="props">
{{ props.row.nameDirector }}
</q-td>
<q-td key="position" :props="props">
{{ props.row.position }}
</q-td>
<q-td key="duty" :props="props">
{{ props.row.duty }}
</q-td>
<q-td key="email" :props="props">
<div class="table_ellipsis">
{{ props.row.email }}
</div> </div>
</q-td> <div v-else>
<q-td key="telephone" :props="props"> {{ col.value }}
<div class="table_ellipsis">
{{ props.row.telephone }}
</div> </div>
</q-td> </q-td>
</q-tr> </q-tr>

View file

@ -26,7 +26,7 @@ onMounted(async () => {
fault: "1", fault: "1",
penaltyLevel: "7", penaltyLevel: "7",
caseFault: "ทุจริตในหน้าที่", caseFault: "ทุจริตในหน้าที่",
dateInvestigate: "1 ธ.ค. 2565", dateInvestigate: "2023-12-01",
status: "0", status: "0",
active: "2", active: "2",
}, },
@ -36,7 +36,7 @@ onMounted(async () => {
fault: "1", fault: "1",
penaltyLevel: "7", penaltyLevel: "7",
caseFault: "ทุจริตในหน้าที่", caseFault: "ทุจริตในหน้าที่",
dateInvestigate: "30 พ.ย. 2565", dateInvestigate: "2023-11-30",
status: "0", status: "0",
active: "0", active: "0",
}, },
@ -46,7 +46,7 @@ onMounted(async () => {
fault: "2", fault: "2",
penaltyLevel: "1", penaltyLevel: "1",
caseFault: "พบการทุจริต", caseFault: "พบการทุจริต",
dateInvestigate: "14 ก.ย. 2565", dateInvestigate: "2023-09-14",
status: "1", status: "1",
active: "1", active: "1",
}, },
@ -56,7 +56,7 @@ onMounted(async () => {
fault: "2", fault: "2",
penaltyLevel: "1", penaltyLevel: "1",
caseFault: "พูดจาไม่สุภาพกับผู้บังคับบัญชา", caseFault: "พูดจาไม่สุภาพกับผู้บังคับบัญชา",
dateInvestigate: "11 ส.ค. 2565", dateInvestigate: "2023-08-11",
status: "0", status: "0",
active: "1", active: "1",
}, },
@ -92,10 +92,10 @@ const clickAdd = () => {
<template #columns="props"> <template #columns="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">
<q-td v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</q-td> </div>
<div> <div v-else>
{{ col.value }} {{ col.value }}
</div> </div>
</q-td> </q-td>

View file

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import type { DataList } from "../../interface/response/order"; import type { DataList, DataListRes } from "../../interface/response/order";
// importStroe // importStroe
import { useOrderStore } from "@/modules/11_discipline/store/OrderStore"; import { useOrderStore } from "@/modules/11_discipline/store/OrderStore";
@ -21,11 +21,11 @@ onMounted(async () => {
// API // API
async function fetchListOrder() { async function fetchListOrder() {
const listData: DataList[] = [ const listData: DataListRes[] = [
{ {
subject: "ทุจริตในหน้าที่", subject: "ทุจริตในหน้าที่",
ordernumber: "1/2556", ordernumber: "1/2556",
dateOrder: "1 ธ.ค. 2565", dateOrder: new Date("2023-12-01"),
orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ", orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ",
signer: "นางศิรินภา คงน้อย", signer: "นางศิรินภา คงน้อย",
statusorder: "เสร็จสิ้นแล้ว", statusorder: "เสร็จสิ้นแล้ว",
@ -33,7 +33,7 @@ async function fetchListOrder() {
{ {
subject: "ทุจริตในหน้าที่", subject: "ทุจริตในหน้าที่",
ordernumber: "4/2556", ordernumber: "4/2556",
dateOrder: "1 ธ.ค. 2565", dateOrder: new Date("2023-12-01"),
orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ", orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ",
signer: "นางศิรินภา คงน้อย", signer: "นางศิรินภา คงน้อย",
statusorder: "เสร็จสิ้นแล้ว", statusorder: "เสร็จสิ้นแล้ว",
@ -41,7 +41,7 @@ async function fetchListOrder() {
{ {
subject: "ทุจริตในหน้าที่", subject: "ทุจริตในหน้าที่",
ordernumber: "2/2556", ordernumber: "2/2556",
dateOrder: "1 ธ.ค. 2565", dateOrder: new Date("2023-12-01"),
orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ", orderby: "สำนักงานคณพกรรมการข้าราชการกรุงเทพฯ",
signer: "นางศิรินภา คงน้อย", signer: "นางศิรินภา คงน้อย",
statusorder: "เสร็จสิ้นแล้ว", statusorder: "เสร็จสิ้นแล้ว",

View file

@ -4,67 +4,15 @@ import type { QTableProps } from "quasar";
import router from "@/router"; import router from "@/router";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useDisciplineChannelDataStore } from "@/modules/11_discipline/store/ChannelStore";
import config from "@/app.config"; import config from "@/app.config";
import http from "@/plugins/http"; import http from "@/plugins/http";
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { const { dialogRemove } = mixin;
date2Thai,
success,
messageError,
showLoader,
hideLoader,
dialogConfirm,
dialogRemove,
} = mixin;
const $q = useQuasar(); // noti quasar const $q = useQuasar(); // noti quasar
const visibleColumns = ref<string[]>([
"no",
"subject",
"interrogated",
"fault",
"status",
]); //
//
const columns = ref<QTableProps["columns"]>([
{
name: "no",
align: "left",
label: "ลำดับ",
sortable: false,
field: "no",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "subject",
align: "left",
label: "ชื่อประเภท",
sortable: true,
field: "subject",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const rows = ref<any>([
{
subject: " จดหมาย",
},
{
subject: " อีเมล์",
},
{
subject: " โทรศัพท์",
},
{
subject: " บอกเล่า",
},
]);
// //
const filterKeyword = ref<string>(""); const filterKeyword = ref<string>("");
const filterRef = ref<HTMLInputElement | null>(null); const filterRef = ref<HTMLInputElement | null>(null);
@ -74,19 +22,13 @@ const resetFilter = () => {
filterRef.value.focus(); filterRef.value.focus();
} }
}; };
const dataStore = useDisciplineChannelDataStore();
const attrs = ref<any>(useAttrs());
const paging = ref<boolean>(true);
const pagination = ref({ const pagination = ref({
// sortBy: "desc", // sortBy: "desc",
descending: false, descending: false,
page: 1, page: 1,
rowsPerPage: 10, rowsPerPage: 10,
}); });
const paginationLabel = (start: string, end: string, total: string) => {
if (paging.value == true) return " " + start + "-" + end + " ใน " + total;
else return start + "-" + end + " ใน " + total;
};
const clickAdd = () => { const clickAdd = () => {
router.push(`/discipline/channel/add`); router.push(`/discipline/channel/add`);
@ -104,7 +46,23 @@ const clickDelete = (id: string) => {
); );
}; };
onMounted(() => {}); onMounted(() => {
// get store
dataStore.fetchData([
{
subject: " จดหมาย",
},
{
subject: " อีเมล์",
},
{
subject: " โทรศัพท์",
},
{
subject: " บอกเล่า",
},
]);
});
</script> </script>
<template> <template>
<div class="toptitle text-dark col-12 row items-center"> <div class="toptitle text-dark col-12 row items-center">
@ -149,7 +107,7 @@ onMounted(() => {});
</q-input> </q-input>
<q-select <q-select
v-model="visibleColumns" v-model="dataStore.visibleColumns"
multiple multiple
for="visibleColumns" for="visibleColumns"
outlined outlined
@ -158,7 +116,7 @@ onMounted(() => {});
:display-value="$q.lang.table.columns" :display-value="$q.lang.table.columns"
emit-value emit-value
map-options map-options
:options="columns" :options="dataStore.columns"
option-value="name" option-value="name"
options-cover options-cover
style="min-width: 150px" style="min-width: 150px"
@ -167,12 +125,11 @@ onMounted(() => {});
</div> </div>
<div class="col-12"> <div class="col-12">
<d-table <d-table
:columns="columns" :columns="dataStore.columns"
:rows="rows" :rows="dataStore.rows"
row-key="id" row-key="id"
:filter="filterKeyword" :filter="filterKeyword"
:visible-columns="visibleColumns" :visible-columns="dataStore.visibleColumns"
:pagination-label="paginationLabel"
v-model:pagination="pagination" v-model:pagination="pagination"
> >
<template v-slot:header="props"> <template v-slot:header="props">

View file

@ -0,0 +1,5 @@
interface ChannelRows {
subject: string;
}
export type { ChannelRows };

View file

@ -1,15 +1,25 @@
interface DataListRow {
subject: string
detail: string
complainant: string
offenseDescription: string
creationDate: string | null
considerationLevel: string
considerationDeadlineDate: string | null
}
interface DataList { interface DataList {
subject: string subject: string
detail: string detail: string
complainant: string complainant: string
offenseDescription: string offenseDescription: string
creationDate: string creationDate: Date
considerationLevel: string considerationLevel: string
considerationDeadlineDate: string considerationDeadlineDate: Date
} }
export type { export type {
DataList DataList,
DataListRow
} }

View file

@ -1,15 +1,25 @@
interface DataList { interface DataList {
subject: string subject: string
ordernumber: string ordernumber: string
dateOrder: string dateOrder: string | null;
orderby: string orderby: string
signer: string signer: string
statusorder: string statusorder: string
} }
interface DataListRes {
subject: string
ordernumber: string
dateOrder: Date
orderby: string
signer: string
statusorder: string
}
export type { export type {
DataList DataList,
DataListRes
} }

View file

@ -0,0 +1,54 @@
import { defineStore } from "pinia";
import { ref } from "vue";
import type { ChannelRows } from "@/modules/11_discipline/interface/response/channel";
import type { QTableProps } from "quasar";
// store ระบบวินัย >> ข้อมูลพื้นฐาน >> กรรมการ
export const useDisciplineChannelDataStore = defineStore(
"disciplineChannel",
() => {
//ค้นหา คอลัมน์ คอลัมน์ที่แสดง
const visibleColumns = ref<string[]>([
"no",
"subject",
"interrogated",
"fault",
"status",
]); //ค้นหา คอลัมน์ คอลัมน์ที่แสดง
// หัวตาราง
const columns = ref<QTableProps["columns"]>([
{
name: "no",
align: "left",
label: "ลำดับ",
sortable: false,
field: "no",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "subject",
align: "left",
label: "ชื่อประเภท",
sortable: true,
field: "subject",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
// ข้อมูลในตาราง
const rows = ref<ChannelRows[]>([]);
function fetchData(data: ChannelRows[]) {
rows.value = data;
}
return {
visibleColumns,
columns,
rows,
fetchData,
};
}
);

View file

@ -1,13 +1,17 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { ref } from "vue"; import { ref } from "vue";
import { useCounterMixin } from "@/stores/mixin";
import type { DataOption } from "@/modules/11_discipline/interface/index/Main"; import type { DataOption } from "@/modules/11_discipline/interface/index/Main";
import type { DataList } from "@/modules/11_discipline/interface/response/complaint" import type { DataList, DataListRow } from "@/modules/11_discipline/interface/response/complaint"
import type { QTableProps } from "quasar"; import type { QTableProps } from "quasar";
const mixin = useCounterMixin()
const { date2Thai } = mixin
export const useComplainstDataStore = defineStore("DisciplineComplainst", () => { export const useComplainstDataStore = defineStore("DisciplineComplainst", () => {
const rows = ref<DataList[]>([]) const rows = ref<DataListRow[]>([])
const visibleColumns = ref<string[]>([]); const visibleColumns = ref<string[]>([]);
const columns = ref<QTableProps["columns"]>([]); const columns = ref<QTableProps["columns"]>([]);
function fetchComplainst(data: DataList[]) { function fetchComplainst(data: DataList[]) {
@ -16,9 +20,9 @@ export const useComplainstDataStore = defineStore("DisciplineComplainst", () =>
detail: e.detail, detail: e.detail,
complainant: e.complainant, complainant: e.complainant,
offenseDescription: e.offenseDescription, offenseDescription: e.offenseDescription,
creationDate: e.creationDate, creationDate: date2Thai(e.creationDate),
considerationLevel: e.considerationLevel, considerationLevel: e.considerationLevel,
considerationDeadlineDate: e.considerationDeadlineDate, considerationDeadlineDate: date2Thai(e.considerationDeadlineDate),
})) }))
rows.value = datalist rows.value = datalist
} }

View file

@ -6,6 +6,9 @@ import type {
DataOption, DataOption,
directorType, directorType,
} from "@/modules/11_discipline/interface/index/Main"; } from "@/modules/11_discipline/interface/index/Main";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { date2Thai } = mixin;
export const useInvestigateDisStore = defineStore( export const useInvestigateDisStore = defineStore(
"DisciplineInvestigateDis", "DisciplineInvestigateDis",
@ -34,7 +37,7 @@ export const useInvestigateDisStore = defineStore(
fault: convertFault(e.fault), fault: convertFault(e.fault),
penaltyLevel: convertPenaltyLevel(e.penaltyLevel), penaltyLevel: convertPenaltyLevel(e.penaltyLevel),
caseFault: e.caseFault, caseFault: e.caseFault,
dateInvestigate: e.dateInvestigate, dateInvestigate: date2Thai(new Date(e.dateInvestigate)),
status: convertSatatus(e.status), status: convertSatatus(e.status),
active: activeStatus(e.active), active: activeStatus(e.active),
})); }));

View file

@ -1,22 +1,25 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { ref } from "vue"; import { ref } from "vue";
import type { QTableProps } from "quasar";
import type { DataList } from "@/modules/11_discipline/interface/response/order"
import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import type { DataList, DataListRes } from "@/modules/11_discipline/interface/response/order"
const mixin = useCounterMixin()
const { date2Thai } = mixin
export const useOrderStore = defineStore("DisciplineOrder", () => { export const useOrderStore = defineStore("DisciplineOrder", () => {
const rows = ref<DataList[]>([]) const rows = ref<DataList[]>([])
const columns = ref<QTableProps["columns"]>([]); const columns = ref<QTableProps["columns"]>([]);
const visibleColumns = ref<string[]>([]); const visibleColumns = ref<string[]>([]);
async function fetchOrder(data: DataList[]) { async function fetchOrder(data: DataListRes[]) {
let datalist = data.map((e: DataList) => ({ let datalist: DataList[] = data.map((e: DataListRes) => ({
subject: e.subject, subject: e.subject,
ordernumber: e.ordernumber, ordernumber: e.ordernumber,
dateOrder: e.dateOrder, dateOrder: date2Thai(e.dateOrder),
orderby: e.orderby, orderby: e.orderby,
signer: e.signer, signer: e.signer,
statusorder: e.statusorder statusorder: e.statusorder
})) }))
rows.value = datalist rows.value = datalist
} }