hrms-mgt/src/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue

260 lines
7.8 KiB
Vue
Raw Normal View History

<script setup lang="ts">
import { onMounted, ref, watch } from "vue";
import { useQuasar } from "quasar";
import { useRouter, useRoute } from "vue-router";
import http from "@/plugins/http";
import config from "@/app.config";
/**import component*/
import FormComplaints from "@/modules/11_discipline/components/1_Complaint/Form.vue"; //เรื่องร้องเรียน
import FormInvestigatefacts from "@/modules/11_discipline/components/2_InvestigateFacts/Form.vue"; //สืบสวนข้อเท็จจริง
import FormDisciplinary from "@/modules/11_discipline/components/3_InvestigateDisciplinary/Form.vue"; // สอบสวนความผิดทางวินัย
import type { FormData } from "@/modules/11_discipline/interface/request/disciplinary";
/**import store*/
2023-11-21 10:29:11 +07:00
import { useCounterMixin } from "@/stores/mixin";
import { useInvestigateDisStore } from "@/modules/11_discipline/store/InvestigateDisStore";
2023-11-21 10:29:11 +07:00
const $q = useQuasar();
const mixin = useCounterMixin();
const store = useInvestigateDisStore();
const { dialogConfirm, success, messageError, showLoader, hideLoader } = mixin;
const router = useRouter();
const route = useRoute();
2023-11-27 16:30:14 +07:00
const id = ref<string>(route.params.id as string);
2023-11-27 16:30:14 +07:00
const data = ref<object>();
2023-11-27 16:30:14 +07:00
/** function fetchData สอบสวนคาวมผิดทางวินัย*/
async function fetchDetailDisciplinary() {
showLoader();
await http
.get(config.API.disciplineDisciplinaryById(id.value))
.then((res) => {
2023-11-27 16:30:14 +07:00
data.value = res.data.result;
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
}
2023-11-27 16:30:14 +07:00
/** function fetchData สืบสวนข้อเท็จจริง*/
async function fetchDetailInvestigate() {
showLoader();
await http
.get(config.API.disciplineInvestigateById(id.value))
.then((res) => {
2023-11-27 17:40:58 +07:00
data.value = res.data.result;
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
}
2023-11-27 16:30:14 +07:00
/** function fetchData เรื่องร้องเรียน*/
async function fetchDetailComplaints() {
showLoader();
await http
.get(config.API.disciplineComplaintsById(id.value))
.then((res) => {
2023-11-27 17:40:58 +07:00
data.value = res.data.result;
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
}
/**
* function นทกขอม
* @param data อม ใน form
*/
2023-11-27 16:30:14 +07:00
async function onSubmitDisciplinary(data: any) {
await http
.put(config.API.disciplineDisciplinaryById(id.value), data)
.then(() => {
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((err) => {})
.finally(async () => {
const fetchFunction =
store.tabMenu === "disciplinary"
? fetchDetailDisciplinary
: store.tabMenu === "investigatefacts"
? fetchDetailInvestigate
: store.tabMenu === "complaints"
? fetchDetailComplaints
: null;
if (fetchFunction) {
await fetchFunction();
}
2023-11-27 16:30:14 +07:00
});
}
/**
* นทกขอมลทเเกไข
* @param id ระบ คคล
*/
2023-11-21 10:29:11 +07:00
const onSubmit = async (id: string) => {
console.log("edit");
router.push(`/discipline/disciplinary`);
};
2023-11-21 10:29:11 +07:00
/** ยืนยัน ส่งไปออกคำสั่ง */
function sentIssue() {
dialogConfirm(
$q,
() => confirmSentIssue(),
"ยืนยันส่งไปออกคำสั่ง",
"ต้องการยืนยันส่งไปออกคำสั่งใช่หรือไม่?"
);
}
/** ยืนยัน ยุติเรื่อง */
function endInvestigate() {
dialogConfirm(
$q,
() => confirmEndInvestigate(),
"ยืนยันยุติเรื่อง",
"ต้องการยืนยันยุติเรื่องใช่หรือไม่?"
);
}
/** ยืนยัน ยกเลิกการยุติเรื่อง */
function cancelInvestigate() {
dialogConfirm(
$q,
() => confirmCancelInvestigate(),
"ยืนยันยกเลิกการยุติเรื่อง",
"ต้องการยืนยันยกเลิกการยุติเรื่องใช่หรือไม่?"
);
}
2023-11-21 10:29:11 +07:00
/** ฟังชั่น ส่งไปออกคำสั่ง*/
function confirmSentIssue() {
console.log("sent");
}
/** ฟังชั่น ยุติเรื่อง*/
function confirmEndInvestigate() {
console.log("sent");
}
/** ฟังชั่น ยกเลิกการยุติเรื่อง*/
function confirmCancelInvestigate() {
console.log("sent");
}
/** โหลดข้อมูลเมื่อเข้าหน้านี้ */
onMounted(async () => {
2023-11-27 16:30:14 +07:00
store.tabMenu = "disciplinary";
await fetchDetailDisciplinary();
});
watch(
() => store.tabMenu,
async () => {
const fetchFunction =
store.tabMenu === "disciplinary"
? fetchDetailDisciplinary
: store.tabMenu === "investigatefacts"
? fetchDetailInvestigate
: store.tabMenu === "complaints"
? fetchDetailComplaints
: null;
if (fetchFunction) {
await fetchFunction();
}
}
);
</script>
<template>
<div class="col-xs-12 col-sm-12 col-md-11">
<div class="toptitle col-12 row items-center">
<q-btn
icon="mdi-arrow-left"
unelevated
round
dense
flat
color="primary"
class="q-mr-sm"
@click="$router.push(`/discipline/disciplinary`)"
/>
2023-11-24 16:52:10 +07:00
<div class="q-ma-none">แกไขการสอบสวนความผดทางว</div>
2023-11-21 10:29:11 +07:00
<q-space />
<div class="q-gutter-x-sm">
2023-11-27 16:30:14 +07:00
<!-- <q-btn
v-if="data.complaintStatus === 'NEW'"
2023-11-24 16:52:10 +07:00
label="ส่งไปสรุปผลการพิจารณา"
color="public"
@click="sentIssue"
/>
<q-btn
v-if="data.complaintStatus === 'NEW'"
label="ยุติเรื่อง"
color="red-7"
@click="endInvestigate"
/>
<q-btn
v-if="data.complaintStatus === 'STOP'"
label="ยกเลิกการยุติเรื่อง"
color="red-7"
@click="cancelInvestigate"
2023-11-27 16:30:14 +07:00
/> -->
2023-11-21 10:29:11 +07:00
</div>
</div>
<q-card flat class="col-12">
<q-tabs
v-model="store.tabMenu"
dense
align="left"
inline-label
class="rounded-borders"
indicator-color="primary"
active-bg-color="teal-1"
active-class="text-primary"
>
<q-tab name="complaints" label="เรื่องร้องเรียน" />
<q-tab name="investigatefacts" label="สืบสวนข้อเท็จจริง" />
<q-tab name="disciplinary" label="สอบสวนความผิดทางวินัย" />
</q-tabs>
<q-separator />
<q-tab-panels v-model="store.tabMenu" animated>
<q-tab-panel name="complaints">
<FormComplaints :on-submit="onSubmit" :data="data" />
</q-tab-panel>
<q-tab-panel name="investigatefacts">
<FormInvestigatefacts :on-submit="onSubmit" :data="data" />
</q-tab-panel>
<q-tab-panel name="disciplinary">
2023-11-27 16:30:14 +07:00
<FormDisciplinary
:on-submit="onSubmit"
:data="data"
@submit:disciplinary="onSubmitDisciplinary"
:fetchData="fetchDetailDisciplinary"
2023-11-27 16:30:14 +07:00
/>
</q-tab-panel>
</q-tab-panels>
</q-card>
<!-- <Form :on-submit="onSubmit" :data="data" /> -->
</div>
</template>
<style scoped>
.q-tab-panel {
padding: 0;
background-color: #f0f3f3;
}
</style>