Merge branch 'develop' into dev-tee

This commit is contained in:
setthawutttty 2023-08-16 17:35:50 +07:00
commit b66dfe0142
17 changed files with 730 additions and 300 deletions

View file

@ -28,9 +28,9 @@ export default {
resignReject: (id: string) => `${retirement}/resign/reject/${id}`, resignReject: (id: string) => `${retirement}/resign/reject/${id}`,
// ปลดออก // ปลดออก
retirementDischarge, retirementDischarge,
listDischared: () => `${retirement}/dischared`, listDischarge: () => `${retirement}/discharge`,
discharedByid: (id: string) => `${retirement}/dischared/${id}`, dischargeByid: (id: string) => `${retirement}/discharge/${id}`,
discharedReport: `${retirement}/dischared/report`, dischargeReport: `${retirement}/discharge/report`,
// ไล่ออก // ไล่ออก
retirementExpulsion, retirementExpulsion,

View file

@ -117,17 +117,10 @@
</div> </div>
<q-separator color="blue-1" /> <q-separator color="blue-1" />
<div class="dialog-card-contain"> <div class="dialog-card-contain">
<q-card-section class="q-pa-md"> <q-card-section class="q-pa-sm">
<div class="row col-12 q-col-gutter-sm"> <div class="row col-12 q-col-gutter-xs">
<div
:class="
$q.screen.lt.md
? ' row col-12 q-col-gutter-xs'
: 'no-wrap row col-12 q-col-gutter-xs'
"
>
<selector <selector
class="col-3" class="col-4"
hide-bottom-space hide-bottom-space
:rules="[(val:string) => !!val || `${'กรุณาเลือก ประเภท'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก ประเภท'}`]"
outlined outlined
@ -160,7 +153,7 @@
type="number" type="number"
/> />
<q-input <q-input
class="col-2" class="col-3"
clearable clearable
dense dense
outlined outlined
@ -187,7 +180,7 @@
}}</template> }}</template>
<template #trigger> <template #trigger>
<q-input <q-input
class="inputgreen cursor-pointer q-mb-sm" class="inputgreen cursor-pointer"
hide-bottom-space hide-bottom-space
outlined outlined
dense dense
@ -223,15 +216,6 @@
type="number" type="number"
@update:model-value="updateGovAge" @update:model-value="updateGovAge"
/> />
</div>
<div
:class="
$q.screen.lt.md
? ' row col-12 q-col-gutter-xs'
: 'no-wrap row col-12 q-col-gutter-xs'
"
>
<q-input <q-input
v-if="employeeClass == 'officer'" v-if="employeeClass == 'officer'"
clearable clearable
@ -266,7 +250,7 @@
hide-bottom-space hide-bottom-space
label="ตำแหน่งทางการบริหาร" label="ตำแหน่งทางการบริหาร"
@update:model-value="updatePositionExecutive" @update:model-value="updatePositionExecutive"
class="col-3" class="col-4"
/> />
<q-input <q-input
v-if="employeeClass != 'officer'" v-if="employeeClass != 'officer'"
@ -290,7 +274,7 @@
hide-bottom-space hide-bottom-space
label="ระดับชั้นงาน" label="ระดับชั้นงาน"
@update:model-value="updateEmployeeLevel" @update:model-value="updateEmployeeLevel"
class="col-3" class="col-4"
/> />
<q-input <q-input
clearable clearable
@ -303,14 +287,6 @@
@update:model-value="updatePosNo" @update:model-value="updatePosNo"
class="col-3" class="col-3"
/> />
</div>
<div
:class="
$q.screen.lt.md
? ' row col-12 q-col-gutter-xs'
: 'no-wrap row col-12 q-col-gutter-xs'
"
>
<datepicker <datepicker
class="col-2" class="col-2"
menu-class-name="modalfix" menu-class-name="modalfix"
@ -372,10 +348,9 @@
hide-bottom-space hide-bottom-space
label="ประเภทคำสั่ง" label="ประเภทคำสั่ง"
@update:model-value="updateReportType" @update:model-value="updateReportType"
class="col-3" class="col-4"
/> />
</div>
<div class="col-12 row items-center">
<q-toggle <q-toggle
dense dense
:model-value="isShowRetire" :model-value="isShowRetire"
@ -437,7 +412,6 @@
/> />
</div> </div>
</div> --> </div> -->
</div>
</q-card-section> </q-card-section>
</div> </div>
</div> </div>

View file

@ -6,7 +6,6 @@ const router = useRouter();
const route = useRoute(); const route = useRoute();
const assignId = ref<string>(route.params.form.toString()); const assignId = ref<string>(route.params.form.toString());
const personalId = ref<string>(route.params.personalId.toString()); const personalId = ref<string>(route.params.personalId.toString());
const tabHead = ref<string>("save1"); const tabHead = ref<string>("save1");
const props = defineProps({ const props = defineProps({
@ -39,7 +38,7 @@ const nextPage = () => {
<template> <template>
<q-header class="bg-grey-1"> <q-header class="bg-grey-1">
<div class="bg-grey-1"> <div class="bg-grey-1">
|{{tabHead}}| |{{ tabHead }}|
<div class="col-12 row q-gutter-x-md items-center"> <div class="col-12 row q-gutter-x-md items-center">
<q-tabs <q-tabs
dense dense
@ -48,35 +47,34 @@ const nextPage = () => {
indicator-color="grey-1" indicator-color="grey-1"
class="text-grey-7" class="text-grey-7"
> >
<q-tab v-for="i in loop" :name="`save${i}`" :label="`ครั้งที่ ${i}`">
<q-tab v-for="i in loop" :name="`save${i}`" :label="`ครั้งที่ ${i}`"> <q-btn
<q-btn size="12px"
size="12px" flat
flat dense
dense icon="mdi-download"
icon="mdi-download" :disable="tabHead !== 'save' + i"
:disable="tabHead !== 'save'+i" :color="tabHead !== 'save' + i ? 'grey' : 'add'"
:color="tabHead !== 'save'+i ? 'grey' : 'add'" >
> <q-tooltip>ดาวนโหลด</q-tooltip>
<q-tooltip>ดาวนโหลด</q-tooltip> <q-menu>
<q-menu> <q-list style="min-width: 150px">
<q-list style="min-width: 150px"> <q-item clickable v-close-popup>
<q-item clickable v-close-popup> <q-item-section avatar
<q-item-section avatar ><q-icon color="red" name="mdi-file-pdf"
><q-icon color="red" name="mdi-file-pdf" /></q-item-section>
/></q-item-section> <q-item-section>ไฟล .PDF</q-item-section>
<q-item-section>ไฟล .PDF</q-item-section> </q-item>
</q-item> <q-item clickable v-close-popup>
<q-item clickable v-close-popup> <q-item-section avatar
<q-item-section avatar ><q-icon color="blue" name="mdi-file-word"
><q-icon color="blue" name="mdi-file-word" /></q-item-section>
/></q-item-section> <q-item-section>ไฟล .docx</q-item-section>
<q-item-section>ไฟล .docx</q-item-section> </q-item>
</q-item> </q-list>
</q-list> </q-menu>
</q-menu> </q-btn>
</q-btn> </q-tab>
</q-tab>
<!-- <q-tab name="save3" label="ครั้งที่ 3" /> <!-- <q-tab name="save3" label="ครั้งที่ 3" />
<q-btn size="12px" flat dense icon="mdi-download" :disable="tab !== 'save3'" <q-btn size="12px" flat dense icon="mdi-download" :disable="tab !== 'save3'"

View file

@ -4,10 +4,16 @@ import { useCounterMixin } from "@/stores/mixin";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
const Header = defineAsyncComponent( const Header = defineAsyncComponent(
() =>import("@/modules/05_placement/components/probation/FormEvaluation/Header.vue") () =>
import(
"@/modules/05_placement/components/probation/FormEvaluation/Header.vue"
)
); );
const FormSaveResult = defineAsyncComponent( const FormSaveResult = defineAsyncComponent(
() => import( "@/modules/05_placement/components/probation/FormEvaluation/FormSaveResult.vue") () =>
import(
"@/modules/05_placement/components/probation/FormEvaluation/FormSaveResult.vue"
)
); );
import http from "@/plugins/http"; import http from "@/plugins/http";
@ -29,7 +35,7 @@ const activeTab = ref<string>("tab2");
onMounted(async () => { onMounted(async () => {
await fecthAssign(assignId.value); await fecthAssign(assignId.value);
tab.value ='save1' tab.value = "save1";
}); });
const fecthAssign = async (id: string) => { const fecthAssign = async (id: string) => {
@ -51,18 +57,24 @@ const fecthAssign = async (id: string) => {
}; };
const changeTab = (tabVal: string) => { const changeTab = (tabVal: string) => {
console.log("tabVal===>",tabVal); console.log("tabVal===>", tabVal);
tab.value = tabVal; tab.value = tabVal;
}; };
const addData = () => { const addData = () => {
router.push( router.push(
`/probation/detail/addresult/${personalId.value}/${assignId.value}` `/probation/detail/addresult/${personalId.value}/${assignId.value}`
); );
}; };
</script> </script>
<template> <template>
<Header :change-tab="changeTab" :activeTab="activeTab" :add-data="addData" :loop="tabs.length"/> <Header
:change-tab="changeTab"
:activeTab="activeTab"
:add-data="addData"
:loop="tabs.length"
v-if="tabs.length > 0"
/>
<!-- <q-header class="bg-grey-1"> <!-- <q-header class="bg-grey-1">
<div class="bg-grey-1"> <div class="bg-grey-1">
<div class="col-12 row q-gutter-xs-md items-center"> <div class="col-12 row q-gutter-xs-md items-center">
@ -99,21 +111,18 @@ const addData = () => {
</q-header> --> </q-header> -->
<q-page-container> <q-page-container>
<q-tab-panels v-model="tab" animated> <q-tab-panels v-model="tab" animated>
<q-tab-panel v-for="tabName in tabs" :key="tabName" :name="'save' + tabName.no"> <q-tab-panel
v-for="tabName in tabs"
:key="tabName"
:name="'save' + tabName.no"
>
<FormSaveResult :tab="tab" /> <FormSaveResult :tab="tab" />
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</q-page-container> </q-page-container>
<div class="q-gutter-md" v-if="tabs.length === 0">
<!-- <q-page-container> <div class="flex justify-center items-center q-my-md q-gutter-md">
<q-tab-panels v-model="tab" animated> <q-btn outline color="primary" label="สร้างแบบประเมิน" @click="addData" />
<q-tab-panel name="save1"> </div>
<FormSaveResult :tab="tab" /> </div>
</q-tab-panel>
<q-tab-panel name="save2">
<FormSaveResult :tab="tab" />
</q-tab-panel>
</q-tab-panels>
</q-page-container> -->
</template> </template>

View file

@ -43,9 +43,9 @@ const fecthAssign = async (id: string) => {
await http await http
.get(config.API.evaluateCreate(id)) .get(config.API.evaluateCreate(id))
.then((res: any) => { .then((res: any) => {
if (res.data.data.evaluate_no > 2) { if (res.data.data.evaluate_no > 0) {
tabs.value = res.data.data.evaluate; tabs.value = res.data.data.evaluate;
} else tabs.value.push({ no: 1 }, { no: 2 }); }
}) })
.catch((e: any) => { .catch((e: any) => {
console.log(e); console.log(e);
@ -56,7 +56,9 @@ const fecthAssign = async (id: string) => {
}); });
}; };
const addData = () => { const addData = () => {
router.push(`/probation/detail/addevalua/${personalId.value}/${assignId.value}`); router.push(
`/probation/detail/addevalua/${personalId.value}/${assignId.value}`
);
}; };
</script> </script>
@ -66,6 +68,7 @@ const addData = () => {
:activeTab="activeTab" :activeTab="activeTab"
:loop="tabs.length" :loop="tabs.length"
:add-data="addData" :add-data="addData"
v-if="tabs.length > 0"
/> />
<!-- <q-page-container> <!-- <q-page-container>
@ -90,4 +93,10 @@ const addData = () => {
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</q-page-container> </q-page-container>
<div class="q-gutter-md" v-if="tabs.length === 0">
<div class="flex justify-center items-center q-my-md q-gutter-md">
<q-btn outline color="primary" label="สร้างแบบประเมิน" @click="addData" />
</div>
</div>
</template> </template>

View file

@ -39,9 +39,9 @@ const fecthAssign = async (id: string) => {
await http await http
.get(config.API.evaluateChairman(id)) .get(config.API.evaluateChairman(id))
.then((res: any) => { .then((res: any) => {
if (res.data.data.evaluate_no > 2) { if (res.data.data.evaluate_no > 0 {
tabs.value = res.data.data.evaluate; tabs.value = res.data.data.evaluate;
} else tabs.value.push({ no: 1 }, { no: 2 }); }
}) })
.catch((e) => { .catch((e) => {
messageError($q, e); messageError($q, e);
@ -51,7 +51,9 @@ const fecthAssign = async (id: string) => {
}); });
}; };
const addData = () => { const addData = () => {
router.push(`/probation/detail/addevaluascore/${personalId.value}/${assignId.value}`); router.push(
`/probation/detail/addevaluascore/${personalId.value}/${assignId.value}`
);
}; };
const changeTab = (tabVal: string) => { const changeTab = (tabVal: string) => {
tab.value = tabVal; tab.value = tabVal;
@ -64,6 +66,7 @@ const changeTab = (tabVal: string) => {
:activeTab="activeTab" :activeTab="activeTab"
:loop="tabs.length" :loop="tabs.length"
:add-data="addData" :add-data="addData"
v-if="tabs.length > 0"
/> />
<!-- <q-page-container> <!-- <q-page-container>
@ -88,4 +91,9 @@ const changeTab = (tabVal: string) => {
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</q-page-container> </q-page-container>
<div class="q-gutter-md" v-if="tabs.length === 0">
<div class="flex justify-center items-center q-my-md q-gutter-md">
<q-btn outline color="primary" label="สร้างแบบประเมิน" @click="addData" />
</div>
</div>
</template> </template>

View file

@ -26,7 +26,14 @@ const router = useRouter();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const transferStore = useTransferDataStore(); const transferStore = useTransferDataStore();
const { date2Thai, messageError, showLoader, hideLoader, success } = mixin; const {
date2Thai,
messageError,
showLoader,
hideLoader,
success,
dialogMessage,
} = mixin;
const { statusText } = transferStore; const { statusText } = transferStore;
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
@ -36,7 +43,6 @@ const visibleColumns = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); ]);
const visibleColumns2 = ref<string[]>([ const visibleColumns2 = ref<string[]>([
@ -45,7 +51,6 @@ const visibleColumns2 = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); // ]); //
const filterKeyword = ref<string>(""); const filterKeyword = ref<string>("");
@ -109,15 +114,6 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -174,15 +170,6 @@ const columns2 = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -254,33 +241,32 @@ const getData = async () => {
}); });
}; };
const clickDelete = (id: string) => { const clickDelete = async (name: string, id: string) => {
$q.dialog({ dialogMessage(
title: "ยืนยันการลบข้อมูล", $q,
message: "ต้องการลบข้อมูลนี้ใช่หรือไม่?", `ลบข้อมูล`,
cancel: { `ต้องการทำการลบข้อมูลนี้ใช่หรือไม่?`,
flat: true, "delete",
color: "negative", "ยืนยัน",
}, "red",
persistent: true, async () => await deleteData(id),
}) async () => await getData()
.onOk(async () => { );
showLoader(); };
await http
.delete(config.API.discharedByid(id)) const deleteData = async (id: string) => {
.then((res) => { await http
success($q, "ลบข้อมูลสำเร็จ"); .delete(config.API.dischargeByid(id))
getData(); .then((res) => {
}) success($q, "ลบข้อมูลสำเร็จ");
.catch((e) => { console.log(res);
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}) })
.onCancel(() => {}) .catch((e) => {
.onDismiss(() => {}); messageError($q, e);
})
.finally(async () => {
await getData();
});
}; };
const saveOrder = async () => { const saveOrder = async () => {
@ -291,7 +277,7 @@ const saveOrder = async () => {
showLoader(); showLoader();
await http await http
.post(config.API.discharedReport, body) .post(config.API.dischargeReport, body)
.then((res: any) => { .then((res: any) => {
// const data = res.data.result; // const data = res.data.result;
// console.log(data); // console.log(data);

View file

@ -66,7 +66,7 @@
</div> </div>
</q-card> </q-card>
<q-card bordered class="row col-12 text-dark q-mt-sm"> <!-- <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการปลดออก</div> <div class="q-pl-sm text-weight-bold text-dark">อมลการปลดออก</div>
<q-space /> <q-space />
@ -146,7 +146,7 @@
</template> </template>
</d-table> </d-table>
</div> </div>
</q-card> </q-card> -->
<q-card bordered class="row col-12 text-dark q-mt-sm"> <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
@ -188,6 +188,175 @@
</div> </div>
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<q-form ref="myForm">
<div class="row col-12 q-pa-md">
<div class="col-12 row bg-white q-col-gutter-md">
<div class="col-xs-12 row items-center">
<div class="col-12">
<div class="text-weight-bold text-grey">
ตำแหนงและหนวยงานเด
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organizationPositionOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่ง/สังกัด'}`]"
hide-bottom-space
:label="`${'ตำแหน่ง/สังกัด'}`"
type="textarea"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionTypeOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่งประเภท'}`]"
hide-bottom-space
:label="`${'ตำแหน่งประเภท'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionLevelOld"
:rules="[(val) => !!val || `${'กรุณากรอกระดับ'}`]"
hide-bottom-space
:label="`${'ระดับ'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="posNo"
:rules="[(val) => !!val || `${'กรุณากรอกเลขที่'}`]"
hide-bottom-space
:label="`${'เลขที่'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="salary"
:rules="[(val) => !!val || `${'กรุณากรอกเงินเดือน'}`]"
hide-bottom-space
:label="`${'เงินเดือน'}`"
type="number"
/>
</div>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organization"
:rules="[(val) => !!val || `${'กรุณากรอกการปลดออก'}`]"
hide-bottom-space
:label="`${'การปลดออก'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<datepicker
menu-class-name="modalfix"
:readonly="!edit"
v-model="date"
:locale="'th'"
autoApply
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }">{{ year + 543 }}</template>
<template #year-overlay-value="{ value }">{{
parseInt(value + 543)
}}</template>
<template #trigger>
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:borderless="!edit"
:model-value="date !== null ? date2Thai(date) : null"
:rules="[(val) => !!val || `${'กรุณาเลือกตั้งแต่วัน'}`]"
hide-bottom-space
:label="`${'ตั้งแต่วัน'}`"
>
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
:style="
edit
? 'color: var(--q-primary)'
: 'color: var(--q-grey)'
"
>
</q-icon>
</template>
</q-input>
</template>
</datepicker>
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="reason"
:rules="[(val) => !!val || `${'กรุณากรอกหมายเหตุ '}`]"
hide-bottom-space
:label="`${'หมายเหตุ '}`"
type="textarea"
/>
</div>
</div>
</div>
</q-form>
</q-card> </q-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -292,20 +461,10 @@ onMounted(async () => {
const getData = async () => { const getData = async () => {
showLoader(); showLoader();
await http await http
.get(config.API.discharedByid(personId.toString())) .get(config.API.dischargeByid(personId.toString()))
.then((res: any) => { .then((res: any) => {
const data = res.data.result; const data = res.data.result;
// console.log(data);
let list: TypeFile[] = [];
if (data.docs.length > 0) {
data.docs.map((doc: TypeFile) => {
list.push({
pathName: doc.pathName ?? "",
fileName: doc.fileName ?? "",
});
});
}
rows.value = list;
responseData.value.createdAt = data.createdAt; responseData.value.createdAt = data.createdAt;
responseData.value.date = responseData.value.date =
data.date !== null ? new Date(data.date) : new Date(); data.date !== null ? new Date(data.date) : new Date();
@ -320,9 +479,9 @@ const getData = async () => {
responseData.value.salary = data.salary !== null ? data.salary : 0; responseData.value.salary = data.salary !== null ? data.salary : 0;
responseData.value.status = data.status ?? ""; responseData.value.status = data.status ?? "";
responseData.value.avataPath = data.avataPath ?? ""; responseData.value.avataPath = data.avataPath ?? "";
responseData.value.fullname = `${data.prefix ?? "-"} ${ responseData.value.fullname = `${data.firstName ?? "-"} ${
data.firstName ?? "-" data.lastName ?? "-"
} ${data.lastName ?? "-"}`; }`;
organizationPositionOld.value = data.organizationPositionOld ?? ""; organizationPositionOld.value = data.organizationPositionOld ?? "";
positionTypeOld.value = data.positionTypeOld ?? ""; positionTypeOld.value = data.positionTypeOld ?? "";
@ -404,7 +563,7 @@ const saveData = async () => {
}; };
showLoader(); showLoader();
await http await http
.put(config.API.discharedByid(personId.toString()), body) .put(config.API.dischargeByid(personId.toString()), body)
.then((res: any) => { .then((res: any) => {
// const data = res.data.result; // const data = res.data.result;
// console.log(data); // console.log(data);

View file

@ -26,7 +26,14 @@ const router = useRouter();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const transferStore = useTransferDataStore(); const transferStore = useTransferDataStore();
const { date2Thai, messageError, showLoader, hideLoader, success } = mixin; const {
date2Thai,
messageError,
showLoader,
hideLoader,
success,
dialogMessage,
} = mixin;
const { statusText } = transferStore; const { statusText } = transferStore;
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
@ -36,7 +43,6 @@ const visibleColumns = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); ]);
const visibleColumns2 = ref<string[]>([ const visibleColumns2 = ref<string[]>([
@ -45,7 +51,6 @@ const visibleColumns2 = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); // ]); //
const filterKeyword = ref<string>(""); const filterKeyword = ref<string>("");
@ -109,15 +114,6 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -174,15 +170,6 @@ const columns2 = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -254,33 +241,32 @@ const getData = async () => {
}); });
}; };
const clickDelete = (id: string) => { const clickDelete = async (name: string, id: string) => {
$q.dialog({ dialogMessage(
title: "ยืนยันการลบข้อมูล", $q,
message: "ต้องการลบข้อมูลนี้ใช่หรือไม่?", `ลบข้อมูล`,
cancel: { `ต้องการทำการลบข้อมูลนี้ใช่หรือไม่?`,
flat: true, "delete",
color: "negative", "ยืนยัน",
}, "red",
persistent: true, async () => await deleteData(id),
}) async () => await getData()
.onOk(async () => { );
showLoader(); };
await http
.delete(config.API.outByid(id)) const deleteData = async (id: string) => {
.then((res) => { await http
success($q, "ลบข้อมูลสำเร็จ"); .delete(config.API.outByid(id))
getData(); .then((res) => {
}) success($q, "ลบข้อมูลสำเร็จ");
.catch((e) => { console.log(res);
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}) })
.onCancel(() => {}) .catch((e) => {
.onDismiss(() => {}); messageError($q, e);
})
.finally(async () => {
await getData();
});
}; };
const saveOrder = async () => { const saveOrder = async () => {

View file

@ -66,7 +66,7 @@
</div> </div>
</q-card> </q-card>
<q-card bordered class="row col-12 text-dark q-mt-sm"> <!-- <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการใหออก</div> <div class="q-pl-sm text-weight-bold text-dark">อมลการใหออก</div>
<q-space /> <q-space />
@ -146,7 +146,7 @@
</template> </template>
</d-table> </d-table>
</div> </div>
</q-card> </q-card> -->
<q-card bordered class="row col-12 text-dark q-mt-sm"> <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
@ -188,6 +188,175 @@
</div> </div>
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<q-form ref="myForm">
<div class="row col-12 q-pa-md">
<div class="col-12 row bg-white q-col-gutter-md">
<div class="col-xs-12 row items-center">
<div class="col-12">
<div class="text-weight-bold text-grey">
ตำแหนงและหนวยงานเด
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organizationPositionOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่ง/สังกัด'}`]"
hide-bottom-space
:label="`${'ตำแหน่ง/สังกัด'}`"
type="textarea"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionTypeOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่งประเภท'}`]"
hide-bottom-space
:label="`${'ตำแหน่งประเภท'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionLevelOld"
:rules="[(val) => !!val || `${'กรุณากรอกระดับ'}`]"
hide-bottom-space
:label="`${'ระดับ'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="posNo"
:rules="[(val) => !!val || `${'กรุณากรอกเลขที่'}`]"
hide-bottom-space
:label="`${'เลขที่'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="salary"
:rules="[(val) => !!val || `${'กรุณากรอกเงินเดือน'}`]"
hide-bottom-space
:label="`${'เงินเดือน'}`"
type="number"
/>
</div>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organization"
:rules="[(val) => !!val || `${'กรุณากรอกการให้ออกสังกัด'}`]"
hide-bottom-space
:label="`${'การให้ออกสังกัด'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<datepicker
menu-class-name="modalfix"
:readonly="!edit"
v-model="date"
:locale="'th'"
autoApply
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }">{{ year + 543 }}</template>
<template #year-overlay-value="{ value }">{{
parseInt(value + 543)
}}</template>
<template #trigger>
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:borderless="!edit"
:model-value="date !== null ? date2Thai(date) : null"
:rules="[(val) => !!val || `${'กรุณาเลือกตั้งแต่วัน'}`]"
hide-bottom-space
:label="`${'ตั้งแต่วัน'}`"
>
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
:style="
edit
? 'color: var(--q-primary)'
: 'color: var(--q-grey)'
"
>
</q-icon>
</template>
</q-input>
</template>
</datepicker>
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="reason"
:rules="[(val) => !!val || `${'กรุณากรอกหมายเหตุ '}`]"
hide-bottom-space
:label="`${'หมายเหตุ '}`"
type="textarea"
/>
</div>
</div>
</div>
</q-form>
</q-card> </q-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -295,17 +464,7 @@ const getData = async () => {
.get(config.API.outByid(personId.toString())) .get(config.API.outByid(personId.toString()))
.then((res: any) => { .then((res: any) => {
const data = res.data.result; const data = res.data.result;
// console.log(data);
let list: TypeFile[] = [];
if (data.docs.length > 0) {
data.docs.map((doc: TypeFile) => {
list.push({
pathName: doc.pathName ?? "",
fileName: doc.fileName ?? "",
});
});
}
rows.value = list;
responseData.value.createdAt = data.createdAt; responseData.value.createdAt = data.createdAt;
responseData.value.date = responseData.value.date =
data.date !== null ? new Date(data.date) : new Date(); data.date !== null ? new Date(data.date) : new Date();
@ -320,9 +479,9 @@ const getData = async () => {
responseData.value.salary = data.salary !== null ? data.salary : 0; responseData.value.salary = data.salary !== null ? data.salary : 0;
responseData.value.status = data.status ?? ""; responseData.value.status = data.status ?? "";
responseData.value.avataPath = data.avataPath ?? ""; responseData.value.avataPath = data.avataPath ?? "";
responseData.value.fullname = `${data.prefix ?? "-"} ${ responseData.value.fullname = `${data.firstName ?? "-"} ${
data.firstName ?? "-" data.lastName ?? "-"
} ${data.lastName ?? "-"}`; }`;
organizationPositionOld.value = data.organizationPositionOld ?? ""; organizationPositionOld.value = data.organizationPositionOld ?? "";
positionTypeOld.value = data.positionTypeOld ?? ""; positionTypeOld.value = data.positionTypeOld ?? "";

View file

@ -26,7 +26,14 @@ const router = useRouter();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const transferStore = useTransferDataStore(); const transferStore = useTransferDataStore();
const { date2Thai, messageError, showLoader, hideLoader, success } = mixin; const {
date2Thai,
messageError,
showLoader,
hideLoader,
success,
dialogMessage,
} = mixin;
const { statusText } = transferStore; const { statusText } = transferStore;
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
@ -36,7 +43,6 @@ const visibleColumns = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); ]);
const visibleColumns2 = ref<string[]>([ const visibleColumns2 = ref<string[]>([
@ -45,7 +51,6 @@ const visibleColumns2 = ref<string[]>([
"position", "position",
"positionLevel", "positionLevel",
"organizationPositionOld", "organizationPositionOld",
"organization",
"statustext", "statustext",
]); // ]); //
const filterKeyword = ref<string>(""); const filterKeyword = ref<string>("");
@ -109,15 +114,6 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -174,15 +170,6 @@ const columns2 = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px", headerStyle: "font-size: 14px",
style: "font-size: 14px", style: "font-size: 14px",
}, },
{
name: "organization",
align: "left",
label: "หน่วยงานที่ขอโอนไป",
sortable: true,
field: "organization",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{ {
name: "statustext", name: "statustext",
align: "left", align: "left",
@ -254,33 +241,32 @@ const getData = async () => {
}); });
}; };
const clickDelete = (id: string) => { const clickDelete = async (name: string, id: string) => {
$q.dialog({ dialogMessage(
title: "ยืนยันการลบข้อมูล", $q,
message: "ต้องการลบข้อมูลนี้ใช่หรือไม่?", `ลบข้อมูล`,
cancel: { `ต้องการทำการลบข้อมูลนี้ใช่หรือไม่?`,
flat: true, "delete",
color: "negative", "ยืนยัน",
}, "red",
persistent: true, async () => await deleteData(id),
}) async () => await getData()
.onOk(async () => { );
showLoader(); };
await http
.delete(config.API.expulsionByid(id)) const deleteData = async (id: string) => {
.then((res) => { await http
success($q, "ลบข้อมูลสำเร็จ"); .delete(config.API.expulsionByid(id))
getData(); .then((res) => {
}) success($q, "ลบข้อมูลสำเร็จ");
.catch((e) => { console.log(res);
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}) })
.onCancel(() => {}) .catch((e) => {
.onDismiss(() => {}); messageError($q, e);
})
.finally(async () => {
await getData();
});
}; };
const saveOrder = async () => { const saveOrder = async () => {

View file

@ -66,7 +66,7 @@
</div> </div>
</q-card> </q-card>
<q-card bordered class="row col-12 text-dark q-mt-sm"> <!-- <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการไลออก</div> <div class="q-pl-sm text-weight-bold text-dark">อมลการไลออก</div>
<q-space /> <q-space />
@ -146,7 +146,7 @@
</template> </template>
</d-table> </d-table>
</div> </div>
</q-card> </q-card> -->
<q-card bordered class="row col-12 text-dark q-mt-sm"> <q-card bordered class="row col-12 text-dark q-mt-sm">
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary"> <div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
@ -188,6 +188,175 @@
</div> </div>
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<q-form ref="myForm">
<div class="row col-12 q-pa-md">
<div class="col-12 row bg-white q-col-gutter-md">
<div class="col-xs-12 row items-center">
<div class="col-12">
<div class="text-weight-bold text-grey">
ตำแหนงและหนวยงานเด
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organizationPositionOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่ง/สังกัด'}`]"
hide-bottom-space
:label="`${'ตำแหน่ง/สังกัด'}`"
type="textarea"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionTypeOld"
:rules="[(val) => !!val || `${'กรุณากรอกตำแหน่งประเภท'}`]"
hide-bottom-space
:label="`${'ตำแหน่งประเภท'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="positionLevelOld"
:rules="[(val) => !!val || `${'กรุณากรอกระดับ'}`]"
hide-bottom-space
:label="`${'ระดับ'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="posNo"
:rules="[(val) => !!val || `${'กรุณากรอกเลขที่'}`]"
hide-bottom-space
:label="`${'เลขที่'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-3 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="salary"
:rules="[(val) => !!val || `${'กรุณากรอกเงินเดือน'}`]"
hide-bottom-space
:label="`${'เงินเดือน'}`"
type="number"
/>
</div>
</div>
<div class="col-12"><q-separator /></div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="organization"
:rules="[(val) => !!val || `${'กรุณากรอกการไล่ออกจากสังกัด'}`]"
hide-bottom-space
:label="`${'ไล่ออกจากสังกัด'}`"
/>
</div>
</div>
<div class="col-xs-6 col-sm-6 row items-center">
<div class="col-12">
<datepicker
menu-class-name="modalfix"
:readonly="!edit"
v-model="date"
:locale="'th'"
autoApply
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }">{{ year + 543 }}</template>
<template #year-overlay-value="{ value }">{{
parseInt(value + 543)
}}</template>
<template #trigger>
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:borderless="!edit"
:model-value="date !== null ? date2Thai(date) : null"
:rules="[(val) => !!val || `${'กรุณาเลือกตั้งแต่วัน'}`]"
hide-bottom-space
:label="`${'ตั้งแต่วัน'}`"
>
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
:style="
edit
? 'color: var(--q-primary)'
: 'color: var(--q-grey)'
"
>
</q-icon>
</template>
</q-input>
</template>
</datepicker>
</div>
</div>
<div class="col-12">
<q-input
:class="getClass(edit)"
:outlined="edit"
dense
lazy-rules
:readonly="!edit"
:borderless="!edit"
v-model="reason"
:rules="[(val) => !!val || `${'กรุณากรอกหมายเหตุ '}`]"
hide-bottom-space
:label="`${'หมายเหตุ '}`"
type="textarea"
/>
</div>
</div>
</div>
</q-form>
</q-card> </q-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -295,17 +464,7 @@ const getData = async () => {
.get(config.API.expulsionByid(personId.toString())) .get(config.API.expulsionByid(personId.toString()))
.then((res: any) => { .then((res: any) => {
const data = res.data.result; const data = res.data.result;
// console.log(data);
let list: TypeFile[] = [];
if (data.docs.length > 0) {
data.docs.map((doc: TypeFile) => {
list.push({
pathName: doc.pathName ?? "",
fileName: doc.fileName ?? "",
});
});
}
rows.value = list;
responseData.value.createdAt = data.createdAt; responseData.value.createdAt = data.createdAt;
responseData.value.date = responseData.value.date =
data.date !== null ? new Date(data.date) : new Date(); data.date !== null ? new Date(data.date) : new Date();
@ -320,9 +479,9 @@ const getData = async () => {
responseData.value.salary = data.salary !== null ? data.salary : 0; responseData.value.salary = data.salary !== null ? data.salary : 0;
responseData.value.status = data.status ?? ""; responseData.value.status = data.status ?? "";
responseData.value.avataPath = data.avataPath ?? ""; responseData.value.avataPath = data.avataPath ?? "";
responseData.value.fullname = `${data.prefix ?? "-"} ${ responseData.value.fullname = `${data.firstName ?? "-"} ${
data.firstName ?? "-" data.lastName ?? "-"
} ${data.lastName ?? "-"}`; }`;
organizationPositionOld.value = data.organizationPositionOld ?? ""; organizationPositionOld.value = data.organizationPositionOld ?? "";
positionTypeOld.value = data.positionTypeOld ?? ""; positionTypeOld.value = data.positionTypeOld ?? "";

View file

@ -239,10 +239,9 @@ const paginationLabel = (start: number, end: number, total: number) => {
> >
<q-dialog v-model="modal"> <q-dialog v-model="modal">
<q-card style="width: 850px; max-width: 80vw" class="q-px-sm q-pb-md"> <q-card style="width: 850px; max-width: 80vw" class="q-pb-md">
<q-toolbar class="q-py-md"> <q-toolbar class="q-py-md">
<q-toolbar-title class="header-text text-weight-bolder" <q-toolbar-title class="text-h6">เพมรายช
>เพมรายช
</q-toolbar-title> </q-toolbar-title>
<q-btn <q-btn
icon="close" icon="close"

View file

@ -22,7 +22,7 @@ export default [
component: Main, component: Main,
meta: { meta: {
Auth: true, Auth: true,
Key: [9], Key: [11],
Role: "registryEmployee", Role: "registryEmployee",
}, },
}, },

View file

@ -991,12 +991,12 @@ const Retire = async () => {
} }
.text-name { .text-name {
font-size: 1.5em; font-size: 1.3em;
overflow: hidden; overflow: hidden;
} }
.text-sub { .text-sub {
font-size: 1.5em; font-size: 1.3em;
overflow: hidden; overflow: hidden;
color: var(--q-primary); color: var(--q-primary);
} }

View file

@ -11,8 +11,7 @@
:historyClick="clickHistory" :historyClick="clickHistory"
:addEmployee="statusAdd()" :addEmployee="statusAdd()"
/> />
<q-separator /> <q-form ref="myform" class="col-12 q-pt-md">
<q-form ref="myform" class="col-12">
<div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-sm"> <div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-sm">
<div class="col-xs-6 col-sm-3 col-md-3"> <div class="col-xs-6 col-sm-3 col-md-3">
<q-input <q-input
@ -346,10 +345,9 @@
) " ) "
/> />
</div> </div>
<div class="col-12 q-pt-md q-pb-sm"><q-separator /></div>
</div> </div>
</q-form> </q-form>
<div class="col-12 q-pt-md q-pb-sm"><q-separator /></div>
<HistoryTable <HistoryTable
:rows="rowsHistory" :rows="rowsHistory"
:columns="columnsHistory" :columns="columnsHistory"
@ -376,7 +374,7 @@
</q-tr> </q-tr>
</template> </template>
</HistoryTable> </HistoryTable>
<div class="row col-12 q-pa-sm"> <div class="row col-12">
<q-space /> <q-space />
<q-btn <q-btn
unelevated unelevated
@ -387,7 +385,6 @@
@click="saveData" @click="saveData"
/> />
</div> </div>
<q-separator />
</q-card> </q-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View file

@ -133,9 +133,10 @@ const selectInbox = (id: string) => {
bordered bordered
:style="$q.screen.gt.xs ? 'height: 80vh' : 'height: auto;'" :style="$q.screen.gt.xs ? 'height: 80vh' : 'height: auto;'"
> >
<div class="col-12 q-pt-sm q-px-md"> <div class="col-12 q-py-sm q-px-md bg-grey-1">
<div class="text-subtitle1 text-weight-medium">กลองขอความ</div> <div class="text-subtitle1 text-weight-medium">กลองขอความ</div>
</div> </div>
<q-separator />
<q-scroll-area <q-scroll-area
:style="$q.screen.gt.xs ? 'height: 74vh' : 'height: 40vh;'" :style="$q.screen.gt.xs ? 'height: 74vh' : 'height: 40vh;'"
class="bg-white rounded-borders q-px-md row col-12" class="bg-white rounded-borders q-px-md row col-12"