Merge branch 'develop' into devTee
This commit is contained in:
commit
cdceac58f2
57 changed files with 858 additions and 366 deletions
|
|
@ -69,4 +69,7 @@ export default {
|
|||
kpiLink,
|
||||
|
||||
profilePosition: () => `${env.API_URI}/org/profile/keycloak/position`,
|
||||
|
||||
/** Report*/
|
||||
kpiReport: () => `${KPI}/report/announcement`,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 1,
|
||||
icon: "mdi-home-variant-outline",
|
||||
activeIcon: "mdi-home-variant",
|
||||
label: "หน้าแรก",
|
||||
path: "dashboard",
|
||||
role: "dashboard",
|
||||
|
|
@ -54,7 +53,6 @@ const menuList = readonly<any[]>([
|
|||
// {
|
||||
// key: 2,
|
||||
// icon: "o_person",
|
||||
// activeIcon: "person",
|
||||
// label: "ข้อมูลหลัก",
|
||||
// path: "metadataNew",
|
||||
// role: "metadata",
|
||||
|
|
@ -89,7 +87,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 2,
|
||||
icon: "o_person",
|
||||
activeIcon: "person",
|
||||
label: "ข้อมูลการประเมิน",
|
||||
path: "metadataNew",
|
||||
role: "evaluateKPI",
|
||||
|
|
@ -133,7 +130,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 3,
|
||||
icon: "o_groups",
|
||||
activeIcon: "groups",
|
||||
label: "โครงสร้างอัตรากำลัง",
|
||||
path: "organizationalNew",
|
||||
role: "organization",
|
||||
|
|
@ -159,18 +155,9 @@ const menuList = readonly<any[]>([
|
|||
path: "registry-employee",
|
||||
role: "registryEmployee",
|
||||
},
|
||||
{
|
||||
key: 4,
|
||||
icon: "verified",
|
||||
activeIcon: "verified",
|
||||
label: "รายการรอตรวจสอบ",
|
||||
path: "verified",
|
||||
role: "registryverify",
|
||||
},
|
||||
{
|
||||
key: 6,
|
||||
icon: "mdi-file-certificate-outline",
|
||||
activeIcon: "order",
|
||||
label: "ออกคำสั่ง",
|
||||
path: "order",
|
||||
role: "order",
|
||||
|
|
@ -178,7 +165,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 7,
|
||||
icon: "o_search",
|
||||
activeIcon: "search",
|
||||
label: "สรรหา",
|
||||
path: "recruiting",
|
||||
role: "recruit",
|
||||
|
|
@ -246,7 +232,6 @@ const menuList = readonly<any[]>([
|
|||
key: 8,
|
||||
path: "placement",
|
||||
icon: "how_to_reg",
|
||||
activeIcon: "how_to_reg",
|
||||
label: "บรรจุ แต่งตั้ง ย้าย โอน",
|
||||
role: "placement",
|
||||
children: [
|
||||
|
|
@ -305,7 +290,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 81,
|
||||
icon: "badge",
|
||||
activeIcon: "badge",
|
||||
label: "ทดลองปฏิบัติหน้าที่ราชการ",
|
||||
path: "probation",
|
||||
role: "probation",
|
||||
|
|
@ -313,7 +297,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 9,
|
||||
icon: "mdi-account-cancel-outline",
|
||||
activeIcon: "mdi-account-cancel",
|
||||
label: "พ้นจากราชการ",
|
||||
path: "retirement",
|
||||
role: "retirement",
|
||||
|
|
@ -348,7 +331,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 10,
|
||||
icon: "mdi-medal-outline",
|
||||
activeIcon: "mdi-medal",
|
||||
label: "เครื่องราชฯ",
|
||||
path: "insignia",
|
||||
role: "insignia",
|
||||
|
|
@ -388,39 +370,38 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 11,
|
||||
icon: "mdi-calendar",
|
||||
activeIcon: "mdi-calendar",
|
||||
label: "การลา",
|
||||
path: "leave",
|
||||
role: "leave",
|
||||
children: [
|
||||
{
|
||||
label: "รอบการปฏิบัติงาน",
|
||||
path: "/round-time",
|
||||
path: "roundTime",
|
||||
role: "leave",
|
||||
},
|
||||
{
|
||||
label: "แก้ไขรอบการปฎิบัติงานผู้ใช้งาน",
|
||||
path: "/change-round",
|
||||
path: "changeRound",
|
||||
role: "leave",
|
||||
},
|
||||
{
|
||||
label: "รายการลงเวลาปฏิบัติงาน",
|
||||
path: "/work-list",
|
||||
path: "workList",
|
||||
role: "leave",
|
||||
},
|
||||
{
|
||||
label: "ลงเวลากรณีพิเศษ",
|
||||
path: "/timestamp-special",
|
||||
path: "timestampSpecial",
|
||||
role: "leave",
|
||||
},
|
||||
{
|
||||
label: "รายการลา",
|
||||
path: "/leave",
|
||||
path: "leave",
|
||||
role: "leave",
|
||||
},
|
||||
{
|
||||
label: "รายงานสถิติการลา",
|
||||
path: "/leave-report",
|
||||
path: "leaveReport",
|
||||
role: "leave",
|
||||
},
|
||||
],
|
||||
|
|
@ -428,7 +409,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 12,
|
||||
icon: "mdi-scale-balance",
|
||||
activeIcon: "mdi-scale-balance",
|
||||
label: "วินัย",
|
||||
role: "discipline",
|
||||
children: [
|
||||
|
|
@ -497,7 +477,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 13,
|
||||
icon: "mdi-account-check",
|
||||
activeIcon: "mdi-account-check",
|
||||
label: "ประเมินบุคคล",
|
||||
role: "evaluate",
|
||||
children: [
|
||||
|
|
@ -530,12 +509,11 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 14,
|
||||
icon: "mdi-cash",
|
||||
activeIcon: "mdi-cash",
|
||||
label: "เงินเดือน/ค่าจ้าง",
|
||||
role: "salary",
|
||||
children: [
|
||||
{
|
||||
label: "ผังบัญชีเงินเดือนข้าราชการ ฯ",
|
||||
label: "ผังบัญชีเงินเดือนข้าราชการฯ",
|
||||
path: "salaryChart",
|
||||
role: "salary",
|
||||
},
|
||||
|
|
@ -550,7 +528,7 @@ const menuList = readonly<any[]>([
|
|||
role: "salary",
|
||||
},
|
||||
{
|
||||
label: "เลื่อนเงินเดือนข้าราชการ ฯ",
|
||||
label: "เลื่อนเงินเดือนข้าราชการฯ",
|
||||
path: "salaryLists",
|
||||
role: "salary",
|
||||
},
|
||||
|
|
@ -569,7 +547,6 @@ const menuList = readonly<any[]>([
|
|||
{
|
||||
key: 15,
|
||||
icon: "mdi-account-star",
|
||||
activeIcon: "mdi-account-star",
|
||||
label: "ประเมินผลการปฏิบัติราชการระดับบุคคล",
|
||||
role: "evaluateKPI",
|
||||
children: [
|
||||
|
|
@ -623,7 +600,7 @@ const menuList = readonly<any[]>([
|
|||
icon: "o_note",
|
||||
label: "ระบบเดิม",
|
||||
path: "registry",
|
||||
role: "registry",
|
||||
role: "organization",
|
||||
children: [
|
||||
{
|
||||
key: 13.0,
|
||||
|
|
@ -685,6 +662,20 @@ const menuList = readonly<any[]>([
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 4,
|
||||
icon: "o_contact_page",
|
||||
label: "ทะเบียนประวัติ",
|
||||
path: "registry",
|
||||
role: "registry",
|
||||
},
|
||||
{
|
||||
key: 4,
|
||||
icon: "verified",
|
||||
label: "รายการรอตรวจสอบ",
|
||||
path: "verified",
|
||||
role: "registryverify",
|
||||
},
|
||||
]);
|
||||
|
||||
const tabList = readonly<tabType[]>([
|
||||
|
|
|
|||
|
|
@ -158,8 +158,8 @@ const clickAccount1 = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -185,8 +185,8 @@ const clickAccount2 = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -211,8 +211,8 @@ const clickAccount3 = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -85,15 +85,12 @@ async function fetchOrganizationActive() {
|
|||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/** function เรียกข้อมูลประวัติโครงสร้าง*/
|
||||
async function fetchHistory() {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.organizationHistoryNew)
|
||||
.then((res) => {
|
||||
|
|
@ -109,9 +106,6 @@ async function fetchHistory() {
|
|||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -502,8 +502,8 @@ const downloadFile = async () => {
|
|||
const data = res.data;
|
||||
downloadFilePDF(data, `Candidate__${dateToISO(new Date())}.xlsx`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -520,8 +520,8 @@ const downloadFileDetail = async () => {
|
|||
const data = res.data;
|
||||
downloadFilePDF(data, `Candidate_Detail_${dateToISO(new Date())}.xlsx`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -638,8 +638,8 @@ const downloadFileDashboard = async () => {
|
|||
`Candidate_Dashboard_${dateToISO(new Date())}.xlsx`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -386,8 +386,8 @@ const downloadExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -407,8 +407,8 @@ const downloadPassExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -428,8 +428,8 @@ const downloadPassResultExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@
|
|||
<div class="col-xs-2 col-sm-2 q-pr-xs text-grey-7">คะแนน</div>
|
||||
|
||||
<div class="col-xs-4 col-sm-5 text-weight-bold q-pt-sm">
|
||||
ผลการสอบx
|
||||
ผลการสอบ
|
||||
</div>
|
||||
<div
|
||||
class="col-xs-8 col-sm-6 q-pr-xs text-weight-bold text-subtitle1"
|
||||
|
|
@ -336,8 +336,8 @@ const downloadScore = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -358,8 +358,8 @@ const downloadCertificate = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -344,8 +344,8 @@ const downloadExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -365,8 +365,8 @@ const downloadPassExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -386,8 +386,8 @@ const downloadPassResultExam = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -339,8 +339,8 @@ const downloadScore = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -363,8 +363,8 @@ const downloadCertificate = async () => {
|
|||
// start download
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
<q-card-section class="q-pa-md">
|
||||
<div class="col-xs-12 col-sm-8"></div>
|
||||
<div class="col-12 row items-center q-col-gutter-x-sm">
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<q-input
|
||||
outlined
|
||||
v-model="name"
|
||||
|
|
@ -61,7 +61,6 @@
|
|||
<template #trigger>
|
||||
<q-input
|
||||
dense
|
||||
|
||||
outlined
|
||||
:model-value="yearly + 543"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกปีงบประมาณ'}`]"
|
||||
|
|
@ -79,7 +78,7 @@
|
|||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-4 col-md-2" v-if="announcementExam">
|
||||
<div class="col-xs-12 col-sm-4 col-md-1" v-if="announcementExam">
|
||||
<q-input
|
||||
outlined
|
||||
v-model="fee"
|
||||
|
|
@ -113,7 +112,6 @@
|
|||
<q-input
|
||||
outlined
|
||||
dense
|
||||
class="full-width datepicker q-mb-md"
|
||||
:model-value="dateExam != null ? date2Thai(dateExam) : null"
|
||||
:label="`${'วันที่สอบ'}`"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่สอบ'}`]"
|
||||
|
|
@ -206,7 +204,10 @@
|
|||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-3 col-md-3" v-if="announcementExam">
|
||||
<div
|
||||
class="col-xs-12 col-sm-3 col-md-3"
|
||||
v-if="announcementExam && fee != 0"
|
||||
>
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="datePayment"
|
||||
|
|
@ -228,7 +229,9 @@
|
|||
outlined
|
||||
dense
|
||||
class="full-width datepicker q-mb-md"
|
||||
:model-value="dateThaiRange(datePayment)"
|
||||
:model-value="
|
||||
datePayment != null ? dateThaiRange(datePayment) : null
|
||||
"
|
||||
:label="`${'วันที่ชำระเงิน'}`"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่ชำระเงิน'}`]"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -378,12 +378,12 @@
|
|||
lazy-rules
|
||||
v-model="props.row.code"
|
||||
:rules="[
|
||||
(val) =>
|
||||
val.length >= 3 ||
|
||||
`${'กรุณากรอกรหัสประจำตำแหน่งที่สอบ'}`,
|
||||
(val:string) => !!val || `${'กรุณากรอกรหัสประจำตำแหน่งที่สอบ'}`,
|
||||
(val:any) =>
|
||||
val.length >= 3 ||
|
||||
`${'กรุณากรอกรหัสประจำตำแหน่งที่สอบ'}`,
|
||||
]"
|
||||
:label="`${'รหัสประจำตำแหน่งที่สอบ'}`"
|
||||
@update:modelValue="clickEditRow"
|
||||
hide-bottom-space
|
||||
mask="###"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -176,6 +176,10 @@ export const useSalaryDataStore = defineStore("salary", () => {
|
|||
id: 18,
|
||||
name: "ปรับอัตราเงินเดือนตามพระราชกฤษฎีกาการปรับอัตราเงินเดือนของข้าราชการ พ.ศ. (.............)",
|
||||
},
|
||||
{
|
||||
id: 19,
|
||||
name: "เลื่อนเงินเดือนและให้ได้รับเงินเดือนสูงกว่าขั้นสูงของตำแหน่งที่ได้รับแต่งตั้ง คำสั่ง{หน่วยงาน} ลงวันที่ {เลขที่}/{ปี พ.ศ.}",
|
||||
},
|
||||
]);
|
||||
|
||||
const optiontype = ref<any>([
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ watch(
|
|||
bg-color="white"
|
||||
outlined
|
||||
v-model="formData.position"
|
||||
label="ตำแหน่ง"
|
||||
label="ตำแหน่งในสายงาน"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
|
|
@ -339,7 +339,7 @@ watch(
|
|||
<q-select
|
||||
bg-color="white"
|
||||
v-model="formData.posTypeId"
|
||||
label="ประเภทตำแหน่ง"
|
||||
label="ตำแหน่งประเภท"
|
||||
outlined
|
||||
:options="store.posTypeOps"
|
||||
dense
|
||||
|
|
@ -349,13 +349,13 @@ watch(
|
|||
option-label="name"
|
||||
option-value="id"
|
||||
hide-bottom-space
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกประเภทตำแหน่ง']"
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกตำแหน่งประเภท']"
|
||||
@update:model-value="fetchLevel"
|
||||
/>
|
||||
<q-select
|
||||
bg-color="white"
|
||||
v-model="formData.posLevelId"
|
||||
label="ระดับตำแหน่ง"
|
||||
label="ระดับ"
|
||||
:options="levelOps"
|
||||
outlined
|
||||
dense
|
||||
|
|
@ -365,7 +365,7 @@ watch(
|
|||
option-value="id"
|
||||
options-cover
|
||||
hide-bottom-space
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกระดับตำแหน่ง']"
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกระดับ']"
|
||||
/>
|
||||
</q-card-section>
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "position",
|
||||
align: "left",
|
||||
label: "ตำแหน่ง",
|
||||
label: "ตำแหน่งในสายงาน",
|
||||
sortable: true,
|
||||
field: "position",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
@ -75,7 +75,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "posPath",
|
||||
align: "left",
|
||||
label: "ประเภทตำแหน่ง",
|
||||
label: "ตำแหน่งประเภท",
|
||||
sortable: true,
|
||||
field: "posType",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
@ -86,7 +86,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "posLevel",
|
||||
align: "left",
|
||||
label: "ระดับตำแหน่ง",
|
||||
label: "ระดับ",
|
||||
sortable: true,
|
||||
field: "posLevel",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
@ -295,6 +295,11 @@ watch(
|
|||
<span class="text-weight-medium" v-else-if="col.name === 'posPath'">{{
|
||||
empType === "officer" ? col.label : "กลุ่มงาน"
|
||||
}}</span>
|
||||
<span
|
||||
class="text-weight-medium"
|
||||
v-else-if="col.name === 'position'"
|
||||
>{{ empType === "officer" ? col.label : "ตำแหน่ง" }}</span
|
||||
>
|
||||
|
||||
<span class="text-weight-medium" v-else>{{ col.label }}</span>
|
||||
</q-th>
|
||||
|
|
@ -375,7 +380,9 @@ watch(
|
|||
|
||||
<q-item dense>
|
||||
<q-item-section>
|
||||
<q-item-label caption>ตำแหน่ง</q-item-label>
|
||||
<q-item-label caption>{{
|
||||
empType === "officer" ? `ตำแหน่งในสายงาน` : `ตำแหน่ง`
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
<q-item-label caption class="text-black">
|
||||
|
|
@ -390,7 +397,7 @@ watch(
|
|||
<q-item-section>
|
||||
<q-item-label caption>
|
||||
{{
|
||||
empType === "officer" ? "ประเภทตำแหน่ง" : "กลุ่มงาน"
|
||||
empType === "officer" ? "ตำแหน่งประเภท" : "กลุ่มงาน"
|
||||
}}</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
|
|
@ -407,7 +414,7 @@ watch(
|
|||
<q-item-section>
|
||||
<q-item-label caption>
|
||||
{{
|
||||
empType === "officer" ? "ระดับตำแหน่ง" : "ระดับชั้นงาน"
|
||||
empType === "officer" ? "ระดับ" : "ระดับชั้นงาน"
|
||||
}}</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
|
|
|
|||
|
|
@ -466,7 +466,7 @@ onMounted(() => {
|
|||
</div>
|
||||
<div class="row items-center">
|
||||
<div class="col-12 col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
<div>ตำแหน่ง</div>
|
||||
<div>{{ empType === "" ? `ตำแหน่งในสายงาน` : `ตำแหน่ง` }}</div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-12 col-md-7">{{ formMain.positionId }}</div>
|
||||
</div>
|
||||
|
|
@ -504,7 +504,7 @@ onMounted(() => {
|
|||
</div>
|
||||
<div class="row items-center">
|
||||
<div class="col-12 col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
<div>{{ empType === "" ? "ประเภทตำแหน่ง" : "กลุ่มงาน" }}</div>
|
||||
<div>{{ empType === "" ? "ตำแหน่งประเภท" : "กลุ่มงาน" }}</div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMain.positionType }}
|
||||
|
|
@ -512,7 +512,7 @@ onMounted(() => {
|
|||
</div>
|
||||
<div class="row items-center">
|
||||
<div class="col-12 col-sm-12 col-md-5 text-grey-6 text-weight-medium">
|
||||
<div>{{ empType === "" ? "ระดับตำแหน่ง" : "ระดับชั้นงาน" }}</div>
|
||||
<div>{{ empType === "" ? "ระดับ" : "ระดับชั้นงาน" }}</div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-12 col-md-7">
|
||||
{{ formMain.positionLevel }}
|
||||
|
|
|
|||
|
|
@ -443,9 +443,9 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{
|
||||
`${informaData.rank ? informaData.rank : informaData.prefix} ${
|
||||
informaData.firstName
|
||||
} ${informaData.lastName}`
|
||||
`${
|
||||
informaData.rank ? informaData.rank : informaData.prefix ?? ""
|
||||
} ${informaData.firstName} ${informaData.lastName}`
|
||||
}}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
|
|
|
|||
|
|
@ -65,13 +65,13 @@ const adsName = reactive({
|
|||
const dataLabel = {
|
||||
registrationAddress: "ที่อยู่ตามทะเบียนบ้าน",
|
||||
registrationProvince: "จังหวัด",
|
||||
registrationDistrict: "เขต / อำเภอ",
|
||||
registrationDistrict: "เขต/อำเภอ",
|
||||
registrationSubDistrict: "แขวง / ตำบล",
|
||||
registrationZipCode: "รหัสไปรษณีย์",
|
||||
|
||||
currentAddress: "ที่อยู่ปัจจุบัน",
|
||||
currentProvince: "จังหวัด",
|
||||
currentDistrict: "เขต / อำเภอ",
|
||||
currentDistrict: "เขต/อำเภอ",
|
||||
currentSubDistrict: "แขวง / ตำบล",
|
||||
currentZipCode: "รหัสไปรษณีย์",
|
||||
|
||||
|
|
@ -81,7 +81,6 @@ const dataLabel = {
|
|||
const visibleColumnsHistory = ref<String[]>([
|
||||
"currentAddress",
|
||||
"currentDistrict",
|
||||
"currentProvince",
|
||||
"currentSubDistrict",
|
||||
"currentZipCode",
|
||||
"registrationAddress",
|
||||
|
|
@ -481,6 +480,7 @@ onMounted(async () => {
|
|||
await fetchAll();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="row q-gutter-sm items-center">
|
||||
<div class="toptitle col text-right q-gutter-x-sm">
|
||||
|
|
@ -507,75 +507,109 @@ onMounted(async () => {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<q-card bordered class="my-card bg-grey-1 q-pa-md">
|
||||
<div :class="$q.screen.gt.xs ? 'row' : 'column'">
|
||||
<!-- column 1 -->
|
||||
<div class="col-md-6 col-12 row">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
<div
|
||||
v-for="label in Object.keys(dataLabel).slice(0, 5)"
|
||||
class="q-py-xs"
|
||||
>
|
||||
{{ dataLabel[label as keyof typeof dataLabel] }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- data -->
|
||||
<div class="col-6">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.registrationAddress || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisP || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisD || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisSD || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.registrationZipCode || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-12">
|
||||
<q-card bordered class="bg-grey-1 q-ma-sm">
|
||||
<q-card-section>
|
||||
<div class="text-bold">ที่อยู่ตามทะเบียนบ้าน</div>
|
||||
</q-card-section>
|
||||
<q-separator />
|
||||
<q-card-section>
|
||||
<div :class="$q.screen.gt.xs ? '' : 'column'">
|
||||
<!-- column 1 -->
|
||||
<div class="col-md-6 col-12 row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">ที่อยู่</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.registrationAddress || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- column 2 -->
|
||||
<!-- <div
|
||||
class="text-grey-6 text-weight-medium"
|
||||
v-if="addressData.same === '1'"
|
||||
>
|
||||
ที่อยู่ปัจจุบันตรงกับที่อยู่ตามทะเบียนบ้าน
|
||||
</div> -->
|
||||
<div class="col-md-6 col-12 row">
|
||||
<div class="col-6 text-grey-6 text-weight-medium">
|
||||
<div
|
||||
v-for="label in Object.keys(dataLabel).slice(5, 10)"
|
||||
class="q-py-xs"
|
||||
>
|
||||
{{ dataLabel[label as keyof typeof dataLabel] }}
|
||||
<div class="col-5 text-grey-6 text-weight-medium">แขวง/ตำบล</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisSD || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">เขต/อำเภอ</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisD || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">จังหวัด</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.regisP || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
รหัสไปรษณีย์
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.registrationZipCode || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- data -->
|
||||
<div class="col-6">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.currentAddress || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentP || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentD || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentSD || "-" }}
|
||||
</div>
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.currentZipCode || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
</q-card>
|
||||
<div class="col-md-6 col-12">
|
||||
<q-card bordered class="bg-grey-1 q-ma-sm">
|
||||
<q-card-section>
|
||||
<div class="text-bold">ที่อยู่ปัจจุบัน</div>
|
||||
</q-card-section>
|
||||
<q-separator />
|
||||
<q-card-section>
|
||||
<div :class="$q.screen.gt.xs ? '' : 'column'">
|
||||
<div class="col-md-6 col-12 row">
|
||||
<div class="col-5 text-grey-6 text-weight-medium">ที่อยู่</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.currentAddress || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">แขวง/ตำบล</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentSD || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">เขต/อำเภอ</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentD || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">จังหวัด</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ adsName.currentP || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-5 text-grey-6 text-weight-medium">
|
||||
รหัสไปรษณีย์
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="q-py-xs">
|
||||
{{ addressData.currentZipCode || "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Edit Dialog -->
|
||||
<q-dialog v-model="modal" persistent>
|
||||
|
|
|
|||
|
|
@ -216,7 +216,8 @@ async function addData() {
|
|||
const method = rows.value === null ? "post" : "patch";
|
||||
|
||||
await http[method](url, {
|
||||
profileId: rows.value === null && empType.value === "" ? id.value : undefined,
|
||||
profileId:
|
||||
rows.value === null && empType.value === "" ? id.value : undefined,
|
||||
profileEmployeeId: empType.value !== "" ? id.value : undefined,
|
||||
motherLive: motherIsHaveInfo.value ? motherIsLive.value : null,
|
||||
motherCitizenId: motherIsHaveInfo.value ? motherDataEdit.citizenId : null,
|
||||
|
|
@ -353,7 +354,7 @@ onMounted(async () => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ fatherData.citizenId ? fatherData.citizenId : "-" }}
|
||||
|
|
@ -397,7 +398,7 @@ onMounted(async () => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ motherData.citizenId ? motherData.citizenId : "-" }}
|
||||
|
|
@ -441,7 +442,7 @@ onMounted(async () => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ spouseData.citizenId ? spouseData.citizenId : "-" }}
|
||||
|
|
@ -493,7 +494,7 @@ onMounted(async () => {
|
|||
<div class="col-12 q-pa-md q-col-gutter-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
{{ children.childrenCitizenId }}
|
||||
|
|
@ -1156,7 +1157,7 @@ onMounted(async () => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ historyRows[index - 1].fatherCitizenId }}
|
||||
|
|
@ -1200,7 +1201,7 @@ onMounted(async () => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ historyRows[index - 1].motherCitizenId }}
|
||||
|
|
@ -1251,7 +1252,7 @@ onMounted(async () => {
|
|||
>
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ historyRows[index - 1].coupleCitizenId }}
|
||||
|
|
@ -1309,7 +1310,7 @@ onMounted(async () => {
|
|||
<div class="col-12 q-pa-md q-col-gutter-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
{{ children.childrenCitizenId }}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "citizenId",
|
||||
align: "left",
|
||||
label: "เลขประจำตัวประชาชนตัวประชาชน",
|
||||
label: "เลขประจำตัวประชาชน",
|
||||
sortable: true,
|
||||
field: "citizenId",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
@ -465,7 +465,7 @@ onMounted(() => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ fatherData.citizenId ? fatherData.citizenId : "-" }}
|
||||
|
|
@ -540,7 +540,7 @@ onMounted(() => {
|
|||
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ motherData.citizenId ? motherData.citizenId : "-" }}
|
||||
|
|
@ -635,7 +635,7 @@ onMounted(() => {
|
|||
</div>
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
{{ coupleData.citizenId ?? "-" }}
|
||||
|
|
@ -738,7 +738,7 @@ onMounted(() => {
|
|||
<div class="col-12 q-pa-md q-col-gutter-md">
|
||||
<div class="row items-center">
|
||||
<div class="col-2 text-grey-6 text-weight-medium">
|
||||
<div>เลขประจำตัวประชาชนตัวประชาชน</div>
|
||||
<div>เลขประจำตัวประชาชน</div>
|
||||
</div>
|
||||
<div class="col-10">
|
||||
{{ item.childrenCitizenId }}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "educationLevel",
|
||||
align: "left",
|
||||
label: "ระดับศึกษา",
|
||||
label: "ระดับการศึกษา",
|
||||
sortable: true,
|
||||
field: "educationLevel",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
@ -202,7 +202,7 @@ const historyColumns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "educationLevel",
|
||||
align: "left",
|
||||
label: "ระดับศึกษา",
|
||||
label: "ระดับการศึกษา",
|
||||
sortable: true,
|
||||
field: "educationLevel",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "positionType",
|
||||
align: "left",
|
||||
label: "ประเภทตำแหน่ง",
|
||||
label: "ตำแหน่งประเภท",
|
||||
sortable: true,
|
||||
field: "positionType",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export const useRegistryNewDataStore = defineStore("registryNew", () => {
|
|||
{ id: "fullName", name: "ชื่อ-นามสกุล" },
|
||||
{ id: "citizenId", name: "เลขประจำตัวประชาชน" },
|
||||
// { id: "posNo", name: "ตำแหน่งเลขที่" },
|
||||
{ id: "position", name: "ตำแหน่งสายงาน" },
|
||||
{ id: "position", name: "ตำแหน่งในสายงาน" },
|
||||
]);
|
||||
const employeeClassOps = ref<DataOption[]>([
|
||||
{ id: "officer", name: "ข้าราชการ กทม.สามัญ" },
|
||||
|
|
|
|||
|
|
@ -132,17 +132,17 @@ export const useAddressDataStore = defineStore("addess", () => {
|
|||
let option: zipCodeOption[] = [];
|
||||
data.subDistricts.map((r: any) => {
|
||||
option.push({
|
||||
id: r.id.toString(),
|
||||
name: r.name.toString(),
|
||||
zipCode: r.zipCode.toString(),
|
||||
id: r.id,
|
||||
name: r.name,
|
||||
zipCode: r.zipCode,
|
||||
});
|
||||
});
|
||||
if (position == "1") {
|
||||
Ops.value.subdistrictOps = option;
|
||||
OpsFilter.value.subdistrictOps = option;
|
||||
Ops.value.subdistrictOps = option;
|
||||
} else {
|
||||
Ops.value.subdistrictCOps = option;
|
||||
OpsFilter.value.subdistrictCOps = option;
|
||||
Ops.value.subdistrictCOps = option;
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
|
|
|
|||
|
|
@ -647,7 +647,7 @@ onMounted(async () => {
|
|||
icon="mdi-file-eye-outline"
|
||||
size="md"
|
||||
>
|
||||
<q-tooltip>ดาวน์ไฟล์</q-tooltip>
|
||||
<q-tooltip>ดาวน์โหลดไฟล์</q-tooltip>
|
||||
<q-menu>
|
||||
<q-list style="min-width: 130px">
|
||||
<q-item clickable v-close-popup @click="onClickDownloadKp7('FULL')">
|
||||
|
|
@ -712,7 +712,7 @@ onMounted(async () => {
|
|||
<div class="col-2">
|
||||
<div class="col-sm-3 col-md-3">
|
||||
<div class="col text-grey-6 text-caption">
|
||||
{{ empType === "" ? "ประเภทตำแหน่ง" : "กลุ่มงาน" }}
|
||||
{{ empType === "" ? "ตำแหน่งประเภท" : "กลุ่มงาน" }}
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ formDetail?.posType?.posTypeName || "-" }}
|
||||
|
|
@ -722,7 +722,7 @@ onMounted(async () => {
|
|||
<div class="col-2">
|
||||
<div class="col-sm-3 col-md-3">
|
||||
<div class="col text-grey-6 text-caption">
|
||||
{{ empType === "" ? "ระดับตำแหน่ง" : "ระดับชั้นงาน" }}
|
||||
{{ empType === "" ? "ระดับ" : "ระดับชั้นงาน" }}
|
||||
</div>
|
||||
<div class="col">
|
||||
{{ formDetail?.posLevel?.posLevelName || "-" }}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ const conditionTotal = computed(() => {
|
|||
return num;
|
||||
});
|
||||
|
||||
/** function เรียกข้อมูลประเภทตำแหน่ง*/
|
||||
/** function เรียกข้อมูลตำแหน่งประเภท*/
|
||||
function fetchType() {
|
||||
http
|
||||
.get(config.API.orgPosType)
|
||||
|
|
@ -73,7 +73,7 @@ function fetchType() {
|
|||
});
|
||||
}
|
||||
|
||||
/** function เรียกข้อมูลระดับตำแหน่ง*/
|
||||
/** function เรียกข้อมูลระดับ*/
|
||||
function fetchLevel() {
|
||||
http
|
||||
.get(config.API.orgPosLevel)
|
||||
|
|
@ -396,7 +396,7 @@ onMounted(async () => {
|
|||
labelOption.posType !== "ทั้งหมด"
|
||||
? labelOption.posType
|
||||
: empType === "officer"
|
||||
? `ประเภทตำแหน่ง${labelOption.posType}`
|
||||
? `ตำแหน่งประเภท${labelOption.posType}`
|
||||
: `กลุ่มงาน${labelOption.posType}`
|
||||
}}
|
||||
<q-btn
|
||||
|
|
@ -439,7 +439,7 @@ onMounted(async () => {
|
|||
labelOption.posLevel !== "ทั้งหมด"
|
||||
? labelOption.posLevel
|
||||
: empType === "officer"
|
||||
? `ระดับตำแหน่ง${labelOption.posLevel}`
|
||||
? `ระดับ${labelOption.posLevel}`
|
||||
: `ระดับชั้นงาน${labelOption.posLevel}`
|
||||
}}
|
||||
<q-btn
|
||||
|
|
|
|||
|
|
@ -72,9 +72,9 @@ const fecthappointmentByid = async () => {
|
|||
const data = res.data.result;
|
||||
appointment.value = data;
|
||||
profileId.value = data.profileId;
|
||||
title.value.fullname = `${data.prefix}${data.firstName ?? "-"} ${
|
||||
data.lastName ?? "-"
|
||||
}`;
|
||||
title.value.fullname = `${data.prefix === null ? "" : data.prefix}${
|
||||
data.firstName ?? "-"
|
||||
} ${data.lastName ?? "-"}`;
|
||||
title.value.organizationPositionOld = data.organizationPositionOld ?? "-";
|
||||
title.value.positionLevelOld = data.positionLevelOld ?? "-";
|
||||
title.value.positionTypeOld = data.positionTypeOld ?? "-";
|
||||
|
|
|
|||
|
|
@ -71,7 +71,9 @@ const columns = ref<QTableProps["columns"]>([
|
|||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
format(val, row) {
|
||||
return `${row.prefix}${row.firstName} ${row.lastName}`;
|
||||
return `${row.prefix === null ? "" : row.prefix}${row.firstName} ${
|
||||
row.lastName
|
||||
}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ const fileDownload = async (no: number, type: string, fileName: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `${fileName}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -950,8 +950,8 @@ async function clickdownloadFile(type: string) {
|
|||
`แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ-${fullname.value}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -160,8 +160,8 @@ async function clickdownloadFile(type: string) {
|
|||
.then((res) => {
|
||||
downloadFile(res, `แบบรายงานการประเมินฯ_${fullname.value}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -37,13 +37,15 @@ const dataRole = ref<string>("mentor");
|
|||
/** get ข้อมูล มอบหมาย
|
||||
* @param id person id
|
||||
*/
|
||||
async function fecthAssign(id: string){
|
||||
async function fecthAssign(id: string) {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.formevaluate(id))
|
||||
.then(async (res: any) => {
|
||||
await fecthdataAssign(res.data.data);
|
||||
fullname.value = res.data.data.experimentee ? res.data.data.experimentee.name : "";
|
||||
fullname.value = res.data.data.experimentee
|
||||
? res.data.data.experimentee.name
|
||||
: "";
|
||||
dataArrayNumber.value = 1;
|
||||
})
|
||||
.catch((e: any) => {
|
||||
|
|
@ -52,19 +54,19 @@ async function fecthAssign(id: string){
|
|||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* เปลี่ยน tab
|
||||
* @param tabVal type
|
||||
*/
|
||||
function changeTab(tabVal: string){
|
||||
function changeTab(tabVal: string) {
|
||||
tab.value = tabVal;
|
||||
dataArrayNumber.value = Number(tabVal.charAt(4));
|
||||
};
|
||||
}
|
||||
|
||||
/** convert file */
|
||||
function downloadFile(response: any, filename: string){
|
||||
function downloadFile(response: any, filename: string) {
|
||||
const link = document.createElement("a");
|
||||
var fileName = filename;
|
||||
link.href = window.URL.createObjectURL(new Blob([response.data]));
|
||||
|
|
@ -72,10 +74,10 @@ function downloadFile(response: any, filename: string){
|
|||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
}
|
||||
|
||||
/** download file */
|
||||
async function FileDownload(type: string){
|
||||
async function FileDownload(type: string) {
|
||||
let numTab = probationStore.evaluate.find(
|
||||
(e: any) => e.no === dataArrayNumber.value
|
||||
);
|
||||
|
|
@ -92,8 +94,8 @@ async function FileDownload(type: string){
|
|||
`แบบบันทึกผล(ผู้ดูเเล)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -111,21 +113,21 @@ async function FileDownload(type: string){
|
|||
`แบบบันทึกผล(ผู้บังคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/** ไปหน้า page add */
|
||||
function addData(){
|
||||
function addData() {
|
||||
router.push(
|
||||
`/probation/detail/addresult/${personalId.value}/${assignId.value}`
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
await fecthAssign(assignId.value);
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@ onMounted(async () => {
|
|||
|
||||
/**
|
||||
* get data
|
||||
* @param id person id
|
||||
* @param id person id
|
||||
*/
|
||||
async function fecthAssign(id: string){
|
||||
async function fecthAssign(id: string) {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.formevaluateCommander(id))
|
||||
|
|
@ -59,19 +59,19 @@ async function fecthAssign(id: string){
|
|||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* เปลี่ยน tab
|
||||
* @param tabVal type
|
||||
* @param tabVal type
|
||||
*/
|
||||
function changeTab(tabVal: string){
|
||||
function changeTab(tabVal: string) {
|
||||
tab.value = tabVal;
|
||||
dataArrayNumber.value = Number(tabVal.charAt(4));
|
||||
};
|
||||
}
|
||||
|
||||
/** เปลี่ยน type file */
|
||||
function downloadFile(response: any, filename: string){
|
||||
function downloadFile(response: any, filename: string) {
|
||||
const link = document.createElement("a");
|
||||
var fileName = filename;
|
||||
link.href = window.URL.createObjectURL(new Blob([response.data]));
|
||||
|
|
@ -79,13 +79,13 @@ function downloadFile(response: any, filename: string){
|
|||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* download file
|
||||
* @param type type
|
||||
*/
|
||||
async function FileDownload(type: string){
|
||||
async function FileDownload(type: string) {
|
||||
let numTab = probationStore.evaluate.find(
|
||||
(e: any) => e.no === dataArrayNumber.value
|
||||
);
|
||||
|
|
@ -102,8 +102,8 @@ async function FileDownload(type: string){
|
|||
`แบบบันทึกผล(ผู้บังคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -121,21 +121,21 @@ async function FileDownload(type: string){
|
|||
`แบบบันทึกผล(ผู้บังคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/** เปลี่ยนหน้า เพิ่ม */
|
||||
function addData(){
|
||||
function addData() {
|
||||
router.push(
|
||||
`/probation/detail/addevaluacommander/${personalId.value}/${assignId.value}`
|
||||
);
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -37,12 +37,12 @@ const evaluate = ref<any>([]);
|
|||
|
||||
/**
|
||||
* เปลี่ยน tab
|
||||
* @param tabVal type
|
||||
* @param tabVal type
|
||||
*/
|
||||
function changeTab(tabVal: string){
|
||||
function changeTab(tabVal: string) {
|
||||
tab.value = tabVal;
|
||||
dataArrayNumber.value = Number(tabVal.charAt(4));
|
||||
};
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
fecthAssign(assignId.value);
|
||||
|
|
@ -50,9 +50,9 @@ onMounted(() => {
|
|||
|
||||
/**
|
||||
* get data
|
||||
* @param id person id
|
||||
* @param id person id
|
||||
*/
|
||||
async function fecthAssign(id: string){
|
||||
async function fecthAssign(id: string) {
|
||||
showLoader();
|
||||
await http
|
||||
.get(config.API.createformCommader(id))
|
||||
|
|
@ -60,7 +60,9 @@ onMounted(() => {
|
|||
await fecthdataAssign(res.data.data);
|
||||
evaluate.value = probationStore.evaluate;
|
||||
tabs.value = evaluate.value;
|
||||
fullname.value = res.data.data.experimentee ? res.data.data.experimentee.name : "";
|
||||
fullname.value = res.data.data.experimentee
|
||||
? res.data.data.experimentee.name
|
||||
: "";
|
||||
dataArrayNumber.value = 1;
|
||||
})
|
||||
.catch((e: any) => {
|
||||
|
|
@ -69,10 +71,10 @@ onMounted(() => {
|
|||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/** เปลี่ยน type file */
|
||||
function downloadFile(response: any, filename: string){
|
||||
function downloadFile(response: any, filename: string) {
|
||||
const link = document.createElement("a");
|
||||
var fileName = filename;
|
||||
link.href = window.URL.createObjectURL(new Blob([response.data]));
|
||||
|
|
@ -80,13 +82,13 @@ function downloadFile(response: any, filename: string){
|
|||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* download file
|
||||
* @param type type
|
||||
*/
|
||||
async function FileDownload(type: string){
|
||||
async function FileDownload(type: string) {
|
||||
let numTab = evaluate.value.find((e: any) => e.no === dataArrayNumber.value);
|
||||
showLoader();
|
||||
await http
|
||||
|
|
@ -99,20 +101,20 @@ function downloadFile(response: any, filename: string){
|
|||
`แบบประเมินผล(ผู้บังคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/** เปลี่ยนหน้า เพิ่ม */
|
||||
function addData(){
|
||||
function addData() {
|
||||
router.push(
|
||||
`/probation/detail/addevalua/${personalId.value}/${assignId.value}`
|
||||
);
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -47,7 +47,9 @@ const fecthAssign = async (id: string) => {
|
|||
.then(async (res: any) => {
|
||||
await fecthdataAssign(res.data.data);
|
||||
evaluate.value = probationStore.evaluate;
|
||||
fullname.value = res.data.data.experimentee ? res.data.data.experimentee.name : "";
|
||||
fullname.value = res.data.data.experimentee
|
||||
? res.data.data.experimentee.name
|
||||
: "";
|
||||
tabs.value = evaluate.value;
|
||||
dataArrayNumber.value = 1;
|
||||
})
|
||||
|
|
@ -81,8 +83,8 @@ const FileDownload = async (type: string) => {
|
|||
`แบบประเมินผล(คณะกรรมการ)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -357,8 +357,8 @@ const downloadAttachment = async (type: string, id: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `${"รายชื่อผู้เกษียณอายุราชการ"}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
format(val, row) {
|
||||
return `${row.prefix}${row.firstName} ${row.lastName}`;
|
||||
return `${row.prefix ?? ""}${row.firstName} ${row.lastName}`;
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ const fileDownload = async (type: string) => {
|
|||
`รายละเอียดบันทึกเวียนแจ้งการถึงแก่กรรม-${fullName}.${type}`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -403,8 +403,8 @@ const fileDownload = async (type: string, fileName: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `${fileName}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ async function downloadDocument(type: string) {
|
|||
);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
divdiv<script setup lang="ts">
|
||||
divdiv
|
||||
<script setup lang="ts">
|
||||
import { ref, watch, computed } from "vue";
|
||||
import { QForm, useQuasar } from "quasar";
|
||||
import http from "@/plugins/http";
|
||||
|
|
@ -307,7 +308,7 @@ const filterSelector = (val: any, update: Function, name: any) => {
|
|||
|
||||
<template>
|
||||
<q-dialog v-model="props.modal" persistent>
|
||||
<q-card style="min-width: 900px" >
|
||||
<q-card style="min-width: 900px">
|
||||
<q-form
|
||||
ref="myForm"
|
||||
greedy
|
||||
|
|
@ -490,14 +491,14 @@ const filterSelector = (val: any, update: Function, name: any) => {
|
|||
<div class="col-xs-12 col-sm-6">
|
||||
<q-input
|
||||
:disable="disbleStatus || status == 'DONE'"
|
||||
:rules="[(val) => !!val || 'กรุณากรอกทะเบียนฐานนันดร']"
|
||||
:rules="[(val) => !!val || 'กรุณากรอกทะเบียนฐานันดร']"
|
||||
class="inputgreen"
|
||||
hide-bottom-space
|
||||
dense
|
||||
borderless
|
||||
outlined
|
||||
v-model="issue"
|
||||
label="ทะเบียนฐานนันดร"
|
||||
label="ทะเบียนฐานันดร"
|
||||
lazy-rules
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@ const downloadReport = async (
|
|||
showDocument(url);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -128,8 +128,8 @@ const downloadReport = async (
|
|||
showDocument(url);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -186,7 +186,7 @@ const filterSelector = (val: any, update: Function, name: any) => {
|
|||
@filter="(inputValue:any,doneFn:Function) =>
|
||||
filterSelector(inputValue, doneFn,'selectList') "
|
||||
>
|
||||
<template v-slot:no-option>
|
||||
<template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
|
|
|
|||
|
|
@ -139,8 +139,8 @@ async function genReportXLSX(data: any) {
|
|||
const blob = new Blob([res.data]);
|
||||
downloadReport(blob, "xlsx");
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -118,8 +118,8 @@ async function genReport(data: any) {
|
|||
hideLoader();
|
||||
}, 1500);
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -144,8 +144,8 @@ async function genReportXLSX(data: any) {
|
|||
const blob = new Blob([res.data]);
|
||||
downloadReport(blob, "xlsx");
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ const leaveReport = () =>
|
|||
export default [
|
||||
{
|
||||
path: "/round-time",
|
||||
name: "/round-time",
|
||||
name: "roundTime",
|
||||
component: RoundMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -24,7 +24,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/change-round",
|
||||
name: "/change-round",
|
||||
name: "changeRound",
|
||||
component: ChangeRoundMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -34,17 +34,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/work-list",
|
||||
name: "/work-list",
|
||||
component: workMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
Key: [9],
|
||||
Role: "leave",
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/work-list",
|
||||
name: "/work-list",
|
||||
name: "workList",
|
||||
component: workMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -54,7 +44,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/timestamp-special",
|
||||
name: "/timestamp-special",
|
||||
name: "timestampSpecial",
|
||||
component: SpecialTimeMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -64,7 +54,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/leave",
|
||||
name: "/leave",
|
||||
name: "leave",
|
||||
component: leaveMain,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -74,7 +64,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/leave/detail/:id",
|
||||
name: "/leave/detail",
|
||||
name: "leaveDetail",
|
||||
component: leaveDetail,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -84,7 +74,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/leave-reject/detail/:id",
|
||||
name: "/leave-reject/detail",
|
||||
name: "leaveRejectDetail",
|
||||
component: leaveDetailReject,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
@ -94,7 +84,7 @@ export default [
|
|||
},
|
||||
{
|
||||
path: "/leave-report",
|
||||
name: "/leave-report",
|
||||
name: "leaveReport",
|
||||
component: leaveReport,
|
||||
meta: {
|
||||
Auth: true,
|
||||
|
|
|
|||
|
|
@ -129,8 +129,8 @@ const downloadCover = async (type: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `คำสั่ง ${orderName.value}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -161,8 +161,8 @@ const downloadAttachment = async (type: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `เอกสารแนบท้าย ${orderName.value}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -207,14 +207,16 @@ const fetchReportCover = async (type: string, orderId: string) => {
|
|||
viewPDF(orderCoverPdf.value);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {});
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
!genReportStatus.value
|
||||
? messageError($q, JSON.parse(await e.response.data.text()))
|
||||
: messageError($q, e);
|
||||
});
|
||||
};
|
||||
// เรียกไฟล์ เอกสารแนบท้าย
|
||||
|
|
@ -228,8 +230,8 @@ const fetchReportAttachment = async (type: string, orderId: string) => {
|
|||
const objectUrl = URL.createObjectURL(blob);
|
||||
orderAttachmentPdf.value = objectUrl;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ function getPDF(url: string, type: string) {
|
|||
hideLoader();
|
||||
}, 1500);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
store.log = 0;
|
||||
|
|
@ -138,7 +138,9 @@ onMounted(async () => {
|
|||
active-class="text-primary"
|
||||
@click="handleItemClick(2)"
|
||||
>
|
||||
<q-item-section class="q-py-sm">แบบแสดงรายละเอียดการเสนอผลงาน</q-item-section>
|
||||
<q-item-section class="q-py-sm"
|
||||
>แบบแสดงรายละเอียดการเสนอผลงาน</q-item-section
|
||||
>
|
||||
</q-item>
|
||||
<q-item
|
||||
clickable
|
||||
|
|
@ -147,7 +149,8 @@ onMounted(async () => {
|
|||
active-class="text-primary"
|
||||
@click="handleItemClick(3)"
|
||||
>
|
||||
<q-item-section class="q-py-sm">แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล
|
||||
<q-item-section class="q-py-sm"
|
||||
>แบบตรวจสอบความถูกต้องครบถ้วนของข้อมูลเพื่อประกอบการคัดเลือกบุคคล
|
||||
(เอกสารแบบ ก)</q-item-section
|
||||
>
|
||||
</q-item>
|
||||
|
|
@ -158,7 +161,9 @@ onMounted(async () => {
|
|||
active-class="text-primary"
|
||||
@click="handleItemClick(4)"
|
||||
>
|
||||
<q-item-section class="q-py-sm"> แบบประเมินคุณลักษณะบุคคล </q-item-section>
|
||||
<q-item-section class="q-py-sm">
|
||||
แบบประเมินคุณลักษณะบุคคล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
clickable
|
||||
|
|
@ -178,7 +183,9 @@ onMounted(async () => {
|
|||
active-class="text-primary"
|
||||
@click="handleItemClick(6)"
|
||||
>
|
||||
<q-item-section class="q-py-sm"> ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11) </q-item-section>
|
||||
<q-item-section class="q-py-sm">
|
||||
ผลงานที่จะส่งประเมิน (เอกสารหมายเลข 11)
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -159,7 +159,9 @@ async function getPDF(url: string, type: string, fileName: string) {
|
|||
a.download = fileName;
|
||||
a.click();
|
||||
})
|
||||
.catch((e) => {})
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ function getPDF(url: string, type: string) {
|
|||
hideLoader();
|
||||
}, 1500);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
store.log = 0;
|
||||
|
|
|
|||
|
|
@ -145,8 +145,8 @@ const downloadCover = async (type: string) => {
|
|||
.then(async (res) => {
|
||||
downloadFile(res, `คำสั่ง ${orderName.value}.${type}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
@ -206,14 +206,16 @@ const fetchReportCover = async (type: string, orderId: string) => {
|
|||
viewPDF(orderCoverPdf.value);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {});
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
!genReportStatus.value
|
||||
? messageError($q, JSON.parse(await e.response.data.text()))
|
||||
: messageError($q, e);
|
||||
});
|
||||
};
|
||||
// เรียกไฟล์ เอกสารแนบท้าย
|
||||
|
|
@ -227,8 +229,8 @@ const fetchReportAttachment = async (type: string, orderId: string) => {
|
|||
const objectUrl = URL.createObjectURL(blob);
|
||||
orderAttachmentPdf.value = objectUrl;
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -212,8 +212,8 @@ function downloadFile(url: string, type: string, fileName: string) {
|
|||
a.download = fileName;
|
||||
a.click();
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -174,8 +174,8 @@ async function downloadFile(url: string, type: string, fileName: string) {
|
|||
a.download = fileName;
|
||||
a.click();
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import PopupPersonal from "@/components/Dialogs/PopupPersonalNew.vue";
|
|||
import type {
|
||||
DataOption,
|
||||
typeOp,
|
||||
ResponsePreson,
|
||||
NewPagination,
|
||||
tableType,
|
||||
FormData,
|
||||
} from "@/modules/14_KPI/interface/index/Main";
|
||||
|
|
@ -22,10 +22,10 @@ const personId = ref<string>("");
|
|||
const modalPersonal = ref<boolean>(false);
|
||||
const searchRef = ref<any>(null);
|
||||
const rows = ref<tableType[]>([]);
|
||||
const type = ref<string>("idcard");
|
||||
const type = ref<string>("citizenId");
|
||||
const search = ref<string>("");
|
||||
const typeOps = ref<typeOp[]>([
|
||||
{ id: "idcard", name: "เลขประจำตัวประชาชน" },
|
||||
{ id: "citizenId", name: "เลขประจำตัวประชาชน" },
|
||||
{ id: "firstname", name: "ชื่อ" },
|
||||
{ id: "lastname", name: "นามสกุล" },
|
||||
]);
|
||||
|
|
@ -96,9 +96,8 @@ function onCloseDialog() {
|
|||
formRound.commanderHighId = "";
|
||||
selected.value = [];
|
||||
search.value = "";
|
||||
type.value = "idcard";
|
||||
type.value = "citizenId";
|
||||
}
|
||||
|
||||
/** หัวข้อที่เเสดงในตารางผู้ถูกร้องเรียน */
|
||||
const visibleColumnsRespondent = ref<string[]>([
|
||||
"no",
|
||||
|
|
@ -112,13 +111,18 @@ const visibleColumnsRespondent = ref<string[]>([
|
|||
"organization",
|
||||
]);
|
||||
|
||||
const query = reactive({
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
const columnsRespondent = ref<QTableProps["columns"]>([
|
||||
{
|
||||
name: "no",
|
||||
align: "left",
|
||||
label: "ลำดับ",
|
||||
sortable: false,
|
||||
field: "no",
|
||||
field: (row) =>
|
||||
(query.page - 1) * query.pageSize + rows.value.indexOf(row) + 1,
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
|
|
@ -223,6 +227,9 @@ function checkClosed() {
|
|||
isRoundClose.value = formRound.kpiPeriodId.isClosed;
|
||||
}
|
||||
|
||||
const total = ref<number>(0);
|
||||
const maxPage = ref<number>(1);
|
||||
|
||||
async function searchInput(check: boolean) {
|
||||
if (check) {
|
||||
searchRules.value = check;
|
||||
|
|
@ -234,13 +241,21 @@ async function searchInput(check: boolean) {
|
|||
keyword: search.value,
|
||||
};
|
||||
await http
|
||||
.post(config.API.orgSearchPersonal(), body)
|
||||
.post(
|
||||
config.API.orgSearchPersonal() +
|
||||
`?page=${query.page}&pageSize=${query.pageSize}`,
|
||||
body
|
||||
)
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
maxPage.value = Math.ceil(data.total / query.pageSize);
|
||||
total.value = data.total;
|
||||
|
||||
rows.value = data;
|
||||
rows.value = data.data;
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.catch((err) => {})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
|
|
@ -263,15 +278,21 @@ function getOrgOp() {
|
|||
const data = res.data.result;
|
||||
evaluatorIdMainOp.value = data.caregiver.map((i: any) => ({
|
||||
id: i.id,
|
||||
name: `${i.prefix ? i.prefix :''}${i.firstName ? i.firstName : ''} ${i.lastName ? i.lastName:''}`,
|
||||
name: `${i.prefix ? i.prefix : ""}${i.firstName ? i.firstName : ""} ${
|
||||
i.lastName ? i.lastName : ""
|
||||
}`,
|
||||
}));
|
||||
commanderIdMainOp.value = data.commander.map((i: any) => ({
|
||||
id: i.id,
|
||||
name: `${i.prefix ? i.prefix :''}${i.firstName ? i.firstName : ''} ${i.lastName ? i.lastName:''}`,
|
||||
name: `${i.prefix ? i.prefix : ""}${i.firstName ? i.firstName : ""} ${
|
||||
i.lastName ? i.lastName : ""
|
||||
}`,
|
||||
}));
|
||||
commanderHighMainOp.value = data.chairman.map((i: any) => ({
|
||||
id: i.id,
|
||||
name: `${i.prefix ? i.prefix :''}${i.firstName ? i.firstName : ''} ${i.lastName ? i.lastName:''}`,
|
||||
name: `${i.prefix ? i.prefix : ""}${i.firstName ? i.firstName : ""} ${
|
||||
i.lastName ? i.lastName : ""
|
||||
}`,
|
||||
}));
|
||||
})
|
||||
.catch((e) => {
|
||||
|
|
@ -329,6 +350,22 @@ watch(
|
|||
}
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* function อัปเดท paging
|
||||
* @param initialPagination ข้อมูล pagination
|
||||
*/
|
||||
async function updatePagination(initialPagination: NewPagination) {
|
||||
query.page = 1;
|
||||
query.pageSize = initialPagination.rowsPerPage;
|
||||
}
|
||||
|
||||
watch(
|
||||
() => query.pageSize,
|
||||
() => {
|
||||
searchInput(true);
|
||||
}
|
||||
);
|
||||
</script>
|
||||
<template>
|
||||
<q-dialog v-model="modalDialog" persistent>
|
||||
|
|
@ -374,7 +411,7 @@ watch(
|
|||
icon="search"
|
||||
label="ค้นหา"
|
||||
class="full-width q-py-sm q-px-md"
|
||||
@click="searchInput(true)"
|
||||
@click="(query.page = 1), searchInput(true)"
|
||||
>
|
||||
</q-btn>
|
||||
</template>
|
||||
|
|
@ -389,11 +426,12 @@ watch(
|
|||
flat
|
||||
bordered
|
||||
selection="single"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
v-model:selected="selected"
|
||||
:paging="true"
|
||||
dense
|
||||
class="custom-header-table"
|
||||
:visible-columns="visibleColumnsRespondent"
|
||||
@update:pagination="updatePagination"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
<q-tr :props="props">
|
||||
|
|
@ -425,10 +463,7 @@ watch(
|
|||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
<div v-else-if="col.name == 'positionType'">
|
||||
<div v-if="col.name == 'positionType'">
|
||||
{{
|
||||
props.row.positionTypeName
|
||||
? props.row.positionTypeName
|
||||
|
|
@ -451,6 +486,20 @@ watch(
|
|||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ total }} รายการ
|
||||
<q-pagination
|
||||
v-model="query.page"
|
||||
active-color="primary"
|
||||
color="dark"
|
||||
:max="Number(maxPage)"
|
||||
size="sm"
|
||||
boundary-links
|
||||
direction-links
|
||||
:max-pages="5"
|
||||
@update:model-value="searchInput(true)"
|
||||
></q-pagination>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,388 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, onMounted } from "vue";
|
||||
import { useQuasar } from "quasar";
|
||||
import { VuePDF, usePDF } from "@tato30/vue-pdf";
|
||||
import config from "@/app.config";
|
||||
import http from "@/plugins/http";
|
||||
import axios from "axios";
|
||||
import genReport from "@/plugins/genreport";
|
||||
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
|
||||
import type { DataOption } from "@/modules/14_KPI/interface/index/Main";
|
||||
const $q = useQuasar();
|
||||
|
||||
const { showLoader, hideLoader, messageError, date2Thai, dialogConfirm } =
|
||||
useCounterMixin();
|
||||
|
||||
const year = ref<number | null>(new Date().getFullYear());
|
||||
const round = ref<string>("");
|
||||
const organization = ref<string>("");
|
||||
const roundOp = ref<DataOption[]>([]);
|
||||
const organizationOpsMain = ref<DataOption[]>([]);
|
||||
const organizationOps = ref<DataOption[]>([]);
|
||||
|
||||
function fetchRoundOption() {
|
||||
http
|
||||
.get(
|
||||
config.API.kpiPeriod +
|
||||
`?page=${1}&pageSize=${10}&keyword=${""}&year=${year.value}`
|
||||
)
|
||||
.then(async (res) => {
|
||||
const data = await res.data.result.data;
|
||||
if (res.data.result.data.length > 0) {
|
||||
const list = await data.map((e: any) => ({
|
||||
id: e.id,
|
||||
name:
|
||||
e.durationKPI === "OCT"
|
||||
? "รอบตุลาคม"
|
||||
: e.durationKPI === "APR"
|
||||
? "รอบเมษายน"
|
||||
: "",
|
||||
}));
|
||||
roundOp.value = list;
|
||||
} else {
|
||||
roundOp.value = [];
|
||||
round.value = "";
|
||||
organization.value = "";
|
||||
dataDownload.value = null;
|
||||
pdfSrc.value = null;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
});
|
||||
}
|
||||
|
||||
function fetchActiveId() {
|
||||
showLoader();
|
||||
http
|
||||
.get(config.API.activeOrganization)
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
fetchListOrg(data.activeId);
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
function fetchListOrg(id: string) {
|
||||
showLoader();
|
||||
http
|
||||
.get(config.API.orgByid(id))
|
||||
.then(async (res) => {
|
||||
const data = await res.data.result.map((item: any) => ({
|
||||
id: item.orgTreeId,
|
||||
name: item.orgName,
|
||||
}));
|
||||
organizationOpsMain.value = data;
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
function fetchReport() {
|
||||
if (round.value !== "" && organization.value !== "") {
|
||||
showLoader();
|
||||
const body = {
|
||||
periodId: round.value,
|
||||
root: organization.value,
|
||||
};
|
||||
http
|
||||
.post(config.API.kpiReport(), body)
|
||||
.then((res) => {
|
||||
dataDownload.value = res.data.result;
|
||||
page.value = 1;
|
||||
genPDf(res.data.result);
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* function เรียกไฟล์ PDF
|
||||
* @param data ข้อมูลบัญชีวันลา
|
||||
*/
|
||||
async function genPDf(data: any) {
|
||||
showLoader();
|
||||
await axios
|
||||
.post(config.API.reportTemplate + `/docx`, data, {
|
||||
headers: {
|
||||
accept: "application/pdf",
|
||||
"content-Type": "application/json",
|
||||
},
|
||||
responseType: "blob",
|
||||
})
|
||||
.then(async (res) => {
|
||||
const blob = new Blob([res.data]);
|
||||
const objectUrl = URL.createObjectURL(blob);
|
||||
|
||||
const pdfData = await usePDF(`${objectUrl}`);
|
||||
showLoader();
|
||||
setTimeout(() => {
|
||||
pdfSrc.value = pdfData.pdf.value;
|
||||
numOfPages.value = pdfData.pages.value;
|
||||
hideLoader();
|
||||
}, 1500);
|
||||
})
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
function changOption() {
|
||||
fetchReport();
|
||||
}
|
||||
|
||||
function filterSelector(val: string, update: Function) {
|
||||
update(() => {
|
||||
organizationOps.value = organizationOpsMain.value.filter(
|
||||
(v: DataOption) => v.name.toLowerCase().indexOf(val) > -1
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
const splitterModel = ref(14);
|
||||
const numOfPages = ref<number>(0);
|
||||
const page = ref<number>(1);
|
||||
const pdfSrc = ref<any>();
|
||||
const dataDownload = ref<any>();
|
||||
|
||||
async function downloadReport(data: any, type: string) {
|
||||
var fileName = "ประกาศผู้มีผลการปฏิบัติราชการระดับดีเด่นและดีมาก";
|
||||
genReport(data, fileName, type);
|
||||
}
|
||||
|
||||
/** ไปหน้าต่อไปของรายงาน */
|
||||
function nextPage() {
|
||||
if (page.value < numOfPages.value) {
|
||||
page.value++;
|
||||
}
|
||||
}
|
||||
|
||||
/** กลับหน้าก่อนหน้าของรายงาน */
|
||||
function backPage() {
|
||||
if (page.value !== 1) {
|
||||
page.value--;
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
fetchRoundOption();
|
||||
fetchActiveId();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>จัดทำประกาศผู้มีผลการปฏิบัติราชการระดับดีเด่นและดีมาก</div>
|
||||
<div class="toptitle text-dark col-12 row items-center">
|
||||
จัดทำประกาศผู้มีผลการปฏิบัติราชการระดับดีเด่นและดีมาก
|
||||
</div>
|
||||
<q-card flat bordered>
|
||||
<q-card-section>
|
||||
<q-toolbar style="padding: 0">
|
||||
<div class="row q-gutter-sm">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="year"
|
||||
style="width: 150px"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
year-picker
|
||||
:enableTimePicker="false"
|
||||
@update:model-value="fetchRoundOption()"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
hide-bottom-space
|
||||
:model-value="!!year ? year + 543 : null"
|
||||
:label="`${'ปีงบประมาณ'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
style="color: var(--q-primary)"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
<q-select
|
||||
v-model="round"
|
||||
outlined
|
||||
label="รอบการประเมิน"
|
||||
dense
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
:options="roundOp"
|
||||
style="min-width: 150px"
|
||||
emit-value
|
||||
map-options
|
||||
:disable="roundOp.length === 0"
|
||||
@update:model-value="changOption"
|
||||
/>
|
||||
<q-select
|
||||
:disable="roundOp.length === 0"
|
||||
style="min-width: 100px"
|
||||
dense
|
||||
hide-bottom-space
|
||||
outlined
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
emit-value
|
||||
map-options
|
||||
v-model="organization"
|
||||
:options="organizationOps"
|
||||
label="หน่วยงาน"
|
||||
use-input
|
||||
@update:model-value="changOption"
|
||||
@filter="(inputValue: string,
|
||||
|
||||
doneFn: Function) => filterSelector(inputValue, doneFn )"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<q-space />
|
||||
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="primary"
|
||||
icon="download"
|
||||
:disable="!dataDownload"
|
||||
>
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="downloadReport(dataDownload, 'pdf')"
|
||||
>
|
||||
<q-item-section avatar
|
||||
><q-icon color="red" name="mdi-file-pdf"
|
||||
/></q-item-section>
|
||||
<q-item-section>ไฟล์ .PDF</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="downloadReport(dataDownload, 'docx')"
|
||||
>
|
||||
<q-item-section avatar
|
||||
><q-icon color="blue" name="mdi-file-word"
|
||||
/></q-item-section>
|
||||
<q-item-section>ไฟล์ .docx</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
<q-splitter
|
||||
v-model="splitterModel"
|
||||
horizontal
|
||||
style="
|
||||
height: 75vh;
|
||||
border: 1px solid rgb(210, 210, 210);
|
||||
border-radius: 5px;
|
||||
"
|
||||
before-class="overflow-hidden disable"
|
||||
separator-class="bg-white disabled"
|
||||
>
|
||||
<template v-slot:before v-if="pdfSrc">
|
||||
<div class="q-px-sm">
|
||||
<div class="row items-start items-center">
|
||||
<div class="col">
|
||||
<q-btn
|
||||
padding="xs"
|
||||
icon="mdi-chevron-left"
|
||||
color="grey-2"
|
||||
text-color="grey-5"
|
||||
size="md"
|
||||
class="my-auto"
|
||||
@click="backPage"
|
||||
:disable="page == 1"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 col-md-auto">
|
||||
<div class="q-pa-md flex">
|
||||
หน้าที่ {{ page }} จาก {{ numOfPages }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<q-btn
|
||||
padding="xs"
|
||||
icon="mdi-chevron-right"
|
||||
color="grey-2"
|
||||
text-color="grey-5"
|
||||
size="md"
|
||||
@click="nextPage"
|
||||
:disable="page === numOfPages"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:after v-if="pdfSrc">
|
||||
<div class="q-pa-md">
|
||||
<VuePDF ref="vuePDFRef" :pdf="pdfSrc" :page="page" fit-parent />
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:default v-if="pdfSrc">
|
||||
<div class="q-pa-md">
|
||||
<div class="row items-start items-center">
|
||||
<div class="col">
|
||||
<q-btn
|
||||
padding="xs"
|
||||
icon="mdi-chevron-left"
|
||||
color="grey-2"
|
||||
text-color="grey-5"
|
||||
size="md"
|
||||
class="my-auto"
|
||||
@click="backPage"
|
||||
:disable="page == 1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-md-auto">
|
||||
<div class="q-pa-md flex">
|
||||
หน้าที่ {{ page }} จาก {{ numOfPages }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<q-btn
|
||||
padding="xs"
|
||||
icon="mdi-chevron-right"
|
||||
color="grey-2"
|
||||
text-color="grey-5"
|
||||
size="md"
|
||||
@click="nextPage"
|
||||
:disable="page === numOfPages"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</q-splitter>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</template>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@ async function fetchOrganizationActive() {
|
|||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ async function genReportXLSX(
|
|||
URL.revokeObjectURL(url);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
messageError($q, err);
|
||||
.catch(async (e) => {
|
||||
messageError($q, JSON.parse(await e.response.data.text()));
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@ export const useCounterMixin = defineStore("mixin", () => {
|
|||
}
|
||||
}
|
||||
|
||||
const messageError = (q: any, e: any = "") => {
|
||||
const messageError = (q: any, e: any = "", msg: string = "") => {
|
||||
// q.dialog.hide();
|
||||
if (e.response !== undefined) {
|
||||
if (e.response.data.status !== undefined) {
|
||||
|
|
@ -411,8 +411,6 @@ export const useCounterMixin = defineStore("mixin", () => {
|
|||
},
|
||||
});
|
||||
} else {
|
||||
console.log("errror===>", e);
|
||||
|
||||
q.dialog({
|
||||
component: CustomComponent,
|
||||
componentProps: {
|
||||
|
|
@ -426,18 +424,31 @@ export const useCounterMixin = defineStore("mixin", () => {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
console.log("errror===>", e);
|
||||
console.error("err===>", e); // ***
|
||||
|
||||
q.dialog({
|
||||
component: CustomComponent,
|
||||
componentProps: {
|
||||
title: `พบข้อผิดพลาด`,
|
||||
message: `ข้อมูลผิดพลาดทำให้เกิดการไม่ตอบสนองต่อการเรียกใช้งานดูเว็บไซต์`,
|
||||
icon: "warning",
|
||||
color: "red",
|
||||
onlycancel: true,
|
||||
},
|
||||
});
|
||||
if (e.message) {
|
||||
q.dialog({
|
||||
component: CustomComponent,
|
||||
componentProps: {
|
||||
title: `พบข้อผิดพลาด`,
|
||||
message: e.message,
|
||||
icon: "warning",
|
||||
color: "red",
|
||||
onlycancel: true,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
q.dialog({
|
||||
component: CustomComponent,
|
||||
componentProps: {
|
||||
title: `พบข้อผิดพลาด`,
|
||||
message: `ข้อมูลผิดพลาดทำให้เกิดการไม่ตอบสนองต่อการเรียกใช้งานดูเว็บไซต์`,
|
||||
icon: "warning",
|
||||
color: "red",
|
||||
onlycancel: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue