hrms-user/src/modules/07_appealComplain/views/Add.vue

95 lines
2.6 KiB
Vue

<script setup lang="ts">
import { ref, onMounted, reactive } from "vue";
import { useQuasar } from "quasar";
import { useRouter, useRoute } from "vue-router";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
import config from "@/app.config";
import type { QForm } from "quasar";
import Form from "@/modules/07_appealComplain/views/Form.vue";
const router = useRouter();
const $q = useQuasar();
const mixin = useCounterMixin();
const { fails, success, messageError, showLoader, hideLoader } = mixin;
const formProfile = reactive<any>({
profileId: "",
fullname: "",
citizenId: "",
});
function getProFile() {
showLoader();
http
.get(config.API.profileBykeycloak())
.then((res) => {
const data = res.data.result;
formProfile.profileId = data.id;
formProfile.fullname = `${data.prefix}${data.firstName} ${data.lastName}`;
formProfile.citizenId = data.citizenId;
formProfile.oc = data.oc;
formProfile.position = data.position;
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
function onSubmit(data: any) {
const formData = new FormData();
formData.append("profileId", data.profileId);
formData.append("citizenId", data.citizenId);
formData.append("fullname", data.fullname);
formData.append("title", data.title);
formData.append("description", data.description);
formData.append("type", data.type);
formData.append("year", '');
formData.append("caseType", '');
formData.append("caseNumber", '');
formData.append("file", data.files);
formData.append("oc", data.oc);
formData.append("position", data.position);
showLoader();
http
.post(config.API.appealAdd(), formData)
.then((res) => {
/** รอรับ id จาก response */
router.push(`/appeal-complain/${res.data.result}`);
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
hideLoader();
});
}
onMounted(() => {
getProFile();
});
</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.go(-1)"
/>
เพมอทธรณ/องทกข
</div>
<Form :on-submit="onSubmit" :form-profile="formProfile" />
</div>
</div>
</template>