hrms-user/src/modules/07_appealComplain/views/Edit.vue
2024-09-10 11:42:43 +07:00

128 lines
3.2 KiB
Vue

<script setup lang="ts">
import { ref, onMounted, reactive } from "vue";
import { useQuasar } from "quasar";
import { useRouter, useRoute } from "vue-router";
import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";
import genReport from "@/plugins/genreport";
import type {
EditDataList,
HistoryStatusType,
FileObType,
} from "@/modules/07_appealComplain/interface/response/mainType";
import Form from "@/modules/07_appealComplain/views/Form.vue";
const $q = useQuasar();
const router = useRouter();
const route = useRoute();
const mixin = useCounterMixin();
const { messageError, showLoader, hideLoader } = mixin;
const id = ref<string>(route.params.id as string);
const historyStatusOb = reactive<HistoryStatusType>({
status: "",
createdAt: "",
});
const fileOb = reactive<FileObType>({
id: "",
pathName: "",
fileName: "",
});
const data = reactive<EditDataList>({
id: "",
title: "",
description: "",
status: "",
type: "",
year: new Date().getFullYear(),
caseType: "",
caseNumber: "",
fullname: "",
citizenId: "",
profileId: "",
lastUpdatedAt: "",
historyStatus: [historyStatusOb],
disciplineComplaint_Appeal_Docs: [fileOb],
});
/** ดึงข้อมูล */
function getData() {
showLoader();
http
.get(config.API.appealByID(id.value))
.then((res) => {
const dataList = res.data.result;
data.id = dataList.id;
data.title = dataList.title;
data.description = dataList.description;
data.status = dataList.status;
data.type = dataList.type;
data.year = dataList.year;
data.caseType = dataList.caseType;
data.caseNumber = dataList.caseNumber;
data.fullname = dataList.fullname;
data.citizenId = dataList.citizenId;
data.profileId = dataList.profileId;
data.lastUpdatedAt = dataList.lastUpdatedAt;
data.disciplineComplaint_Appeal_Docs =
dataList.disciplineComplaint_Appeal_Docs;
data.historyStatus = dataList.historyStatus;
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
/** ดึงข้อมูลหน้า แก้ไขอุทธรณ์/ร้องทุกข์
* @param fileName ชื่อไฟล์
*/
async function getReport(fileName: string) {
showLoader();
await http
.get(config.API.appealByPrintReport(id.value))
.then(async (res) => {
const data = res.data.result;
await genReport(data, fileName);
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
onMounted(() => {
getData();
});
</script>
<template>
<div class="col-12 row justify-center">
<div class="col-xs-12 col-sm-12 col-md-11">
<div class="toptitle text-white col-12 row items-center">
<q-btn
icon="mdi-arrow-left"
unelevated
round
dense
flat
color="primary"
class="q-mr-sm"
@click="router.push('/appeal-complain')"
/>
แกไขอทธรณ/องทกข
</div>
<Form :data="data" :get-report="getReport" />
</div>
</div>
</template>