Refactoring code module 02_transfer

This commit is contained in:
STW_TTTY\stwtt 2024-09-02 18:11:27 +07:00
parent 8a31554f38
commit 9fbbbd753f
3 changed files with 135 additions and 84 deletions

View file

@ -0,0 +1,53 @@
interface TransferMain {
id: string;
date: string;
status: string;
statustext: string;
position: string;
noPos: string;
rootShortNameOld: string;
level: string;
salary: number;
transfer: string;
}
interface TransferList {
id: string;
profileId: string;
prefix: string;
firstName: string;
lastName: string;
rootOld: string;
rootOldId: string;
rootShortNameOld: string;
child1Old: string | null;
child1OldId: string | null;
child1ShortNameOld: string | null;
child2Old: string | null;
child2OldId: string | null;
child2ShortNameOld: string | null;
child3Old: string | null;
child3OldId: string | null;
child3ShortNameOld: string | null;
child4Old: string | null;
child4OldId: string | null;
child4ShortNameOld: string | null;
posMasterNoOld: number;
posTypeOldId: string;
posTypeNameOld: string;
posLevelOldId: string;
posLevelNameOld: string;
createdAt: Date | null;
organization: string;
reason: string;
status: string;
date: string | null;
salary: number | null;
positionTypeOld: string;
positionLevelOld: string;
positionNumberOld: string;
organizationPositionOld: string;
isActive: boolean;
}
export type { TransferList, TransferMain };

View file

@ -2,47 +2,27 @@
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";
import type { QForm } from "quasar"; import type { QForm } from "quasar";
const router = useRouter();
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin();
const myform = ref<QForm | null>(null);
const {
fails,
success,
messageError,
showLoader,
hideLoader,
dialogConfirm,
dialogMessageNotify,
} = mixin;
/**
* วแปรทใชงาน
*/
const route = useRoute(); const route = useRoute();
const files = ref<any>(); const router = useRouter();
const tranferOrg = ref(""); const mixin = useCounterMixin();
const noteReason = ref(""); const { success, messageError, showLoader, hideLoader, dialogConfirm } = mixin;
const id = ref<string>("");
const nameFile = ref<string>("");
const routeName = router.currentRoute.value.name;
/** const id = ref<string>(""); //id path
* เรยกฟงกนทงหมดตอนเรยกใชไฟล const files = ref<any>(); //
*/ const tranferOrg = ref<string>(""); //
onMounted(() => { const noteReason = ref<string>(""); //
if (route.params.id !== undefined) { const routeName = router.currentRoute.value.name; // path
id.value = route.params.id.toString();
fecthDataTransfer(id.value);
}
});
const saveData = async () => { /** Dialog Save */
async function saveData() {
dialogConfirm( dialogConfirm(
$q, $q,
() => { () => {
@ -51,12 +31,10 @@ const saveData = async () => {
"ยืนยันการยื่นข้อมูลการโอน", "ยืนยันการยื่นข้อมูลการโอน",
"ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่" "ต้องการยื่นข้อมูลการโอนนี้ใช่หรือไม่"
); );
}; }
/** /** ฟังก์ชั่นสร้างขอโอน */
* งกนสรางขอโอน async function createTransfer() {
*/
const createTransfer = async () => {
showLoader(); showLoader();
const formData = new FormData(); const formData = new FormData();
formData.append("Organization", tranferOrg.value); formData.append("Organization", tranferOrg.value);
@ -74,13 +52,13 @@ const createTransfer = async () => {
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
}); });
}; }
/** /**
* งกนเรยกขอมลจาก Api * งกนเรยกขอมลจาก Api
* @param id ไอดของขอม * @param id ไอดของขอม
*/ */
const fecthDataTransfer = async (id: string) => { async function fecthDataTransfer(id: string) {
showLoader(); showLoader();
await http await http
.get(config.API.transferByid(id)) .get(config.API.transferByid(id))
@ -96,25 +74,25 @@ const fecthDataTransfer = async (id: string) => {
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
}); });
}; }
/** /**
* งกนดาวโหลดอปโหลดไฟล * Func เปดไฟล
* @param url URL File
*/ */
const fileDocDataUpload = ref<File[]>([]);
const filesNull = () => {
files.value = null;
};
//
const fileUploadDoc = async (file: any) => {
fileDocDataUpload.value.push(file);
nameFile.value = file[0].name;
files.value = file;
};
function fileOpen(url: string) { function fileOpen(url: string) {
window.open(url, "_blank"); window.open(url, "_blank");
} }
/**
* เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/
onMounted(() => {
if (route.params.id !== undefined) {
id.value = route.params.id.toString();
fecthDataTransfer(id.value);
}
});
</script> </script>
<template> <template>

View file

@ -1,19 +1,25 @@
<script setup lang="ts"> <script setup lang="ts">
import type { QTableProps } from "quasar";
import { ref, onMounted } from "vue"; import { ref, onMounted } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useCounterMixin } from "@/stores/mixin";
import { useTransferDataStore } from "@/modules/02_transfer/store";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
import Table from "@/components/Table.vue"; import { useCounterMixin } from "@/stores/mixin";
const currentPage = ref<number>(1); import { useTransferDataStore } from "@/modules/02_transfer/store";
const transferData = useTransferDataStore();
const { statusText } = transferData; import type { QTableProps } from "quasar";
const router = useRouter(); import type {
TransferList,
TransferMain,
} from "@/modules/02_transfer/interface/Main";
const $q = useQuasar(); const $q = useQuasar();
const router = useRouter();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const transferData = useTransferDataStore();
const { statusText } = transferData;
const { date2Thai, messageError, showLoader, hideLoader } = mixin; const { date2Thai, messageError, showLoader, hideLoader } = mixin;
const pagination = ref({ const pagination = ref({
@ -22,11 +28,9 @@ const pagination = ref({
page: 1, page: 1,
rowsPerPage: 10, rowsPerPage: 10,
}); });
/**
* เพมหวขอตาราง const rows = ref<TransferMain[]>([]);
*/
const filter = ref<string>(""); const filter = ref<string>("");
const rows = ref<any>([]);
const visibleColumns = ref<String[]>([ const visibleColumns = ref<String[]>([
"no", "no",
"date", "date",
@ -112,28 +116,22 @@ const columns = ref<QTableProps["columns"]>([
}, },
]); ]);
/**
* เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/
onMounted(async () => {
await fecthListTransfer();
});
// //
const fecthListTransfer = async () => { async function fecthListTransfer() {
showLoader(); showLoader();
await http await http
.get(config.API.listUserTransfer()) .get(config.API.listUserTransfer())
.then((res: any) => { .then((res) => {
let data = res.data.result; let data = res.data.result;
rows.value = data.map((e: any) => ({ rows.value = data.map((e: TransferList) => ({
id: e.id, id: e.id,
date: date2Thai(e.createdAt), date: date2Thai(e.createdAt),
status: e.status, status: e.status,
statustext: statusText(e.status), statustext: statusText(e.status),
position: e.organizationPositionOld, position: e.organizationPositionOld,
noPos: e.posNo, noPos: e.positionNumberOld,
level: e.positionLevel, rootShortNameOld: e.rootShortNameOld,
level: e.positionLevelOld,
salary: e.salary, salary: e.salary,
transfer: e.organization, transfer: e.organization,
})); }));
@ -144,21 +142,28 @@ const fecthListTransfer = async () => {
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
}); });
}; }
/** /**
* งกนกดเพมไปหนาเพมขอโอน * งกนกดเพมไปหนาเพมขอโอน
*/ */
const clickAdd = async () => { async function clickAdd() {
router.push(`/transfer/add`); router.push(`/transfer/add`);
}; }
/** /**
* กดเพอยอนกล * กดเพอยอนกล
*/ */
const clickBack = () => { function clickBack() {
router.push(`/`); router.push(`/`);
}; }
/**
* เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/
onMounted(async () => {
await fecthListTransfer();
});
</script> </script>
<template> <template>
<div class="col-12 row justify-center"> <div class="col-12 row justify-center">
@ -284,8 +289,23 @@ const clickBack = () => {
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>
<div> <div v-else-if="col.name == 'noPos'">
{{ col.value }} {{
props.row.rootShortNameOld && props.row.noPos
? `${props.row.rootShortNameOld}${props.row.noPos}`
: "-"
}}
</div>
<div v-else-if="col.name == 'salary'">
{{
props.row.salary
? props.row.salary.toLocaleString()
: "-"
}}
</div>
<div v-else>
{{ col.value ? col.value : "-" }}
</div> </div>
</q-td> </q-td>
</q-tr> </q-tr>