refactor code ลาออก ขอโอน

This commit is contained in:
AnandaTon 2023-09-21 14:53:14 +07:00
parent 4e7432bc50
commit bf5b67ee36
5 changed files with 318 additions and 339 deletions

View file

@ -1,3 +1,116 @@
<script setup lang="ts">
import { ref, onMounted } 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"
const router = useRouter()
const $q = useQuasar()
const mixin = useCounterMixin()
const myform = ref<QForm | null>(null)
const { fails, success, messageError, showLoader, hideLoader } = mixin
const fileDocDataUpload = ref<File[]>([])
const route = useRoute()
const files = ref<any>()
const tranferOrg = ref("")
const noteReason = ref("")
const id = ref<string>("")
const nameFile = ref<string>("")
const routeName = router.currentRoute.value.name
onMounted(() => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
fecthDataTransfer(id.value)
}
})
const filesNull = () => {
files.value = null
}
const saveData = async () => {
if (myform.value != null) {
await myform.value.validate().then(async (saveDataTest: Boolean) => {
if (saveDataTest) {
saveTransfer()
}
})
}
}
//
const saveTransfer = () => {
$q.dialog({
title: "ยืนยันการยื่นข้อมูลการโอน",
message: "ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
if (files.value == undefined) {
fails($q, "กรุณากรอกอัพโหลดเอกสารเพิ่มเติม")
} else {
createTransfer()
}
})
.onCancel(() => {})
.onDismiss(() => {})
}
const createTransfer = async () => {
const formData = new FormData()
const blob = files.value.slice(0, files.value[0].size)
const newFile = new File(blob, nameFile.value, {
type: files.value[0].type,
})
formData.append("Organization", tranferOrg.value)
formData.append("Reason", noteReason.value)
formData.append("file", newFile)
await http
.post(config.API.listtransfer(), formData)
.then((res: any) => {
success($q, "บันทึกข้อมูลสำเร็จ")
router.push(`/transfer`)
})
.catch((e: any) => {
messageError($q, e)
})
}
const fecthDataTransfer = async (id: string) => {
showLoader()
await http
.get(config.API.transferByid(id))
.then((res: any) => {
let data = res.data.result
tranferOrg.value = data.organization
noteReason.value = data.reason
files.value = data.docs
})
.catch((e: any) => {
messageError($q, e)
})
.finally(() => {
hideLoader()
})
}
const fileUploadDoc = async (file: any) => {
fileDocDataUpload.value.push(file)
nameFile.value = file[0].name
files.value = file
}
</script>
<template>
<div class="col-12 row justify-center">
<div class="col-xs-12 col-sm-12 col-md-11">
@ -56,123 +169,3 @@
</div>
</div>
</template>
<script setup lang="ts">
import type { QTableProps } from "quasar"
import { ref, onMounted } 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"
const router = useRouter()
const $q = useQuasar()
const mixin = useCounterMixin()
const myform = ref<QForm | null>(null)
const { date2Thai, fails, success, messageError, showLoader, hideLoader } = mixin
const fileDocDataUpload = ref<File[]>([])
const route = useRoute()
const files = ref<any>()
const tranferOrg = ref("")
const noteReason = ref("")
const id = ref<string>("")
const nameFile = ref<string>("")
const routeName = router.currentRoute.value.name
onMounted(() => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
fecthDataTransfer(id.value)
}
})
const filesNull = () => {
files.value = null
}
const saveData = async () => {
console.log(myform.value)
if (myform.value != null) {
await myform.value.validate().then(async (saveDataTest: Boolean) => {
if (saveDataTest) {
saveTransfer()
}
})
}
}
const saveTransfer = () => {
$q.dialog({
title: "ยืนยันการยื่นข้อมูลการโอน",
message: "ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
if (files.value == undefined) {
fails($q, "กรุณากรอกอัพโหลดเอกสารเพิ่มเติม")
} else {
createTransfer()
}
})
.onCancel(() => {})
.onDismiss(() => {})
}
const createTransfer = async () => {
const formData = new FormData()
const blob = files.value.slice(0, files.value[0].size)
const newFile = new File(blob, nameFile.value, {
type: files.value[0].type,
})
formData.append("Organization", tranferOrg.value)
formData.append("Reason", noteReason.value)
formData.append("file", newFile)
console.log(files.value)
console.log(formData)
await http
.post(config.API.listtransfer(), formData)
.then((res: any) => {
console.log(res)
success($q, "บันทึกข้อมูลสำเร็จ")
router.push(`/transfer`)
})
.catch((e: any) => {
messageError($q, e)
console.log(e)
})
}
const fecthDataTransfer = async (id: string) => {
showLoader()
await http
.get(config.API.transferByid(id))
.then((res: any) => {
let data = res.data.result
// console.log(data);
tranferOrg.value = data.organization
noteReason.value = data.reason
files.value = data.docs
console.log(files.value)
})
.catch((e: any) => {
messageError($q, e)
})
.finally(() => {
hideLoader()
})
}
const fileUploadDoc = async (file: any) => {
fileDocDataUpload.value.push(file)
nameFile.value = file[0].name
files.value = file
}
</script>

View file

@ -106,16 +106,13 @@ onMounted(async () => {
await fecthListTransfer()
})
//
const fecthListTransfer = async () => {
console.log(config.API.listUserTransfer())
showLoader()
await http
.get(config.API.listUserTransfer())
.then((res: any) => {
// console.log(res);
let data = res.data.result
console.log(data)
rows.value = data.map((e: any) => ({
id: e.id,
date: date2Thai(e.createdAt),
@ -129,7 +126,6 @@ const fecthListTransfer = async () => {
}))
})
.catch((e: any) => {
console.log("e")
messageError($q, e)
})
.finally(() => {

View file

@ -1,3 +1,193 @@
<script setup lang="ts">
import { ref, onMounted } 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"
const mixin = useCounterMixin()
const { date2Thai, dateToISO, success, messageError, showLoader, hideLoader, fails } = mixin
const router = useRouter()
const route = useRoute()
const myform = ref<QForm | null>(null)
const $q = useQuasar()
const routeName = router.currentRoute.value.name
const id = ref<string>("")
const fileDocDataUpload = ref<File[]>([])
const files = ref<any>()
const tranferOrg = ref("")
const dateCommand = ref<Date>(new Date())
const dateLeave = ref<Date>(new Date())
const noteReason = ref("")
const nameFile = ref<string>("")
const dataDetail = ref<any>({
datetext: "",
activeDate: new Date(),
createdAt: new Date(),
firstName: "",
id: "",
isActive: true,
lastName: "",
location: "",
organizationPositionOld: "",
positionLevelOld: "",
positionNumberOld: "",
positionTypeOld: "",
prefix: "",
profileId: "",
reason: "",
salary: 0,
sendDate: new Date(),
status: "",
statustext: "",
fullname: "",
})
const clickBack = () => {
router.push(`/leave`)
}
const statusOrder = (val: boolean) => {
switch (val) {
case true:
return "ยับยั้งการลาออก"
case false:
return "อนุมัติการลาออก"
}
}
const filesNull = () => {
files.value = null
}
onMounted(() => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
fectDataresign(id.value)
}
})
const saveData = async () => {
if (myform.value != null) {
await myform.value.validate().then(async (saveDataTest: Boolean) => {
if (saveDataTest) {
saveResing()
}
})
}
}
const fileUploadDoc = async (file: any) => {
fileDocDataUpload.value.push(file)
nameFile.value = file[0].name
files.value = file
}
const saveResing = () => {
$q.dialog({
title: "ยืนยันการยื่นข้อมูลแบบสอบถาม",
message: "ต้องการยื่นข้อมูลแบบสอบถามนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
if (files.value == undefined) {
fails($q, "กรุณากรอกอัพโหลดเอกสารเพิ่มเติม")
} else {
createFormresign()
}
})
.onCancel(() => {})
.onDismiss(() => {})
}
//
const cancelResing = () => {
$q.dialog({
title: "ยืนยันการยกเลิกการลาออก",
message: "ต้องการยื่นข้อมูลยกเลิกการลาออกนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
deleteResting(id.value)
}
})
.onCancel(() => {})
.onDismiss(() => {})
}
const deleteResting = async (id: string) => {
showLoader()
await http
.delete(config.API.resingByid(id))
.then(() => {
success($q, "ยกเลิกการลาออกขอสำเร็จ")
})
.catch(e => {
messageError($q, e)
})
.finally(() => {
hideLoader()
clickBack()
})
}
//
const createFormresign = async () => {
const formData = new FormData()
const blob = files.value.slice(0, files.value[0].size)
const newFile = new File(blob, nameFile.value, {
type: files.value[0].type,
})
formData.append("Location", tranferOrg.value)
formData.append("SendDate", dateToISO(dateCommand.value))
formData.append("ActiveDate", dateToISO(dateLeave.value))
formData.append("Reason", noteReason.value)
formData.append("file", newFile)
await http
.post(config.API.listResign(), formData)
.then((res: any) => {
let data = res.data.result.id
success($q, "บันทึกข้อมูลสำเร็จ")
router.push(`/leave/result/${data}`)
})
.catch((e: any) => {
messageError($q, e)
})
}
const fectDataresign = async (id: string) => {
showLoader()
await http
.get(config.API.resingByid(id))
.then((res: any) => {
let data = res.data.result
;(tranferOrg.value = data.location),
(dateCommand.value = data.sendDate),
(dateLeave.value = data.activeDate),
(noteReason.value = data.reason),
(files.value = data.docs),
(dataDetail.value = data)
})
.catch((e: any) => {
messageError($q, e)
})
.finally(() => {
hideLoader()
})
}
</script>
<template>
<div class="col-12 row justify-center">
<div class="col-xs-12 col-sm-12 col-md-11">
@ -170,7 +360,16 @@
</q-card>
<div class="row col-12 q-pa-md" v-if="routeName != 'AddLeave'">
<q-space />
<q-btn v-if="dataDetail.status!=='DELETE' && dataDetail.status!=='DONE'" unelevated dense class="q-px-md items-center" color="orange" label="ยกเลิกการลาออก" @click="cancelResing" :disable="tranferOrg == '' && noteReason == ''" />
<q-btn
v-if="dataDetail.status !== 'DELETE' && dataDetail.status !== 'DONE'"
unelevated
dense
class="q-px-md items-center"
color="orange"
label="ยกเลิกการลาออก"
@click="cancelResing"
:disable="tranferOrg == '' && noteReason == ''"
/>
</div>
</div>
<q-separator v-if="routeName == 'AddLeave'" />
@ -183,206 +382,3 @@
</div>
</div>
</template>
<script setup lang="ts">
import type { QTableProps } from "quasar"
import { ref, onMounted } 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"
const mixin = useCounterMixin()
const { date2Thai, dateToISO, success, messageError, showLoader, hideLoader, fails } = mixin
const router = useRouter()
const route = useRoute()
const myform = ref<QForm | null>(null)
const $q = useQuasar()
const routeName = router.currentRoute.value.name
const id = ref<string>("")
const fileDocDataUpload = ref<File[]>([])
const files = ref<any>()
const tranferOrg = ref("")
const dateCommand = ref<Date>(new Date())
const dateLeave = ref<Date>(new Date())
const noteReason = ref("")
const nameFile = ref<string>("")
const dataDetail = ref<any>({
datetext: "",
activeDate: new Date(),
createdAt: new Date(),
firstName: "",
id: "",
isActive: true,
lastName: "",
location: "",
organizationPositionOld: "",
positionLevelOld: "",
positionNumberOld: "",
positionTypeOld: "",
prefix: "",
profileId: "",
reason: "",
salary: 0,
sendDate: new Date(),
status: "",
statustext: "",
fullname: "",
})
const clickBack = () => {
router.push(`/leave`)
}
const statusOrder = (val: boolean) => {
switch (val) {
case true:
return "ยับยั้งการลาออก"
case false:
return "อนุมัติการลาออก"
}
}
const filesNull = () => {
files.value = null
}
onMounted(() => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
fectDataresign(id.value)
}
})
const saveData = async () => {
console.log(myform.value)
if (myform.value != null) {
await myform.value.validate().then(async (saveDataTest: Boolean) => {
if (saveDataTest) {
saveResing()
}
})
}
}
const fileUploadDoc = async (file: any) => {
fileDocDataUpload.value.push(file)
nameFile.value = file[0].name
files.value = file
console.log(files.value)
}
const saveResing = () => {
$q.dialog({
title: "ยืนยันการยื่นข้อมูลแบบสอบถาม",
message: "ต้องการยื่นข้อมูลแบบสอบถามนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
console.log("ok")
if (files.value == undefined) {
fails($q, "กรุณากรอกอัพโหลดเอกสารเพิ่มเติม")
} else {
createFormresign()
}
})
.onCancel(() => {
console.log("test")
})
.onDismiss(() => {
console.log("dis")
})
}
const cancelResing = () => {
console.log(id)
$q.dialog({
title: "ยืนยันการยกเลิกการลาออก",
message: "ต้องการยื่นข้อมูลยกเลิกการลาออกนี้ใช่หรือไม่?",
cancel: {
flat: true,
color: "negative",
},
persistent: true,
})
.onOk(async () => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString()
deleteResting(id.value)
}
})
.onCancel(() => {})
.onDismiss(() => {})
}
const deleteResting = async (id: string) => {
showLoader()
await http
.delete(config.API.resingByid(id))
.then(() => {
success($q, "ยกเลิกการลาออกขอสำเร็จ")
})
.catch(e => {
messageError($q, e)
})
.finally(() => {
hideLoader()
clickBack()
})
}
const createFormresign = async () => {
const formData = new FormData()
const blob = files.value.slice(0, files.value[0].size)
const newFile = new File(blob, nameFile.value, {
type: files.value[0].type,
})
formData.append("Location", tranferOrg.value)
formData.append("SendDate", dateToISO(dateCommand.value))
formData.append("ActiveDate", dateToISO(dateLeave.value))
formData.append("Reason", noteReason.value)
formData.append("file", newFile)
console.log(files.value)
await http
.post(config.API.listResign(), formData)
.then((res: any) => {
let data = res.data.result.id
// console.log(res);
success($q, "บันทึกข้อมูลสำเร็จ")
router.push(`/leave/result/${data}`)
})
.catch((e: any) => {
messageError($q, e)
console.log(e)
})
}
const fectDataresign = async (id: string) => {
showLoader()
await http
.get(config.API.resingByid(id))
.then((res: any) => {
let data = res.data.result
// console.log(data);
;(tranferOrg.value = data.location),
(dateCommand.value = data.sendDate),
(dateLeave.value = data.activeDate),
(noteReason.value = data.reason),
(files.value = data.docs),
(dataDetail.value = data)
})
.catch((e: any) => {
console.log(e)
messageError($q, e)
})
.finally(() => {
hideLoader()
})
}
</script>

View file

@ -14,7 +14,7 @@ const { statusText } = RestData
const router = useRouter()
const $q = useQuasar()
const mixin = useCounterMixin()
const { date2Thai, dateToISO, success, messageError, showLoader, hideLoader } = mixin
const { date2Thai, messageError, showLoader, hideLoader } = mixin
const filter = ref<string>("")
const visibleColumns = ref<String[]>(["no", "placeLeave", "dateStartLeave", "dateLeave", "statustext"])
@ -74,14 +74,13 @@ onMounted(() => {
fectListleave()
})
//
const fectListleave = async () => {
showLoader()
await http
.get(config.API.listUser())
.then((res: any) => {
// console.log(res);
let data = res.data.result
console.log(data)
rows.value = data.map((e: any) => ({
id: e.id,
placeLeave: e.location,
@ -92,7 +91,6 @@ const fectListleave = async () => {
}))
})
.catch((e: any) => {
console.log(e)
messageError($q, e)
})
.finally(() => {

View file

@ -99,11 +99,9 @@ const adjust_option = ref<any>([
{ label: "โอกาสความก้าวหน้า ", value: 14 },
{ label: "อื่น ๆ (ระบุ) ", value: 15 },
])
const saveForm = () => {
console.log(reasonWork.value.filter((x: any) => x == 12))
console.log(reasonWork.value)
console.log(haveJob.value.length)
//
const saveForm = () => {
let hasError = false
if (
reasonWork.value.length === 0 ||
@ -168,13 +166,11 @@ const createResult = async () => {
await http
.post(config.API.listquestionnaire(), data)
.then((res: any) => {
// console.log(res);
success($q, "บันทึกข้อมูลสำเร็จ")
router.push(`/leave`)
})
.catch((e: any) => {
messageError($q, e)
console.log(e)
})
}
</script>