From bdffdc1abf1fb8b755106a91813a5c3e458dd6ed Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Tue, 6 Aug 2024 16:04:29 +0700 Subject: [PATCH] updated develop form --- .../15_development/components/Budget.vue | 368 +++++++++++++++++ .../components/DialogRecordPerson.vue | 5 +- .../components/FollowResult.vue | 94 +++-- .../15_development/components/MainTab.vue | 71 +++- .../15_development/components/Other.vue | 98 +++-- .../components/ProjectDetail.vue | 126 +++--- .../15_development/components/Risk.vue | 374 ++++++++++++++++++ .../15_development/components/Target.vue | 47 ++- src/modules/15_development/views/MainPage.vue | 2 +- .../15_development/views/RecordPage.vue | 4 +- 10 files changed, 1052 insertions(+), 137 deletions(-) create mode 100644 src/modules/15_development/components/Budget.vue create mode 100644 src/modules/15_development/components/Risk.vue diff --git a/src/modules/15_development/components/Budget.vue b/src/modules/15_development/components/Budget.vue new file mode 100644 index 000000000..ba664a8f2 --- /dev/null +++ b/src/modules/15_development/components/Budget.vue @@ -0,0 +1,368 @@ + + + + + diff --git a/src/modules/15_development/components/DialogRecordPerson.vue b/src/modules/15_development/components/DialogRecordPerson.vue index 290aa1f9a..06ea8b5a4 100644 --- a/src/modules/15_development/components/DialogRecordPerson.vue +++ b/src/modules/15_development/components/DialogRecordPerson.vue @@ -197,7 +197,10 @@ watch( - +
diff --git a/src/modules/15_development/components/FollowResult.vue b/src/modules/15_development/components/FollowResult.vue index 393f05c2c..c6f69eebb 100644 --- a/src/modules/15_development/components/FollowResult.vue +++ b/src/modules/15_development/components/FollowResult.vue @@ -54,6 +54,12 @@ const projectId = ref(route.params.id.toLocaleString()); const checkRoutePermission = ref( route.name == "developmentDetailPage" ); +const status = defineModel("status", { required: true }); +const props = defineProps({ + prevStep: { type: Function, required: true }, + nextStep: { type: Function, required: true }, +}); +const step = ref(""); /** หัวตาราง */ const rows = ref([]); // ข้อมูลรายการ const columns = ref([ @@ -248,29 +254,30 @@ function onClickDeleteIndicator(id: string) { /** save Main data */ function onSubmit() { - dialogConfirm($q, () => { - if (formProject.project === "NOOFFER") { - formProject.isNoPass = false; - formProject.isPassAllocate = false; - formProject.isPassNoAllocate = false; - } else { - formProject.isBudget = false; - formProject.isOutBudget = false; - } - showLoader(); - http - .put(config.API.developmentMainTab("tab4", projectId.value), formProject) - .then(() => { - fetchData(); - success($q, "บันทึกข้อมูลสำเร็จ"); - }) - .catch((err) => { - messageError($q, err); - }) - .finally(() => { - hideLoader(); - }); - }); + // dialogConfirm($q, () => { + if (formProject.project === "NOOFFER") { + formProject.isNoPass = false; + formProject.isPassAllocate = false; + formProject.isPassNoAllocate = false; + } else { + formProject.isBudget = false; + formProject.isOutBudget = false; + } + showLoader(); + http + .put(config.API.developmentMainTab("tab4", projectId.value), formProject) + .then(() => { + // fetchData(); + // success($q, "บันทึกข้อมูลสำเร็จ"); + step.value == "next" ? props.nextStep() : props.prevStep(); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); + // }); } /** fetchData in page */ @@ -424,19 +431,34 @@ onMounted(() => {
- - - - บันทึกข้อมูล - + + +
+ + + + +
diff --git a/src/modules/15_development/components/MainTab.vue b/src/modules/15_development/components/MainTab.vue index a6e57a062..24b854252 100644 --- a/src/modules/15_development/components/MainTab.vue +++ b/src/modules/15_development/components/MainTab.vue @@ -16,6 +16,8 @@ import Other from "@/modules/15_development/components/Other.vue"; // อื่ /** importStore*/ import { useCounterMixin } from "@/stores/mixin"; import { useDevelopmentDataStore } from "@/modules/15_development/store/developmentStore"; +import Budget from "@/modules/15_development/components/Budget.vue"; +import Risk from "@/modules/15_development/components/Risk.vue"; /** use*/ const $q = useQuasar(); @@ -25,12 +27,36 @@ const store = useDevelopmentDataStore(); const { success, showLoader, hideLoader, messageError, dialogConfirm } = useCounterMixin(); -const checkRoutePermission = ref(route.name == 'developmentDetailPage') +const checkRoutePermission = ref( + route.name == "developmentDetailPage" +); const title = ref(route.params.id ? "แก้ไข" : "เพิ่ม"); const projectId = ref(route.params.id.toLocaleString()); const tab = ref("BasicInfo"); const status = ref("ONGOING"); +const step = ref([ + "BasicInfo", + "Target", + "ProjectDetail", + "Budget", + "Risk", + "FollowResult", + "Other", + "Result", +]); +function prevStep() { + const index = step.value.indexOf(tab.value); + if (index > 0) { + tab.value = step.value[index - 1]; + } +} +function nextStep() { + const index = step.value.indexOf(tab.value); + if (index < step.value.length - 1) { + tab.value = step.value[index + 1]; + } +} /** * function fetch สถานะ Project * @param id projectId @@ -91,7 +117,11 @@ onMounted(() => { color="primary" @click="router.push('/development')" /> - {{ checkRoutePermission ? 'รายละเอียดโครงการ/หลักสูตรการฝึกอบรม':`${title}โครงการ/หลักสูตรการฝึกอบรม` }} + {{ + checkRoutePermission + ? "รายละเอียดโครงการ/หลักสูตรการฝึกอบรม" + : `${title}โครงการ/หลักสูตรการฝึกอบรม` + }}
{ > เสร็จสิ้นโครงการ - เสร็จสิ้นโครงการ @@ -122,23 +156,44 @@ onMounted(() => { + + +
- + - + + - + + + + + + + + + + - - + diff --git a/src/modules/15_development/components/Other.vue b/src/modules/15_development/components/Other.vue index 349b67bb0..50b3e11ae 100644 --- a/src/modules/15_development/components/Other.vue +++ b/src/modules/15_development/components/Other.vue @@ -25,6 +25,10 @@ const projectId = ref(route.params.id.toLocaleString()); const checkRoutePermission = ref( route.name == "developmentDetailPage" ); +const props = defineProps({ + prevStep: { type: Function, required: true }, +}); + const status = defineModel("status", { required: true }); const provinceOp = ref([]); const provinceOpMain = ref([]); @@ -211,39 +215,40 @@ function onClickDeleteLocation(index: number) { /** บันทึกข้อมูล */ function onSubmit() { - dialogConfirm($q, async () => { - showLoader(); - formData.totalDate = Number(formData.totalDate); - formData.accept = - typeof formData.accept === "string" - ? Number(formData.accept.replace(/,/g, "")) - : formData.accept; - formData.receive = - typeof formData.receive === "string" - ? Number(formData.receive.replace(/,/g, "")) - : formData.receive; - formData.approved = - typeof formData.approved === "string" - ? Number(formData.approved.replace(/,/g, "")) - : formData.approved; - formData.budgetPay = - typeof formData.budgetPay === "string" - ? Number(formData.budgetPay.replace(/,/g, "")) - : formData.budgetPay; + // dialogConfirm($q, async () => { + showLoader(); + formData.totalDate = Number(formData.totalDate); + formData.accept = + typeof formData.accept === "string" + ? Number(formData.accept.replace(/,/g, "")) + : formData.accept; + formData.receive = + typeof formData.receive === "string" + ? Number(formData.receive.replace(/,/g, "")) + : formData.receive; + formData.approved = + typeof formData.approved === "string" + ? Number(formData.approved.replace(/,/g, "")) + : formData.approved; + formData.budgetPay = + typeof formData.budgetPay === "string" + ? Number(formData.budgetPay.replace(/,/g, "")) + : formData.budgetPay; - http - .put(config.API.developmentMainTab("tab5", projectId.value), formData) - .then(() => { - fetchData(); - success($q, "บันทึกข้อมูลสำเร็จ"); - }) - .catch((err) => { - messageError($q, err); - }) - .finally(() => { - hideLoader(); - }); - }); + http + .put(config.API.developmentMainTab("tab5", projectId.value), formData) + .then(() => { + // fetchData(); + // success($q, "บันทึกข้อมูลสำเร็จ"); + props.prevStep(); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); + // }); } /** ดึงข้อมูลเมื่อคอมโพเนนต์โหลดเสร็จสมบูรณ์ */ @@ -423,7 +428,7 @@ onMounted(() => {
{
{ >
- -
+ +
+ + - บันทึกข้อมูล
diff --git a/src/modules/15_development/components/ProjectDetail.vue b/src/modules/15_development/components/ProjectDetail.vue index d0de113da..3c4973d01 100644 --- a/src/modules/15_development/components/ProjectDetail.vue +++ b/src/modules/15_development/components/ProjectDetail.vue @@ -16,6 +16,11 @@ import { useDevelopmentDataStore } from "@/modules/15_development/store/developm import http from "@/plugins/http"; import config from "@/app.config"; +const props = defineProps({ + prevStep: { type: Function, required: true }, + nextStep: { type: Function, required: true }, +}); +const step = ref(""); const reasonPlanned70 = ref(""); const reasonPlanned20 = ref(""); const reasonPlanned10 = ref(""); @@ -267,50 +272,51 @@ function fetchTree() { /** Main save */ async function onSubmit() { - dialogConfirm($q, async () => { - showLoader(); - await http - .put(config.API.developmentMainTab("tab3", projectId.value), { - developmentProjectTypes: formData.developmentProjectTypes, - projectModal: formData.projectModal, - isBackPlanned: formData.isBackPlanned, - isHoldPlanned: formData.isHoldPlanned, - projectDayBackPlanned: formData.isBackPlanned - ? formData.projectDayBackPlanned - : null, - projectDayHoldPlanned: formData.projectDayHoldPlanned, - projectNigthHoldPlanned: formData.projectNigthHoldPlanned, - developmentProjectTechniquePlanneds: - formData.developmentProjectTechniquePlanneds, - isBackActual: formData.isBackActual, - isHoldActual: formData.isHoldActual, - projectDayBackActual: formData.projectDayBackActual, - projectDayHoldActual: formData.projectDayHoldActual, - projectNigthHoldActual: formData.projectNigthHoldActual, - developmentProjectTechniqueActuals: - formData.developmentProjectTechniqueActuals, - projectModalActual: formData.projectModalActual, - projectModalPlanned: formData.projectModalPlanned, - strategyChildPlannedId: formData.strategyChildPlannedId, - strategyChildPlannedNode: formData.strategyChildPlannedNode, - strategyChildActualId: formData.strategyChildActualId, - strategyChildActualNode: formData.strategyChildActualNode, - reasonPlanned70: reasonPlanned70.value, - reasonPlanned20: reasonPlanned20.value, - reasonPlanned10: reasonPlanned10.value, - reasonActual70: reasonActual70.value, - reasonActual20: reasonActual20.value, - reasonActual10: reasonActual10.value, - }) - .then(() => { - success($q, "บันทึกข้อมูลสำเร็จ"); - fetchData(); - }) - .catch((err) => { - messageError($q, err); - hideLoader(); - }); - }); + // dialogConfirm($q, async () => { + showLoader(); + await http + .put(config.API.developmentMainTab("tab3", projectId.value), { + developmentProjectTypes: formData.developmentProjectTypes, + projectModal: formData.projectModal, + isBackPlanned: formData.isBackPlanned, + isHoldPlanned: formData.isHoldPlanned, + projectDayBackPlanned: formData.isBackPlanned + ? formData.projectDayBackPlanned + : null, + projectDayHoldPlanned: formData.projectDayHoldPlanned, + projectNigthHoldPlanned: formData.projectNigthHoldPlanned, + developmentProjectTechniquePlanneds: + formData.developmentProjectTechniquePlanneds, + isBackActual: formData.isBackActual, + isHoldActual: formData.isHoldActual, + projectDayBackActual: formData.projectDayBackActual, + projectDayHoldActual: formData.projectDayHoldActual, + projectNigthHoldActual: formData.projectNigthHoldActual, + developmentProjectTechniqueActuals: + formData.developmentProjectTechniqueActuals, + projectModalActual: formData.projectModalActual, + projectModalPlanned: formData.projectModalPlanned, + strategyChildPlannedId: formData.strategyChildPlannedId, + strategyChildPlannedNode: formData.strategyChildPlannedNode, + strategyChildActualId: formData.strategyChildActualId, + strategyChildActualNode: formData.strategyChildActualNode, + reasonPlanned70: reasonPlanned70.value, + reasonPlanned20: reasonPlanned20.value, + reasonPlanned10: reasonPlanned10.value, + reasonActual70: reasonActual70.value, + reasonActual20: reasonActual20.value, + reasonActual10: reasonActual10.value, + }) + .then(() => { + // success($q, "บันทึกข้อมูลสำเร็จ"); + // fetchData(); + step.value == "next" ? props.nextStep() : props.prevStep(); + }) + .catch((err) => { + messageError($q, err); + hideLoader(); + }); + // }); } /** @@ -874,7 +880,35 @@ onMounted(() => {
- + + +
+ + + + +
+ diff --git a/src/modules/15_development/components/Risk.vue b/src/modules/15_development/components/Risk.vue new file mode 100644 index 000000000..e71892a43 --- /dev/null +++ b/src/modules/15_development/components/Risk.vue @@ -0,0 +1,374 @@ + + + + + diff --git a/src/modules/15_development/components/Target.vue b/src/modules/15_development/components/Target.vue index 9f133d3f3..c0c6c8088 100644 --- a/src/modules/15_development/components/Target.vue +++ b/src/modules/15_development/components/Target.vue @@ -30,6 +30,10 @@ const { showLoader, hideLoader, messageError, success, dialogConfirm } = mixin; const checkRoutePermission = ref( route.name == "developmentDetailPage" ); +const props = defineProps({ + prevStep: { type: Function, required: true }, + nextStep: { type: Function, required: true }, +}); const plannedGoals = ref([]); const plannedPeoples = ref([]); const actualGoals = ref([]); @@ -802,7 +806,7 @@ onMounted(() => { { + +
+ + + + +
+
+ @@ -876,7 +907,12 @@ onMounted(() => { v-model="formGroupTarget.groupTargetSub" :options=" formGroupTarget.groupTarget === 'OFFICER' - ? groupSubOp.slice(0, 2) + ? groupSubOp.filter( + (v) => + v.id === 'OFFICER' || + v.id === 'TEACHER' || + v.id === 'EDUCATIONAL' + ) : groupSubOp.slice(2, 5) " label="กลุ่มเป้าหมายย่อย" @@ -1051,7 +1087,12 @@ onMounted(() => { v-model="formGroupTarget.groupTargetSub" :options=" formGroupTarget.groupTarget === 'OFFICER' - ? groupSubOp.slice(0, 2) + ? groupSubOp.filter( + (v) => + v.id === 'OFFICER' || + v.id === 'TEACHER' || + v.id === 'EDUCATIONAL' + ) : groupSubOp.slice(2, 5) " label="กลุ่มเป้าหมายย่อย" diff --git a/src/modules/15_development/views/MainPage.vue b/src/modules/15_development/views/MainPage.vue index 2b520e005..192629e55 100644 --- a/src/modules/15_development/views/MainPage.vue +++ b/src/modules/15_development/views/MainPage.vue @@ -572,7 +572,7 @@ onMounted(() => { icon="mdi-content-save-edit-outline" @click.pervent="onRedirectToRecordPage(props.row.id)" > - บันทึกผล
บันทึกผู้ผ่านการอบรม
diff --git a/src/modules/15_development/views/RecordPage.vue b/src/modules/15_development/views/RecordPage.vue index 5b374177d..f779a45ab 100644 --- a/src/modules/15_development/views/RecordPage.vue +++ b/src/modules/15_development/views/RecordPage.vue @@ -161,7 +161,7 @@ onMounted(() => { color="primary" @click="router.go(-1)" /> - {{ `บันทึกผล${title}` }} + {{ `บันทึกผู้ผ่านการอบรม ${title}` }} @@ -220,7 +220,7 @@ onMounted(() => { color="primary" @click="modalAddPerson = true" > - เพิ่ม + เพิ่มรายชื่อผู้ผ่านการอบรม