ปรับเเก้

This commit is contained in:
setthawutttty 2023-12-19 15:05:48 +07:00
parent d2c6837a86
commit 46f82b78fc
18 changed files with 446 additions and 190 deletions

View file

@ -49,6 +49,7 @@ export default {
investigateResume: (id: string) => `${investigate}/resume/${id}`, investigateResume: (id: string) => `${investigate}/resume/${id}`,
investigateApprove: (id: string) => `${investigate}/approve/${id}`, investigateApprove: (id: string) => `${investigate}/approve/${id}`,
investigateCalendar: () => `${investigate}/calendar`, investigateCalendar: () => `${investigate}/calendar`,
investigateReport: () => `${investigate}/report`,
/** ระบบวินัยเรื่องสอบสวน */ /** ระบบวินัยเรื่องสอบสวน */
disciplineDisciplinary: () => `${discipline}`, disciplineDisciplinary: () => `${discipline}`,
@ -65,7 +66,7 @@ export default {
disciplinaryApprove: (id: string) => `${discipline}/approve/${id}`, disciplinaryApprove: (id: string) => `${discipline}/approve/${id}`,
disciplinarySuspend: (id: string) => `${discipline}/suspend/${id}`, disciplinarySuspend: (id: string) => `${discipline}/suspend/${id}`,
disciplinaryCalendar: () => `${discipline}/calendar`, disciplinaryCalendar: () => `${discipline}/calendar`,
disciplinaryReport: () => `${discipline}/report`,
/** รายการสรุปผลการพิจารณาทางวินัย*/ /** รายการสรุปผลการพิจารณาทางวินัย*/
listResult: () => `${disciplineMain}/result`, listResult: () => `${disciplineMain}/result`,
listResultById: (id: string) => `${disciplineMain}/result/${id}`, listResultById: (id: string) => `${disciplineMain}/result/${id}`,

View file

@ -0,0 +1,8 @@
import env from "../index";
const evaluateDirectorMain = `${env.API_URI}/evaluate/director`;
export default {
evaluateDirectorMain: () => `${evaluateDirectorMain}`,
evaluateDirectorById: (id:string) => `${evaluateDirectorMain}/${id}`,
};

View file

@ -48,6 +48,9 @@ import leave from "./api/09_leave/api.leave";
/** API วินัย */ /** API วินัย */
import discipline from './api/11_discipline/api.discipline' import discipline from './api/11_discipline/api.discipline'
/**API ประเมิน */
import evaluate from './api/12_evaluatePersonal/api.evaluate'
// environment variables // environment variables
export const compettitivePanel = import.meta.env.VITE_COMPETITIVE_EXAM_PANEL; export const compettitivePanel = import.meta.env.VITE_COMPETITIVE_EXAM_PANEL;
export const qualifyDisableExamPanel = import.meta.env export const qualifyDisableExamPanel = import.meta.env
@ -97,6 +100,9 @@ const API = {
/**discipline */ /**discipline */
...discipline, ...discipline,
/**evaluate*/
...evaluate
}; };
export default { export default {

View file

@ -19,12 +19,16 @@ import type {
MyObjectInvestigateRef, MyObjectInvestigateRef,
} from "@/modules/11_discipline/interface/request/investigateFact"; } from "@/modules/11_discipline/interface/request/investigateFact";
import type {
ArrayPersonAdd
} from '@/modules/11_discipline/interface/response/investigate'
import config from "@/app.config"; import config from "@/app.config";
import http from "@/plugins/http"; import http from "@/plugins/http";
const $q = useQuasar(); const $q = useQuasar();
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const id = ref<string>(route.params.id as string);
const modalPerson = ref<boolean>(false); const modalPerson = ref<boolean>(false);
const toggleModal = () => (modalPerson.value = !modalPerson.value); const toggleModal = () => (modalPerson.value = !modalPerson.value);
/**เรียกใช้ store */ /**เรียกใช้ store */
@ -271,7 +275,8 @@ watch(props.data, async () => {
formData.investigationExtendHistory = props.data.investigationExtendHistory; formData.investigationExtendHistory = props.data.investigationExtendHistory;
mainStore.rowsAdd = props.data.persons; mainStore.rowsAdd = props.data.persons;
mainStore.rowsCheck = mainStore.rowsAdd.filter((item:any)=> item.isSend === false )
console.log(mainStore.rowsCheck)
const dataMap = props.data.directors.map((item: any) => ({ const dataMap = props.data.directors.map((item: any) => ({
id: item.id, id: item.id,
name: `${item.prefix}${item.firstName} ${item.lastName}`, name: `${item.prefix}${item.firstName} ${item.lastName}`,
@ -523,21 +528,21 @@ function closePopup() {
function emitPerson(data: FormData[]) { function emitPerson(data: FormData[]) {
const dataMapId = data.map((item: FormData) => item.id); const dataMapId = data.map((item: FormData) => item.id);
console.log(dataMapId); console.log(dataMapId);
// showLoader(); showLoader();
// http http
// .put(config.API.investigateApprove(id.value), { .post(config.API.investigateReport(), {
// persons: dataMapId, Id: dataMapId,
// }) })
// .then((res) => { .then((res) => {
// // router.push(`/discipline/investigatefacts`); // router.push(`/discipline/investigatefacts`);
// }) })
// .catch((e) => { .catch((e) => {
// messageError($q, e); messageError($q, e);
// }) })
// .finally(() => { .finally(() => {
// hideLoader(); hideLoader();
// getData(); getOc();
// }); });
} }
onMounted(async () => { onMounted(async () => {
@ -1504,7 +1509,7 @@ onMounted(async () => {
:modal="modalPopup" :modal="modalPopup"
:close="closePopup" :close="closePopup"
title="ส่งรายชื่อไปออกคำสั่งยุติเรื่อง" title="ส่งรายชื่อไปออกคำสั่งยุติเรื่อง"
:rows="mainStore.rowsAdd" :rows="mainStore.rowsCheck"
:columns="mainStore.columnsDirector" :columns="mainStore.columnsDirector"
:visibleColumns="mainStore.visibleColumnsDirector" :visibleColumns="mainStore.visibleColumnsDirector"
@return-person="emitPerson" @return-person="emitPerson"

View file

@ -302,7 +302,7 @@ async function fetchDatadetail() {
formData.disciplinaryExtendHistory = props.data.disciplinaryExtendHistory; formData.disciplinaryExtendHistory = props.data.disciplinaryExtendHistory;
mainStore.rowsAdd = props.data.persons; mainStore.rowsAdd = props.data.persons;
mainStore.rowsCheck = mainStore.rowsAdd.filter((item:any)=> item.isSend === false )
/** MAP รายชื่อกรรมการ หน้าหลัก */ /** MAP รายชื่อกรรมการ หน้าหลัก */
const dataMap = props.data.director.map((item: any) => ({ const dataMap = props.data.director.map((item: any) => ({
id: item.directorId, id: item.directorId,
@ -500,22 +500,21 @@ function closePopup() {
function emitPerson(data: PersonsArray[]) { function emitPerson(data: PersonsArray[]) {
const dataMapId = data.map((item: PersonsArray) => item.id); const dataMapId = data.map((item: PersonsArray) => item.id);
console.log(dataMapId); showLoader();
// showLoader(); http
// http .post(config.API.disciplinaryReport(), {
// .put(config.API.investigateApprove(id.value), { Id: dataMapId,
// persons: dataMapId, })
// }) .then((res) => {
// .then((res) => { // router.push(`/discipline/investigatefacts`);
// // router.push(`/discipline/investigatefacts`); })
// }) .catch((e) => {
// .catch((e) => { messageError($q, e);
// messageError($q, e); })
// }) .finally(() => {
// .finally(() => { hideLoader();
// hideLoader(); fetchOrganization();
// getData(); });
// });
} }
/** Hook */ /** Hook */
@ -1664,7 +1663,7 @@ onMounted(async () => {
:modal="modalPopup" :modal="modalPopup"
:close="closePopup" :close="closePopup"
title="ส่งรายชื่อไปออกคำสั่งยุติเรื่อง" title="ส่งรายชื่อไปออกคำสั่งยุติเรื่อง"
:rows="mainStore.rowsAdd" :rows="mainStore.rowsCheck"
:columns="mainStore.columnsDirector" :columns="mainStore.columnsDirector"
:visibleColumns="mainStore.visibleColumnsDirector" :visibleColumns="mainStore.visibleColumnsDirector"
@return-person="emitPerson" @return-person="emitPerson"

View file

@ -168,6 +168,10 @@ watch(
() => props.data, () => props.data,
async () => { async () => {
respondentType.value = props.data.respondentType; respondentType.value = props.data.respondentType;
formData.oc = props.data.resultOc;
formData.disciplineType = props.data.resultDisciplineType;
formData.titleType = props.data.resultTitleType;
formData.year = props.data.resultYear;
mainStore.rowsAdd = props.data.persons; mainStore.rowsAdd = props.data.persons;
await fetchDatadetail(); await fetchDatadetail();
await fetchOrganization(); await fetchOrganization();
@ -451,6 +455,7 @@ onMounted(async () => {});
<q-input <q-input
v-model="formData.disciplineType" v-model="formData.disciplineType"
dense dense
:class="inputEdit(isReadonly)"
outlined outlined
label="ประเภทวินัย" label="ประเภทวินัย"
/> />
@ -460,6 +465,7 @@ onMounted(async () => {});
v-model="formData.titleType" v-model="formData.titleType"
dense dense
outlined outlined
:class="inputEdit(isReadonly)"
label="ประเภทของเรื่อง" label="ประเภทของเรื่อง"
/> />
</div> </div>
@ -468,6 +474,7 @@ onMounted(async () => {});
v-model="formData.oc" v-model="formData.oc"
dense dense
outlined outlined
:class="inputEdit(isReadonly)"
label="หน่วยงาน/ส่วนราชการ" label="หน่วยงาน/ส่วนราชการ"
/> />
</div> </div>
@ -489,6 +496,7 @@ onMounted(async () => {});
<q-input <q-input
dense dense
lazy-rules lazy-rules
:class="inputEdit(isReadonly)"
outlined outlined
:model-value=" :model-value="
formData.year === 0 formData.year === 0

View file

@ -28,6 +28,7 @@ interface ArrayPerson {
interface ArrayPersonAdd { interface ArrayPersonAdd {
personId: string; //id อ้างอิง profile personId: string; //id อ้างอิง profile
idcard: string; //รหัสบัตรประชาชน idcard: string; //รหัสบัตรประชาชน
isSend: string; //รหัสบัตรประชาชน
prefix: string; //คำนำหน้า prefix: string; //คำนำหน้า
firstName: string; //ชื่อ firstName: string; //ชื่อ
lastName: string; //นามสกุล lastName: string; //นามสกุล

View file

@ -274,6 +274,7 @@ export const useDisciplineMainStore = defineStore("disciplineMainStore", () => {
]); ]);
const rowsAdd = ref<ArrayPersonAdd[]>([]); const rowsAdd = ref<ArrayPersonAdd[]>([]);
const rowsCheck = ref<ArrayPersonAdd[]>([]);
function fetchData(data: ArrayPersonAdd[]) { function fetchData(data: ArrayPersonAdd[]) {
rowsAdd.value = data; rowsAdd.value = data;
} }
@ -295,7 +296,7 @@ export const useDisciplineMainStore = defineStore("disciplineMainStore", () => {
fetchData, fetchData,
statusResultOptions, statusResultOptions,
convertStatusResult, convertStatusResult,
rowsCheck,
causeTextOptions causeTextOptions
}; };
}); });

View file

@ -1,12 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import Form from "@/modules/11_discipline/components/6_BasicInformation/Director/Form.vue"; import Form from "@/modules/12_evaluatePersonal/components/Director/Form.vue";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import type { FormDataPost } from "@/modules/11_discipline/interface/request/director"; // import type { FormDataPost } from "@/modules/11_discipline/interface/request/director";
import type { DataForm } from "@/modules/12_evaluatePersonal/interface/index/director";
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { messageError, showLoader, hideLoader, dialogConfirm, success } = mixin; const { messageError, showLoader, hideLoader, dialogConfirm, success } = mixin;
@ -16,21 +16,22 @@ const router = useRouter();
* นทกขอมลทเเกไข * นทกขอมลทเเกไข
* @param id ระบ คคล * @param id ระบ คคล
*/ */
function onSubmit(formData:FormDataPost) { function onSubmit(formData:DataForm) {
dialogConfirm($q, () => addData(formData)); dialogConfirm($q, () => addData(formData));
} }
function addData(formData: FormDataPost) { function addData(formData: DataForm) {
console.log(formData)
showLoader(); showLoader();
http http
.post(config.API.director(), { .post(config.API.evaluateDirectorMain(), {
personalId:formData.personalId ?? '', // personalId:formData.personalId ?? '',
prefix: formData.prefix, Prefix: formData.prefix,
firstName: formData.firstname, FirstName: formData.firstname,
lastName: formData.lastname, LastName: formData.lastname,
position: formData.position, Position: formData.position,
email: formData.email, Email: formData.email,
phone: formData.phone, Phone: formData.phone,
}) })
.then((res) => { .then((res) => {
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ");
@ -39,7 +40,7 @@ function addData(formData: FormDataPost) {
messageError($q, e); messageError($q, e);
}) })
.finally(async () => { .finally(async () => {
router.push(`/discipline/director`); router.push(`/evaluate/director`);
}); });
} }
</script> </script>

View file

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, reactive } from "vue"; import { ref, onMounted, reactive } from "vue";
import Form from "@/modules/11_discipline/components/6_BasicInformation/Director/Form.vue"; import Form from "@/modules/12_evaluatePersonal/components/Director/Form.vue";
import type { FormData } from "@/modules/11_discipline/interface/request/director"; import type { FormData } from "@/modules/11_discipline/interface/request/director";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
@ -41,16 +41,17 @@ const data = reactive<FormData>({
const fetchData = async () => { const fetchData = async () => {
showLoader(); showLoader();
await http await http
.get(config.API.directorbyId(personalId.value)) // .get(config.API.evaluateDirectorById(personalId.value))
.get(config.API.evaluateDirectorById('0a185476-c764-42d7-a6f9-2c3824a401ed'))
.then((res) => { .then((res) => {
const dataApi = res.data.result; const dataApi = res.data.result;
personalId.value = dataApi.id; personalId.value = dataApi.Id;
data.prefix = dataApi.prefix; data.prefix = dataApi.Prefix;
data.firstname = dataApi.firstName; data.firstname = dataApi.FirstName;
data.lastname = dataApi.lastName; data.lastname = dataApi.LastName;
data.position = dataApi.position; data.position = dataApi.Position;
data.phone = dataApi.phone; data.phone = dataApi.Phone;
data.email = dataApi.email; data.email = dataApi.Email;
}) })
.catch((e) => { .catch((e) => {
messageError($q, e); messageError($q, e);
@ -71,13 +72,14 @@ function onSubmit(formData: FormData) {
function putData(formData: FormData) { function putData(formData: FormData) {
showLoader(); showLoader();
http http
.put(config.API.directorbyId(personalId.value), { // .put(config.API.evaluateDirectorById(personalId.value), {
prefix: formData.prefix, .put(config.API.evaluateDirectorById('0a185476-c764-42d7-a6f9-2c3824a401ed'), {
firstName: formData.firstname, Prefix: formData.prefix,
lastName: formData.lastname, FirstName: formData.firstname,
position: formData.position, LastName: formData.lastname,
email: formData.email, Position: formData.position,
phone: formData.phone, Email: formData.email,
Phone: formData.phone,
}) })
.then((res) => { .then((res) => {
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ");
@ -86,7 +88,7 @@ function putData(formData: FormData) {
messageError($q, e); messageError($q, e);
}) })
.finally(async () => { .finally(async () => {
router.push(`/discipline/director`); router.push(`/evaluate/director`);
}); });
} }
</script> </script>

View file

@ -83,9 +83,11 @@ function addEmployee() {
keyword: idCard.value, keyword: idCard.value,
}) })
.then((res) => { .then((res) => {
console.log(res)
const dataApi = res.data.result; const dataApi = res.data.result;
if (dataApi.length > 0) { if (dataApi.length > 0) {
const dataList = dataApi[0]; const dataList = dataApi[0];
formData.personalId = dataList.personId;
formData.prefix = dataList.prefix; formData.prefix = dataList.prefix;
formData.firstname = dataList.firstName; formData.firstname = dataList.firstName;
formData.lastname = dataList.lastName; formData.lastname = dataList.lastName;

View file

@ -4,12 +4,12 @@ import type { QTableProps } from "quasar";
import router from "@/router"; import router from "@/router";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useDisciplineDirectorDataStore } from "@/modules/11_discipline/store/DirectorStore"; import { useEvaluateDirectorDataStore } from "@/modules/12_evaluatePersonal/store/DirectorStore";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
const $q = useQuasar(); const $q = useQuasar();
const dataStore = useDisciplineDirectorDataStore(); const dataStore = useEvaluateDirectorDataStore();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { const {
messageError, messageError,
@ -34,37 +34,126 @@ const pagination = ref({
rowsPerPage: rowsPerPage.value, rowsPerPage: rowsPerPage.value,
}); });
watch(() => currentPage.value,() => { watch(
rowsPerPage.value = pagination.value.rowsPerPage; () => currentPage.value,
getList(); () => {
}); rowsPerPage.value = pagination.value.rowsPerPage;
getList();
}
);
watch(()=>pagination.value.rowsPerPage,()=>{ watch(
rowsPerPage.value = pagination.value.rowsPerPage; () => pagination.value.rowsPerPage,
currentPage.value = 1 () => {
getList(); rowsPerPage.value = pagination.value.rowsPerPage;
}) currentPage.value = 1;
async function getList() { getList();
showLoader(); }
await http );
.get(
config.API.directorList( function getList() {
currentPage.value, // showLoader();
rowsPerPage.value, // http
filterKeyword.value // .get(
) // config.API.evaluateDirectorMain(
) // currentPage.value,
.then((res) => { // rowsPerPage.value,
maxPage.value = Math.ceil(res.data.result.total / rowsPerPage.value); // filterKeyword.value
const data = res.data.result.data // )
dataStore.fetchData(data); // )
}) // .then((res) => {
.catch((e) => {
messageError($q, e); // maxPage.value = Math.ceil(res.data.result.total / rowsPerPage.value);
}) // const data = res.data.result.data
.finally(() => { // dataStore.fetchData(data);
hideLoader(); // })
}); // .catch((e) => {
// messageError($q, e);
// })
// .finally(() => {
// hideLoader();
// });
// {
// "Id": "0a185476-c764-42d7-a6f9-2c3824a401ed",
// "CreatedAt": "2023-12-19T02:40:59.898Z",
// "CreatedUserId": "59134ef9-9e62-41d0-aac5-339be727f2b0",
// "LastUpdatedAt": "2023-12-19T02:40:59.898Z",
// "LastUpdateUserId": "59134ef9-9e62-41d0-aac5-339be727f2b0",
// "CreatedFullName": " ",
// "LastUpdateFullName": " ",
// "Prefix": "",
// "FirstName": "",
// "LastName": "",
// "Phone": "0999998767",
// "Email": "email@gmail.com",
// "Position": "frontEnd"
// }
const data = [
{
Id: "xx1",
CreatedAt: "2023-12-19T02:40:59.898Z",
CreatedUserId: "cc1",
LastUpdatedAt: "2023-12-19T02:40:59.898Z",
LastUpdateUserId: "ll1",
CreatedFullName: "สาวิตรี ศรีสมัย",
LastUpdateFullName: "สาวิตรี ศรีสมัย",
Prefix: "นาย",
FirstName: "เทสดี",
LastName: "ลองแอด",
Phone: "0999998767",
Email: "email@gmail.com",
Position: "frontEnd",
},
{
Id: "xx2",
CreatedAt: "2023-12-19T02:40:59.898Z",
CreatedUserId: "cc2",
LastUpdatedAt: "2023-12-19T02:40:59.898Z",
LastUpdateUserId: "ll2",
CreatedFullName: "สาวิตรี ศรีสมัย",
LastUpdateFullName: "สาวิตรี ศรีสมัย",
Prefix: "นาย",
FirstName: "เทสดี",
LastName: "ลองแอด",
Phone: "0999998767",
Email: "email@gmail.com",
Position: "frontEnd",
},
{
Id: "xx3",
CreatedAt: "2023-12-19T02:40:59.898Z",
CreatedUserId: "cc3",
LastUpdatedAt: "2023-12-19T02:40:59.898Z",
LastUpdateUserId: "ll3",
CreatedFullName: "สาวิตรี ศรีสมัย",
LastUpdateFullName: "สาวิตรี ศรีสมัย",
Prefix: "นาย",
FirstName: "เทสดี",
LastName: "ลองแอด",
Phone: "0999998767",
Email: "email@gmail.com",
Position: "frontEnd",
},
{
Id: "xx4",
CreatedAt: "2023-12-19T02:40:59.898Z",
CreatedUserId: "cc5",
LastUpdatedAt: "2023-12-19T02:40:59.898Z",
LastUpdateUserId: "ll5",
CreatedFullName: "สาวิตรี ศรีสมัย",
LastUpdateFullName: "สาวิตรี ศรีสมัย",
Prefix: "นาย",
FirstName: "เทสดี",
LastName: "ลองแอด",
Phone: "0999998767",
Email: "email@gmail.com",
Position: "frontEnd",
},
];
dataStore.fetchData(data);
} }
/** /**
@ -82,7 +171,7 @@ function clickDelete(id: string) {
async function deleteData(id: string) { async function deleteData(id: string) {
showLoader(); showLoader();
await http await http
.delete(config.API.directorbyId(id)) .delete(config.API.evaluateDirectorById(id))
.then((res) => { .then((res) => {
success($q, "ลบข้อมูลสำเร็จ"); success($q, "ลบข้อมูลสำเร็จ");
}) })
@ -94,19 +183,12 @@ async function deleteData(id: string) {
}); });
} }
/**
* งขอมลจำลองไปย store
*/
onMounted(() => {
getList();
// get store
});
/** /**
* นหาในตาราง * นหาในตาราง
*/ */
const filterKeyword = ref<string>(""); const filterKeyword = ref<string>("");
const filterRef = ref<HTMLInputElement | null>(null); const filterRef = ref<HTMLInputElement | null>(null);
function resetFilter() { function resetFilter() {
filterKeyword.value = ""; filterKeyword.value = "";
if (filterRef.value) { if (filterRef.value) {
@ -114,10 +196,14 @@ function resetFilter() {
} }
} }
function filterFn(){ function filterFn() {
getList() getList();
console.log('enter',filterKeyword.value) console.log("enter", filterKeyword.value);
} }
onMounted(() => {
getList();
});
</script> </script>
<template> <template>
<div class="toptitle text-dark col-12 row items-center"> <div class="toptitle text-dark col-12 row items-center">

View file

@ -161,7 +161,6 @@ watch([() => currentPage.value, () => pagination.value.rowsPerPage], () => {
<q-th v-for="col in props.cols" :key="col.name" :props="props"> <q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium" v-html="col.label" /> <span class="text-weight-medium" v-html="col.label" />
</q-th> </q-th>
<q-th auto-width />
</q-tr> </q-tr>
</template> </template>
<template #body="props"> <template #body="props">

View file

@ -0,0 +1,78 @@
interface DataResponseList {
Id:string
CreatedAt:string
CreatedUserId:string
LastUpdatedAt:string
LastUpdateUserId:string
CreatedFullName:string
LastUpdateFullName:string
Prefix:string
FirstName:string
LastName:string
Phone:string
Email:string
Position:string
totalInvestigate?:number
totalDisciplinary?:number
}
interface MainList {
id:string
name:string
createdFullName:string
lastUpdateFullName:string
prefix:string
firstName:string
lastName:string
phone:string
email:string
position:string
createdUserId:string
lastUpdateUserId:string
createdAt:string
lastUpdatedAt:string
totalInvestigate:string|number
totalDisciplinary:string|number
}
interface FormData {
rounded: string
dateMeeting: string
consider: string
period: string
file: FileOj[]
}
interface FileOj{
id:string
pathName:string
fileName:string
}
interface FormRef {
rounded: object | null;
dateMeeting: object | null;
consider: object | null;
period: object | null;
[key: string]: any;
}
interface DataForm {
personalId:string
prefix: string;
firstname: string;
lastname: string;
position: string;
phone: string;
email: string;
}
export type {
DataResponseList,
MainList,
FormData,
FormRef,
FileOj,
DataForm
}

View file

@ -21,7 +21,7 @@ export default [
}, },
}, },
{ {
path: "/evaluate/detail", path: "/evaluate/detail/:id",
name: "evaluateDetail", name: "evaluateDetail",
component: detailPage, component: detailPage,
meta: { meta: {

View file

@ -0,0 +1,123 @@
import { defineStore } from "pinia";
import { ref } from "vue";
import { useCounterMixin } from "@/stores/mixin";
import type { DataResponseList, MainList } from "@/modules/12_evaluatePersonal/interface/index/director";
import type { QTableProps } from "quasar";
// store ระบบวินัย >> ข้อมูลพื้นฐาน >> กรรมการ
export const useEvaluateDirectorDataStore = defineStore(
"evaluateDirector",
() => {
const mixin = useCounterMixin()
const { date2Thai } = mixin
//ค้นหา คอลัมน์ คอลัมน์ที่แสดง
const visibleColumns = ref<string[]>([
"no",
"name",
"position",
"email",
"phone",
"totalInvestigate",
"totalDisciplinary",
]);
// หัวตาราง
const columns = ref<QTableProps["columns"]>([
{
name: "no",
align: "left",
label: "ลำดับ",
sortable: false,
field: "no",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "name",
align: "left",
label: "ชื่อ-นามสกุล",
sortable: true,
field: "name",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "position",
align: "left",
label: "ตำแหน่ง",
sortable: true,
field: "position",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "email",
align: "left",
label: "อีเมล",
sortable: true,
field: "email",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "phone",
align: "left",
label: "เบอร์โทรศัพท์",
sortable: true,
field: "phone",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalInvestigate",
align: "left",
label: "จำนวนการสืบสวน",
sortable: true,
field: "totalInvestigate",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "totalDisciplinary",
align: "left",
label: "จำนวนการสอบสวน",
sortable: true,
field: "totalDisciplinary",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
// ข้อมูลในตาราง
const rows = ref<MainList[]>([]);
function fetchData(data: DataResponseList[]) {
const dataList: MainList[] = data.map((item: DataResponseList) => ({
id:item.Id,
name:`${item.Prefix}${item.FirstName} ${item.LastName}`,
prefix:item.Prefix,
firstName:item.FirstName,
lastName:item.LastName,
phone:item.Phone,
email:item.Email,
position:item.Position,
totalInvestigate:item.totalInvestigate ? item.totalInvestigate :'-',
totalDisciplinary:item.totalDisciplinary ? item.totalDisciplinary :'-',
createdFullName:item.CreatedFullName,
lastUpdateFullName:item.LastUpdateFullName,
createdUserId:item.CreatedUserId,
lastUpdateUserId:item.LastUpdateUserId,
createdAt:item.CreatedAt,
lastUpdatedAt:item.LastUpdatedAt,
}))
rows.value = dataList
}
return {
visibleColumns,
columns,
rows,
fetchData
};
}
);

View file

@ -54,6 +54,7 @@ export const useEvalutuonStore = defineStore("EvalutuonStore", () => {
const rows = ref<any[]>([]); const rows = ref<any[]>([]);
function fetchData(data: any[]) { function fetchData(data: any[]) {
const dataList: any[] = data.map((data: any) => ({ const dataList: any[] = data.map((data: any) => ({
id: data.id,
citizanId: data.citizanId, citizanId: data.citizanId,
fullName: data.fullName, fullName: data.fullName,
position: data.position, position: data.position,

View file

@ -20,8 +20,8 @@ const { showLoader, hideLoader, messageError } = mixin;
const initialPagination = ref<Pagination>({ const initialPagination = ref<Pagination>({
rowsPerPage: 0, rowsPerPage: 0,
}); });
function Detailpage() { function Detailpage(id:string) {
router.push("/evaluate/detail"); router.push(`/evaluate/detail/${id}`);
} }
const page = ref<number>(1); const page = ref<number>(1);
@ -35,6 +35,7 @@ const filter = ref<string>("");
onMounted(async () => { onMounted(async () => {
store.fetchData([ store.fetchData([
{ {
id:'xxx1',
citizanId: "1230030004001", citizanId: "1230030004001",
fullName: "นางวัศยา ศรีสร้อย", fullName: "นางวัศยา ศรีสร้อย",
position: "ผู้อำนวยการสถาบัน", position: "ผู้อำนวยการสถาบัน",
@ -44,6 +45,7 @@ onMounted(async () => {
status: "WAIT_CHECK_DOC_V1", status: "WAIT_CHECK_DOC_V1",
}, },
{ {
id:'xxx2',
citizanId: "122222000401", citizanId: "122222000401",
fullName: "นายสิริศักดิ์ พรมบุตร", fullName: "นายสิริศักดิ์ พรมบุตร",
position: "นักบริหาร", position: "นักบริหาร",
@ -53,6 +55,7 @@ onMounted(async () => {
status: "WAIT_CHECK_DOC_V2", status: "WAIT_CHECK_DOC_V2",
}, },
{ {
id:'xxx3',
citizanId: "111111100401", citizanId: "111111100401",
fullName: "นายเอกฉัท วีระโชติ ", fullName: "นายเอกฉัท วีระโชติ ",
position: "นักบริหาร", position: "นักบริหาร",
@ -62,6 +65,7 @@ onMounted(async () => {
status: "DONE", status: "DONE",
}, },
{ {
id:'xxx4',
citizanId: "122203000401", citizanId: "122203000401",
fullName: "นางธนิดา มั่นคงประสิทธิ์", fullName: "นางธนิดา มั่นคงประสิทธิ์",
position: "ผู้อำนวยการกอง", position: "ผู้อำนวยการกอง",
@ -71,6 +75,7 @@ onMounted(async () => {
status: "WAIT_CHECK_DOC_V1", status: "WAIT_CHECK_DOC_V1",
}, },
{ {
id:'xxx5',
citizanId: "123003111401", citizanId: "123003111401",
fullName: "นางณิชมน ลือขำ ", fullName: "นางณิชมน ลือขำ ",
position: "ผู้อำนวยการสถาบัน", position: "ผู้อำนวยการสถาบัน",
@ -80,6 +85,7 @@ onMounted(async () => {
status: "WAIT_CHECK_DOC_V2", status: "WAIT_CHECK_DOC_V2",
}, },
{ {
id:'xxx6',
citizanId: "111111100401", citizanId: "111111100401",
fullName: "นายเอกฉัท วีระโชติ ", fullName: "นายเอกฉัท วีระโชติ ",
position: "นักบริหาร", position: "นักบริหาร",
@ -89,6 +95,7 @@ onMounted(async () => {
status: "ANNOUNCE_WEB", status: "ANNOUNCE_WEB",
}, },
{ {
id:'xxx7',
citizanId: "111111100401", citizanId: "111111100401",
fullName: "นายเอกฉัท วีระโชติ ", fullName: "นายเอกฉัท วีระโชติ ",
position: "นักบริหาร", position: "นักบริหาร",
@ -98,6 +105,7 @@ onMounted(async () => {
status: "PREPARE_DOC_V2", status: "PREPARE_DOC_V2",
}, },
{ {
id:'xxx8',
citizanId: "111111100401", citizanId: "111111100401",
fullName: "นายเอกฉัท วีระโชติ ", fullName: "นายเอกฉัท วีระโชติ ",
position: "นักบริหาร", position: "นักบริหาร",
@ -133,7 +141,7 @@ onMounted(async () => {
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props"> <q-td v-for="col in props.cols" :key="col.name" :props="props" @click="Detailpage(props.row.id)">
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }} {{ props.rowIndex + 1 }}
</div> </div>
@ -141,79 +149,6 @@ onMounted(async () => {
{{ col.value }} {{ col.value }}
</div> </div>
</q-td> </q-td>
<q-td auto-width>
<q-btn
icon="mdi-dots-vertical"
size="12px"
color="grey-7"
flat
round
dense
>
<q-menu transition-show="jump-down" transition-hide="jump-up">
{{ props.rows && props.rows.status }}
<q-list dense style="min-width: 100px">
<q-item
clickable
v-close-popup
@click="Detailpage()"
v-if="props.row.status === 'รอตรวจสอบคุณสมบัติ'"
>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-icon
color="primary"
size="xs"
name="mdi-eye"
/>
</q-item-section>
<q-item-section>รายละเอยดคำขอ</q-item-section>
</q-item>
<q-separator />
<q-item clickable v-close-popup>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-icon
color="blue"
size="xs"
name="mdi-account-details-outline"
/>
</q-item-section>
<q-item-section>ประวการเปลยนสถานะ</q-item-section>
</q-item>
<q-separator />
<q-item
clickable
v-close-popup
@click="Detailpage()"
v-if="props.row.status === 'รอพิจารณาผลการประเมิน'"
>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-icon
color="primary"
size="xs"
name="mdi-account-outline"
/>
</q-item-section>
<q-item-section>จารณาผลการประเม </q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-td>
</q-tr> </q-tr>
</template> </template>
</Table> </Table>