Merge branch 'develop' into devTee
This commit is contained in:
commit
f98a8f9a96
55 changed files with 715 additions and 382 deletions
|
|
@ -82,7 +82,7 @@ watch(searchData, () => {
|
|||
>
|
||||
<div class="no-active-avatar">
|
||||
<div class="new-avatar">
|
||||
<q-icon name="mdi-plus" size="24px" color="primary" />
|
||||
<q-icon name="mdi-plus" color="primary" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -186,10 +186,9 @@ onMounted(async () => {
|
|||
<div class="q-pb-sm row">
|
||||
<div>
|
||||
<q-btn
|
||||
size="14px"
|
||||
flat
|
||||
dense
|
||||
color="blue"
|
||||
color="primary"
|
||||
@click="clickAdd"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
|
|
@ -232,8 +231,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
emit-value
|
||||
style="min-width: 140px"
|
||||
|
||||
|
||||
class="gt-xs"
|
||||
>
|
||||
<template> </template>
|
||||
|
|
|
|||
|
|
@ -140,10 +140,9 @@ onMounted(async () => {
|
|||
<div class="q-pb-sm row">
|
||||
<div>
|
||||
<q-btn
|
||||
size="14px"
|
||||
flat
|
||||
dense
|
||||
color="blue"
|
||||
color="primary"
|
||||
@click="clickAdd"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ async function fecthQuestion() {
|
|||
}));
|
||||
question1Answer.value = Answer1;
|
||||
question1Answer.value.push({
|
||||
label: "อื่น ๆ (ระบุ)",
|
||||
label: "อื่นๆ (ระบุ)",
|
||||
value: Answer1.length,
|
||||
});
|
||||
question2Answer.value = data.question2Answer.map(
|
||||
|
|
@ -110,7 +110,7 @@ async function fecthQuestion() {
|
|||
}));
|
||||
question3Answer.value = Answer3;
|
||||
question3Answer.value.push({
|
||||
label: "อื่น ๆ (ระบุ)",
|
||||
label: "อื่นๆ (ระบุ)",
|
||||
value: Answer3.length,
|
||||
});
|
||||
const Answer4 = data.question4Answer.map((e: any, index: number) => ({
|
||||
|
|
@ -119,7 +119,7 @@ async function fecthQuestion() {
|
|||
}));
|
||||
question4Answer.value = Answer4;
|
||||
question4Answer.value.push({
|
||||
label: "อื่น ๆ (ระบุ)",
|
||||
label: "อื่นๆ (ระบุ)",
|
||||
value: Answer4.length,
|
||||
});
|
||||
question7Answer.value = data.question7Answer.map(
|
||||
|
|
|
|||
|
|
@ -267,27 +267,29 @@ onMounted(async () => {
|
|||
<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>
|
||||
<div class="q-gutter-sm col-12">
|
||||
<q-list class="rounded-borders q-pt-sm" dense>
|
||||
<q-item
|
||||
v-for="(item, i) in filterLists"
|
||||
:key="i"
|
||||
tag="label"
|
||||
v-ripple
|
||||
>
|
||||
<q-checkbox
|
||||
size="sm"
|
||||
v-model="filterVal"
|
||||
:val="item.id"
|
||||
:color="item.color"
|
||||
/>
|
||||
<q-item-section>
|
||||
<q-item-label>{{ item.name }}</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</div>
|
||||
<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>
|
||||
<q-item
|
||||
v-for="(item, i) in filterLists"
|
||||
:key="i"
|
||||
tag="label"
|
||||
v-ripple
|
||||
>
|
||||
<q-checkbox
|
||||
size="sm"
|
||||
v-model="filterVal"
|
||||
:val="item.id"
|
||||
:color="item.color"
|
||||
/>
|
||||
<q-item-section>
|
||||
<q-item-label>{{ item.name }}</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</div>
|
||||
</q-scroll-area>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -499,9 +499,7 @@ watch(
|
|||
|
||||
<!-- ข้าราชการแสดงเฉพาะที่ยื่นใบลาไปแล้วเท่านั้น ลูกจ้างไม่มี workflow -->
|
||||
<Workflow
|
||||
v-if="
|
||||
leaveStatus != 'DRAFT' && mainStore.officerType == 'OFFICER'
|
||||
"
|
||||
v-if="leaveStatus != 'DRAFT'"
|
||||
:id="props.leaveId"
|
||||
:sys-name="
|
||||
mainStore.officerType == 'OFFICER'
|
||||
|
|
|
|||
|
|
@ -50,9 +50,11 @@ const props = defineProps({
|
|||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6 text-grey-8">
|
||||
ลาครั้งสุดท้ายในประเภทนั้น ๆ เมื่อวันที่
|
||||
ลาครั้งสุดท้ายเมื่อวันที่
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
{{ props.data.leaveLastStart ?? "-" }}
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">{{ props.data.leaveLastStart }}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6 text-grey-8">หมายเลขที่ติดต่อขณะลา</div>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ function onClickOpenStat() {
|
|||
|
||||
/** function redirectTo ยื่นใบลา*/
|
||||
async function addAbsence() {
|
||||
await leaveStore.resetForm2();
|
||||
leaveStore.resetForm2();
|
||||
router.push(`/leave/add`);
|
||||
}
|
||||
|
||||
|
|
@ -331,15 +331,8 @@ onMounted(async () => {
|
|||
<div class="row col-12">
|
||||
<div class="row items-center">
|
||||
<div class="q-ml-sm">
|
||||
<q-btn
|
||||
round
|
||||
dense
|
||||
flat
|
||||
size="13px"
|
||||
class="q-px-sm"
|
||||
@click="addAbsence"
|
||||
>
|
||||
<q-icon name="mdi-plus" size="22px" color="blue" />
|
||||
<q-btn round dense flat class="q-px-sm" @click="addAbsence">
|
||||
<q-icon name="mdi-plus" color="primary" />
|
||||
<q-tooltip>สร้างใบลา</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -239,7 +239,6 @@ function checkSelectForm() {
|
|||
? dialogConfirm(
|
||||
$q,
|
||||
async () => {
|
||||
showLoader();
|
||||
saveStep1();
|
||||
},
|
||||
"ยืนยันการดำเนินการ",
|
||||
|
|
@ -250,6 +249,7 @@ function checkSelectForm() {
|
|||
|
||||
/** function บันทักตรวจสอบคุณสมบัติ*/
|
||||
async function saveStep1() {
|
||||
showLoader();
|
||||
const salaries = formDetail.value.salaries.map((e: any) => ({
|
||||
amount: e.amount,
|
||||
date: e.date,
|
||||
|
|
@ -286,9 +286,9 @@ async function saveStep1() {
|
|||
userId: formDetail.value.id,
|
||||
citizenId: formDetail.value.citizenId,
|
||||
prefix: formDetail.value.prefix,
|
||||
fullName: `${formDetail.value.firstName} ${formDetail.value.lastName}`,
|
||||
fullName: `${formDetail.value.prefix}${formDetail.value.firstName} ${formDetail.value.lastName}`,
|
||||
position: formDetail.value.position,
|
||||
oc: formDetail.value.oc,
|
||||
oc: formDetail.value.org,
|
||||
salary: formDetail.value.salary ? formDetail.value.salary.toString() : null,
|
||||
positionLevel: formDetail.value.positionLevel,
|
||||
posNo: formDetail.value.posNo,
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ onMounted(() => {
|
|||
:rows="store.row"
|
||||
dense
|
||||
:visible-columns="store.visibleColumns"
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
@update:pagination="updatePagination"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ function fetcheSigner(id: string) {
|
|||
.get(config.API.evaluationSignerDoc1(id))
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
|
||||
formCommand.commanderFullname = data.commanderFullname;
|
||||
formCommand.commanderPosition = data.commanderPosition;
|
||||
formCommand.commanderAboveFullname = data.commanderAboveFullname;
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ async function fetchDetail() {
|
|||
formDetail.posNo = data.rootShortName + data.posMasterNo;
|
||||
formDetail.birthDate = data.birthDate;
|
||||
formDetail.govAge = data.govAge; // ยังไม่มี
|
||||
formDetail.salary = data.salary;
|
||||
|
||||
http.get(config.API.dataUserEducations).then((res) => {
|
||||
formDetail.educations = res.data.result;
|
||||
|
|
@ -102,11 +103,11 @@ async function fetchDetail() {
|
|||
|
||||
http.get(config.API.dataUserSalary).then((res) => {
|
||||
formDetail.salaries = res.data.result;
|
||||
formDetail.salary = formDetail.salaries
|
||||
? formattedNumber(
|
||||
formDetail.salaries[formDetail.salaries.length - 1].amount
|
||||
)
|
||||
: "";
|
||||
// formDetail.salary = formDetail.salaries
|
||||
// ? formattedNumber(
|
||||
// formDetail.salaries[formDetail.salaries.length - 1].amount
|
||||
// )
|
||||
// : "";
|
||||
});
|
||||
|
||||
http.get(config.API.dataUserCertificate("training")).then((res) => {
|
||||
|
|
|
|||
|
|
@ -219,7 +219,6 @@ onMounted(async () => {
|
|||
<div class="col-xs-12 col-sm-3 col-md-2">
|
||||
<q-btn
|
||||
v-if="statusSubmit"
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="primary"
|
||||
|
|
@ -307,7 +306,6 @@ onMounted(async () => {
|
|||
:options="store.columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -259,7 +259,6 @@ onMounted(async () => {
|
|||
<q-btn
|
||||
id="addComplaints"
|
||||
for="addComplaints"
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="primary"
|
||||
|
|
@ -370,7 +369,6 @@ onMounted(async () => {
|
|||
map-options
|
||||
:options="dataStore.columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ async function redirectViewDetail(id: string) {
|
|||
:paging="true"
|
||||
dense
|
||||
class="custom-table2"
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumns"
|
||||
v-model:pagination="pagination"
|
||||
@update:pagination="props.updatePagination"
|
||||
|
|
@ -85,10 +85,7 @@ async function redirectViewDetail(id: string) {
|
|||
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3">
|
||||
<q-card bordered flat @click="redirectViewDetail(props.row.id)">
|
||||
<q-list>
|
||||
<q-item
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
>
|
||||
<q-item v-for="col in props.cols" :key="col.name">
|
||||
<q-item-section>
|
||||
<q-item-label caption>{{ col.label }}</q-item-label>
|
||||
|
||||
|
|
|
|||
|
|
@ -344,7 +344,7 @@ onMounted(() => {
|
|||
/>
|
||||
<Work
|
||||
v-model:data="rows_03"
|
||||
:title="`3. งานอื่น ๆ ที่ได้รับมอบหมาย`"
|
||||
:title="`3. งานอื่นๆ ที่ได้รับมอบหมาย`"
|
||||
:page="3"
|
||||
:fetchList="fetchAssigned"
|
||||
:total="totalResults3"
|
||||
|
|
|
|||
|
|
@ -451,8 +451,8 @@ const title = computed(() => {
|
|||
: "เพิ่มตัวชี้วัดตามหน้าที่ความรับผิดชอบ";
|
||||
} else if (numpage.value === 3) {
|
||||
name = isStatusEdit.value
|
||||
? "แก้ไขตัวชี้วัดงานอื่น ๆ ที่ได้รับมอบหมาย"
|
||||
: "เพิ่มตัวชี้วัดงานอื่น ๆ ที่ได้รับมอบหมาย";
|
||||
? "แก้ไขตัวชี้วัดงานอื่นๆ ที่ได้รับมอบหมาย"
|
||||
: "เพิ่มตัวชี้วัดงานอื่นๆ ที่ได้รับมอบหมาย";
|
||||
}
|
||||
return name;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -423,7 +423,8 @@ watch(
|
|||
<div
|
||||
v-if="
|
||||
formDataView.reasonEvaluator == null &&
|
||||
store.rolePerson == 'EVALUATOR'
|
||||
store.rolePerson == 'EVALUATOR' &&
|
||||
store.tabMain === '2'
|
||||
"
|
||||
class="col-12"
|
||||
align="right"
|
||||
|
|
@ -475,7 +476,8 @@ watch(
|
|||
<div
|
||||
v-if="
|
||||
formDataView.reasonCommander == null &&
|
||||
store.rolePerson == 'COMMANDER'
|
||||
store.rolePerson == 'COMMANDER' &&
|
||||
store.tabMain === '2'
|
||||
"
|
||||
class="col-12"
|
||||
align="right"
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ const projectTechniquesOp1 = ref<DataOptionTechnique[]>([
|
|||
},
|
||||
{ value: "problem_solving", label: "การแก้ปัญหา (Problem-solving)" },
|
||||
{ value: "team_working", label: "การทำงานเป็นทีม (Team working)" },
|
||||
{ value: "other1", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other1", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
const projectTechniquesOp2 = ref<DataOptionTechnique[]>([
|
||||
{ value: "coaching", label: "การสอนงาน (Coaching)" },
|
||||
|
|
@ -135,7 +135,7 @@ const projectTechniquesOp2 = ref<DataOptionTechnique[]>([
|
|||
{ value: "team_meeting", label: "การประชุมทีม (Team meeting)" },
|
||||
{ value: "consulting", label: "การให้คำปรึกษา (Consulting)" },
|
||||
{ value: "feedback", label: "การให้ข้อคิดเห็น/เสนอแนะ (Feedback)" },
|
||||
{ value: "other2", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other2", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
|
||||
const projectTechniquesOp3 = ref<DataOptionTechnique[]>([
|
||||
|
|
@ -158,7 +158,7 @@ const projectTechniquesOp3 = ref<DataOptionTechnique[]>([
|
|||
},
|
||||
{ value: "meeting", label: "การประชุม (Meeting)" },
|
||||
{ value: "seminar", label: "การสัมมนา (Seminar)" },
|
||||
{ value: "other3", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other3", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
|
||||
/** ปิด Dialog */
|
||||
|
|
|
|||
|
|
@ -220,7 +220,6 @@ onMounted(() => {
|
|||
round
|
||||
icon="mdi-plus"
|
||||
color="primary"
|
||||
size="12px"
|
||||
dense
|
||||
@click="onAdd()"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,57 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
return competency?.name;
|
||||
}
|
||||
|
||||
const statusOptions = ref<DataOptions[]>([
|
||||
{
|
||||
id: "",
|
||||
name: "ทั้งหมด",
|
||||
},
|
||||
{
|
||||
id: "NEW",
|
||||
name: "จัดทำข้อตกลง",
|
||||
},
|
||||
{
|
||||
id: "NEW_EVALUATOR",
|
||||
name: "รอผู้ประเมินตรวจสอบข้อตกลง",
|
||||
},
|
||||
{
|
||||
id: "NEW_COMMANDER",
|
||||
name: "รอผู้บังคับบัญชาเหนือขึ้นไปตรวจสอบข้อตกลง",
|
||||
},
|
||||
{
|
||||
id: "NEW_COMMANDER_HIGH",
|
||||
name: "รอผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่งตรวจสอบข้อตกลง",
|
||||
},
|
||||
{
|
||||
id: "APPROVE",
|
||||
name: "รายงานความก้าวหน้า",
|
||||
},
|
||||
{
|
||||
id: "EVALUATING",
|
||||
name: "รายงานผลสำเร็จของงาน",
|
||||
},
|
||||
{
|
||||
id: "EVALUATING_EVALUATOR",
|
||||
name: "รอผู้ประเมินตรวจสอบผล",
|
||||
},
|
||||
{
|
||||
id: "EVALUATING_COMMANDER",
|
||||
name: "รอผู้บังคับบัญชาเหนือขึ้นไปตรวจสอบผล",
|
||||
},
|
||||
{
|
||||
id: "EVALUATING_COMMANDER_HIGH",
|
||||
name: "รอผู้บังคับบัญชาเหนือขึ้นไปอีกชั้นหนึ่งตรวจสอบผล",
|
||||
},
|
||||
{
|
||||
id: "COMPLETE",
|
||||
name: "รอประกาศผลการประเมิน",
|
||||
},
|
||||
{
|
||||
id: "KP7",
|
||||
name: "ประกาศและลงทะเบียนประวัติแล้ว",
|
||||
},
|
||||
]);
|
||||
|
||||
function convertStatus(val: string) {
|
||||
switch (val) {
|
||||
case "NEW":
|
||||
|
|
@ -142,6 +193,45 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
}
|
||||
}
|
||||
|
||||
const resultsOptions = ref<DataOptions[]>([
|
||||
{
|
||||
id: "",
|
||||
name: "ทั้งหมด",
|
||||
},
|
||||
{
|
||||
id: "PENDING",
|
||||
name: "รอดำเนินการ",
|
||||
},
|
||||
{
|
||||
id: "PASSED",
|
||||
name: "ผ่านการประเมิน",
|
||||
},
|
||||
{
|
||||
id: "NOTPASSED",
|
||||
name: "ไม่ผ่านการประเมิน",
|
||||
},
|
||||
{
|
||||
id: "EXCELLENT",
|
||||
name: "ดีเด่น",
|
||||
},
|
||||
{
|
||||
id: "VERY_GOOD",
|
||||
name: "ดีมาก",
|
||||
},
|
||||
{
|
||||
id: "GOOD",
|
||||
name: "ดี",
|
||||
},
|
||||
{
|
||||
id: "FAIR",
|
||||
name: "พอใช้",
|
||||
},
|
||||
{
|
||||
id: "IMPROVEMENT",
|
||||
name: "ต้องปรับปรุง",
|
||||
},
|
||||
]);
|
||||
|
||||
function convertResults(val: string) {
|
||||
switch (val) {
|
||||
case "EXCELLENT":
|
||||
|
|
@ -159,7 +249,7 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
}
|
||||
}
|
||||
|
||||
const defaultCompetencyCoreLevel = ref<number|null>(null);
|
||||
const defaultCompetencyCoreLevel = ref<number | null>(null);
|
||||
const defaultCompetencyGroupLevel = ref<number | null>(null);
|
||||
function checkCompetencyDefaultCompetencyLevel() {
|
||||
const posTypeName = dataEvaluation.value.posTypeName;
|
||||
|
|
@ -422,5 +512,8 @@ export const useKpiDataStore = defineStore("KPIDate", () => {
|
|||
selected,
|
||||
work,
|
||||
isUpdate,
|
||||
|
||||
resultsOptions,
|
||||
statusOptions,
|
||||
};
|
||||
});
|
||||
|
|
|
|||
|
|
@ -115,6 +115,9 @@ const evaluatorIdMainOp = ref<DataOptions[]>([]);
|
|||
const commanderIdMainOp = ref<DataOptions[]>([]);
|
||||
const commanderHighMainOp = ref<DataOptions[]>([]);
|
||||
|
||||
const statusOp = ref<DataOptions[]>(store.statusOptions);
|
||||
const resultOp = ref<DataOptions[]>(store.resultsOptions);
|
||||
|
||||
/** Dialog*/
|
||||
const modalDialog = ref<boolean>(false);
|
||||
const yearDialog = ref<number | null>(null);
|
||||
|
|
@ -137,6 +140,8 @@ const formRound = reactive({
|
|||
const formQuery = reactive({
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
status: "",
|
||||
results: "",
|
||||
});
|
||||
const total = ref<number>(0);
|
||||
const totalList = ref<number>(1);
|
||||
|
|
@ -151,7 +156,7 @@ const pagination = ref({
|
|||
|
||||
/**
|
||||
* ดึงข้อมูลรอบการประเมิน
|
||||
* @param type
|
||||
* @param type
|
||||
*/
|
||||
async function fetchRoundOption(type: string) {
|
||||
const y = type === "main" ? year.value : yearDialog.value;
|
||||
|
|
@ -194,11 +199,17 @@ async function fetchRoundOption(type: string) {
|
|||
*/
|
||||
async function fetchList() {
|
||||
showLoader();
|
||||
let queryParams = {
|
||||
page: formQuery.page,
|
||||
pageSize: formQuery.pageSize,
|
||||
kpiPeriodId: round.value,
|
||||
status: formQuery.status === "" ? undefined : formQuery.status,
|
||||
results: formQuery.results === "" ? undefined : formQuery.results,
|
||||
};
|
||||
await http
|
||||
.get(
|
||||
config.API.kpiEvaluation +
|
||||
`?page=${formQuery.page}&pageSize=${formQuery.pageSize}&kpiPeriodId=${round.value}`
|
||||
)
|
||||
.get(config.API.kpiEvaluation, {
|
||||
params: queryParams,
|
||||
})
|
||||
.then(async (res) => {
|
||||
const data = await res.data.result;
|
||||
total.value = data.total;
|
||||
|
|
@ -369,6 +380,21 @@ function filterOption(val: string, update: Function, refData: string) {
|
|||
);
|
||||
});
|
||||
break;
|
||||
|
||||
case "status":
|
||||
update(() => {
|
||||
statusOp.value = store.statusOptions.filter(
|
||||
(v: DataOptions) => v.name.indexOf(val) > -1
|
||||
);
|
||||
});
|
||||
break;
|
||||
case "result":
|
||||
update(() => {
|
||||
resultOp.value = store.resultsOptions.filter(
|
||||
(v: DataOptions) => v.name.indexOf(val) > -1
|
||||
);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -405,161 +431,239 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12">
|
||||
<q-card bordered class="q-pa-md">
|
||||
<div class="row q-col-gutter-sm q-mb-sm">
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="year"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
year-picker
|
||||
:enableTimePicker="false"
|
||||
@update:model-value=" formQuery.page = 1,fetchRoundOption('main')"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
dense
|
||||
lazy-rules
|
||||
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>
|
||||
<div class="col-12 q-col-gutter-sm">
|
||||
<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
|
||||
year-picker
|
||||
:enableTimePicker="false"
|
||||
@update:model-value="
|
||||
(formQuery.page = 1), fetchRoundOption('main')
|
||||
"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
dense
|
||||
lazy-rules
|
||||
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>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-2 col-md-2">
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="primary"
|
||||
icon="add"
|
||||
@click="onClickAddList"
|
||||
>
|
||||
<q-tooltip> เพิ่มข้อมูล </q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
|
||||
<q-space />
|
||||
<div class="col-xs-12 col-md-2">
|
||||
<q-select
|
||||
v-model="visibleColumns"
|
||||
multiple
|
||||
outlined
|
||||
dense
|
||||
options-dense
|
||||
:display-value="$q.lang.table.columns"
|
||||
emit-value
|
||||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-10 col-md-3">
|
||||
<q-select
|
||||
v-model="round"
|
||||
outlined
|
||||
label="รอบการประเมิน"
|
||||
dense
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
:options="roundMainOp"
|
||||
emit-value
|
||||
map-options
|
||||
@update:model-value="changRound"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-card bordered class="col-12 filter-card q-pa-sm">
|
||||
<div class="items-center col-12 row q-col-gutter-sm">
|
||||
<div class="col-xs-12 col-md-2">
|
||||
<q-select
|
||||
v-model="round"
|
||||
outlined
|
||||
label="รอบการประเมิน"
|
||||
dense
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
:options="roundMainOp"
|
||||
emit-value
|
||||
map-options
|
||||
@update:model-value="changRound"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-2 col-md-2">
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
color="primary"
|
||||
icon="add"
|
||||
@click="onClickAddList"
|
||||
>
|
||||
<q-tooltip> เพิ่มข้อมูล </q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
|
||||
<q-space />
|
||||
<div class="col-xs-12 col-md-2">
|
||||
<q-select
|
||||
v-model="visibleColumns"
|
||||
multiple
|
||||
outlined
|
||||
dense
|
||||
options-dense
|
||||
:display-value="$q.lang.table.columns"
|
||||
emit-value
|
||||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<d-table
|
||||
ref="table"
|
||||
:columns="columns"
|
||||
:rows="rows"
|
||||
:filter="filterKeyword"
|
||||
row-key="id"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumns"
|
||||
v-model:pagination="pagination"
|
||||
@update:pagination="updatePagination"
|
||||
>
|
||||
<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.id"
|
||||
@click="redirectViewDetail(props.row.id)"
|
||||
>
|
||||
<div>
|
||||
{{ col.value ? col.value : "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template #item="props">
|
||||
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3">
|
||||
<q-card bordered flat>
|
||||
<q-list @click="redirectViewDetail(props.row.id)">
|
||||
<q-item v-for="col in props.cols" :key="col.name">
|
||||
<q-item-section>
|
||||
<q-item-label caption>{{ col.label }}</q-item-label>
|
||||
|
||||
<q-item-label>
|
||||
{{ col.value ? col.value : "-" }}</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-card>
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<q-select
|
||||
v-model="formQuery.status"
|
||||
label="สถานะการประเมิน"
|
||||
class="select_ellipsis2"
|
||||
dense
|
||||
emit-value
|
||||
map-options
|
||||
:options="statusOp"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
outlined
|
||||
use-input
|
||||
input-debounce="0"
|
||||
@update:model-value="(formQuery.page = 1), fetchList()"
|
||||
:clearable="formQuery.status !== ''"
|
||||
@clear="
|
||||
(formQuery.status = ''),
|
||||
(statusOp = store.statusOptions)
|
||||
"
|
||||
@filter="(inputValue: string,
|
||||
doneFn: Function) => filterOption(inputValue, doneFn, 'status'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<q-select
|
||||
v-model="formQuery.results"
|
||||
label="ผลการประเมิน"
|
||||
class="select_ellipsis3"
|
||||
dense
|
||||
emit-value
|
||||
map-options
|
||||
:options="resultOp"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
outlined
|
||||
@update:model-value="(formQuery.page = 1), fetchList()"
|
||||
use-input
|
||||
@clear="
|
||||
(formQuery.results = ''),
|
||||
(resultOp = store.resultsOptions)
|
||||
"
|
||||
input-debounce="0"
|
||||
:clearable="formQuery.results !== ''"
|
||||
@filter="(inputValue: string,
|
||||
doneFn: Function) => filterOption(inputValue, doneFn, 'result'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ total }} รายการ
|
||||
<q-pagination
|
||||
v-model="formQuery.page"
|
||||
active-color="primary"
|
||||
color="dark"
|
||||
:max="Number(totalList)"
|
||||
size="sm"
|
||||
boundary-links
|
||||
direction-links
|
||||
:max-pages="5"
|
||||
@update:model-value="fetchList"
|
||||
></q-pagination>
|
||||
</template>
|
||||
</d-table>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<d-table
|
||||
ref="table"
|
||||
:columns="columns"
|
||||
:rows="rows"
|
||||
:filter="filterKeyword"
|
||||
row-key="id"
|
||||
flat
|
||||
bordered
|
||||
:paging="true"
|
||||
dense
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
:visible-columns="visibleColumns"
|
||||
v-model:pagination="pagination"
|
||||
@update:pagination="updatePagination"
|
||||
>
|
||||
<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.id"
|
||||
@click="redirectViewDetail(props.row.id)"
|
||||
>
|
||||
<div>
|
||||
{{ col.value ? col.value : "-" }}
|
||||
</div>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
<template #item="props">
|
||||
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3">
|
||||
<q-card bordered flat>
|
||||
<q-list @click="redirectViewDetail(props.row.id)">
|
||||
<q-item v-for="col in props.cols" :key="col.name">
|
||||
<q-item-section>
|
||||
<q-item-label caption>{{ col.label }}</q-item-label>
|
||||
|
||||
<q-item-label>
|
||||
{{ col.value ? col.value : "-" }}</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-card>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:pagination="scope">
|
||||
ทั้งหมด {{ total }} รายการ
|
||||
<q-pagination
|
||||
v-model="formQuery.page"
|
||||
active-color="primary"
|
||||
color="dark"
|
||||
:max="Number(totalList)"
|
||||
size="sm"
|
||||
boundary-links
|
||||
direction-links
|
||||
:max-pages="5"
|
||||
@update:model-value="fetchList"
|
||||
></q-pagination>
|
||||
</template>
|
||||
</d-table>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ const budgetSourceOp = ref<DataOptions[]>([
|
|||
{ id: "HOSPITAL", name: "เงินบำรุงโรงพยาบาล" },
|
||||
{ id: "FUND", name: "เงินกองทุน" },
|
||||
{ id: "SUBSIDY", name: "เงินอุดหนุน" },
|
||||
{ id: "OTHER", name: "เงินอื่น ๆ" },
|
||||
{ id: "OTHER", name: "เงินอื่นๆ" },
|
||||
]);
|
||||
|
||||
const formBody = reactive<FormsSholarship>({
|
||||
|
|
@ -1075,9 +1075,7 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-4 text-grey">ชื่อ-นามสกุล</div>
|
||||
<div class="col-8 text-weight-medium">
|
||||
{{
|
||||
dataGuarantor.name ? dataGuarantor.name : "-"
|
||||
}}
|
||||
{{ dataGuarantor.name ? dataGuarantor.name : "-" }}
|
||||
</div>
|
||||
<div class="col-4 text-grey">ตำแหน่ง</div>
|
||||
<div class="col-8 text-weight-medium">
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { ref, reactive, onMounted, computed } from "vue";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import { useDataStore } from "@/stores/data";
|
||||
import { useQuasar, type QTableColumn, type QTableProps } from "quasar";
|
||||
import { ref, reactive, onMounted, computed } from "vue";
|
||||
|
||||
import http from "@/plugins/http";
|
||||
import config from "@/app.config";
|
||||
|
|
@ -241,6 +241,20 @@ function onHistory() {
|
|||
modalHistory.value = true;
|
||||
}
|
||||
|
||||
const mainEmail = ref<string>("");
|
||||
const mainPhone = ref<string>("");
|
||||
|
||||
const isCheckEmail = computed(() => {
|
||||
return mainEmail.value === formDataInformation.email ? true : false;
|
||||
});
|
||||
|
||||
const isCheckPhone = computed(() => {
|
||||
console.log("mainPhone", mainPhone.value);
|
||||
console.log("formDataInformation", formDataInformation.phone);
|
||||
|
||||
return mainPhone.value === formDataInformation.phone ? true : false;
|
||||
});
|
||||
|
||||
/** get data */
|
||||
async function getData() {
|
||||
showLoader();
|
||||
|
|
@ -264,6 +278,9 @@ async function getData() {
|
|||
formDataInformation.phone = data.phone;
|
||||
formDataInformation.email = data.email ? data.email.split("@")[0] : "";
|
||||
|
||||
mainEmail.value = data.email ? data.email.split("@")[0] : "";
|
||||
mainPhone.value = data.phone ? data.phone : "";
|
||||
|
||||
email.value = data.email ? data.email.split("@")[0] : "";
|
||||
phone.value = data.phone;
|
||||
|
||||
|
|
@ -525,16 +542,18 @@ onMounted(async () => {
|
|||
color="edit"
|
||||
@click="() => (editPhone = true)"
|
||||
>
|
||||
<q-tooltip>แก้ไข</q-tooltip>
|
||||
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
|
||||
<div v-else class="self-center col-3">
|
||||
<q-btn
|
||||
:disable="isCheckPhone"
|
||||
dense
|
||||
flat
|
||||
round
|
||||
icon="save"
|
||||
color="primary"
|
||||
:color="isCheckPhone ? 'grey-6' : 'primary'"
|
||||
@click="onSavePhone"
|
||||
>
|
||||
<q-tooltip>บันทึก</q-tooltip>
|
||||
|
|
@ -588,16 +607,17 @@ onMounted(async () => {
|
|||
color="edit"
|
||||
@click="() => (editEmail = true)"
|
||||
>
|
||||
<q-tooltip>แก้ไข</q-tooltip>
|
||||
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
<div v-else class="self-center">
|
||||
<q-btn
|
||||
:disable="isCheckEmail"
|
||||
:color="isCheckEmail ? 'grey-6' : 'primary'"
|
||||
dense
|
||||
flat
|
||||
round
|
||||
icon="save"
|
||||
color="primary"
|
||||
@click="onSaveEmail"
|
||||
>
|
||||
<q-tooltip>บันทึก</q-tooltip>
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ const projectTechniquesOp1 = ref<DataOptionTechnique[]>([
|
|||
},
|
||||
{ value: "problem_solving", label: "การแก้ปัญหา (Problem-solving)" },
|
||||
{ value: "team_working", label: "การทำงานเป็นทีม (Team working)" },
|
||||
{ value: "other1", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other1", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
const projectTechniquesOp2 = ref<DataOptionTechnique[]>([
|
||||
{ value: "coaching", label: "การสอนงาน (Coaching)" },
|
||||
|
|
@ -90,7 +90,7 @@ const projectTechniquesOp2 = ref<DataOptionTechnique[]>([
|
|||
{ value: "team_meeting", label: "การประชุมทีม (Team meeting)" },
|
||||
{ value: "consulting", label: "การให้คำปรึกษา (Consulting)" },
|
||||
{ value: "feedback", label: "การให้ข้อคิดเห็น/เสนอแนะ (Feedback)" },
|
||||
{ value: "other2", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other2", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
|
||||
const projectTechniquesOp3 = ref<DataOptionTechnique[]>([
|
||||
|
|
@ -113,7 +113,7 @@ const projectTechniquesOp3 = ref<DataOptionTechnique[]>([
|
|||
},
|
||||
{ value: "meeting", label: "การประชุม (Meeting)" },
|
||||
{ value: "seminar", label: "การสัมมนา (Seminar)" },
|
||||
{ value: "other3", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other3", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
|
||||
const choice = ref<string>("MANUAL");
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
<script setup lang="ts">
|
||||
import avatar from "@/assets/avatar_user.jpg";
|
||||
import { ref, reactive, onMounted } from "vue";
|
||||
import axios from "axios";
|
||||
import { useCounterMixin } from "@/stores/mixin";
|
||||
import { useDataStore } from "@/stores/data";
|
||||
import { useRegistryInFormationStore } from "@/modules/10_registry/store/registry";
|
||||
import axios from "axios";
|
||||
import genReport from "@/plugins/genreport";
|
||||
|
||||
//หน้าเมนู
|
||||
import InformationPage from "@/modules/10_registry/tabs/01_information.vue";
|
||||
import GovernmentPage from "@/modules/10_registry/tabs/02_government.vue";
|
||||
|
|
@ -18,8 +20,6 @@ import http from "@/plugins/http";
|
|||
import config from "@/app.config";
|
||||
import { useQuasar } from "quasar";
|
||||
|
||||
const apiGenReport =
|
||||
"https://report-server.frappet.synology.me/api/v1/report-template/docx";
|
||||
const store = useRegistryInFormationStore();
|
||||
const $q = useQuasar();
|
||||
const dataStore = useDataStore();
|
||||
|
|
@ -42,14 +42,20 @@ async function onClickDownloadKp7(type: string) {
|
|||
showLoader();
|
||||
const url =
|
||||
type === "FULL"
|
||||
? config.API.profileReportId(store.profileId, dataStore.officerType == "OFFICER" ? 'profile':'profile-employee')
|
||||
: config.API.profileKp7ShortId(store.profileId, dataStore.officerType == "OFFICER" ? 'profile':'profile-employee');
|
||||
? config.API.profileReportId(
|
||||
store.profileId,
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee"
|
||||
)
|
||||
: config.API.profileKp7ShortId(
|
||||
store.profileId,
|
||||
dataStore.officerType == "OFFICER" ? "profile" : "profile-employee"
|
||||
);
|
||||
const fileName = type === "FULL" ? "ก.พ.7/ก.ก.1" : "ประวัติแบบย่อ";
|
||||
await http
|
||||
.get(url)
|
||||
.then(async (res) => {
|
||||
const data = await res.data.result;
|
||||
await genReport(data, fileName);
|
||||
await genReport(data, fileName, "pdf");
|
||||
hideLoader();
|
||||
})
|
||||
.catch((err) => {
|
||||
|
|
@ -59,46 +65,6 @@ async function onClickDownloadKp7(type: string) {
|
|||
.finally(() => {});
|
||||
}
|
||||
|
||||
async function genReport(data: any, fileName: string) {
|
||||
showLoader();
|
||||
await axios
|
||||
.post(apiGenReport, data, {
|
||||
headers: {
|
||||
accept: "application/pdf",
|
||||
"content-Type": "application/json",
|
||||
},
|
||||
responseType: "arraybuffer",
|
||||
})
|
||||
.then((res) => {
|
||||
const data = res.data;
|
||||
if (data) {
|
||||
// สร้าง Blob จาก array buffer
|
||||
const blob = new Blob([data], {
|
||||
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
});
|
||||
|
||||
// สร้าง URL สำหรับไฟล์ Blob
|
||||
const url = URL.createObjectURL(blob);
|
||||
|
||||
// สร้างลิงก์เพื่อดาวน์โหลดไฟล์
|
||||
const link = document.createElement("a");
|
||||
link.href = url;
|
||||
link.download = `${fileName}.pdf`; // กำหนดชื่อไฟล์ที่จะดาวน์โหลด
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
|
||||
// ลบ URL ที่สร้างขึ้นหลังจากใช้งาน
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
})
|
||||
.catch((e) => {
|
||||
messageError($q, e);
|
||||
})
|
||||
.finally(() => {
|
||||
hideLoader();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* ฟังชั่นกลับหน้าหลัก
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ import { useCounterMixin } from "@/stores/mixin";
|
|||
*/
|
||||
const $q = useQuasar();
|
||||
const store = useRequestEditStore();
|
||||
const link = ref<string>('')
|
||||
const link = ref<string>("");
|
||||
const router = useRouter();
|
||||
const dataStore = useDataStore()
|
||||
const dataStore = useDataStore();
|
||||
const { showLoader, hideLoader, messageError, dialogRemove, success } =
|
||||
useCounterMixin();
|
||||
|
||||
|
|
@ -150,7 +150,9 @@ function fetchListRequset() {
|
|||
};
|
||||
showLoader();
|
||||
http
|
||||
.get(config.API.requestEditByType(link.value) + `user`, { params: queryParams })
|
||||
.get(config.API.requestEditByType(link.value) + `user`, {
|
||||
params: queryParams,
|
||||
})
|
||||
.then((res) => {
|
||||
const data = res.data.result;
|
||||
maxPage.value = Math.ceil(data.total / pageSize.value);
|
||||
|
|
@ -276,7 +278,7 @@ watch(
|
|||
}
|
||||
);
|
||||
|
||||
onMounted(async() => {
|
||||
onMounted(async () => {
|
||||
link.value = await dataStore.getProFileType();
|
||||
fetchListRequset();
|
||||
});
|
||||
|
|
@ -374,7 +376,6 @@ onMounted(async() => {
|
|||
map-options
|
||||
:options="columns"
|
||||
option-value="name"
|
||||
class="col-xs-12 col-sm-3 col-md-2"
|
||||
style="min-width: 140px"
|
||||
/>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1674,7 +1674,7 @@ onMounted(async () => {
|
|||
|
||||
<div class="col-12">
|
||||
<div class="col-12 text-top2">
|
||||
กฎหมายอื่น ๆ ที่เกี่ยวข้องกับการปฏิบัติงาน
|
||||
กฎหมายอื่นๆ ที่เกี่ยวข้องกับการปฏิบัติงาน
|
||||
</div>
|
||||
<div class="col-12 row q-col-gutter-md">
|
||||
<div class="col-12">
|
||||
|
|
@ -2067,7 +2067,7 @@ onMounted(async () => {
|
|||
<div class="col-12 row">
|
||||
<div class="col-12 text-weight-bold text-dark">
|
||||
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
|
||||
3.5 อื่น ๆ (ถ้ามี)
|
||||
3.5 อื่นๆ (ถ้ามี)
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
|
|
@ -2186,7 +2186,7 @@ onMounted(async () => {
|
|||
</div>
|
||||
<div class="col-12 text-top2 items-center">
|
||||
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
|
||||
4.4 การอบรมอื่น ๆ ที่หน่วยงานกำหนด (ถ้ามี)
|
||||
4.4 การอบรมอื่นๆ ที่หน่วยงานกำหนด (ถ้ามี)
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
|
|
|
|||
|
|
@ -453,9 +453,7 @@ onMounted(() => {
|
|||
<div
|
||||
class="row q-pa-sm text-weight-medium items-center q-col-gutter-sm"
|
||||
>
|
||||
<div class="col-8">
|
||||
4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด (ถ้ามี)
|
||||
</div>
|
||||
<div class="col-8">4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</div>
|
||||
<div class="col-2">
|
||||
<q-input
|
||||
bg-color="white"
|
||||
|
|
@ -511,7 +509,7 @@ onMounted(() => {
|
|||
/>
|
||||
</div>
|
||||
<div class="col-12 text-dark text-weight-bold">
|
||||
เหตุผลอื่น ๆ ในการพิจารณา
|
||||
เหตุผลอื่นๆ ในการพิจารณา
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
|
|
|
|||
|
|
@ -99,8 +99,8 @@ function nextPage() {
|
|||
</q-tab>
|
||||
</q-tabs>
|
||||
<div>
|
||||
<q-btn color="blue" flat dense icon="mdi-plus" @click="nextPage">
|
||||
<q-tooltip> เพิ่ม </q-tooltip>
|
||||
<q-btn color="primary" flat dense icon="mdi-plus" @click="nextPage">
|
||||
<q-tooltip> เพิ่มข้อมูล </q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1988,7 +1988,7 @@ onMounted(async () => {
|
|||
<q-item dense tag="label" v-ripple>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
|
|
@ -2134,8 +2134,7 @@ onMounted(async () => {
|
|||
<q-item dense>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด
|
||||
(ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
|
|
|||
|
|
@ -1528,8 +1528,7 @@ onMounted(async () => {
|
|||
<q-item dense tag="label" v-ripple>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด
|
||||
(ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
|
|
@ -1645,8 +1644,7 @@ onMounted(async () => {
|
|||
<q-item dense tag="label" v-ripple>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด
|
||||
(ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
|
|
|
|||
|
|
@ -568,8 +568,15 @@ onMounted(async () => {
|
|||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
<q-btn color="blue" rounded flat dense icon="mdi-plus" @click="addData">
|
||||
<q-tooltip> เพิ่ม </q-tooltip>
|
||||
<q-btn
|
||||
color="primary"
|
||||
rounded
|
||||
flat
|
||||
dense
|
||||
icon="mdi-plus"
|
||||
@click="addData"
|
||||
>
|
||||
<q-tooltip> เพิ่มข้อมูล </q-tooltip>
|
||||
</q-btn>
|
||||
</q-toolbar>
|
||||
</div>
|
||||
|
|
@ -2106,7 +2113,7 @@ onMounted(async () => {
|
|||
<q-item dense tag="label" v-ripple>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
<q-item-section side>
|
||||
|
|
@ -2251,7 +2258,7 @@ onMounted(async () => {
|
|||
<q-item dense>
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
>4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
|
|
|||
|
|
@ -275,10 +275,9 @@ onMounted(async () => {
|
|||
<div class="row">
|
||||
<q-btn
|
||||
@click="router.push(`/probation/add/${profileId}`)"
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="add"
|
||||
color="primary"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
<q-tooltip>เพิ่มงานที่ได้รับมอบหมาย</q-tooltip>
|
||||
|
|
@ -315,7 +314,6 @@ onMounted(async () => {
|
|||
outlined
|
||||
emit-value
|
||||
map-options
|
||||
|
||||
options-dense
|
||||
option-value="name"
|
||||
style="min-width: 140px"
|
||||
|
|
|
|||
|
|
@ -135,10 +135,9 @@ onMounted(async () => {
|
|||
<div class="q-pb-sm row">
|
||||
<div>
|
||||
<q-btn
|
||||
size="14px"
|
||||
flat
|
||||
dense
|
||||
color="blue"
|
||||
color="primary"
|
||||
@click="clickAdd"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ onMounted(async () => {
|
|||
row-key="id"
|
||||
:paging="true"
|
||||
:visible-columns="visibleColumns"
|
||||
:rows-per-page-options="[1, 25, 50, 100]"
|
||||
:rows-per-page-options="[10, 25, 50, 100]"
|
||||
@update:pagination="updatePagination"
|
||||
>
|
||||
<template v-slot:header="props">
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ const itemsDevelopmentAction = ref<DataItemsDevelopment[]>([
|
|||
},
|
||||
{
|
||||
value: "other1",
|
||||
label: "อื่น ๆ (ระบุ)",
|
||||
label: "อื่นๆ (ระบุ)",
|
||||
},
|
||||
]);
|
||||
//20 การเรียนรู้จากผู้อื่น (Coach/Mentor/Consulting)
|
||||
|
|
@ -112,7 +112,7 @@ const itemsDevelopmentPerson = ref<DataItemsDevelopment[]>([
|
|||
{ value: "team_meeting", label: "การประชุมทีม (Team meeting)" },
|
||||
{ value: "consulting", label: "การให้คำปรึกษา (Consulting)" },
|
||||
{ value: "feedback", label: "การให้ข้อคิดเห็น/เสนอแนะ (Feedback)" },
|
||||
{ value: "other2", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other2", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
//10 การฝึกอบรมอื่นๆ
|
||||
const itemsDevelopmentTraining = ref<DataItemsDevelopment[]>([
|
||||
|
|
@ -135,7 +135,7 @@ const itemsDevelopmentTraining = ref<DataItemsDevelopment[]>([
|
|||
},
|
||||
{ value: "meeting", label: "การประชุม (Meeting)" },
|
||||
{ value: "seminar", label: "การสัมมนา (Seminar)" },
|
||||
{ value: "other3", label: "อื่น ๆ (ระบุ)" },
|
||||
{ value: "other3", label: "อื่นๆ (ระบุ)" },
|
||||
]);
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -304,9 +304,7 @@ onMounted(() => {
|
|||
</div>
|
||||
<q-separator class="q-my-xs" />
|
||||
<div class="row q-gutter-md align-center q-pl-md">
|
||||
<div class="col-8">
|
||||
4. การอบรมอื่น ๆ ตามที่หน่วยงานกำหนด (ถ้ามี)
|
||||
</div>
|
||||
<div class="col-8">4. การอบรมอื่นๆ ตามที่หน่วยงานกำหนด (ถ้ามี)</div>
|
||||
<div class="col">
|
||||
<q-input
|
||||
outlined
|
||||
|
|
@ -366,7 +364,7 @@ onMounted(() => {
|
|||
|
||||
<div class="col-xs-12 col-sm-11">
|
||||
<div class="col-12 text-top0 row items-center">
|
||||
เหตุผลอื่น ๆ ในการพิจารณา
|
||||
เหตุผลอื่นๆ ในการพิจารณา
|
||||
</div>
|
||||
<q-input
|
||||
type="textarea"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue