Merge branch 'develop'
This commit is contained in:
commit
1f43943ad5
74 changed files with 1240 additions and 961 deletions
|
|
@ -6,16 +6,18 @@ const holiday = `${env.API_URI}/metadata/holiday/`;
|
|||
|
||||
export default {
|
||||
listUser: () => `${retirementResign}/resign/user`,
|
||||
listUserByType:(type:string) => `${retirementResign}/resign${type}/user`,
|
||||
listUserByType: (type: string) => `${retirementResign}/resign${type}/user`,
|
||||
listResign: () => `${retirementResign}/resign`,
|
||||
listResignByType: (type:string) => `${retirementResign}/resign${type}`,
|
||||
listResignByType: (type: string) => `${retirementResign}/resign${type}`,
|
||||
resingByid: (id: string) => `${retirementResign}/resign/${id}`,
|
||||
resingByidType: (type:string,id: string) => `${retirementResign}/resign${type}/${id}`,
|
||||
resingByidType: (type: string, id: string) =>
|
||||
`${retirementResign}/resign${type}/user/${id}`,
|
||||
questionnaireByid: (id: string) =>
|
||||
`${retirementResign}/resign/questionnaire/${id}`,
|
||||
listquestionnaire: () => `${retirementResign}/resign/questionnaire`,
|
||||
cancelResign: (id: string) => `${retirementResign}/resign/cancel/${id}`,
|
||||
cancelResignByType: (type:string,id: string) => `${retirementResign}/resign${type}/cancel/${id}`,
|
||||
cancelResignByType: (type: string, id: string) =>
|
||||
`${retirementResign}/resign${type}/cancel/${id}`,
|
||||
|
||||
// คำถาม
|
||||
questionList: () => `${retirementResign}/resign/questionnaire/question`,
|
||||
|
|
|
|||
|
|
@ -46,14 +46,14 @@ const generatePopupPath = (routeName: any, type: string) => {
|
|||
if (routeName.includes("organizationChart")) {
|
||||
return `${path}/chapter-1-user${type}-organization-chart`;
|
||||
}
|
||||
if (routeName.includes("registry")) {
|
||||
if (routeName.includes("registry") || routeName.includes("request-edit")) {
|
||||
return `${path}/chapter-2-user${type}-registry`;
|
||||
}
|
||||
if (routeName.includes("evaluate")) {
|
||||
return `${path}/chapter-3-user-evaluate`;
|
||||
}
|
||||
|
||||
if (routeName.includes("leave")) {
|
||||
if (routeName.includes("leave") || routeName.includes("addAbsence")) {
|
||||
return `${path}/chapter-${type ? "3" : "4"}-user${type}-leave`;
|
||||
}
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ const generatePopupPath = (routeName: any, type: string) => {
|
|||
return `${path}/chapter-14-user-service-testing`;
|
||||
}
|
||||
if (routeName.includes("Retire")) {
|
||||
return `${path}/chapter-${type ? "5" : "11"}-user${type}-retire`;
|
||||
return `${path}/chapter-${type ? "6" : "12"}-user${type}-retire`;
|
||||
} else {
|
||||
return manualConfig[routeName as keyof typeof manualConfig];
|
||||
}
|
||||
|
|
@ -93,6 +93,8 @@ const manualConfig = {
|
|||
addPortfolio: `${path}/chapter-5-user-portfolio`,
|
||||
addTransfer: `${path}/chapter-6-user-transfer`,
|
||||
KPIMain: `${path}/chapter-8-user-KPI`,
|
||||
KPIAdd: `${path}/chapter-8-user-KPI`,
|
||||
KPIEdit: `${path}/chapter-8-user-KPI`,
|
||||
KPIMainEvaluator: `${path}/chapter-9-user-KPI-evaluator`,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -162,12 +162,12 @@ watch(modal, (val) => {
|
|||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
() => [formDataQuery.isAct, formDataQuery.pageSize],
|
||||
() => {
|
||||
onSearchData();
|
||||
}
|
||||
);
|
||||
// watch(
|
||||
// () => [formDataQuery.isAct, formDataQuery.pageSize],
|
||||
// () => {
|
||||
// onSearchData();
|
||||
// }
|
||||
// );
|
||||
|
||||
/**
|
||||
* function updatePagination
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import { getToken, tokenParsed } from "@/plugins/auth";
|
|||
|
||||
export const useSupportStore = defineStore("supportServiceStore", () => {
|
||||
const { showLoader, hideLoader, messageError } = useCounterMixin();
|
||||
const $q = useQuasar();
|
||||
const openChat = ref<boolean>(false);
|
||||
const icon = ref<string>("mdi-account-check");
|
||||
|
||||
|
|
@ -114,7 +113,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.get(config.API.supportMessageStatus(issueId))
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -129,7 +128,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.get(config.API.supportMessage(issueId))
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -149,7 +148,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.get(config.API.supportIssueUserId(userId.value))
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -166,7 +165,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.get(config.API.supportIssueCategory)
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -188,7 +187,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.post(config.API.supportNewIssue, requestBody)
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -203,7 +202,7 @@ export const useSupportStore = defineStore("supportServiceStore", () => {
|
|||
const res = await http
|
||||
.get(config.API.supportSearchIssue(searchData))
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
});
|
||||
if (res && res.data) {
|
||||
issue.value = res.data;
|
||||
|
|
|
|||
|
|
@ -1,60 +1,64 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, onMounted } from "vue"
|
||||
import { useQuasar } from "quasar"
|
||||
import { useRouter, useRoute } from "vue-router"
|
||||
import { ref, onMounted } from "vue";
|
||||
import { useQuasar } from "quasar";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
|
||||
import http from "@/plugins/http"
|
||||
import config from "@/app.config"
|
||||
import { useCounterMixin } from "@/stores/mixin"
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
import type { QForm } from "quasar"
|
||||
import type { QForm } from "quasar";
|
||||
|
||||
import Workflow from "@/components/Workflow/Main.vue"
|
||||
import Workflow from "@/components/Workflow/Main.vue";
|
||||
|
||||
const $q = useQuasar()
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const mixin = useCounterMixin()
|
||||
const { success, messageError, showLoader, hideLoader, dialogConfirm } = mixin
|
||||
const $q = useQuasar();
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const mixin = useCounterMixin();
|
||||
const { success, messageError, showLoader, hideLoader, dialogConfirm } = mixin;
|
||||
|
||||
const id = ref<string>(router.currentRoute.value.name === "addTransfer" ? "" : route.params.id.toString()) //id path
|
||||
const id = ref<string>(
|
||||
router.currentRoute.value.name === "addTransfer"
|
||||
? ""
|
||||
: route.params.id.toString()
|
||||
); //id path
|
||||
|
||||
const files = ref<any>() //ไฟล์
|
||||
const tranferOrg = ref<string>("") //ชื่อหน่วยงานที่ขอโอนไป
|
||||
const noteReason = ref<string>("") //เหตุผล
|
||||
const routeName = router.currentRoute.value.name //ชื่อ path
|
||||
const files = ref<any>(); //ไฟล์
|
||||
const tranferOrg = ref<string>(""); //ชื่อหน่วยงานที่ขอโอนไป
|
||||
const noteReason = ref<string>(""); //เหตุผล
|
||||
const routeName = router.currentRoute.value.name; //ชื่อ path
|
||||
|
||||
/** Dialog Save */
|
||||
async function saveData() {
|
||||
dialogConfirm(
|
||||
$q,
|
||||
() => {
|
||||
createTransfer()
|
||||
},
|
||||
"ยืนยันการยื่นข้อมูลการโอน",
|
||||
"ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่"
|
||||
)
|
||||
dialogConfirm(
|
||||
$q,
|
||||
() => {
|
||||
createTransfer();
|
||||
},
|
||||
"ยืนยันการยื่นข้อมูลการโอน",
|
||||
"ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่"
|
||||
);
|
||||
}
|
||||
|
||||
/** ฟังก์ชั่นสร้างขอโอน */
|
||||
async function createTransfer() {
|
||||
showLoader()
|
||||
const formData = new FormData()
|
||||
formData.append("Organization", tranferOrg.value)
|
||||
formData.append("Reason", noteReason.value)
|
||||
formData.append("file", files.value)
|
||||
await http
|
||||
.post(config.API.listtransfer(), formData)
|
||||
.then(res => {
|
||||
router.push(`/transfer/` + res.data.result)
|
||||
success($q, "บันทึกข้อมูลสำเร็จ")
|
||||
})
|
||||
.catch(e => {
|
||||
messageError($q, e)
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader()
|
||||
})
|
||||
showLoader();
|
||||
const formData = new FormData();
|
||||
formData.append("Organization", tranferOrg.value);
|
||||
formData.append("Reason", noteReason.value);
|
||||
formData.append("file", files.value);
|
||||
await http
|
||||
.post(config.API.listtransfer(), formData)
|
||||
.then((res) => {
|
||||
router.push(`/transfer/` + res.data.result);
|
||||
success($q, "บันทึกข้อมูลสำเร็จ");
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -62,21 +66,21 @@ async function createTransfer() {
|
|||
* @param id ไอดีของข้อมูล
|
||||
*/
|
||||
async function fecthDataTransfer(id: string) {
|
||||
showLoader()
|
||||
await http
|
||||
.get(config.API.transferByid(id))
|
||||
.then((res: any) => {
|
||||
let data = res.data.result
|
||||
tranferOrg.value = data.organization
|
||||
noteReason.value = data.reason
|
||||
files.value = data.docs
|
||||
})
|
||||
.catch((e: any) => {
|
||||
messageError($q, e)
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader()
|
||||
})
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.transferByid(id))
|
||||
.then((res: any) => {
|
||||
let data = res.data.result;
|
||||
tranferOrg.value = data.organization;
|
||||
noteReason.value = data.reason;
|
||||
files.value = data.docs;
|
||||
})
|
||||
.catch((e: any) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -84,104 +88,133 @@ async function fecthDataTransfer(id: string) {
|
|||
* @param url URL File
|
||||
*/
|
||||
function fileOpen(url: string) {
|
||||
window.open(url, "_blank")
|
||||
window.open(url, "_blank");
|
||||
}
|
||||
|
||||
/**
|
||||
* เรียกฟังก์ชันทั้งหมดตอนเรียกใช้ไฟล์นี้
|
||||
*/
|
||||
onMounted(() => {
|
||||
if (route.params.id !== undefined) {
|
||||
fecthDataTransfer(id.value)
|
||||
}
|
||||
})
|
||||
if (route.params.id !== undefined) {
|
||||
fecthDataTransfer(id.value);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="col-12 row justify-center">
|
||||
<div class="col-xs-12 col-sm-12 col-md-11">
|
||||
<div class="toptitle text-white col-12 row items-center">
|
||||
<q-btn icon="mdi-arrow-left" unelevated round dense flat color="primary" class="q-mr-sm" @click="router.go(-1)" />
|
||||
<div v-if="routeName == 'addTransfer'">เพิ่มเรื่องขอโอน</div>
|
||||
<div v-else>รายละเอียดเรื่องขอโอน</div>
|
||||
</div>
|
||||
<q-form class="col-12" greedy @submit.prevent @validation-success="saveData">
|
||||
<q-card bordered>
|
||||
<q-card-section>
|
||||
<div class="row">
|
||||
<div class="col-12 row q-col-gutter-sm">
|
||||
<q-input
|
||||
:class="routeName != 'addTransfer' ? 'col-12' : 'col-12 inputgreen'"
|
||||
dense
|
||||
outlined
|
||||
v-model="tranferOrg"
|
||||
hide-bottom-space
|
||||
label="หน่วยงานที่ขอโอนไป"
|
||||
:readonly="routeName != 'addTransfer'"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกหน่วยงานที่ขอโอนไป'}`]"
|
||||
/>
|
||||
<div class="col-12 row justify-center">
|
||||
<div class="col-xs-12 col-sm-12 col-md-11">
|
||||
<div class="toptitle text-white col-12 row items-center">
|
||||
<q-btn
|
||||
icon="mdi-arrow-left"
|
||||
unelevated
|
||||
round
|
||||
dense
|
||||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.push('/transfer')"
|
||||
/>
|
||||
<div v-if="routeName == 'addTransfer'">เพิ่มเรื่องขอโอน</div>
|
||||
<div v-else>รายละเอียดเรื่องขอโอน</div>
|
||||
</div>
|
||||
<q-form
|
||||
class="col-12"
|
||||
greedy
|
||||
@submit.prevent
|
||||
@validation-success="saveData"
|
||||
>
|
||||
<q-card bordered>
|
||||
<q-card-section>
|
||||
<div class="row">
|
||||
<div class="col-12 row q-col-gutter-sm">
|
||||
<q-input
|
||||
:class="
|
||||
routeName != 'addTransfer' ? 'col-12' : 'col-12 inputgreen'
|
||||
"
|
||||
dense
|
||||
outlined
|
||||
v-model="tranferOrg"
|
||||
hide-bottom-space
|
||||
label="หน่วยงานที่ขอโอนไป"
|
||||
:readonly="routeName != 'addTransfer'"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกหน่วยงานที่ขอโอนไป'}`]"
|
||||
/>
|
||||
|
||||
<q-input
|
||||
:class="routeName != 'addTransfer' ? 'col-12' : 'col-12 inputgreen'"
|
||||
dense
|
||||
outlined
|
||||
v-model="noteReason"
|
||||
label="เหตุผล"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:readonly="routeName != 'addTransfer'"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเหตุผล'}`]"
|
||||
/>
|
||||
<q-input
|
||||
:class="
|
||||
routeName != 'addTransfer' ? 'col-12' : 'col-12 inputgreen'
|
||||
"
|
||||
dense
|
||||
outlined
|
||||
v-model="noteReason"
|
||||
label="เหตุผล"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:readonly="routeName != 'addTransfer'"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเหตุผล'}`]"
|
||||
/>
|
||||
|
||||
<div class="col-12 row" v-if="routeName == 'addTransfer'">
|
||||
<q-file
|
||||
v-model="files"
|
||||
class="col-xs-12 col-sm-12 inputgreen"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
accept=".pdf"
|
||||
:rules="[(val: string) => !!val || 'กรุณาเลือกไฟล์เอกสารเพิ่มเติม']"
|
||||
label="เอกสารเพิ่มเติม"
|
||||
>
|
||||
<template v-slot:prepend> <q-icon name="attach_file" /> </template
|
||||
></q-file>
|
||||
</div>
|
||||
<div class="col-12 row" v-if="routeName == 'addTransfer'">
|
||||
<q-file
|
||||
v-model="files"
|
||||
class="col-xs-12 col-sm-12 inputgreen"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
accept=".pdf"
|
||||
:rules="[(val: string) => !!val || 'กรุณาเลือกไฟล์เอกสารเพิ่มเติม']"
|
||||
label="เอกสารเพิ่มเติม"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" /> </template
|
||||
></q-file>
|
||||
</div>
|
||||
|
||||
<div class="col-12 row" v-if="routeName != 'addTransfer'">
|
||||
<q-card bordered flat class="full-width">
|
||||
<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>
|
||||
<q-separator />
|
||||
<q-list separator>
|
||||
<q-item v-for="file in files" :key="file.key">
|
||||
<q-item-section>
|
||||
{{ file.fileName }}
|
||||
</q-item-section>
|
||||
<q-item-section avatar>
|
||||
<q-btn color="teal-5" round flat icon="mdi-download" @click="fileOpen(file.pathName)"></q-btn>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="col-12 row" v-if="routeName != 'addTransfer'">
|
||||
<q-card bordered flat class="full-width">
|
||||
<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>
|
||||
<q-separator />
|
||||
<q-list separator>
|
||||
<q-item v-for="file in files" :key="file.key">
|
||||
<q-item-section>
|
||||
{{ file.fileName }}
|
||||
</q-item-section>
|
||||
<q-item-section avatar>
|
||||
<q-btn
|
||||
color="teal-5"
|
||||
round
|
||||
flat
|
||||
icon="mdi-download"
|
||||
@click="fileOpen(file.pathName)"
|
||||
></q-btn>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
<!-- Workflow -->
|
||||
<div class="col-12" v-if="routeName != 'addTransfer'">
|
||||
<Workflow :id="id" :sys-name="`SYS_TRANSFER_REQ`" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
<!-- Workflow -->
|
||||
<div class="col-12" v-if="routeName != 'addTransfer'">
|
||||
<Workflow :id="id" :sys-name="`SYS_TRANSFER_REQ`" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator v-if="routeName == 'addTransfer'" />
|
||||
<q-card-actions align="right" v-if="routeName == 'addTransfer'">
|
||||
<q-btn color="primary" label="ยื่นเรื่องขอโอน" type="onsubmit" />
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-form>
|
||||
</div>
|
||||
</div>
|
||||
<q-separator v-if="routeName == 'addTransfer'" />
|
||||
<q-card-actions align="right" v-if="routeName == 'addTransfer'">
|
||||
<q-btn color="primary" label="ยื่นเรื่องขอโอน" type="onsubmit" />
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@ interface DataOptions {
|
|||
interface RowsType {
|
||||
commanders: SeqTypeRow[];
|
||||
approvers: SeqTypeRow[];
|
||||
cancelCommanders: SeqTypeRow[] | null;
|
||||
cancelApprovers: SeqTypeRow[] | null;
|
||||
}
|
||||
interface SeqTypeRow {
|
||||
seq: number;
|
||||
|
|
|
|||
|
|
@ -144,19 +144,6 @@ const columnsCommanders = ref<QTableProps["columns"]>([
|
|||
},
|
||||
]);
|
||||
|
||||
/**
|
||||
* ฟังก์ชั่นเปลี่ยนเป็น string ของ status
|
||||
* @param val value ของ status true/false
|
||||
*/
|
||||
function statusOrder(val: boolean) {
|
||||
switch (val) {
|
||||
case true:
|
||||
return "ยับยั้ง";
|
||||
case false:
|
||||
return "อนุญาต";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* บันทึกข้อมูลการลาออก
|
||||
*/
|
||||
|
|
@ -233,6 +220,8 @@ async function fectDataresign(id: string) {
|
|||
rowsApprover.value = {
|
||||
commanders: data.commanders,
|
||||
approvers: data.approvers,
|
||||
cancelCommanders: data.cancelCommanders ?? null,
|
||||
cancelApprovers: data.cancelApprovers ?? null,
|
||||
};
|
||||
files.value = data.docs;
|
||||
dataDetail.value = data;
|
||||
|
|
@ -586,137 +575,308 @@ onMounted(async () => {
|
|||
</q-card>
|
||||
</div> -->
|
||||
|
||||
<!-- ผลการพิจารณาของผู้บังคับบัญชา -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<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="q-pl-sm text-weight-bold text-dark">
|
||||
ผลการพิจารณาของผู้บังคับบัญชา
|
||||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="col-12">
|
||||
<d-table
|
||||
ref="table"
|
||||
:columns="columnsCommanders"
|
||||
:rows="rowsApprover?.commanders ?? []"
|
||||
row-key="key"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
<q-th
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<span class="text-weight-medium">{{
|
||||
col.label
|
||||
}}</span>
|
||||
</q-th>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:body="props">
|
||||
<q-tr :props="props" class="cursor-pointer">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
<div class="row col-12" v-if="routeName != 'AddRetire'">
|
||||
<div class="col-12 q-mt-sm text-weight-bold text-primary">
|
||||
ผลการพิจารณาการขอลาออก
|
||||
</div>
|
||||
|
||||
<div v-else-if="col.name == 'approveStatus'">
|
||||
<div class="col-12 q-mt-md">
|
||||
<!-- ผลการพิจารณาของผู้บังคับบัญชา -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<q-card bordered class="row col-12 text-dark">
|
||||
<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>
|
||||
<q-separator />
|
||||
<div class="col-12 q-pa-sm">
|
||||
<d-table
|
||||
ref="table"
|
||||
:columns="columnsCommanders"
|
||||
:rows="rowsApprover?.commanders ?? []"
|
||||
row-key="key"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
<q-th
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<span class="text-weight-medium">{{
|
||||
col.label
|
||||
}}</span>
|
||||
</q-th>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:body="props">
|
||||
<q-tr :props="props" class="cursor-pointer">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
|
||||
<div v-else-if="col.name == 'approveStatus'">
|
||||
{{
|
||||
props.row.approveStatus
|
||||
? convertStatusText(props.row.approveStatus)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ col.value ? col.value : "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
<!-- ผลการพิจารณาของผู้มีอำนาจ -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<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="q-pl-sm text-weight-bold text-dark">
|
||||
ผลการพิจารณาของผู้มีอำนาจ
|
||||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-md">
|
||||
<div class="col-12 row bg-white q-col-gutter-md">
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">ชื่อ - นามสกุล</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
props.row.approveStatus
|
||||
? convertStatusText(props.row.approveStatus)
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.firstName
|
||||
? `${rowsApprover?.approvers[0].prefix}${rowsApprover?.approvers[0].firstName} ${rowsApprover?.approvers[0].lastName}`
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ col.value ? col.value : "-" }}
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">สถานะ</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.approveStatus
|
||||
? convertStatusText(
|
||||
rowsApprover?.approvers[0].approveStatus
|
||||
)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">
|
||||
วันสุดท้ายที่ยับยั้ง
|
||||
</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.rejectDate
|
||||
? date2Thai(
|
||||
rowsApprover?.approvers[0].rejectDate
|
||||
)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 row items-start">
|
||||
<div class="col-12 text-top">
|
||||
ความคิดเห็นและเหตุผล
|
||||
</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.comment
|
||||
? rowsApprover?.approvers[0].comment
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ผลการพิจารณาของผู้มีอำนาจ -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<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="q-pl-sm text-weight-bold text-dark">
|
||||
ผลการพิจารณาของผู้มีอำนาจ
|
||||
</div>
|
||||
<!-- ยกเลิกการลาออก -->
|
||||
<div
|
||||
class="row col-12"
|
||||
v-if="
|
||||
routeName != 'AddRetire' &&
|
||||
rowsApprover &&
|
||||
rowsApprover?.cancelCommanders &&
|
||||
rowsApprover?.cancelCommanders?.length > 0
|
||||
"
|
||||
>
|
||||
<div class="col-12 q-mt-sm text-weight-bold text-red">
|
||||
ผลการพิจารณาการขอยกเลิกลาออก
|
||||
</div>
|
||||
|
||||
<div class="col-12 q-pa-sm">
|
||||
<!-- ผลการพิจารณาของผู้บังคับบัญชา -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<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="q-pl-sm text-weight-bold text-dark">
|
||||
ผลการพิจารณาของผู้บังคับบัญชา
|
||||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="col-12 q-pa-sm">
|
||||
<d-table
|
||||
ref="table"
|
||||
:columns="columnsCommanders"
|
||||
:rows="rowsApprover?.cancelCommanders ?? []"
|
||||
row-key="key"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
<q-th
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<span class="text-weight-medium">{{
|
||||
col.label
|
||||
}}</span>
|
||||
</q-th>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:body="props">
|
||||
<q-tr :props="props" class="cursor-pointer">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
|
||||
<div v-else-if="col.name == 'approveStatus'">
|
||||
{{
|
||||
props.row.approveStatus
|
||||
? convertStatusText(props.row.approveStatus)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ col.value ? col.value : "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-md">
|
||||
<div class="col-12 row bg-white q-col-gutter-md">
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">ชื่อ - นามสกุล</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.firstName
|
||||
? `${rowsApprover?.approvers[0].prefix}${rowsApprover?.approvers[0].firstName} ${rowsApprover?.approvers[0].lastName}`
|
||||
: "-"
|
||||
}}
|
||||
|
||||
<!-- ผลการพิจารณาของผู้มีอำนาจ -->
|
||||
<div class="col-12 row" v-if="routeName != 'AddRetire'">
|
||||
<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="q-pl-sm text-weight-bold text-dark">
|
||||
ผลการพิจารณาของผู้มีอำนาจ
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">สถานะ</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.approveStatus
|
||||
? convertStatusText(
|
||||
rowsApprover?.approvers[0].approveStatus
|
||||
)
|
||||
: "-"
|
||||
}}
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-md">
|
||||
<div class="col-12 row bg-white q-col-gutter-md">
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">ชื่อ - นามสกุล</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.cancelApprovers &&
|
||||
rowsApprover.cancelApprovers[0]?.firstName
|
||||
? `${rowsApprover?.cancelApprovers[0].prefix}${rowsApprover?.cancelApprovers[0].firstName} ${rowsApprover?.cancelApprovers[0].lastName}`
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">สถานะ</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.cancelApprovers &&
|
||||
rowsApprover.cancelApprovers[0]?.approveStatus
|
||||
? convertStatusText(
|
||||
rowsApprover?.cancelApprovers[0]
|
||||
.approveStatus
|
||||
)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">
|
||||
วันสุดท้ายที่ยับยั้ง
|
||||
</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.cancelApprovers &&
|
||||
rowsApprover.cancelApprovers[0]?.rejectDate
|
||||
? date2Thai(
|
||||
rowsApprover?.cancelApprovers[0].rejectDate
|
||||
)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 row items-start">
|
||||
<div class="col-12 text-top">
|
||||
ความคิดเห็นและเหตุผล
|
||||
</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.cancelApprovers &&
|
||||
rowsApprover.cancelApprovers[0]?.comment
|
||||
? rowsApprover?.cancelApprovers[0].comment
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-6 row items-start">
|
||||
<div class="col-12 text-top">วันสุดท้ายที่ยับยั้ง</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.rejectDate
|
||||
? date2Thai(rowsApprover?.approvers[0].rejectDate)
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 row items-start">
|
||||
<div class="col-12 text-top">ความคิดเห็นและเหตุผล</div>
|
||||
<div class="col-12 text-detail">
|
||||
{{
|
||||
rowsApprover &&
|
||||
rowsApprover.approvers &&
|
||||
rowsApprover.approvers[0]?.comment
|
||||
? rowsApprover?.approvers[0].comment
|
||||
: "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import http from "@/plugins/http";
|
|||
import config from "@/app.config";
|
||||
import { tokenParsed } from "@/plugins/auth";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import { useLeaveStore } from "@/modules/05_leave/store";
|
||||
|
||||
import FullCalendar from "@fullcalendar/vue3";
|
||||
import dayGridPlugin from "@fullcalendar/daygrid";
|
||||
|
|
@ -23,6 +24,7 @@ import type {
|
|||
import DialogDetail from "@/modules/05_leave/components/DialogDetail.vue";
|
||||
|
||||
const $q = useQuasar();
|
||||
const store = useLeaveStore();
|
||||
const mixin = useCounterMixin();
|
||||
const { showLoader, hideLoader, messageError, monthYear2Thai } = mixin;
|
||||
const emit = defineEmits(["update:dateYear"]);
|
||||
|
|
@ -74,7 +76,6 @@ const dateMonth = ref<DataDateMonthObject>({
|
|||
|
||||
/** function เรียกข้อมูล calendar*/
|
||||
async function fetchDataCalendar() {
|
||||
showLoader();
|
||||
await http
|
||||
.post(config.API.leaveCalendar(), {
|
||||
year: dateMonth.value.year,
|
||||
|
|
@ -118,9 +119,6 @@ async function fetchDataCalendar() {
|
|||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -128,7 +126,6 @@ async function fetchDataCalendar() {
|
|||
* fetch วันหยุดในปฏิทิน
|
||||
*/
|
||||
async function fetchData() {
|
||||
showLoader();
|
||||
await http
|
||||
.get(
|
||||
config.API.listHolidayHistoryYearMonth(
|
||||
|
|
@ -138,7 +135,6 @@ async function fetchData() {
|
|||
)
|
||||
.then((res) => {
|
||||
const dataNormal = res.data.result.normal;
|
||||
const dataSixDays = res.data.result.sixDays;
|
||||
const data = dataNormal;
|
||||
const event = data.map((e: any) => ({
|
||||
id: e.id,
|
||||
|
|
@ -155,23 +151,9 @@ async function fetchData() {
|
|||
...calendarOptions.value.events,
|
||||
...event,
|
||||
];
|
||||
// const dataSix = dataSixDays
|
||||
// const eventSix = dataSix.map((e: any) => ({
|
||||
// id: e.id,
|
||||
// title: `${e.name} `,
|
||||
// start: e.holidayDate,
|
||||
// end: new Date(new Date(e.holidayDate).setHours(23, 59, 59)).toISOString(),
|
||||
// allDay: e.holidayDate === e.holidayDate ? true : false,
|
||||
// color: "#FFE5CC",
|
||||
// textColor: "#FF8000",
|
||||
// }))
|
||||
// calendarOptions.value.events = [...calendarOptions.value.events, ...eventSix]
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(async () => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -184,14 +166,11 @@ function convertKeycloakId(id: any) {
|
|||
/** function เรียกประเภทการลา */
|
||||
const leaveType = ref<LeaveType[]>([]);
|
||||
async function fectOptionType() {
|
||||
await http
|
||||
.get(config.API.leaveType())
|
||||
.then(async (res) => {
|
||||
leaveType.value = res.data.result;
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
});
|
||||
const data = await store.fetchLeaveTypeData();
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
leaveType.value = data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -205,11 +184,17 @@ function monthYearThai(val: DataDateMonthObject) {
|
|||
|
||||
/** function อัปเดท Calendar */
|
||||
async function updateMonth() {
|
||||
await fetchDataCalendar();
|
||||
await fetchData();
|
||||
const calen = fullCalendar.value.getApi();
|
||||
const date = new Date(dateMonth.value.year, dateMonth.value.month);
|
||||
calen.gotoDate(date);
|
||||
try {
|
||||
await fetchDataCalendar();
|
||||
await fetchData();
|
||||
const calen = fullCalendar.value.getApi();
|
||||
const date = new Date(dateMonth.value.year, dateMonth.value.month);
|
||||
calen.gotoDate(date);
|
||||
} catch (error) {
|
||||
messageError($q, error);
|
||||
} finally {
|
||||
hideLoader();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -226,10 +211,11 @@ async function onClickClose() {
|
|||
modal.value = false;
|
||||
}
|
||||
|
||||
/**** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่Calendar */
|
||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่Calendar */
|
||||
watch(
|
||||
() => filterVal.value,
|
||||
async () => {
|
||||
showLoader();
|
||||
const eventData = filterVal.value.map((item: any) => {
|
||||
return mainData.value
|
||||
.filter(
|
||||
|
|
@ -250,24 +236,32 @@ watch(
|
|||
const allEventData = [].concat(...eventData);
|
||||
calendarOptions.value.events = allEventData;
|
||||
await fetchData();
|
||||
hideLoader();
|
||||
}
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
const user = await tokenParsed();
|
||||
keycloakId.value = await (user ? user.sub : "");
|
||||
filterVal.value.push(keycloakId.value);
|
||||
await fetchDataCalendar();
|
||||
await fetchData();
|
||||
await fectOptionType();
|
||||
try {
|
||||
showLoader();
|
||||
// เรียกข้อมูล keycloakId
|
||||
const user = await tokenParsed();
|
||||
keycloakId.value = await (user ? user.sub : "");
|
||||
filterVal.value.push(keycloakId.value);
|
||||
await Promise.all([fetchDataCalendar(), fectOptionType()]);
|
||||
await fetchData();
|
||||
} catch (error) {
|
||||
messageError($q, error);
|
||||
} finally {
|
||||
hideLoader();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-3 q-mt-sm q-pr-sm row">
|
||||
<q-card class="col-12" flat bordered >
|
||||
<q-card class="col-12" flat bordered>
|
||||
<q-scroll-area style="height: 38vw">
|
||||
<div class="q-gutter-sm col-12">
|
||||
<q-list class="rounded-borders q-pt-sm" dense>
|
||||
|
|
|
|||
|
|
@ -15,14 +15,8 @@ const typeForm = defineModel<string>("type", { required: true });
|
|||
const $q = useQuasar();
|
||||
const dataStore = useLeaveStore();
|
||||
const mixin = useCounterMixin();
|
||||
const {
|
||||
date2Thai,
|
||||
dateToISO,
|
||||
messageError,
|
||||
convertDateToAPI,
|
||||
showLoader,
|
||||
hideLoader,
|
||||
} = mixin;
|
||||
const { date2Thai, messageError, convertDateToAPI, showLoader, hideLoader } =
|
||||
mixin;
|
||||
const edit = ref<boolean>(true);
|
||||
const leaveDocumentRef = ref<any>(null);
|
||||
|
||||
|
|
@ -200,22 +194,25 @@ const dateEndInputStyle = computed(() => {
|
|||
const leaveId = ref<any>("");
|
||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
const statusCheck = ref<any>("");
|
||||
watch(props.data, () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataSick.leaveWrote = props.data.leaveWrote;
|
||||
formDataSick.leaveStartDate = new Date(props.data.leaveStartDate);
|
||||
formDataSick.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataSick.contractTel = props.data.contractTel;
|
||||
formDataSick.leaveTotal = props.data.leaveTotal;
|
||||
formDataSick.leaveDetail = props.data.leaveDetail;
|
||||
formDataSick.leaveRange = props.data.leaveRange;
|
||||
formDataSick.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataSick.leaveDocument = [];
|
||||
watch(
|
||||
() => props.data,
|
||||
() => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataSick.leaveWrote = props.data.leaveWrote;
|
||||
formDataSick.leaveStartDate = new Date(props.data.leaveStartDate);
|
||||
formDataSick.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataSick.contractTel = props.data.contractTel;
|
||||
formDataSick.leaveTotal = props.data.leaveTotal;
|
||||
formDataSick.leaveDetail = props.data.leaveDetail;
|
||||
formDataSick.leaveRange = props.data.leaveRange;
|
||||
formDataSick.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataSick.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/** Hook */
|
||||
onMounted(() => {
|
||||
|
|
@ -264,7 +261,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataSick.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -342,7 +338,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataSick.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -205,20 +205,23 @@ const dateEndInputStyle = computed(() => {
|
|||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
const leaveDocumentList = ref<any>();
|
||||
const statusCheck = ref<any>("");
|
||||
watch(props.data, () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataBirth.leaveWrote = props.data.leaveWrote;
|
||||
formDataBirth.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataBirth.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataBirth.leaveTotal = props.data.leaveTotal;
|
||||
formDataBirth.leaveDetail = props.data.leaveDetail;
|
||||
formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataBirth.leaveDocument = [];
|
||||
watch(
|
||||
() => props.data,
|
||||
() => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataBirth.leaveWrote = props.data.leaveWrote;
|
||||
formDataBirth.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataBirth.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataBirth.leaveTotal = props.data.leaveTotal;
|
||||
formDataBirth.leaveDetail = props.data.leaveDetail;
|
||||
formDataBirth.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataBirth.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/** Hook */
|
||||
onMounted(() => {
|
||||
|
|
@ -266,7 +269,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataBirth.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -344,7 +346,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataBirth.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -205,23 +205,26 @@ async function fetchCheck() {
|
|||
|
||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
||||
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
||||
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
||||
formDataHelpWife.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataHelpWife.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataHelpWife.leaveTotal = props.data.leaveTotal;
|
||||
formDataHelpWife.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataHelpWife.leaveRange = props.data.leaveRange;
|
||||
formDataHelpWife.leaveDetail = props.data.leaveDetail;
|
||||
formDataHelpWife.leaveDocument = [];
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataHelpWife.leaveWrote = props.data.leaveWrote;
|
||||
formDataHelpWife.wifeDayName = props.data.wifeDayName;
|
||||
formDataHelpWife.wifeDayDateBorn = props.data.wifeDayDateBorn;
|
||||
formDataHelpWife.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataHelpWife.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataHelpWife.leaveTotal = props.data.leaveTotal;
|
||||
formDataHelpWife.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataHelpWife.leaveRange = props.data.leaveRange;
|
||||
formDataHelpWife.leaveDetail = props.data.leaveDetail;
|
||||
formDataHelpWife.leaveDocument = [];
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -270,7 +273,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataHelpWife.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -348,7 +350,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataHelpWife.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -466,7 +467,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-4 col-sm-12 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataHelpWife.wifeDayDateBorn"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -203,24 +203,27 @@ async function fetchCheck() {
|
|||
}
|
||||
}
|
||||
|
||||
watch(props.data, () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataVacation.leaveWrote = props.data.leaveWrote;
|
||||
formDataVacation.restDayOldTotal = props.data.restDayOldTotal;
|
||||
formDataVacation.restDayCurrentTotal = props.data.restDayCurrentTotal;
|
||||
formDataVacation.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataVacation.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataVacation.leaveTotal = props.data.leaveTotal;
|
||||
watch(
|
||||
() => props.data,
|
||||
() => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataVacation.leaveWrote = props.data.leaveWrote;
|
||||
formDataVacation.restDayOldTotal = props.data.restDayOldTotal;
|
||||
formDataVacation.restDayCurrentTotal = props.data.restDayCurrentTotal;
|
||||
formDataVacation.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataVacation.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataVacation.leaveTotal = props.data.leaveTotal;
|
||||
|
||||
formDataVacation.leaveDetail = props.data.leaveDetail;
|
||||
formDataVacation.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataVacation.leaveRange = props.data.leaveRange;
|
||||
formDataVacation.leaveDocument = [];
|
||||
formDataVacation.leaveDetail = props.data.leaveDetail;
|
||||
formDataVacation.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataVacation.leaveRange = props.data.leaveRange;
|
||||
formDataVacation.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(() => {
|
||||
|
|
@ -270,7 +273,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataVacation.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -347,7 +349,6 @@ onMounted(() => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataVacation.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -229,32 +229,36 @@ const dateEndInputStyle = computed(() => {
|
|||
const leaveDocumentList = ref<any>();
|
||||
const statusCheck = ref<string>("");
|
||||
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataOrdination.leaveWrote = props.data.leaveWrote;
|
||||
formDataOrdination.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataOrdination.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataOrdination.leaveTotal = props.data.leaveTotal;
|
||||
formDataOrdination.ordainDayOrdination = props.data.ordainDayOrdination;
|
||||
formDataOrdination.ordainDayLocationName = props.data.ordainDayLocationName;
|
||||
formDataOrdination.ordainDayLocationAddress =
|
||||
props.data.ordainDayLocationAddress;
|
||||
formDataOrdination.ordainDayBuddhistLentName =
|
||||
props.data.ordainDayBuddhistLentName;
|
||||
formDataOrdination.ordainDayBuddhistLentAddress =
|
||||
props.data.ordainDayBuddhistLentAddress;
|
||||
formDataOrdination.ordainDayStatus = props.data.ordainDayStatus;
|
||||
formDataOrdination.leaveDetail = props.data.leaveDetail;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
formDataOrdination.ordainDayLocationNumber =
|
||||
props.data.ordainDayLocationNumber;
|
||||
formDataOrdination.leaveRange = props.data.leaveRange;
|
||||
formDataOrdination.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataOrdination.leaveDocument = [];
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataOrdination.leaveWrote = props.data.leaveWrote;
|
||||
formDataOrdination.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataOrdination.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataOrdination.leaveTotal = props.data.leaveTotal;
|
||||
formDataOrdination.ordainDayOrdination = props.data.ordainDayOrdination;
|
||||
formDataOrdination.ordainDayLocationName =
|
||||
props.data.ordainDayLocationName;
|
||||
formDataOrdination.ordainDayLocationAddress =
|
||||
props.data.ordainDayLocationAddress;
|
||||
formDataOrdination.ordainDayBuddhistLentName =
|
||||
props.data.ordainDayBuddhistLentName;
|
||||
formDataOrdination.ordainDayBuddhistLentAddress =
|
||||
props.data.ordainDayBuddhistLentAddress;
|
||||
formDataOrdination.ordainDayStatus = props.data.ordainDayStatus;
|
||||
formDataOrdination.leaveDetail = props.data.leaveDetail;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
formDataOrdination.ordainDayLocationNumber =
|
||||
props.data.ordainDayLocationNumber;
|
||||
formDataOrdination.leaveRange = props.data.leaveRange;
|
||||
formDataOrdination.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataOrdination.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/** Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -320,7 +324,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataOrdination.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -398,7 +401,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataOrdination.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -497,7 +499,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-3 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataOrdination.leavegovernmentDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -543,7 +544,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-3 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataOrdination.leavebirthDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -614,7 +614,6 @@ onMounted(async () => {
|
|||
<div class="text-weight-bold text-dark col-12">สถานที่บวช</div>
|
||||
<div class="col-12 col-md-4 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataOrdination.ordainDayOrdination"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ function onValidate() {
|
|||
formData.append("leaveTotal", formDataHaji.leaveTotal);
|
||||
formData.append("leaveRange", formDataHaji.leaveRange);
|
||||
formData.append("leaveRangeEnd", formDataHaji.leaveRangeEnd);
|
||||
formData.append("hajj", 'true');
|
||||
formData.append("hajj", "true");
|
||||
props.onSubmit(formData, isLeave.value);
|
||||
}
|
||||
}
|
||||
|
|
@ -193,22 +193,25 @@ const dateEndInputStyle = computed(() => {
|
|||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
const leaveDocumentList = ref<any>();
|
||||
const statusCheck = ref<any>("");
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataHaji.leaveWrote = props.data.leaveWrote;
|
||||
formDataHaji.leaveTotal = props.data.leaveTotal;
|
||||
formDataHaji.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataHaji.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataHaji.hajjDayStatus = props.data.hajjDayStatus;
|
||||
formDataHaji.leaveDetail = props.data.leaveDetail;
|
||||
formDataHaji.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataHaji.leaveRange = props.data.leaveRange;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataHaji.leaveDocument = [];
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataHaji.leaveWrote = props.data.leaveWrote;
|
||||
formDataHaji.leaveTotal = props.data.leaveTotal;
|
||||
formDataHaji.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataHaji.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataHaji.hajjDayStatus = props.data.hajjDayStatus;
|
||||
formDataHaji.leaveDetail = props.data.leaveDetail;
|
||||
formDataHaji.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataHaji.leaveRange = props.data.leaveRange;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataHaji.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -255,7 +258,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<datepicker
|
||||
class="col-12 col-md-3 col-sm-6 inputgreen"
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataHaji.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -329,7 +331,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<datepicker
|
||||
class="col-12 col-md-3 col-sm-6 inputgreen"
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataHaji.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -425,7 +426,6 @@ onMounted(async () => {
|
|||
|
||||
<datepicker
|
||||
class="col-12 col-md-3 col-sm-6"
|
||||
menu-class-name="modalfix"
|
||||
autoApply
|
||||
borderless
|
||||
readonly
|
||||
|
|
|
|||
|
|
@ -215,31 +215,34 @@ async function fetchCheck() {
|
|||
// formDataMilitary.leaveTotal = newLeaveTotal;
|
||||
// }
|
||||
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataMilitary.leaveWrote = props.data.leaveWrote;
|
||||
formDataMilitary.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataMilitary.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataMilitary.leaveTotal = props.data.leaveTotal;
|
||||
formDataMilitary.absentDaySummon = props.data.absentDaySummon;
|
||||
formDataMilitary.absentDayLocation = props.data.absentDayLocation;
|
||||
formDataMilitary.absentDayRegistorDate = props.data.absentDayRegistorDate;
|
||||
formDataMilitary.absentDayGetIn = props.data.absentDayGetIn;
|
||||
formDataMilitary.absentDayAt = props.data.absentDayAt;
|
||||
formDataMilitary.leaveRange = props.data.leaveRange;
|
||||
formDataMilitary.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
formDataMilitary.leaveDetail = props.data.leaveDetail;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataMilitary.leaveDocument = [];
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataMilitary.leaveWrote = props.data.leaveWrote;
|
||||
formDataMilitary.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataMilitary.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataMilitary.leaveTotal = props.data.leaveTotal;
|
||||
formDataMilitary.absentDaySummon = props.data.absentDaySummon;
|
||||
formDataMilitary.absentDayLocation = props.data.absentDayLocation;
|
||||
formDataMilitary.absentDayRegistorDate = props.data.absentDayRegistorDate;
|
||||
formDataMilitary.absentDayGetIn = props.data.absentDayGetIn;
|
||||
formDataMilitary.absentDayAt = props.data.absentDayAt;
|
||||
formDataMilitary.leaveRange = props.data.leaveRange;
|
||||
formDataMilitary.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
formDataMilitary.leaveDetail = props.data.leaveDetail;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataMilitary.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -296,7 +299,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataMilitary.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -374,7 +376,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataMilitary.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -509,7 +510,6 @@ onMounted(async () => {
|
|||
<div class="q-col-gutter-sm row">
|
||||
<datepicker
|
||||
class="col-12 col-md-4 col-sm-6 inputgreen"
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataMilitary.absentDayRegistorDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -230,36 +230,39 @@ async function fetchCheck() {
|
|||
// }
|
||||
|
||||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataStudy.leaveWrote = props.data.leaveWrote;
|
||||
formDataStudy.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataStudy.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataStudy.leaveTotal = props.data.leaveTotal;
|
||||
formDataStudy.leavebirthDate = props.data.leavebirthDate;
|
||||
formDataStudy.leavegovernmentDate = props.data.leavegovernmentDate;
|
||||
formDataStudy.leaveSalary = props.data.leaveSalary;
|
||||
formDataStudy.leaveSalaryText = props.data.leaveSalaryText;
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataStudy.leaveWrote = props.data.leaveWrote;
|
||||
formDataStudy.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataStudy.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataStudy.leaveTotal = props.data.leaveTotal;
|
||||
formDataStudy.leavebirthDate = props.data.leavebirthDate;
|
||||
formDataStudy.leavegovernmentDate = props.data.leavegovernmentDate;
|
||||
formDataStudy.leaveSalary = props.data.leaveSalary;
|
||||
formDataStudy.leaveSalaryText = props.data.leaveSalaryText;
|
||||
|
||||
formDataStudy.studyDayScholarship = props.data.studyDayScholarship;
|
||||
formDataStudy.studyDayCountry = props.data.studyDayCountry;
|
||||
formDataStudy.studyDayUniversityName = props.data.studyDayUniversityName;
|
||||
formDataStudy.studyDayDegreeLevel = props.data.studyDayDegreeLevel;
|
||||
formDataStudy.studyDaySubject = props.data.studyDaySubject;
|
||||
formDataStudy.leaveDetail = props.data.leaveDetail;
|
||||
formDataStudy.leaveRange = props.data.leaveRange;
|
||||
formDataStudy.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataStudy.leaveDocument = [];
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataStudy.studyDayScholarship = props.data.studyDayScholarship;
|
||||
formDataStudy.studyDayCountry = props.data.studyDayCountry;
|
||||
formDataStudy.studyDayUniversityName = props.data.studyDayUniversityName;
|
||||
formDataStudy.studyDayDegreeLevel = props.data.studyDayDegreeLevel;
|
||||
formDataStudy.studyDaySubject = props.data.studyDaySubject;
|
||||
formDataStudy.leaveDetail = props.data.leaveDetail;
|
||||
formDataStudy.leaveRange = props.data.leaveRange;
|
||||
formDataStudy.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataStudy.leaveDocument = [];
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
statusCheck.value = props.data.status;
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -323,7 +326,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataStudy.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -401,7 +403,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataStudy.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -504,7 +505,6 @@ onMounted(async () => {
|
|||
<div class="q-col-gutter-sm row">
|
||||
<div class="col-12 col-md-3 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
autoApply
|
||||
borderless
|
||||
week-start="0"
|
||||
|
|
@ -552,7 +552,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-3 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
autoApply
|
||||
borderless
|
||||
readonly
|
||||
|
|
|
|||
|
|
@ -214,34 +214,38 @@ function updateLeaveTotal() {
|
|||
formDataTrain.leaveTotal = newLeaveTotal;
|
||||
}
|
||||
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataTrain.leaveWrote = props.data.leaveWrote;
|
||||
formDataTrain.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataTrain.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataTrain.leaveTotal = props.data.leaveTotal;
|
||||
formDataTrain.leavebirthDate = props.data.leavebirthDate;
|
||||
formDataTrain.leavegovernmentDate = props.data.leavegovernmentDate;
|
||||
formDataTrain.leaveSalary = props.data.leaveSalary;
|
||||
formDataTrain.leaveSalaryText = props.data.leaveSalaryText;
|
||||
formDataTrain.studyDayScholarship = props.data.studyDayScholarship;
|
||||
formDataTrain.studyDayCountry = props.data.studyDayCountry;
|
||||
formDataTrain.studyDayTrainingSubject = props.data.studyDayTrainingSubject;
|
||||
formDataTrain.studyDayTrainingName = props.data.studyDayTrainingName;
|
||||
formDataTrain.leaveDetail = props.data.leaveDetail;
|
||||
formDataTrain.leaveRange = props.data.leaveRange;
|
||||
formDataTrain.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataTrain.leaveDocument = [];
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataTrain.leaveWrote = props.data.leaveWrote;
|
||||
formDataTrain.leaveStartDate = props.data.leaveStartDate;
|
||||
formDataTrain.leaveEndDate = props.data.leaveEndDate;
|
||||
formDataTrain.leaveTotal = props.data.leaveTotal;
|
||||
formDataTrain.leavebirthDate = props.data.leavebirthDate;
|
||||
formDataTrain.leavegovernmentDate = props.data.leavegovernmentDate;
|
||||
formDataTrain.leaveSalary = props.data.leaveSalary;
|
||||
formDataTrain.leaveSalaryText = props.data.leaveSalaryText;
|
||||
formDataTrain.studyDayScholarship = props.data.studyDayScholarship;
|
||||
formDataTrain.studyDayCountry = props.data.studyDayCountry;
|
||||
formDataTrain.studyDayTrainingSubject =
|
||||
props.data.studyDayTrainingSubject;
|
||||
formDataTrain.studyDayTrainingName = props.data.studyDayTrainingName;
|
||||
formDataTrain.leaveDetail = props.data.leaveDetail;
|
||||
formDataTrain.leaveRange = props.data.leaveRange;
|
||||
formDataTrain.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataTrain.leaveDocument = [];
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -303,7 +307,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataTrain.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -380,7 +383,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataTrain.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -484,7 +486,6 @@ onMounted(async () => {
|
|||
<div class="col-12 col-sm-3">
|
||||
<datepicker
|
||||
v-model="formDataTrain.leavegovernmentDate"
|
||||
menu-class-name="modalfix"
|
||||
autoApply
|
||||
borderless
|
||||
week-start="0"
|
||||
|
|
@ -533,7 +534,6 @@ onMounted(async () => {
|
|||
<div class="col-12 col-sm-3">
|
||||
<datepicker
|
||||
v-model="formDataTrain.leavebirthDate"
|
||||
menu-class-name="modalfix"
|
||||
autoApply
|
||||
borderless
|
||||
readonly
|
||||
|
|
|
|||
|
|
@ -219,30 +219,35 @@ const leaveDocumentList = ref<any>();
|
|||
const leaveDraftDocument = ref<string>();
|
||||
const statusCheck = ref<string>("");
|
||||
|
||||
watch(props, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataWorkInternational.leaveWrote = props.data.leaveWrote;
|
||||
formDataWorkInternational.leaveStartDate = new Date(
|
||||
props.data.leaveStartDate
|
||||
);
|
||||
formDataWorkInternational.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataWorkInternational.leaveDetail = props.data.leaveDetail;
|
||||
leaveDraftDocument.value = props.data.leaveDraftDocument;
|
||||
formDataWorkInternational.leaveRange = props.data.leaveRange;
|
||||
formDataWorkInternational.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataWorkInternational.leaveTotal = props.data.leaveTotal;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataWorkInternational.leaveDraftDocument = null;
|
||||
formDataWorkInternational.leaveDocument = [];
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
watch(
|
||||
() => props,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataWorkInternational.leaveWrote = props.data.leaveWrote;
|
||||
formDataWorkInternational.leaveStartDate = new Date(
|
||||
props.data.leaveStartDate
|
||||
);
|
||||
formDataWorkInternational.leaveEndDate = new Date(
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
formDataWorkInternational.leaveDetail = props.data.leaveDetail;
|
||||
leaveDraftDocument.value = props.data.leaveDraftDocument;
|
||||
formDataWorkInternational.leaveRange = props.data.leaveRange;
|
||||
formDataWorkInternational.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataWorkInternational.leaveTotal = props.data.leaveTotal;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataWorkInternational.leaveDraftDocument = null;
|
||||
formDataWorkInternational.leaveDocument = [];
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
watch(
|
||||
() => formDataWorkInternational.leaveEndDate,
|
||||
|
|
@ -311,7 +316,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataWorkInternational.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -388,7 +392,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataWorkInternational.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -285,50 +285,53 @@ const dateEndInputStyle = computed(() => {
|
|||
/** ตรวจสอบว่ามีการส่งข้อมูลเข้ามาที่ฟอร์มไหม เมื่อมีการส่งจะ map ข้อมูลเข้า v-model ของฟอร์ม */
|
||||
const leaveDocumentList = ref<any>();
|
||||
const statusCheck = ref<any>("");
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataFollowSpouse.leaveWrote = props.data.leaveWrote;
|
||||
formDataFollowSpouse.leaveStartDate = new Date(props.data.leaveStartDate);
|
||||
formDataFollowSpouse.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataFollowSpouse.leaveDetail = props.data.leaveDetail;
|
||||
formDataFollowSpouse.leaveTotal = props.data.leaveTotal;
|
||||
formDataFollowSpouse.leaveSalaryText = props.data.leaveSalaryText;
|
||||
formDataFollowSpouse.leaveSalary = props.data.leaveSalary;
|
||||
formDataFollowSpouse.coupleDayName = props.data.coupleDayName;
|
||||
formDataFollowSpouse.coupleDayPosition = props.data.coupleDayPosition;
|
||||
formDataFollowSpouse.coupleDayLevel = props.data.coupleDayLevel;
|
||||
formDataFollowSpouse.leaveRange = props.data.leaveRange;
|
||||
formDataFollowSpouse.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataFollowSpouse.coupleDaySumTotalHistory =
|
||||
props.data.coupleDaySumTotalHistory;
|
||||
formDataFollowSpouse.coupleDayLevelCountry =
|
||||
props.data.coupleDayLevelCountry;
|
||||
formDataFollowSpouse.coupleDayCountryHistory =
|
||||
props.data.coupleDayCountryHistory;
|
||||
formDataFollowSpouse.coupleDayTotalHistory =
|
||||
props.data.coupleDayTotalHistory;
|
||||
formDataFollowSpouse.coupleDayStartDateHistory =
|
||||
props.data.coupleDayStartDateHistory;
|
||||
formDataFollowSpouse.coupleDayEndDateHistory =
|
||||
props.data.coupleDayEndDateHistory;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
checkTotalHistory();
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataFollowSpouse.leaveWrote = props.data.leaveWrote;
|
||||
formDataFollowSpouse.leaveStartDate = new Date(props.data.leaveStartDate);
|
||||
formDataFollowSpouse.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataFollowSpouse.leaveDetail = props.data.leaveDetail;
|
||||
formDataFollowSpouse.leaveTotal = props.data.leaveTotal;
|
||||
formDataFollowSpouse.leaveSalaryText = props.data.leaveSalaryText;
|
||||
formDataFollowSpouse.leaveSalary = props.data.leaveSalary;
|
||||
formDataFollowSpouse.coupleDayName = props.data.coupleDayName;
|
||||
formDataFollowSpouse.coupleDayPosition = props.data.coupleDayPosition;
|
||||
formDataFollowSpouse.coupleDayLevel = props.data.coupleDayLevel;
|
||||
formDataFollowSpouse.leaveRange = props.data.leaveRange;
|
||||
formDataFollowSpouse.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataFollowSpouse.coupleDaySumTotalHistory =
|
||||
props.data.coupleDaySumTotalHistory;
|
||||
formDataFollowSpouse.coupleDayLevelCountry =
|
||||
props.data.coupleDayLevelCountry;
|
||||
formDataFollowSpouse.coupleDayCountryHistory =
|
||||
props.data.coupleDayCountryHistory;
|
||||
formDataFollowSpouse.coupleDayTotalHistory =
|
||||
props.data.coupleDayTotalHistory;
|
||||
formDataFollowSpouse.coupleDayStartDateHistory =
|
||||
props.data.coupleDayStartDateHistory;
|
||||
formDataFollowSpouse.coupleDayEndDateHistory =
|
||||
props.data.coupleDayEndDateHistory;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
checkTotalHistory();
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
|
||||
const coupleDayTotalHistory = await calculateDurationYmd(
|
||||
props.data.coupleDayStartDateHistory,
|
||||
props.data.coupleDayEndDateHistory
|
||||
);
|
||||
formDataFollowSpouse.coupleDayTotalHistory = coupleDayTotalHistory;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataFollowSpouse.leaveDocument = [];
|
||||
const coupleDayTotalHistory = await calculateDurationYmd(
|
||||
props.data.coupleDayStartDateHistory,
|
||||
props.data.coupleDayEndDateHistory
|
||||
);
|
||||
formDataFollowSpouse.coupleDayTotalHistory = coupleDayTotalHistory;
|
||||
statusCheck.value = props.data.status;
|
||||
formDataFollowSpouse.leaveDocument = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -405,7 +408,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataFollowSpouse.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -483,7 +485,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataFollowSpouse.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -673,7 +674,6 @@ onMounted(async () => {
|
|||
|
||||
<datepicker
|
||||
class="col-12 col-md-3 col-sm-12 inputgreen"
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataFollowSpouse.coupleDayStartDateHistory"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -720,7 +720,6 @@ onMounted(async () => {
|
|||
</datepicker>
|
||||
<datepicker
|
||||
class="col-12 col-md-3 col-sm-12 inputgreen"
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataFollowSpouse.coupleDayEndDateHistory"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -198,27 +198,32 @@ const dateEndInputStyle = computed(() => {
|
|||
const leaveDocumentList = ref<any>();
|
||||
const leaveDraftDocument = ref<string>();
|
||||
const statusCheck = ref<string>("");
|
||||
watch(props.data, async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataRehabilitation.leaveWrote = props.data.leaveWrote;
|
||||
formDataRehabilitation.leaveStartDate = new Date(props.data.leaveStartDate);
|
||||
formDataRehabilitation.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataRehabilitation.leaveDetail = props.data.leaveDetail;
|
||||
leaveDraftDocument.value = props.data.leaveDraftDocument;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
formDataRehabilitation.leaveRange = props.data.leaveRange;
|
||||
formDataRehabilitation.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataRehabilitation.leaveDraftDocument = null;
|
||||
formDataRehabilitation.leaveDocument = [];
|
||||
statusCheck.value = props.data.status;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
watch(
|
||||
() => props.data,
|
||||
async () => {
|
||||
if (props.data) {
|
||||
// totalCheck.value = null;
|
||||
formDataRehabilitation.leaveWrote = props.data.leaveWrote;
|
||||
formDataRehabilitation.leaveStartDate = new Date(
|
||||
props.data.leaveStartDate
|
||||
);
|
||||
formDataRehabilitation.leaveEndDate = new Date(props.data.leaveEndDate);
|
||||
formDataRehabilitation.leaveDetail = props.data.leaveDetail;
|
||||
leaveDraftDocument.value = props.data.leaveDraftDocument;
|
||||
leaveDocumentList.value = props.data.leaveDocument;
|
||||
formDataRehabilitation.leaveRange = props.data.leaveRange;
|
||||
formDataRehabilitation.leaveRangeEnd = props.data.leaveRangeEnd;
|
||||
formDataRehabilitation.leaveDraftDocument = null;
|
||||
formDataRehabilitation.leaveDocument = [];
|
||||
statusCheck.value = props.data.status;
|
||||
const leaveTotal = await calculateDurationYmd(
|
||||
props.data.leaveStartDate,
|
||||
props.data.leaveEndDate
|
||||
);
|
||||
leaveText.value = leaveTotal;
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
/**Hook */
|
||||
onMounted(async () => {
|
||||
|
|
@ -274,7 +279,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataRehabilitation.leaveStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -351,7 +355,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm"> -->
|
||||
<div class="col-12 col-md-3 col-sm-6 inputgreen">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formDataRehabilitation.leaveEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -101,7 +101,10 @@ async function getCommander() {
|
|||
page: pagination.value.page,
|
||||
pageSize: pagination.value.rowsPerPage,
|
||||
keycloakId: storeData.formData.keycloakId,
|
||||
type:storeData.officerType.toLocaleUpperCase() == 'OFFICER' ? 'officer':'employee'
|
||||
type:
|
||||
storeData.officerType.toLocaleUpperCase() == "OFFICER"
|
||||
? "officer"
|
||||
: "employee",
|
||||
})
|
||||
.then((res) => {
|
||||
rows.value = res.data.result.data;
|
||||
|
|
@ -170,7 +173,6 @@ onMounted(() => {
|
|||
<div class="col-12 row q-pa-sm q-col-gutter-sm">
|
||||
<datepicker
|
||||
class="col-12 col-sm-6"
|
||||
menu-class-name="modalfix"
|
||||
v-model="dataStore.dateSendLeave"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -65,15 +65,12 @@ async function fetchDataTable() {
|
|||
|
||||
/** function เรียกประเภทการลา */
|
||||
async function fectOptionType() {
|
||||
await http
|
||||
.get(config.API.leaveType())
|
||||
.then(async (res) => {
|
||||
leaveType.value = res.data.result;
|
||||
LeaveData.fetchLeaveType(res.data.result);
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
});
|
||||
const data = await LeaveData.fetchLeaveTypeData();
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
leaveType.value = data;
|
||||
LeaveData.fetchLeaveType(data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -95,25 +92,26 @@ async function onClickEdit(id: string) {
|
|||
router.push(`/leave/edit/${id}`);
|
||||
}
|
||||
|
||||
//เเจ้งเตือนลบข้อมูล
|
||||
function clickDelete(id: string) {
|
||||
dialogRemove($q, () => onClickDelete(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* function ลบรายการ
|
||||
* @param id
|
||||
* ฟังก์ชันลบข้อมูลการลา
|
||||
* @param id รายการลาที่ต้องการลบ
|
||||
*/
|
||||
async function onClickDelete(id: string) {
|
||||
await http
|
||||
.delete(config.API.leaveUserId(id))
|
||||
.then(async (res) => {
|
||||
success($q, "ลบข้อมูลสำเร็จ");
|
||||
fetchDataTable();
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
});
|
||||
function clickDelete(id: string) {
|
||||
dialogRemove($q, async () => {
|
||||
showLoader();
|
||||
await http
|
||||
.delete(config.API.leaveUserId(id))
|
||||
.then(async () => {
|
||||
await fetchDataTable();
|
||||
success($q, "ลบข้อมูลสำเร็จ");
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/** function closePopup*/
|
||||
|
|
@ -170,8 +168,15 @@ function convert(val: any) {
|
|||
* เรียกฟังก์ชันทั้งหมดตอนเรียกใช้ไฟล์นี้
|
||||
*/
|
||||
onMounted(async () => {
|
||||
await fectOptionType();
|
||||
await fetchDataTable();
|
||||
try {
|
||||
showLoader();
|
||||
await fectOptionType();
|
||||
await fetchDataTable();
|
||||
} catch (error) {
|
||||
messageError($q, error);
|
||||
} finally {
|
||||
hideLoader();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<template>
|
||||
|
|
@ -299,6 +304,7 @@ onMounted(async () => {
|
|||
<q-menu>
|
||||
<q-list>
|
||||
<q-item
|
||||
v-if="props.row.status != 'DRAFT'"
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="onClickView(props.row.id, 'CANCEL')"
|
||||
|
|
|
|||
|
|
@ -101,7 +101,6 @@ watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => {
|
|||
<div class="items-center col-12 row q-col-gutter-sm">
|
||||
<datepicker
|
||||
v-if="leaveStore.tabValue === 'list'"
|
||||
menu-class-name="modalfix"
|
||||
v-model="year"
|
||||
class="col-xs-12 col-sm-auto"
|
||||
:locale="'th'"
|
||||
|
|
@ -135,6 +134,8 @@ watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => {
|
|||
</datepicker>
|
||||
<!-- ค้นหาข้อความใน table -->
|
||||
<q-select
|
||||
fill-input
|
||||
hide-selected
|
||||
outlined
|
||||
dense
|
||||
v-model="leaveStore.type"
|
||||
|
|
@ -174,6 +175,8 @@ watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => {
|
|||
/> </template
|
||||
></q-select>
|
||||
<q-select
|
||||
fill-input
|
||||
hide-selected
|
||||
outlined
|
||||
dense
|
||||
v-model="leaveStore.status"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
|
|
@ -18,8 +17,7 @@ import type {
|
|||
import type { DataOption } from "../14_IDP/interface/Main";
|
||||
|
||||
const mixin = useCounterMixin();
|
||||
const { date2Thai, messageError, showLoader, hideLoader } = mixin;
|
||||
const $q = useQuasar();
|
||||
const { date2Thai, showLoader, hideLoader } = mixin;
|
||||
const type = ref<string>("00000000-0000-0000-0000-000000000000");
|
||||
const status = ref<string>("ALL");
|
||||
export const useLeaveStore = defineStore("Leave", () => {
|
||||
|
|
@ -29,6 +27,7 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
const LeaveStatus = ref<string | null>("0");
|
||||
const fiscalYearyear = ref<Number | null>(new Date().getFullYear());
|
||||
const rows = ref<ListLeaveTable[]>([]);
|
||||
const leaveTypeData = ref<TypeLeave[]>([]);
|
||||
|
||||
/**
|
||||
* function เรียกข้อมูลรายการลา Table
|
||||
|
|
@ -126,7 +125,8 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
{ id: "PENDING", name: "กำลังดำเนินการ" },
|
||||
{ id: "APPROVE", name: "อนุญาต " },
|
||||
{ id: "REJECT", name: "ไม่อนุญาต" },
|
||||
{ id: "DELETE", name: "ยกเลิก" },
|
||||
{ id: "DELETING", name: "กำลังดำเนินการยกเลิก" },
|
||||
{ id: "DELETE", name: "ยกเลิกสำเร็จ" },
|
||||
]);
|
||||
const statusOptions = ref<any[]>(statusOptionsMain.value);
|
||||
|
||||
|
|
@ -136,10 +136,9 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
* @param update อัพเดทค่า
|
||||
* @param refData ดาต้าที่ต้องการฟิลเตอร์
|
||||
*/
|
||||
function filterOption(val: any, update: Function, refData: string) {
|
||||
function filterOption(val: string, update: Function, refData: string) {
|
||||
switch (refData) {
|
||||
case "LeaveTypeOption":
|
||||
type.value = "";
|
||||
update(() => {
|
||||
typeOptions.value = typeOptionsMain.value.filter(
|
||||
(v: any) => v.name.indexOf(val) > -1
|
||||
|
|
@ -147,7 +146,6 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
});
|
||||
break;
|
||||
case "LeaveStatusOption":
|
||||
status.value = "";
|
||||
update(() => {
|
||||
statusOptions.value = statusOptionsMain.value.filter(
|
||||
(v: any) => v.name.indexOf(val) > -1
|
||||
|
|
@ -344,7 +342,7 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
Number(data.leaveLimit) - Number(data.restDayTotalOld);
|
||||
})
|
||||
.catch((e: any) => {
|
||||
messageError($q, e);
|
||||
console.log(e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -368,7 +366,7 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
Number(data.leaveLimit) - Number(data.restDayTotalOld);
|
||||
})
|
||||
.catch((e: any) => {
|
||||
messageError($q, e);
|
||||
console.log(e);
|
||||
});
|
||||
|
||||
dateSendLeave.value = data.dateSendLeave;
|
||||
|
|
@ -405,6 +403,21 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
restDayCurrentTotal.value = 0;
|
||||
}
|
||||
|
||||
/** ฟังก์ชันเรียกข้อมูลประเภทการลา */
|
||||
async function fetchLeaveTypeData() {
|
||||
if (leaveTypeData.value.length > 0) {
|
||||
return leaveTypeData.value;
|
||||
} else {
|
||||
try {
|
||||
const res = await http.get(config.API.leaveType());
|
||||
leaveTypeData.value = res.data.result;
|
||||
return leaveTypeData.value;
|
||||
} catch (error) {
|
||||
console.error("Fetch leave type error:", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
tabValue,
|
||||
typeOptions,
|
||||
|
|
@ -459,5 +472,7 @@ export const useLeaveStore = defineStore("Leave", () => {
|
|||
currentAddress,
|
||||
rangeOptions,
|
||||
converstType,
|
||||
|
||||
fetchLeaveTypeData,
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@ onMounted(async () => {
|
|||
:on-confirm="onConfirm"
|
||||
:click-delete="clickDelete"
|
||||
/>
|
||||
<HelpWifeBirthForm5
|
||||
<HelpWifeBirthForm
|
||||
v-if="model === 'LV-004'"
|
||||
:data="formData"
|
||||
:on-submit="onSubmit"
|
||||
|
|
|
|||
|
|
@ -118,8 +118,11 @@ const columns = ref<QTableProps["columns"]>([
|
|||
},
|
||||
]);
|
||||
|
||||
const isloading = ref<boolean>(false);
|
||||
|
||||
/** function เรียกข้อมูลตารางสถิติการลา*/
|
||||
async function fetchStatsTable() {
|
||||
isloading.value = true;
|
||||
await http
|
||||
.get(config.API.leaveStats())
|
||||
.then((res) => {
|
||||
|
|
@ -168,9 +171,11 @@ async function fetchStatsTable() {
|
|||
leaveCountReject: e.leaveCountReject,
|
||||
leaveCountDelete: e.leaveCountDelete,
|
||||
}));
|
||||
isloading.value = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
isloading.value = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -210,7 +215,7 @@ onMounted(async () => {
|
|||
<div class="col-xs-12 col-sm-12 col-md-11 row">
|
||||
<!-- สถิติการลา -->
|
||||
<div class="col-12 row q-pb-sm">
|
||||
<q-card bordered class="col-12 row">
|
||||
<q-card bordered class="col-12 row" v-if="!isloading">
|
||||
<div class="row col-12 items-center q-px-md q-py-sm">
|
||||
<div class="text-weight-bold">สถิติการลา</div>
|
||||
<q-space />
|
||||
|
|
@ -230,12 +235,7 @@ onMounted(async () => {
|
|||
:key="item.text"
|
||||
>
|
||||
<div class="col-xs-12 col-sm-12">
|
||||
<q-card
|
||||
bordered
|
||||
flat
|
||||
class="col-12 row shadow-0 no-wrap"
|
||||
v-if="item.text === 'ลาพักผ่อน'"
|
||||
>
|
||||
<q-card bordered flat class="col-12 row shadow-0 no-wrap">
|
||||
<div class="col-xs-12 col-sm-8 row justify-center q-py-md">
|
||||
<div class="col-12 row items-center justify-center q-pb-sm">
|
||||
<q-knob
|
||||
|
|
@ -327,6 +327,91 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
||||
<q-card bordered class="col-12 row q-px-md q-py-sm" v-else>
|
||||
<div class="row col-12 items-center q-px-md q-py-sm">
|
||||
<div class="text-weight-bold">สถิติการลา</div>
|
||||
<q-space />
|
||||
<q-skeleton type="QBtn" size="20px" style="width: 100px" />
|
||||
</div>
|
||||
<div
|
||||
bordered
|
||||
class="col-6 row justify-center q-px-md q-pb-md q-col-gutter-sm"
|
||||
>
|
||||
<div class="col-xs-12 col-sm-12">
|
||||
<q-card bordered flat class="col-12 row shadow-0 no-wrap">
|
||||
<div class="col-xs-12 col-sm-8 row justify-center q-py-md">
|
||||
<div class="col-12 row items-center justify-center q-pb-sm">
|
||||
<q-skeleton type="circle" size="60px" />
|
||||
|
||||
<div class="col-12 row items-center justify-center">
|
||||
<q-skeleton type="text" size="20px" style="width: 50px" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row gt-xs"><q-separator vertical /></div>
|
||||
<div class="col-xs-12 col-sm-4 gt-xs row">
|
||||
<div class="col-12 row text-dark text-body2 items-center">
|
||||
<div class="col-12 row q-pa-xs q-px-md row">
|
||||
<span class="text-grey-7 col-6">ได้รับ</span>
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-12 row q-pa-xs q-px-md">
|
||||
<span class="text-grey-7 col-6">ใช้ไป</span>
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-12 row q-pa-xs q-px-md">
|
||||
<span class="text-grey-7 col-6">คงเหลือ</span>
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 row">
|
||||
<div bordered class="col-12 row justify-center q-px-md q-pb-md">
|
||||
<div class="col-xs-12 col-sm-12 row">
|
||||
<div class="col-12 row">
|
||||
<q-card
|
||||
bordered
|
||||
flat
|
||||
class="shadow-0 col-12 fit row items-center q-px-lg"
|
||||
>
|
||||
<div class="text-subtitle2 col-4">
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
<div class="text-subtitle2 col-8 row">
|
||||
<span class="text-grey-7 q-pr-md">ใช้ไป</span>
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div bordered class="col-12 row justify-center q-px-md q-pb-md">
|
||||
<div class="col-xs-12 col-sm-12 row">
|
||||
<div class="col-12 row">
|
||||
<q-card
|
||||
bordered
|
||||
flat
|
||||
class="shadow-0 col-12 fit row items-center q-px-lg"
|
||||
>
|
||||
<div class="text-subtitle2 col-4">
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
<div class="text-subtitle2 col-8 row">
|
||||
<span class="text-grey-7 q-pr-md">ใช้ไป</span>
|
||||
<q-skeleton type="text" style="width: 50px" />
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
<div class="row col-12">
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ onMounted(() => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/evaluate')"
|
||||
/>
|
||||
<div>ประเมินเชี่ยวชาญ</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -272,11 +272,13 @@ function getCommander() {
|
|||
.get(config.API.searchCommander)
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
formCommand.author = data.fullname;
|
||||
formCommand.author = data.fullname;
|
||||
formCommand.commanderFullname = data.commanderFullname;
|
||||
formCommand.commanderPosition = data.commanderPosition;
|
||||
formCommand.commanderAboveFullname = data.commanderAboveFullname;
|
||||
formCommand.commanderAbovePosition = data.commanderAbovePosition;
|
||||
formCommand.commanderOrg = data.commanderOrg;
|
||||
formCommand.commanderAboveOrg = data.commanderAboveOrg;
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log(e);
|
||||
|
|
@ -316,7 +318,6 @@ watch(
|
|||
onMounted(async () => {
|
||||
const user = await tokenParsed();
|
||||
|
||||
|
||||
try {
|
||||
showLoader();
|
||||
await Promise.all([
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ const evaluateId = ref<string>(route.params.id.toString());
|
|||
const emit = defineEmits(["update:form"]);
|
||||
|
||||
const fileEvaluation1 = ref<any>();
|
||||
const assignedPosLevel = ref<string>(""); // ระดับตำแหน่งที่ได้รับ
|
||||
|
||||
/** form จัดเตรียมเอกสารเล่ม 2*/
|
||||
const formCommand = reactive<FormCommand>({
|
||||
|
|
@ -148,6 +149,8 @@ async function fetcheSigner(id: string) {
|
|||
formCommand.subject = data.subjectDoc2;
|
||||
formCommand.assignedPosition = data.assignedPosition;
|
||||
|
||||
assignedPosLevel.value = data.assignedPosLevel;
|
||||
|
||||
store.statusUpload6 = data.isUpdated;
|
||||
})
|
||||
.catch((err) => {
|
||||
|
|
@ -195,20 +198,22 @@ async function checkDoc() {
|
|||
});
|
||||
}
|
||||
|
||||
function getCommander() {
|
||||
http
|
||||
.get(config.API.searchCommander)
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
formCommand.commanderFullname = data.commanderFullname;
|
||||
formCommand.commanderPosition = data.commanderPosition;
|
||||
formCommand.commanderAboveFullname = data.commanderAboveFullname;
|
||||
formCommand.commanderAbovePosition = data.commanderAbovePosition;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
});
|
||||
}
|
||||
// function getCommander() {
|
||||
// http
|
||||
// .get(config.API.searchCommander)
|
||||
// .then((res) => {
|
||||
// const data = res.data.result;
|
||||
// formCommand.commanderFullname = data.commanderFullname;
|
||||
// formCommand.commanderPosition = data.commanderPosition;
|
||||
// formCommand.commanderAboveFullname = data.commanderAboveFullname;
|
||||
// formCommand.commanderAbovePosition = data.commanderAbovePosition;
|
||||
// formCommand.commanderOrg = data.commanderOrg;
|
||||
// formCommand.commanderAboveOrg = data.commanderAboveOrg;
|
||||
// })
|
||||
// .catch((e) => {
|
||||
// messageError($q, e);
|
||||
// });
|
||||
// }
|
||||
|
||||
function onAddSubject() {
|
||||
formCommand.subject.push("");
|
||||
|
|
@ -282,7 +287,7 @@ onMounted(async () => {
|
|||
lazy-rules
|
||||
/>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
:readonly="store.currentStep != 6 || store.statusUpload6"
|
||||
class="col-xs-12 col-sm-6"
|
||||
|
|
@ -298,6 +303,17 @@ onMounted(async () => {
|
|||
lazy-rules
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
readonly
|
||||
class="col-xs-12 col-sm-6"
|
||||
dense
|
||||
outlined
|
||||
v-model="assignedPosLevel"
|
||||
label="ระดับตำแหน่งที่ได้รับ"
|
||||
hide-bottom-space
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ function onOpenDialogPerformance(
|
|||
stetusEdit: boolean = false,
|
||||
index: number | null = null
|
||||
) {
|
||||
if (stetusEdit && index) {
|
||||
if (stetusEdit && index !== null) {
|
||||
isIndex.value = index;
|
||||
const data = formDetail.assessments[index];
|
||||
formPerformance.year = data.year ? Number(data.year) - 543 : null;
|
||||
|
|
@ -276,7 +276,7 @@ function onSubmitPerformance() {
|
|||
isAdd: true,
|
||||
};
|
||||
|
||||
if (isEdit.value && isIndex.value) {
|
||||
if (isEdit.value && isIndex.value !== null && isIndex.value !== undefined) {
|
||||
formDetail.assessments[isIndex.value] = body;
|
||||
} else {
|
||||
formDetail.assessments.push(body);
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import { useEvaluateStore } from "@/modules/06_evaluate/store";
|
||||
|
||||
const store = useEvaluateStore();
|
||||
const mixin = useCounterMixin();
|
||||
const $q = useQuasar();
|
||||
|
||||
const { showLoader, hideLoader, messageError } = mixin;
|
||||
const { showLoader, hideLoader } = mixin;
|
||||
|
||||
/** function เช็คการยื่นข้อประเมิน*/
|
||||
async function fetchCheckStatus() {
|
||||
|
|
@ -26,7 +24,7 @@ async function fetchCheckStatus() {
|
|||
fetchCheckStep(store?.evaluateId);
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -65,7 +63,7 @@ async function fetchCheckStep(id: string) {
|
|||
store.step = step;
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
store.showLoadStatus = true;
|
||||
|
|
@ -143,7 +141,7 @@ async function saveEvaluation(formSpec: any, detail: any) {
|
|||
fetchCheckStatus();
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
fetchCheckStep(store?.evaluateId);
|
||||
|
|
@ -155,10 +153,9 @@ async function nextPrapare(type: string, body: any) {
|
|||
showLoader();
|
||||
await http
|
||||
.put(config.API.evaluationPreparedoc(store.evaluateId, type), body)
|
||||
.then((res) => {
|
||||
})
|
||||
.then((res) => {})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -170,10 +167,9 @@ async function nextCheckDoc(type: string) {
|
|||
showLoader();
|
||||
await http
|
||||
.put(config.API.evaluationCheckdoc(store.evaluateId, type))
|
||||
.then((res) => {
|
||||
})
|
||||
.then((res) => {})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ onMounted(async () => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/')"
|
||||
/>
|
||||
<div>ประเมินบุคคล</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ onMounted(() => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/appeal-complain')"
|
||||
/>
|
||||
เพิ่มอุทธรณ์/ร้องทุกข์
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -148,35 +148,46 @@ function onSubmit(data: FormDataType) {
|
|||
);
|
||||
}
|
||||
|
||||
watch(props.formProfile, () => {
|
||||
if (props.formProfile !== null) {
|
||||
formData.fullname = props.formProfile.fullname;
|
||||
formData.profileId = props.formProfile.profileId;
|
||||
formData.citizenId = props.formProfile.citizenId;
|
||||
formData.oc = props.formProfile.oc;
|
||||
formData.position = props.formProfile.position;
|
||||
}
|
||||
});
|
||||
watch(
|
||||
() => props.formProfile,
|
||||
(newValue) => {
|
||||
if (newValue !== null) {
|
||||
formData.fullname = newValue.fullname;
|
||||
formData.profileId = newValue.profileId;
|
||||
formData.citizenId = newValue.citizenId;
|
||||
formData.oc = newValue.oc;
|
||||
formData.position = newValue.position;
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
watch(props.data, () => {
|
||||
isReadOnly.value = true;
|
||||
formData.id = props.data.id;
|
||||
formData.title = props.data.title;
|
||||
formData.description = props.data.description;
|
||||
formData.status = props.data.status;
|
||||
formData.type = props.data.type;
|
||||
formData.year = props.data.year;
|
||||
formData.caseType = props.data.caseType;
|
||||
formData.caseNumber = props.data.caseNumber;
|
||||
formData.fullname = props.data.fullname;
|
||||
formData.citizenId = props.data.citizenId;
|
||||
formData.profileId = props.data.profileId;
|
||||
formData.lastUpdatedAt = props.data.lastUpdatedAt;
|
||||
formData.disciplineComplaint_Appeal_Docs =
|
||||
props.data.disciplineComplaint_Appeal_Docs;
|
||||
formData.historyStatus = props.data.historyStatus;
|
||||
});
|
||||
watch(
|
||||
() => props.data,
|
||||
(newValue) => {
|
||||
if (newValue !== null) {
|
||||
isReadOnly.value = true;
|
||||
formData.id = props.data.id;
|
||||
formData.title = props.data.title;
|
||||
formData.description = props.data.description;
|
||||
formData.status = props.data.status;
|
||||
formData.type = props.data.type;
|
||||
formData.year = props.data.year;
|
||||
formData.caseType = props.data.caseType;
|
||||
formData.caseNumber = props.data.caseNumber;
|
||||
formData.fullname = props.data.fullname;
|
||||
formData.citizenId = props.data.citizenId;
|
||||
formData.profileId = props.data.profileId;
|
||||
formData.lastUpdatedAt = props.data.lastUpdatedAt;
|
||||
formData.disciplineComplaint_Appeal_Docs =
|
||||
props.data.disciplineComplaint_Appeal_Docs;
|
||||
formData.historyStatus = props.data.historyStatus;
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-xs-12">
|
||||
|
|
|
|||
|
|
@ -264,13 +264,13 @@ onMounted(async () => {
|
|||
color="primary"
|
||||
icon="mdi-plus"
|
||||
@click="redirectToPageadd()"
|
||||
><q-tooltip>เพิ่มการอุทธรณ์/ร้องทุกข์</q-tooltip></q-btn
|
||||
>
|
||||
<q-tooltip>เพิ่มการอุทธรณ์/ร้องทุกข์</q-tooltip>
|
||||
</q-btn>
|
||||
|
||||
<div class="row col-12 q-col-gutter-sm q-mb-sm">
|
||||
<div class="col-xs-12 col-md-2">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.year"
|
||||
class="col-2"
|
||||
:locale="'th'"
|
||||
|
|
|
|||
|
|
@ -236,8 +236,6 @@ function onSubmit() {
|
|||
}
|
||||
}
|
||||
|
||||
const customPosition = () => ({ top: "490px", left: "410px" });
|
||||
|
||||
async function getDataByYear() {
|
||||
if (formData.year) {
|
||||
showLoader();
|
||||
|
|
@ -270,15 +268,15 @@ function getProjectDetail(val: any) {
|
|||
development.value = data.developmentProjectTechniqueActuals;
|
||||
reasonDevelopment70.value =
|
||||
data.developmentProjectTechniqueActuals.includes("other1")
|
||||
? data.reasonDevelopment70
|
||||
? data.reasonActual70
|
||||
: "";
|
||||
reasonDevelopment20.value =
|
||||
data.developmentProjectTechniqueActuals.includes("other2")
|
||||
? data.reasonDevelopment20
|
||||
? data.reasonActual20
|
||||
: "";
|
||||
reasonDevelopment10.value =
|
||||
data.developmentProjectTechniqueActuals.includes("other3")
|
||||
? data.reasonDevelopment10
|
||||
? data.reasonActual10
|
||||
: "";
|
||||
})
|
||||
.catch((e) => {
|
||||
|
|
@ -388,9 +386,7 @@ watch(
|
|||
v-model="formData.year"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
position="center"
|
||||
year-picker
|
||||
:alt-position="customPosition"
|
||||
:enableTimePicker="false"
|
||||
@update:model-value="getDataByYear(), (projectName = '')"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,9 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { ref, reactive, watch } from "vue";
|
||||
import { ref, reactive } from "vue";
|
||||
import type { DataOptions } from "./interface/index/Main";
|
||||
import type { FormQuery } from "@/modules/08_KPI/interface/request/index";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
export const useKpiDataStore = defineStore("KPIDate", () => {
|
||||
const $q = useQuasar();
|
||||
const mixin = useCounterMixin();
|
||||
const { showLoader, hideLoader, messageError } = mixin;
|
||||
|
||||
const mainRowData = ref<any>();
|
||||
const isUpdate = ref<boolean>(false);
|
||||
const tabMainevaluator = ref<string>("1");
|
||||
|
|
@ -432,47 +424,6 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
const devProbationScore = ref<number>(10); // สรุปผลการประเมินพฤติกรรมการปฏิบัติราชการ (สมรรถนะ+การพัฒนาตนเอง) (คะแนนเต็ม competencyDevScore คะแนน)
|
||||
const competencyDevProbationScore = ref<number>(50); // สรุปผลการประเมินพฤติกรรมการปฏิบัติราชการ (สมรรถนะ+การพัฒนาตนเอง) (คะแนนเต็ม competencyDevScore คะแนน)
|
||||
|
||||
// function getDataWork() {
|
||||
// showLoader();
|
||||
// http
|
||||
// .get(config.API.orgPosition + `/${dataProfile.value.profileId}`)
|
||||
// .then((res) => {
|
||||
// const data = res.data.result.isProbation;
|
||||
// work.value = data;
|
||||
// if (data) {
|
||||
// indicatorScore.value = 50;
|
||||
// competencyScore.value = 40;
|
||||
// excusiveCompetencyScore.value = 40;
|
||||
// competencyDevScore.value = 10;
|
||||
// } else {
|
||||
// indicatorScore.value = 70;
|
||||
// competencyScore.value = 20;
|
||||
// excusiveCompetencyScore.value = 20;
|
||||
// competencyDevScore.value = 30;
|
||||
// }
|
||||
// })
|
||||
// .catch((e) => {
|
||||
// messageError($q, e);
|
||||
// })
|
||||
// .finally(() => {
|
||||
// hideLoader();
|
||||
// });
|
||||
// }
|
||||
|
||||
// watch(
|
||||
// () => tabMain.value,
|
||||
// () => {
|
||||
// if (tabMain.value == "3" && tabOpen.value == 3) {
|
||||
// getDataWork();
|
||||
// } else {
|
||||
// indicatorScore.value = 70;
|
||||
// competencyScore.value = 20;
|
||||
// excusiveCompetencyScore.value = 20;
|
||||
// competencyDevScore.value = 30;
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
|
||||
return {
|
||||
tabMain,
|
||||
dataProfile,
|
||||
|
|
@ -526,6 +477,6 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
mainRowData,
|
||||
resultsOptions,
|
||||
statusOptions,
|
||||
roleText
|
||||
roleText,
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1244,10 +1244,18 @@ onMounted(async () => {
|
|||
<div class="col-12">รักษาการในตำแหน่ง/การรักษาราชการแทน</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12" v-if="evaluator.isPosmasterAct">
|
||||
<div
|
||||
class="col-12"
|
||||
v-if="evaluator.isPosmasterAct"
|
||||
v-for="(data, index) in evaluator.posmasterAct"
|
||||
:key="index"
|
||||
>
|
||||
{{
|
||||
`${evaluator.posmasterAct[0].prefix}${evaluator.posmasterAct[0].firstName} ${evaluator.posmasterAct[0].lastName} (${evaluator.posmasterAct[0].posNo})`
|
||||
data.firstName
|
||||
? `- ${data.prefix}${data.firstName} ${data.lastName}`
|
||||
: "- ว่าง"
|
||||
}}
|
||||
{{ `(${data.posNo})` }}
|
||||
</div>
|
||||
<div class="col-12" v-else>-</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -435,7 +435,6 @@ onMounted(async () => {
|
|||
<div class="row col-12 q-col-gutter-sm">
|
||||
<div class="col-xs-12 col-md-1">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="year"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -219,13 +219,14 @@ onMounted(async () => {
|
|||
<div class="items-center col-12 row q-col-gutter-sm q-mb-sm">
|
||||
<datepicker
|
||||
class="col-md-1 col-xs-12"
|
||||
menu-class-name="modalfix"
|
||||
v-model="store.yearRound"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
year-picker
|
||||
:enableTimePicker="false"
|
||||
@update:model-value=" store.formQuery.page = 1,fetchRoundOption(true)"
|
||||
@update:model-value="
|
||||
(store.formQuery.page = 1), fetchRoundOption(true)
|
||||
"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
|
|
@ -300,7 +301,6 @@ onMounted(async () => {
|
|||
:options="columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -689,7 +689,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-md">
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.scholarshipYear"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -822,7 +821,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.bookNoDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -865,7 +863,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.bookApproveDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -960,7 +957,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.contractDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1018,7 +1014,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.reportBackNoDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1057,7 +1052,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.reportBackDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1205,7 +1199,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1250,7 +1243,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.endDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1334,7 +1326,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1375,7 +1366,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyEndDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -1441,7 +1431,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1484,7 +1473,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1588,7 +1576,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1633,7 +1620,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.endDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -1717,7 +1703,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyStartDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -1758,7 +1743,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1856,7 +1840,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.startDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -1901,7 +1884,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.endDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1985,7 +1967,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyStartDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -2026,7 +2007,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyEndDate"
|
||||
readonly
|
||||
:locale="'th'"
|
||||
|
|
@ -2099,7 +2079,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2142,7 +2121,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2343,7 +2321,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2392,7 +2369,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.endDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2460,7 +2436,10 @@ onMounted(async () => {
|
|||
/>
|
||||
</div>
|
||||
|
||||
<div v-if="formBody.studyTopic == 'ดูงาน'" class="col-12 col-md-3">
|
||||
<div
|
||||
v-if="formBody.studyTopic == 'ดูงาน'"
|
||||
class="col-12 col-md-3"
|
||||
>
|
||||
<q-input
|
||||
dense
|
||||
readonly
|
||||
|
|
@ -2479,7 +2458,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2526,7 +2504,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2636,7 +2613,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.startDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2682,7 +2658,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.endDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -2750,7 +2725,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyStartDate"
|
||||
:locale="'th'"
|
||||
readonly
|
||||
|
|
@ -2796,7 +2770,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2880,7 +2853,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadStartDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2921,7 +2893,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formBody.studyAbroadEndDate"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -181,7 +181,6 @@ onMounted(async () => {
|
|||
<div class="items-center col-12 row q-col-gutter-sm q-mb-sm">
|
||||
<datepicker
|
||||
class="col-xs-12 col-md-1"
|
||||
menu-class-name="modalfix"
|
||||
v-model="year"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -411,10 +411,10 @@ onMounted(async () => {
|
|||
<div class="row">
|
||||
<div class="col-12 col-sm-12 col-md-6 q-gutter-y-sm">
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">
|
||||
เลขประจำตัวประชาชน
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.citizenId
|
||||
? formDataInformation.citizenId
|
||||
|
|
@ -424,8 +424,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">ชื่อ - สกุล</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">ชื่อ - สกุล</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.firstName
|
||||
? `${
|
||||
|
|
@ -441,10 +441,10 @@ onMounted(async () => {
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">
|
||||
วัน/เดือน/ปีเกิด
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.birthDate
|
||||
? date2Thai(formDataInformation.birthDate)
|
||||
|
|
@ -454,8 +454,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">เพศ</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">เพศ</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.gender ? formDataInformation.gender : "-"
|
||||
}}
|
||||
|
|
@ -463,8 +463,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">สถานภาพ</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">สถานภาพ</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.relationship
|
||||
? formDataInformation.relationship
|
||||
|
|
@ -476,8 +476,8 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-sm-12 col-md-6 q-gutter-y-sm">
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">สัญชาติ</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">สัญชาติ</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.nationality
|
||||
? formDataInformation.nationality
|
||||
|
|
@ -486,8 +486,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">เชื้อชาติ</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">เชื้อชาติ</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.ethnicity
|
||||
? formDataInformation.ethnicity
|
||||
|
|
@ -496,8 +496,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">ศาสนา</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">ศาสนา</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.religion
|
||||
? formDataInformation.religion
|
||||
|
|
@ -506,8 +506,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">หมู่เลือด</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">หมู่เลือด</div>
|
||||
<div class="col-8">
|
||||
{{
|
||||
formDataInformation.bloodGroup
|
||||
? formDataInformation.bloodGroup
|
||||
|
|
@ -516,8 +516,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">เบอร์โทร</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">เบอร์โทร</div>
|
||||
<div class="col-8">
|
||||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-9">
|
||||
<q-input
|
||||
|
|
@ -580,8 +580,8 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">อีเมล</div>
|
||||
<div class="col-7">
|
||||
<div class="col-4 text-grey-6 text-weight-medium">อีเมล</div>
|
||||
<div class="col-8">
|
||||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-9">
|
||||
<q-input
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
},
|
||||
]);
|
||||
const pagination = ref({
|
||||
sortBy: "lastUpdatedAt",
|
||||
// sortBy: "lastUpdatedAt",
|
||||
});
|
||||
|
||||
const columnsHistory = ref<QTableProps["columns"]>([
|
||||
|
|
|
|||
|
|
@ -497,19 +497,19 @@ onMounted(async () => {
|
|||
<div class="row">
|
||||
<div class="col-12 col-sm-12 col-md-6 q-gutter-y-sm">
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
วันที่สั่งบรรจุ
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
{{ formData.dateAppoint ? date2Thai(formData.dateAppoint) : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
วันที่เริ่มปฏิบัติราชการ
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
{{ formData.dateStart ? date2Thai(formData.dateStart) : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -518,22 +518,32 @@ onMounted(async () => {
|
|||
v-if="dateToISO(formData.dateAppoint as Date) !== dateToISO(formData.dateStart as Date)"
|
||||
class="row"
|
||||
>
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
เหตุผลที่วันที่ไม่ตรงกัน
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
{{ formData.reasonSameDate ? formData.reasonSameDate : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
วันครบเกษียณอายุ
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
{{ formData.dateLeave ? date2Thai(formData.dateLeave) : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
วันที่เกษียณอายุราชการตามกฏหมาย
|
||||
</div>
|
||||
<div class="col-6">
|
||||
{{
|
||||
formData.dateRetireLaw ? date2Thai(formData.dateRetireLaw) : "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-12 col-md-6 q-gutter-y-sm">
|
||||
|
|
@ -561,16 +571,6 @@ onMounted(async () => {
|
|||
{{ formData.govAgePlus ? formData.govAgePlus : 0 }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
วันที่เกษียณอายุราชการตามกฏหมาย
|
||||
</div>
|
||||
<div class="col-7">
|
||||
{{
|
||||
formData.dateRetireLaw ? date2Thai(formData.dateRetireLaw) : "-"
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ const baseColumns = ref<QTableColumn[]>([
|
|||
style: "font-size: 14px",
|
||||
format(val, row) {
|
||||
return row.posNoAbb && row.posNo
|
||||
? `${row.posNoAbb}${row.posNo}`
|
||||
? `${row.posNoAbb} ${row.posNo}`
|
||||
: row.posNo
|
||||
? row.posNo
|
||||
: "-";
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@ import http from "@/plugins/http";
|
|||
import config from "@/app.config";
|
||||
import { useDataStore } from "@/stores/data";
|
||||
|
||||
//history dialog
|
||||
import DialogHistory from "@/modules/10_registry/Dialog/DialogHistory.vue";
|
||||
|
||||
import DialogDevelop from "@/modules/10_registry/Dialog/DialogDevelopmant.vue";
|
||||
|
||||
const typeIDP = ref<string>("");
|
||||
|
|
|
|||
|
|
@ -254,7 +254,6 @@ watch(
|
|||
}
|
||||
);
|
||||
|
||||
const customPosition = () => ({ top: "385px", left: "410px" });
|
||||
async function getDataByYear() {
|
||||
if (formData.year) {
|
||||
showLoader();
|
||||
|
|
@ -409,7 +408,6 @@ function filterOptionFn(val: string, update: Function) {
|
|||
autoApply
|
||||
position="center"
|
||||
year-picker
|
||||
:alt-position="customPosition"
|
||||
:enableTimePicker="false"
|
||||
@update:model-value="getDataByYear(), (projectName = '')"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,7 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
const $q = useQuasar();
|
||||
const mixin = useCounterMixin();
|
||||
const { messageError } = mixin;
|
||||
|
||||
export const useRegistryDataStore = defineStore("RegistryDataStoreMain", () => {
|
||||
async function getPathUploadFlie(
|
||||
|
|
@ -27,7 +21,7 @@ export const useRegistryDataStore = defineStore("RegistryDataStoreMain", () => {
|
|||
);
|
||||
return res.data;
|
||||
} catch (err) {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import { useCounterMixin } from "@/stores/mixin";
|
|||
|
||||
import type { DataOption } from "@/modules/10_registry/interface/index/Main";
|
||||
|
||||
const $q = useQuasar();
|
||||
const mixin = useCounterMixin();
|
||||
const {} = mixin;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const router = useRouter();
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry')"
|
||||
/>
|
||||
<div>ข้อมูลส่วนตัว</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const router = useRouter();
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry')"
|
||||
/>
|
||||
<div>ข้อมูลราชการ</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ const router = useRouter();
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry')"
|
||||
/>
|
||||
<div>ข้อมูลเงินเดือน/ค่าจ้าง</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ const router = useRouter();
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry')"
|
||||
/>
|
||||
<div>ข้อมูลผลงานและเครื่องราชฯ</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ const router = useRouter();
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry')"
|
||||
/>
|
||||
<div>เอกสารหลักฐานและอื่นๆ</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ onMounted(async () => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/registry/request-edit')"
|
||||
/>
|
||||
รายละเอียดคำร้องขอแก้ไขทะเบียนประวัติ
|
||||
</div>
|
||||
|
|
@ -159,7 +159,6 @@ onMounted(async () => {
|
|||
<!-- วันที่ยื่นขอ -->
|
||||
<div class="col-md-2 col-xs-12">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="dataRequest.createdAt"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -313,10 +312,13 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 q-mt-sm">
|
||||
<Workflow
|
||||
v-if="dataStore.officerType === 'OFFICER'"
|
||||
ref="workflowRef"
|
||||
:id="requestId"
|
||||
sys-name="REGISTRY_PROFILE"
|
||||
:sys-name="
|
||||
dataStore.officerType === 'OFFICER'
|
||||
? 'REGISTRY_PROFILE'
|
||||
: 'REGISTRY_PROFILE_EMP'
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1036,6 +1036,7 @@ onMounted(async () => {
|
|||
<div>แบบมอบหมายงานฯ</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<q-form
|
||||
greedy
|
||||
@submit.prevent
|
||||
|
|
@ -1164,7 +1165,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_start"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1200,7 +1200,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_finish"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2338,7 +2337,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date1"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2441,7 +2439,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date2"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2532,7 +2529,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date3"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2644,7 +2640,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date4"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -340,7 +340,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_start"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -382,7 +381,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_finish"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -554,7 +552,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="chairman_dated"
|
||||
:locale="'th'"
|
||||
:readonly="!status"
|
||||
|
|
@ -613,7 +610,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="director1_dated"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -672,7 +668,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="director2_dated"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -550,7 +550,6 @@ onMounted(() => {
|
|||
<div class="column q-gutter-y-sm">
|
||||
<div class="text-dark text-weight-bold">วัน เดือน ปี ที่ประเมิน</div>
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="evaluate_date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -412,7 +412,6 @@ onMounted(async () => {
|
|||
<div class="row q-col-gutter-sm">
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="start_date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -450,7 +449,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_finish"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -2190,7 +2188,6 @@ onMounted(async () => {
|
|||
/>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="dateAutherise"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -429,7 +429,6 @@ onMounted(async () => {
|
|||
<div class="col-12 text-top0 row items-top q-col-gutter-sm">
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="start_date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -470,7 +469,6 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12 col-sm-6">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_finish"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1691,7 +1689,6 @@ onMounted(async () => {
|
|||
/>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="dateAutherise"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -2313,7 +2313,6 @@ onMounted(async () => {
|
|||
/>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="dateAutherise"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ onMounted(async () => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/')"
|
||||
/>
|
||||
<div>แผนผังองค์กร</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ onMounted(() => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/portfolio')"
|
||||
/>
|
||||
<div v-if="routeName == 'addTransfer'">เพิ่มเอกสาร/ผลงาน</div>
|
||||
<div v-else>รายละเอียดเอกสาร/ผลงาน</div>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ import { reactive, ref, computed, onMounted } from "vue";
|
|||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useQuasar } from "quasar";
|
||||
import axios from "axios";
|
||||
import { useDataStore } from "@/stores/data";
|
||||
|
||||
import Workflow from "@/components/Workflow/Main.vue";
|
||||
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
|
|
@ -16,12 +19,16 @@ import type {
|
|||
const $q = useQuasar();
|
||||
const { dialogConfirm, showLoader, hideLoader, messageError, success } =
|
||||
useCounterMixin();
|
||||
const dataStore = useDataStore();
|
||||
|
||||
const idRow = ref<string>("");
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const isReadOnly = ref<boolean>(false);
|
||||
const isEdit = ref<boolean>(false); // เก็บ เช็ค รายละเอียด/แก้ไข
|
||||
const requestId = ref<string>(
|
||||
route.params.id ? route.params.id.toString() : ""
|
||||
);
|
||||
|
||||
const formData = reactive<FormDataIDP>({
|
||||
topic: "",
|
||||
|
|
@ -321,7 +328,7 @@ onMounted(() => {
|
|||
flat
|
||||
color="primary"
|
||||
class="q-mr-sm"
|
||||
@click="router.go(-1)"
|
||||
@click="router.push('/IDP')"
|
||||
/>
|
||||
{{
|
||||
isEdit
|
||||
|
|
@ -538,6 +545,15 @@ onMounted(() => {
|
|||
><q-tooltip>บันทึก</q-tooltip></q-btn
|
||||
>
|
||||
</q-card-actions>
|
||||
|
||||
<div class="col-12 q-mt-sm">
|
||||
<Workflow
|
||||
v-if="dataStore.officerType === 'OFFICER' && requestId"
|
||||
ref="workflowRef"
|
||||
:id="requestId"
|
||||
sys-name="REGISTRY_IDP"
|
||||
/>
|
||||
</div>
|
||||
</q-form>
|
||||
</q-card>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -470,7 +470,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.evaluate_date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -1216,7 +1216,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_start"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
@ -1256,7 +1255,6 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="date_finish"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
const ACCESS_TOKEN = "BMAHRISUSER_KEYCLOAK_IDENTITY";
|
||||
const key_C_Config = {
|
||||
url_Logout: import.meta.env.VITE_URL_SSO,
|
||||
landing_PageUrl: import.meta.env.VITE_URL_LANDING,
|
||||
};
|
||||
interface AuthResponse {
|
||||
access_token: string;
|
||||
|
|
@ -10,22 +11,32 @@ interface AuthResponse {
|
|||
|
||||
const authenticated = async () => ((await getToken()) ? true : false);
|
||||
|
||||
async function setAuthen(r: AuthResponse, val: string) {
|
||||
await setCookie(ACCESS_TOKEN, r.access_token, r.expires_in);
|
||||
setCookie("SSO", val, r.expires_in);
|
||||
window.location.href = "/";
|
||||
async function setAuthen(r: AuthResponse, val: string, url?: string) {
|
||||
if (r && r.access_token) {
|
||||
await setCookie(ACCESS_TOKEN, r.access_token, r.expires_in);
|
||||
setCookie("SSO", val, r.expires_in);
|
||||
window.location.href = url ? encodeURI(url) : "/";
|
||||
}
|
||||
}
|
||||
|
||||
async function logout() {
|
||||
await deleteCookie(ACCESS_TOKEN);
|
||||
window.location.href = key_C_Config.url_Logout;
|
||||
async function logout(force: boolean = false) {
|
||||
if (!force) {
|
||||
await deleteCookie(ACCESS_TOKEN);
|
||||
window.location.href = key_C_Config.url_Logout;
|
||||
} else {
|
||||
const currentUrl = window.location.href;
|
||||
const loginUrl = `${
|
||||
key_C_Config.landing_PageUrl
|
||||
}?system=user&redirectUrl=${encodeURIComponent(currentUrl)}`;
|
||||
window.location.href = loginUrl;
|
||||
}
|
||||
}
|
||||
|
||||
async function getToken() {
|
||||
return getCookie(ACCESS_TOKEN);
|
||||
}
|
||||
// 2024-08-29T02:55:13.000Z
|
||||
function setCookie(name: string, value: any, time: number) {
|
||||
async function setCookie(name: string, value: any, time: number) {
|
||||
let expires = "";
|
||||
if (time) {
|
||||
const date = new Date();
|
||||
|
|
@ -47,7 +58,7 @@ function getCookie(name: string) {
|
|||
return null;
|
||||
}
|
||||
|
||||
function deleteCookie(name: string) {
|
||||
async function deleteCookie(name: string) {
|
||||
document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
||||
}
|
||||
|
||||
|
|
@ -71,4 +82,23 @@ async function tokenParsed() {
|
|||
return JSON.parse(jsonPayload);
|
||||
}
|
||||
|
||||
export { getToken, authenticated, logout, setAuthen, tokenParsed, getCookie };
|
||||
async function redirectToLandingPage() {
|
||||
await deleteCookie(ACCESS_TOKEN);
|
||||
window.location.href = key_C_Config.landing_PageUrl;
|
||||
}
|
||||
|
||||
async function logoutSSO() {
|
||||
await deleteCookie(ACCESS_TOKEN);
|
||||
window.location.href = key_C_Config.landing_PageUrl + `/logout`;
|
||||
}
|
||||
|
||||
export {
|
||||
getToken,
|
||||
authenticated,
|
||||
logout,
|
||||
setAuthen,
|
||||
tokenParsed,
|
||||
getCookie,
|
||||
redirectToLandingPage,
|
||||
logoutSSO,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
import axios from "axios";
|
||||
import config from "@/app.config";
|
||||
|
||||
import { useQuasar } from "quasar";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
const $q = useQuasar();
|
||||
|
||||
const mixin = useCounterMixin();
|
||||
const { showLoader, hideLoader, messageError } = mixin;
|
||||
const { showLoader, hideLoader } = mixin;
|
||||
|
||||
async function genReport(data: any, fileName: string, type: string = "docx") {
|
||||
showLoader();
|
||||
|
|
@ -49,7 +46,7 @@ async function genReport(data: any, fileName: string, type: string = "docx") {
|
|||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ http.interceptors.response.use(
|
|||
if (typeof error !== undefined) {
|
||||
// eslint-disable-next-line no-prototype-builtins
|
||||
if (error.hasOwnProperty("response")) {
|
||||
console.log("error.response.status", error.response.status);
|
||||
|
||||
if (error.response.status === 403) {
|
||||
window.location.href = "/error";
|
||||
// Store.commit("SET_ERROR_MESSAGE", error.response.data.message);
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ router.beforeEach(async (to, from, next) => {
|
|||
if (to.meta.Auth) {
|
||||
const checkAuthen = await authenticated();
|
||||
if (!checkAuthen && to.meta.Auth) {
|
||||
logout();
|
||||
logout(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
next();
|
||||
|
|
|
|||
|
|
@ -132,3 +132,6 @@ input.input-alert
|
|||
|
||||
.filter-card
|
||||
background-color: #f1f1f1b0
|
||||
|
||||
.modalfix
|
||||
position: fixed !important
|
||||
|
|
|
|||
|
|
@ -7,7 +7,13 @@ import { useQuasar } from "quasar";
|
|||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import CustomComponent from "@/components/CustomDialog.vue";
|
||||
import avatar from "@/assets/avatar_user.jpg";
|
||||
import { tokenParsed, logout, getCookie } from "@/plugins/auth";
|
||||
import {
|
||||
tokenParsed,
|
||||
logout,
|
||||
getCookie,
|
||||
redirectToLandingPage,
|
||||
logoutSSO,
|
||||
} from "@/plugins/auth";
|
||||
|
||||
import { useDataStore } from "@/stores/data";
|
||||
|
||||
|
|
@ -154,7 +160,7 @@ const doLogout = () => {
|
|||
async () => {
|
||||
await http.post(config.API.keycloakLogSSO, { text: "ออกจากระบบ" });
|
||||
// authen with client
|
||||
await logout();
|
||||
await logoutSSO();
|
||||
},
|
||||
"ยืนยันการออกจากระบบ",
|
||||
"ต้องการออกจากระบบใช่หรือไม่"
|
||||
|
|
@ -502,7 +508,7 @@ function onViewDetailNoti(url: string) {
|
|||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
:href="landingPageUrl"
|
||||
@click="redirectToLandingPage"
|
||||
v-if="isSsoToken"
|
||||
>
|
||||
<q-item-section avatar style="min-width: 30px">
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@ onMounted(async () => {
|
|||
expires_in: route.query.expires ? route.query.expires : 36000,
|
||||
refresh_token: route.query.accessToken,
|
||||
};
|
||||
setAuthen(params, "y");
|
||||
setAuthen(
|
||||
params,
|
||||
"y",
|
||||
route.query.redirectUrl ? (route.query.redirectUrl as string) : "/"
|
||||
);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue