Merge branch 'develop' of github.com:Frappet/bma-ehr-frontend into me

This commit is contained in:
Thanit Konmek 2023-08-21 15:14:54 +07:00
commit a3eabec197
12 changed files with 362 additions and 375 deletions

View file

@ -150,4 +150,5 @@ export default {
otherReport: (id: string) => `${placemenOther}/report/${id}`,
otherByid: (id: string) => `${placemenOther}/${id}`,
userPlacement:(id:string) => `${placement}/user/${id}`
};

View file

@ -41,17 +41,17 @@ export default {
//แบบประเมินผล (ผู้บังคับบัญชา)
evaluateCreate: (id: string) => `${evaluate}/evaluate/create?assign_id=${id}`,
evaluatecommader: (id: string, no: string) => `${evaluate}/evaluate?assign_id=${id}&evaluate_no=${no}`,
createformCommader: (id: string) => `${evaluate}/evaluate?id=${id}`,
createformCommader: (id: string) => `${evaluate}/evaluate?assign_id=${id}`,
//แบบประเมินผล (คณะกรรมการ)
evaluateChairman: (id: string) => `${evaluate}/evaluate-chairman/create?assign_id=${id}`,
evaluateRoundChairman: (id: string, no: string) => `${evaluate}/evaluate-chairman?assign_id=${id}&evaluate_no=${no}`,
createformChairman: (id: string) => `${evaluate}/evaluate-chairman?id=${id}`,
createformChairman: (id: string) => `${evaluate}/evaluate-chairman?assign_id=${id}`,
//แบบรายงาน
evaluateReportcreate: (id: string) => `${evaluate}/evaluate-result/create?assign_id=${id}`,
evaluateReport: (id: string) => `${evaluate}/evaluate-result?assign_id=${id}`,
createformReport: (id: string) => `${evaluate}/evaluate-result?id=${id}`,
createformReport: (id: string) => `${evaluate}/evaluate-result?assign_id=${id}`,

View file

@ -13,7 +13,7 @@
@click="router.go(-1)"
v-if="routeName == 'probationWorkAdd'"
/>
<div v-if="routeName == 'probationWorkAdd'">
<div v-if="routeName !== 'probationWorkAdd'">
เพมแบบมอบหมายงานการทดลองปฏหนาทราชการ
</div>
<div v-else>แบบมอบหมายงานการทดลองปฏิบัติหน้าที่ราชการ</div>
@ -117,7 +117,9 @@
:locale="'th'"
autoApply
borderless
:readonly="isDatePicker2Readonly|| routeName !== 'probationWorkAdd'"
:readonly="
isDatePicker2Readonly || routeName !== 'probationWorkAdd'
"
:enableTimePicker="false"
week-start="0"
>
@ -158,10 +160,40 @@
แลการทดลองปฏหนาทราชการ (อาจมไดมากกว 1 คน)
</div>
<div class="col-12 row q-col-gutter-md">
<div v-if="status == true" class="col-12 row q-col-gutter-md">
<q-select
:rules="[(val) => !!val || 'กรุณาเลือกผู้ดูเเล']"
option-value="personal_id"
option-value="id"
:options="filtermantor(OPcaretaker, [caretaker2])"
class="col-xs-12 col-sm-6"
:readonly="routeName != 'probationWorkAdd'"
dense
hide-bottom-space
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="caretaker1"
:label="`ผู้ดูแลคนที่ 1`"
option-label="fullName"
/>
<q-select
:rules="[(val) => !!val || 'กรุณาเลือกผู้ดูเเล']"
:options="filtermantor(OPcaretaker, [caretaker1])"
option-value="id"
option-label="fullName"
hide-bottom-space
class="col-xs-12 col-sm-6"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="caretaker2"
:label="`ผู้ดูแลคนที่ 2`"
/>
</div>
<div v-else class="col-12 row q-col-gutter-md">
<q-select
:rules="[(val) => !!val || 'กรุณาเลือกผู้ดูเเล']"
option-value="id"
:options="filtermantor(OPcaretaker, [caretaker2])"
class="col-xs-12 col-sm-6"
:readonly="routeName != 'probationWorkAdd'"
@ -176,7 +208,7 @@
<q-select
:rules="[(val) => !!val || 'กรุณาเลือกผู้ดูเเล']"
:options="filtermantor(OPcaretaker, [caretaker1])"
option-value="personal_id"
option-value="id"
option-label="name"
hide-bottom-space
class="col-xs-12 col-sm-6"
@ -300,7 +332,9 @@
>
<div class="col-11 q-my-xs">
<q-select
:option-label="(item) => `${item.title}-${item.description}`"
:option-label="
(item) => `${item.title}-${item.description}`
"
option-value="id"
map-options
:rules="
@ -322,17 +356,16 @@
/>
</div>
<div
v-if="index > 2"
v-if="index > 2"
class="col-xs-12 col-sm-1 flex justify-center items-center"
>
<q-btn
v-if="routeName == 'probationWorkAdd'"
v-if="routeName == 'probationWorkAdd'"
flat
round
color="red"
icon="mdi-trash-can-outline"
@click="deleteknowledge(index)"
/>
</div>
</div>
@ -371,13 +404,11 @@
v-if="item.status_select === 1"
v-model="item.checked"
dense
:disable="routeName != 'probationWorkAdd'"
/>
</div>
<div v-if="index === 0" class="col-11" >
<div v-if="index === 0" class="col-11">
{{ item.description }}
</div>
</div>
</div>
@ -911,7 +942,6 @@
</template></q-select
>
</div>
</div>
</div>
</div>
@ -1147,7 +1177,7 @@
<li>
นๆ (าม)
<q-input
:readonly="routeName != 'probationWorkAdd'"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
@ -1305,8 +1335,22 @@
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
:options="filtermantor(OPcaretaker, [caretaker2])"
option-value="personal_id"
v-if="status == true"
:options="filtermantor(OPcaretaker, [caretaker2])"
option-value="id"
option-label="fullName"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="caretaker1"
label="ผู้ดูแลคนที่ 1"
/>
<q-select
v-else
:options="filtermantor(OPcaretaker, [caretaker2])"
option-value="id"
option-label="name"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
@ -1358,8 +1402,22 @@
</datepicker>
</div>
<q-select
:options="filtermantor(OPcaretaker, [caretaker1])"
option-value="personal_id"
v-if="status == true"
:options="filtermantor(OPcaretaker, [caretaker1])"
option-value="id"
option-label="fullName"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="caretaker2"
label="ผู้ดูแลคนที่ 2"
/>
<q-select
v-else
:options="filtermantor(OPcaretaker, [caretaker1])"
option-value="id"
option-label="name"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
@ -1420,8 +1478,22 @@
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
v-if="status == true"
:options="OPcommander"
option-value="personal_id"
option-value="id"
option-label="fullName"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="commander"
label="ผู้บังคับบัญชา"
/>
<q-select
v-else
:options="OPcommander"
option-value="id"
option-label="name"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
@ -1481,8 +1553,22 @@
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
v-if="status == true"
:options="OPchairman"
option-value="personal_id"
option-value="id"
option-label="fullName"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
dense
borderless
:outlined="routeName == 'probationWorkAdd'"
v-model="chairman"
label="ประธานกรรมการ"
/>
<q-select
v-else
:options="OPchairman"
option-value="id"
option-label="name"
class="col-xs-12 col-sm-8"
:readonly="routeName != 'probationWorkAdd'"
@ -1492,7 +1578,6 @@
v-model="chairman"
label="ประธานกรรมการ"
/>
</div>
</div>
</div>
@ -1529,7 +1614,7 @@ const val1 = ref([
checked: false,
},
]);
const status = ref<boolean>(true);
const router = useRouter();
const mixin = useCounterMixin();
const {
@ -1540,7 +1625,7 @@ const {
messageError,
showLoader,
hideLoader,
dialogConfirm
dialogConfirm,
} = mixin;
const filterData = (options: any[], excludedGroups: any[]) => {
return options.filter(
@ -1549,10 +1634,7 @@ const filterData = (options: any[], excludedGroups: any[]) => {
};
const filtermantor = (options: any[], excludedGroups: any[]) => {
return options.filter(
(item) =>
!excludedGroups.some(
(group) => group && group.personal_id === item.personal_id
)
(item) => !excludedGroups.some((group) => group && group.id === item.id)
);
};
const filterMain = (options: any[], excludedGroups: any[]) => {
@ -1636,35 +1718,38 @@ const monthSelect = ref<number | string>();
const caretaker1 = ref<string>("");
const caretaker2 = ref<string>("");
const OPcaretaker = ref<
{
personal_id: string;
name: string;
PositionId: string;
PositionLevelId: string;
PositionLineId: string;
OrganizationOrganization: string;
}[]
Array<{
id: string;
prefix: string;
firstName: string;
lastName: string;
fullName: string;
citizenId: number;
isDirector: boolean;
}>[]
>([]);
const OPcommander = ref<
{
personal_id: string;
name: string;
PositionId: string;
PositionLevelId: string;
PositionLineId: string;
OrganizationOrganization: string;
}[]
Array<{
id: string;
prefix: string;
firstName: string;
lastName: string;
fullName: string;
citizenId: number;
isDirector: boolean;
}>[]
>([]);
const OPchairman = ref<
{
personal_id: string;
name: string;
PositionId: string;
PositionLevelId: string;
PositionLineId: string;
OrganizationOrganization: string;
}[]
Array<{
id: string;
prefix: string;
firstName: string;
lastName: string;
fullName: string;
citizenId: number;
isDirector: boolean;
}>[]
>([]);
interface MonthOption {
value: number;
@ -1703,7 +1788,7 @@ const OPknowledge = ref<
Array<{
id: number;
title: number;
description:string;
description: string;
level: string;
}>
>([]);
@ -1752,6 +1837,38 @@ interface CheckboxItem {
}
const checkRule = ref<CheckboxItem[]>([]);
const getUser = async () => {
await http.get(config.API.userPlacement(personalId)).then((res: any) => {
const data = res.data.result;
OPcaretaker.value = data.caregiver.map((item: any) => ({
id: item.id,
prefix: item.prefix,
firstName: item.firstName,
lastName: item.lastName,
fullName: item.prefix + "" + item.firstName + " " + item.lastName,
citizenId: item.citizenId,
isDirector: item.isDirector,
}));
OPcommander.value = data.commander.map((item: any) => ({
id: item.id,
prefix: item.prefix,
firstName: item.firstName,
lastName: item.lastName,
fullName: item.prefix + "" + item.firstName + " " + item.lastName,
citizenId: item.citizenId,
isDirector: item.isDirector,
}));
OPchairman.value = data.chairman.map((item: any) => ({
id: item.id,
prefix: item.prefix,
firstName: item.firstName,
lastName: item.lastName,
fullName: item.prefix + "" + item.firstName + " " + item.lastName,
citizenId: item.citizenId,
isDirector: item.isDirector,
}));
});
};
const getAssignNew = async (id: string) => {
await http.get(config.API.newAssign(id)).then((res: any) => {
const data = res.data.data;
@ -1762,9 +1879,9 @@ const getAssignNew = async (id: string) => {
console.log("Assign-New", data);
monthOp.push(monthOption);
monthSelect.value = `${data.assign_month} เดือน`;
OPcaretaker.value = data.mentors;
OPcommander.value = [data.commander];
OPchairman.value = [data.chairman];
// OPcaretaker.value = data.mentors;
// OPcommander.value = [data.commander];
// OPchairman.value = [data.chairman];
fullname.value = data.person.name;
position.value = data.person.OrganizationOrganization;
});
@ -1810,7 +1927,6 @@ const getSkill = async (id: string) => {
const getLaw = async (id: string) => {
await http.get(config.API.lawOptions(id)).then((res: any) => {
checkRule.value = res.data.data;
});
};
@ -1883,23 +1999,23 @@ const putData = (id: string) => {
const assign_director = [
{
personal_id: caretaker1.value.personal_id,
personal_id: caretaker1.value.id,
role: "mentor",
dated: date2.value instanceof Date ? dateToISO(date2.value) : null,
},
{
personal_id: caretaker2.value.personal_id,
personal_id: caretaker2.value.id,
role: "mentor",
dated: date3.value instanceof Date ? dateToISO(date3.value) : null,
},
{
personal_id: commander.value.personal_id,
personal_id: commander.value.id,
role: "commander",
dated: date4.value instanceof Date ? dateToISO(date4.value) : null,
},
{
personal_id: chairman.value.personal_id,
role: "chairman"
personal_id: chairman.value.id,
role: "chairman",
},
];
@ -1947,22 +2063,22 @@ const putData = (id: string) => {
return data;
};
const saveData = (id:string) => {
dialogConfirm($q,()=>DataSave(id))
}
const saveData = (id: string) => {
dialogConfirm($q, () => DataSave(id));
};
const DataSave = async (id: string) => {
await myForm.value.validate().then((result: boolean) => {
await myForm.value.validate().then((result: boolean) => {
if (result) {
const data = putData(id);
http
.post(config.API.saveFinish(id), data)
.then((res) => {
router.push(`/probation/detail/${id}`);
})
.catch((e) => {})
.finally(() => {
hideLoader();
});
const data = putData(id);
http
.post(config.API.saveFinish(id), data)
.then((res) => {
router.push(`/probation/detail/${id}`);
})
.catch((e) => {})
.finally(() => {
hideLoader();
});
} else {
notifyError($q, "กรุณากรอกข้อมูลให้ครบ");
}
@ -2010,61 +2126,67 @@ const skillIds = [1, 2, 3, 4];
const getAssign = async () => {
await http.get(config.API.probationsGetAssign(assignId.value)).then((res) => {
status.value = false;
const data = res.data.data;
console.log("ASSIGN-list ==>", data);
fullname.value = data.profile.name
position.value = data.profile.OrganizationOrganization
date_start.value = data.assign.date_start
date_finish.value = data.assign.date_finish
date1.value = data.assign.experimenter_dated
date2.value = data.mentors[0].dated
date3.value = data.mentors[1].dated
date4.value = data.commander.dated
activity_desc.value = data.jobs.map((job:any) => job.activity_desc);
goal_desc.value = data.jobs.map((job:any) => job.goal_desc);
activityCount.value = data.jobs.length
fullname.value = data.profile.name;
position.value = data.profile.OrganizationOrganization;
date_start.value = data.assign.date_start;
date_finish.value = data.assign.date_finish;
date1.value = data.assign.experimenter_dated;
date2.value = data.mentors[0].dated;
date3.value = data.mentors[1].dated;
date4.value = data.commander.dated;
activity_desc.value = data.jobs.map((job: any) => job.activity_desc);
goal_desc.value = data.jobs.map((job: any) => job.goal_desc);
activityCount.value = data.jobs.length;
caretaker1.value = data.mentors[0];
caretaker2.value = data.mentors[1];
chairman.value = data.chairman.name;
commander.value = data.commander.name
knowledge.value = data.knowledges.map((id:any)=> id.id)
knowledgeCount.value = data.knowledges.length
other_desc.value = data.assign.other_desc
other4_desc.value = data.assign.other4_desc
other5_no1_desc.value = data.assign.other5_no1_desc
commander.value = data.commander.name;
knowledge.value = data.knowledges.map((id: any) => id.id);
knowledgeCount.value = data.knowledges.length;
other_desc.value = data.assign.other_desc;
other4_desc.value = data.assign.other4_desc;
other5_no1_desc.value = data.assign.other5_no1_desc;
const skills = data.skills.map((skills: any) => ({
id: skills.id,
title: skills.title,
level: skills.level,
level_description: skills.description,
}));
[skill.value, skill2.value, skill3.value, skill4.value] = skills;
[skill.value, skill2.value, skill3.value, skill4.value] = skills;
main.value = data.competencys[0]
main2.value = data.competencys[1]
main3.value = data.competencys[2]
main4.value = data.competencys[3]
main5.value = data.competencys[4]
main.value = data.competencys[0];
main2.value = data.competencys[1];
main3.value = data.competencys[2];
main4.value = data.competencys[3];
main5.value = data.competencys[4];
group.value = data.competency_groups[0]
group2.value = data.competency_groups[1]
group3.value = data.competency_groups[2]
group.value = data.competency_groups[0];
group2.value = data.competency_groups[1];
group3.value = data.competency_groups[2];
output_desc.value = data.outputs.map((output: any) => output.output_desc);
indicator_desc.value = data.outputs.map((output: any) => output.indicator_desc);
indicator_desc.value = data.outputs.map(
(output: any) => output.indicator_desc
);
productivityCount.value = data.outputs.length;
checkRule.value = data.laws.map((law: any) => ({
id: law.law_id,
checked: law.selected,
description: law.description,
status_select: law.status_select,
}));
console.log("🚀 ~ file: FormAssign.vue:2009 ~ awaithttp.get ~ checkRule:", checkRule.value)
})
id: law.law_id,
checked: law.selected,
description: law.description,
status_select: law.status_select,
}));
console.log(
"🚀 ~ file: FormAssign.vue:2009 ~ awaithttp.get ~ checkRule:",
checkRule.value
);
});
};
onMounted(async() => {
onMounted(async () => {
await getUser();
await getLaw(personalId);
await getcompetency(personalId);
await getCompetencyGroup(personalId);

View file

@ -334,6 +334,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="knowledge_level"
max="5"
size="sm"
@ -373,6 +374,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="skill_level"
max="5"
size="sm"
@ -412,6 +414,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="competency_level"
max="5"
size="sm"
@ -451,6 +454,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="learn_level"
max="5"
size="sm"
@ -491,6 +495,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="apply_level"
max="5"
size="sm"
@ -530,6 +535,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="success_level"
max="5"
size="sm"
@ -566,6 +572,7 @@ const putformData = () => {
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
1.7 นๆ
<q-checkbox
:disable="!status"
class="q-ml-sm"
dense
v-model="etc"
@ -585,6 +592,7 @@ const putformData = () => {
<q-item-section class="q-ml-md">
<q-item-label>
<q-input
:disable="!status"
v-model="achievement_other.text"
label="กรอกอื่นๆ"
dense
@ -602,6 +610,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="achievement_other.level"
max="5"
size="sm"
@ -655,6 +664,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="conduct_level[i]"
:val="list.id"
max="5"
@ -702,6 +712,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="moral_level[i]"
:val="list.id"
max="5"
@ -749,6 +760,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="discipline_level[i]"
:val="list.id"
max="5"
@ -784,6 +796,7 @@ const putformData = () => {
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
2.4 นๆ
<q-checkbox
:disable="!status"
class="q-ml-sm"
dense
v-model="etc2"
@ -803,6 +816,7 @@ const putformData = () => {
<q-item-section>
<q-item-label>
<q-input
:disable="!status"
v-model="behavio_orther.text"
label="กรอกอื่นๆ"
dense
@ -820,6 +834,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="behavio_orther.level"
max="5"
size="sm"
@ -856,6 +871,7 @@ const putformData = () => {
ดเด (ไมเก 5 บรรท)
</div>
<q-input
:disable="!status"
outlined
dense
v-model="behavio_strength_desc"
@ -875,6 +891,7 @@ const putformData = () => {
งทควรปรบปร (ไมเก 5 บรรท)
</div>
<q-input
:disable="!status"
outlined
dense
v-model="behavior_improve_desc"
@ -912,6 +929,7 @@ const putformData = () => {
<q-item-section side>
<div class="row">
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="orientation"
@ -919,6 +937,7 @@ const putformData = () => {
label="ดำเนินการเเล้ว"
/>
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="orientation"
@ -936,6 +955,7 @@ const putformData = () => {
<q-item-section side>
<div class="row">
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="self_learning"
@ -943,6 +963,7 @@ const putformData = () => {
label="ดำเนินการเเล้ว"
/>
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="self_learning"
@ -960,6 +981,7 @@ const putformData = () => {
<q-item-section side>
<div class="row">
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="training_seminar"
@ -967,6 +989,7 @@ const putformData = () => {
label="ดำเนินการเเล้ว"
/>
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="training_seminar"
@ -987,6 +1010,7 @@ const putformData = () => {
<q-item-section side>
<div class="row">
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="other_training"
@ -994,6 +1018,7 @@ const putformData = () => {
label="ดำเนินการเเล้ว"
/>
<q-radio
:disable="!status"
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
v-model="other_training"
@ -1033,6 +1058,7 @@ const putformData = () => {
borderless
:enableTimePicker="false"
week-start="0"
:readonly="!status"
>
<template #year="{ year }">
{{ year + 543 }}
@ -1042,6 +1068,7 @@ const putformData = () => {
</template>
<template #trigger>
<q-input
:disable="!status"
outlined
dense
class="full-width datepicker col-3"

View file

@ -424,6 +424,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="learn_level"
max="5"
size="sm"
@ -464,6 +465,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="apply_level"
max="5"
size="sm"
@ -503,6 +505,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="success_level"
max="5"
size="sm"
@ -539,6 +542,7 @@ const putformData = () => {
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
1.4 นๆ
<q-checkbox
:disable="!status"
class="q-ml-sm"
dense
v-model="etc"
@ -558,6 +562,7 @@ const putformData = () => {
<q-item-section class="q-ml-md">
<q-item-label>
<q-input
:disable="!status"
v-model="achievement_other.text"
label="กรอกอื่นๆ"
dense
@ -575,6 +580,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="achievement_other.level"
max="5"
size="sm"
@ -646,6 +652,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="conduct_level[i]"
:val="list.id"
max="5"
@ -693,6 +700,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="moral_level[i]"
:val="list.id"
max="5"
@ -740,6 +748,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="discipline_level[i]"
:val="list.id"
max="5"
@ -775,6 +784,7 @@ const putformData = () => {
<q-icon name="mdi-label" color="grey-4" class="q-pr-sm" />
2.4 นๆ
<q-checkbox
:disable="!status"
class="q-ml-sm"
dense
v-model="etc2"
@ -794,6 +804,7 @@ const putformData = () => {
<q-item-section>
<q-item-label>
<q-input
:disable="!status"
v-model="behavio_orther.text"
label="กรอกอื่นๆ"
dense
@ -811,6 +822,7 @@ const putformData = () => {
</q-item-section>
<q-item-section side>
<q-rating
:disable="!status"
v-model="behavio_orther.level"
max="5"
size="sm"
@ -993,10 +1005,11 @@ const putformData = () => {
<div class="row q-gutter-md align-center">
<div class="col-8">1. การปฐมนเทศ</div>
<div class="col">
<q-input dense type="number" v-model="orientation" />
<q-input :disable="!status" dense type="number" v-model="orientation" />
</div>
<div class="col">
<q-input
:disable="!status"
dense
type="number"
v-model="orientation_percent"
@ -1007,10 +1020,11 @@ const putformData = () => {
<div class="row q-gutter-md align-center">
<div class="col-8">2. การเรยนรวยตนเอง</div>
<div class="col">
<q-input dense type="number" v-model="self_learning" />
<q-input :disable="!status" dense type="number" v-model="self_learning" />
</div>
<div class="col">
<q-input
:disable="!status"
dense
type="number"
v-model="self_learning_percent"
@ -1021,10 +1035,11 @@ const putformData = () => {
<div class="row q-gutter-md align-center">
<div class="col-8">3. การอบรมสมนารวมก</div>
<div class="col">
<q-input dense type="number" v-model="training_seminar" />
<q-input :disable="!status" dense type="number" v-model="training_seminar" />
</div>
<div class="col">
<q-input
:disable="!status"
dense
type="number"
v-model="training_seminar_percent"
@ -1037,10 +1052,11 @@ const putformData = () => {
4. การอบรมอ ตามทหนวยงานกำหนด (าม)
</div>
<div class="col">
<q-input dense type="number" v-model="other_training" />
<q-input :disable="!status" dense type="number" v-model="other_training" />
</div>
<div class="col">
<q-input
:disable="!status"
dense
type="number"
v-model="other_training_percent"
@ -1169,6 +1185,7 @@ const putformData = () => {
</div>
<div class="col-12">
<q-select
:disable="!status"
class="col-xs-12"
dense
v-model="develop_result"
@ -1209,6 +1226,7 @@ const putformData = () => {
borderless
:enableTimePicker="false"
week-start="0"
:readonly="!status"
>
<template #year="{ year }">
{{ year + 543 }}
@ -1219,6 +1237,7 @@ const putformData = () => {
<template #trigger>
<q-input
outlined
:disable="!status"
dense
class="full-width datepicker col-3"
:model-value="
@ -1253,6 +1272,7 @@ const putformData = () => {
/>
<div class="col-xs-12 col-sm-4">
<datepicker
:readonly="!status"
menu-class-name="modalfix"
v-model="dateAutherise"
:locale="'th'"
@ -1269,6 +1289,7 @@ const putformData = () => {
</template>
<template #trigger>
<q-input
:disable="!status"
outlined
dense
class="full-width datepicker col-3"
@ -1304,6 +1325,7 @@ const putformData = () => {
/>
<div class="col-xs-12 col-sm-4">
<datepicker
:readonly="!status"
menu-class-name="modalfix"
v-model="dateAutherise"
:locale="'th'"
@ -1320,6 +1342,7 @@ const putformData = () => {
</template>
<template #trigger>
<q-input
:disable="!status"
outlined
dense
class="full-width datepicker col-3"
@ -1361,6 +1384,7 @@ const putformData = () => {
/>
<div class="col-xs-12 col-sm-4">
<datepicker
:readonly="!status"
menu-class-name="modalfix"
v-model="dateAutherise"
:locale="'th'"
@ -1377,6 +1401,7 @@ const putformData = () => {
</template>
<template #trigger>
<q-input
:disable="!status"
outlined
dense
class="full-width datepicker col-3"

View file

@ -26,7 +26,7 @@ const assign = ref<any>([]);
const mentors = ref<any>([]);
const commander = ref<any>([]);
const status = ref<boolean>(true);
const evaluate = ref<any>([]);
// const evaluate = ref<any>([]);
onMounted(() => {
fecthAssign(assignId.value);
@ -68,7 +68,7 @@ const director1_dated = ref<any>("");
const director2_dated = ref<any>("");
const fecthResult = async (id: string) => {
await http
.get(config.API.evaluateReport(id))
.get(config.API.createformReport(id))
.then((res: any) => {
let data = res.data.data.evaluate;
console.log(data);
@ -124,7 +124,7 @@ const postData = async () => {
director2_dated: director2_dated.value,
};
console.log("postData===>", data);
// console.log("postData===>", data);
await http
.post(config.API.createformReport(assignId.value), data)
.then(() => {
@ -146,15 +146,8 @@ const postData = async () => {
<div class="row col-12">
<div class="col-12 row q-col-gutter-md">
<div class="col-xs-12 col-sm-6">
<datepicker
menu-class-name="modalfix"
v-model="date_start"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<datepicker menu-class-name="modalfix" v-model="date_start" :locale="'th'" autoApply borderless
:enableTimePicker="false" week-start="0">
<template #year="{ year }">
{{ year + 543 }}
</template>
@ -162,22 +155,10 @@ const postData = async () => {
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
outlined
dense
class="full-width datepicker"
:model-value="
date_start != null ? date2Thai(date_start) : null
"
:label="`${'ระหว่างวันที่'}`"
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่'}`]"
>
<q-input outlined dense class="full-width datepicker" :model-value="date_start != null ? date2Thai(date_start) : null
" :label="`${'ระหว่างวันที่'}`" :rules="[(val) => !!val || `${'กรุณาเลือกวันที่'}`]">
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
</q-icon>
</template>
</q-input>
@ -185,15 +166,8 @@ const postData = async () => {
</datepicker>
</div>
<div class="col-xs-12 col-sm-6">
<datepicker
menu-class-name="modalfix"
v-model="date_finish"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<datepicker menu-class-name="modalfix" v-model="date_finish" :locale="'th'" autoApply borderless
:enableTimePicker="false" week-start="0">
<template #year="{ year }">
{{ year + 543 }}
</template>
@ -201,22 +175,10 @@ const postData = async () => {
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
outlined
dense
class="full-width datepicker"
:model-value="
date_finish != null ? date2Thai(date_finish) : null
"
:label="`${'ถึงวันที่'}`"
:rules="[(val) => !!val || `${'กรุณาเลือกวันที่'}`]"
>
<q-input outlined dense class="full-width datepicker" :model-value="date_finish != null ? date2Thai(date_finish) : null
" :label="`${'ถึงวันที่'}`" :rules="[(val) => !!val || `${'กรุณาเลือกวันที่'}`]">
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
</q-icon>
</template>
</q-input>
@ -228,63 +190,29 @@ const postData = async () => {
<div class="col-12 row q-mt-xs">
<div class="col-xs-12 col-sm-6">
<q-select
:rules="[
(val) =>
!!val || 'กรุณาเลือกการพัฒนาในระหว่างทดลองปฏิบัติหน้าที่ราชการ',
]"
hide-bottom-space
:options="options"
class="col-xs-12 col-sm-6"
dense
borderless
emit-value
map-options
option-label="label"
option-value="value"
outlined
v-model="develop"
label="การพัฒนาในระหว่างทดลองปฏิบัติหน้าที่ราชการ"
/>
<q-select :rules="[
(val) =>
!!val || 'กรุณาเลือกการพัฒนาในระหว่างทดลองปฏิบัติหน้าที่ราชการ',
]" hide-bottom-space :options="options" class="col-xs-12 col-sm-6" dense borderless emit-value map-options
option-label="label" option-value="value" outlined v-model="develop"
label="การพัฒนาในระหว่างทดลองปฏิบัติหน้าที่ราชการ" />
</div>
</div>
<div class="col-12 row q-mt-lg">
<div class="col-xs-12 col-sm-6">
<q-select
:rules="[
(val) =>
!!val || 'กรุณาเลือกผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ',
]"
hide-bottom-space
:options="optionsResult"
class="col-xs-12 col-sm-6"
dense
borderless
emit-value
map-options
option-label="label"
option-value="value"
outlined
v-model="result"
label="ผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ"
/>
<q-select :rules="[
(val) =>
!!val || 'กรุณาเลือกผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ',
]" hide-bottom-space :options="optionsResult" class="col-xs-12 col-sm-6" dense borderless emit-value
map-options option-label="label" option-value="value" outlined v-model="result"
label="ผลการประเมินการทดลองปฏิบัติหน้าที่ราชการ" />
</div>
</div>
<div class="col-12 row q-mt-lg">
<div class="col-12">
<q-input
hide-bottom-space
:readonly="edit"
dense
borderless
:outlined="!edit"
class="bg-white"
type="textarea"
v-model="reson"
label="เหตุผล"
:rules="[(val) => !!val || 'กรุณาระบุเหตุผล']"
/>
<q-input hide-bottom-space :readonly="edit" dense borderless :outlined="!edit" class="bg-white" type="textarea"
v-model="reson" label="เหตุผล" :rules="[(val) => !!val || 'กรุณาระบุเหตุผล']" />
</div>
</div>
@ -298,26 +226,11 @@ const postData = async () => {
ประธานคณะกรรมการประเมนผลการปฏหนาทราชการ
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
class="col-xs-12 col-sm-8"
dense
v-model="director_id"
outlined
:options="commander"
label=""
option-label="name"
disable
/>
<q-select class="col-xs-12 col-sm-8" dense v-model="director_id" outlined :options="commander" label=""
option-label="name" disable />
<div class="col-xs-12 col-sm-4">
<datepicker
menu-class-name="modalfix"
v-model="chairman_dated"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<datepicker menu-class-name="modalfix" v-model="chairman_dated" :locale="'th'" autoApply borderless
:enableTimePicker="false" week-start="0">
<template #year="{ year }">
{{ year + 543 }}
</template>
@ -325,22 +238,10 @@ const postData = async () => {
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
outlined
dense
class="full-width datepicker col-3"
:model-value="
chairman_dated != null ? date2Thai(chairman_dated) : null
"
:label="`${'ลงวันที่'}`"
:rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]"
>
<q-input outlined dense class="full-width datepicker col-3" :model-value="chairman_dated != null ? date2Thai(chairman_dated) : null
" :label="`${'ลงวันที่'}`" :rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]">
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
</q-icon>
</template>
</q-input>
@ -356,25 +257,11 @@ const postData = async () => {
<!-- ความเหนของผอำนาจสงบรรจตามมาตรา 52 -->
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
class="col-xs-12 col-sm-8"
dense
v-model="director_id2"
outlined
:options="optionDirector"
label=""
option-label="name"
/>
<q-select class="col-xs-12 col-sm-8" dense v-model="director_id2" outlined :options="optionDirector" label=""
option-label="name" />
<div class="col-xs-12 col-sm-4">
<datepicker
menu-class-name="modalfix"
v-model="director1_dated"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<datepicker menu-class-name="modalfix" v-model="director1_dated" :locale="'th'" autoApply borderless
:enableTimePicker="false" week-start="0">
<template #year="{ year }">
{{ year + 543 }}
</template>
@ -382,24 +269,12 @@ const postData = async () => {
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
outlined
dense
class="full-width datepicker col-3"
:model-value="
director1_dated != null
? date2Thai(director1_dated)
: null
"
:label="`${'ลงวันที่'}`"
:rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]"
>
<q-input outlined dense class="full-width datepicker col-3" :model-value="director1_dated != null
? date2Thai(director1_dated)
: null
" :label="`${'ลงวันที่'}`" :rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]">
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
</q-icon>
</template>
</q-input>
@ -415,25 +290,11 @@ const postData = async () => {
<!-- อำนาจสงบรรจตามมาตรา 52 -->
</div>
<div class="col-12 row q-col-gutter-md">
<q-select
class="col-xs-12 col-sm-8"
dense
v-model="director_id3"
outlined
:options="optionDirector"
label=""
option-label="name"
/>
<q-select class="col-xs-12 col-sm-8" dense v-model="director_id3" outlined :options="optionDirector" label=""
option-label="name" />
<div class="col-xs-12 col-sm-4">
<datepicker
menu-class-name="modalfix"
v-model="director2_dated"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<datepicker menu-class-name="modalfix" v-model="director2_dated" :locale="'th'" autoApply borderless
:enableTimePicker="false" week-start="0">
<template #year="{ year }">
{{ year + 543 }}
</template>
@ -441,24 +302,12 @@ const postData = async () => {
{{ parseInt(value + 543) }}
</template>
<template #trigger>
<q-input
outlined
dense
class="full-width datepicker col-3"
:model-value="
director2_dated != null
? date2Thai(director2_dated)
: null
"
:label="`${'ลงวันที่'}`"
:rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]"
>
<q-input outlined dense class="full-width datepicker col-3" :model-value="director2_dated != null
? date2Thai(director2_dated)
: null
" :label="`${'ลงวันที่'}`" :rules="[(val) => !!val || `${'กรุณาเลือกลงวันที่'}`]">
<template v-slot:prepend>
<q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-primary)"
>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-primary)">
</q-icon>
</template>
</q-input>
@ -471,12 +320,7 @@ const postData = async () => {
<q-toolbar class="text-primary">
<q-space />
<q-btn
label="บันทึก"
color="secondary"
@click="savaForm"
v-if="status"
/>
<q-btn label="บันทึก" color="secondary" @click="savaForm" v-if="status" />
</q-toolbar>
</q-form>
</div>

View file

@ -41,10 +41,11 @@ const props = defineProps({
});
onMounted(async () => {
// console.log("tab===>", props.tab);
console.log("form tab===>", props.tab);
if (props.tab !== undefined) {
round.value = props.tab.charAt(4);
console.log("round===>", round.value);
// await fecthFormRound(assignId.value, round.value);
}
@ -55,7 +56,7 @@ const fecthFormdata = async (id: string) => {
await http
.get(config.API.formevaluateRecord(id))
.then(async (res: any) => {
console.log(res);
// console.log(res);
evaluate_no.value = res.data.data.evaluate_no;
start_date.value = res.data.data.start_date;
date_finish.value = res.data.data.end_date;

View file

@ -48,7 +48,7 @@ const fecthAssign = async (id: string) => {
// console.log(tabs.value);
})
.catch((e: any) => {
console.log(e);
// console.log(e);
messageError($q, e);
})
.finally(() => {
@ -75,40 +75,7 @@ const addData = () => {
:loop="tabs.length"
v-if="tabs.length > 0"
/>
<!-- <q-header class="bg-grey-1">
<div class="bg-grey-1">
<div class="col-12 row q-gutter-xs-md items-center">
<q-tabs dense v-model="tabHead" active-class="text-primary text-weight-medium" indicator-color="grey-1"
class="text-grey-7">
<q-tab v-for="tabData in tabs" :key="tabData.no" :name="tabData.no" :label="'ครั้งที่' + tabData.no"
@click="changeTab('save' + tabData.no)">
<q-btn size="12px" flat dense icon="mdi-download" :disable="tabHead !== tabData.no"
:color="tabHead !== tabData.no ? 'grey' : 'add'">
<q-tooltip>ดาวนโหลด</q-tooltip>
<q-menu>
<q-list style="min-width: 150px">
<q-item clickable v-close-popup>
<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>
<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-tab>
</q-tabs>
<div>
<q-btn color="blue" flat dense icon="mdi-plus" @click="nextPage">
<q-tooltip> เพ </q-tooltip>
</q-btn>
</div>
</div>
<q-separator />
</div>
</q-header> -->
<q-page-container>
<q-tab-panels v-model="tab" animated>
<q-tab-panel

View file

@ -41,14 +41,14 @@ onMounted(() => {
const fecthAssign = async (id: string) => {
showLoader();
await http
.get(config.API.evaluateCreate(id))
.get(config.API.createformCommader(id))
.then((res: any) => {
if (res.data.data.evaluate_no > 0) {
tabs.value = res.data.data.evaluate;
}
})
.catch((e: any) => {
console.log(e);
// console.log(e);
messageError($q, e);
})
.finally(() => {

View file

@ -37,7 +37,7 @@ onMounted(() => {
const fecthAssign = async (id: string) => {
showLoader();
await http
.get(config.API.evaluateChairman(id))
.get(config.API.createformChairman(id))
.then((res: any) => {
if (res.data.data.evaluate_no > 0) {
tabs.value = res.data.data.evaluate;

View file

@ -1,13 +1,13 @@
<script setup lang="ts">
import { ref, defineAsyncComponent } from "vue";
const tab = ref<string>("save1");
const changeTab = (tabVal: string) => {
tab.value = tabVal
}
// const tab = ref<string>("save1");
// const changeTab = (tabVal: string) => {
// tab.value = tabVal
// }
const Header = defineAsyncComponent(
() => import("@/modules/05_placement/components/probation/FormEvaluation/Header.vue")
);
// const Header = defineAsyncComponent(
// () => import("@/modules/05_placement/components/probation/FormEvaluation/Header.vue")
// );
const FormReport = defineAsyncComponent(
() => import("@/modules/05_placement/components/probation/FormEvaluation/FormReport.vue")
)

View file

@ -75,7 +75,7 @@
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการลาออก</div>
<q-space />
<div class="q-gutter-x-sm" v-if="dataDetail.status === 'PENDING'">
<div class="q-gutter-x-sm" v-if="dataDetail.status === 'WAITTING'">
<q-btn
outline
color="primary"