hrms-mgt/src/modules/11_discipline/store/InvestigateDisStore.ts

293 lines
8.4 KiB
TypeScript

import { defineStore } from "pinia";
import { ref } from "vue";
import type { QTableProps } from "quasar";
import type {
investigateDisDataRowType,
DataOption,
directorType,
responseType
} from "@/modules/11_discipline/interface/index/Main";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin();
const { date2Thai } = mixin;
export const useInvestigateDisStore = defineStore(
"DisciplineInvestigateDis",
() => {
const tabMenu = ref<string>("disciplinary");
const rows = ref<investigateDisDataRowType[]>([]);
const rows2 = ref<directorType[]>([]);
const selected = ref<directorType[]>([]);
const optionsTypefault = ref<DataOption[]>([
{ id: "0", name: "ไม่ระบุ" },
{ id: "1", name: "ร้ายแรง" },
{ id: "2", name: "ไม่ร้ายแรง" },
]);
const optionsfaultLevel = ref<DataOption[]>([
{ id: "0", name: "ไม่ร้ายแรง" },
{ id: "1", name: "ภาคทัณฑ์" },
{ id: "2", name: "ตัดเงินเดือน" },
{ id: "3", name: "ลดขั้นเงินเดือน" },
{ id: "4", name: "ร้ายแรง" },
{ id: "5", name: "ปลดออก" },
{ id: "6", name: "ไล่ออก" },
]);
async function fecthList(data: investigateDisDataRowType[]) {
let datalist: investigateDisDataRowType[] = data.map((e: any) => ({
id: e.id,
subject: e.subject,
interrogated: e.interrogated,
fault: convertFault(e.fault),
penaltyLevel: convertPenaltyLevel(e.penaltyLevel),
caseFault: e.caseFault,
dateInvestigate: date2Thai(new Date(e.dateInvestigate)),
status: convertSatatus(e.status),
active: activeStatus(e.active),
}));
rows.value = datalist;
}
async function fecthDirector(data: directorType[]) {
let datalistDirector: responseType[] = data.map((e: directorType) => ({
id: e.id,
name: `${e.prefix}${e.firstName} ${e.lastName}`,
prefix:e.prefix,
firstName:e.firstName,
lastName:e.lastName,
position: e.position,
email: e.email,
phone: e.phone,
}));
rows2.value = datalistDirector;
selected.value = rows2.value;
console.log(rows2.value);
}
function convertFault(val: string) {
switch (val) {
case "0":
return "ความผิดวินัยยังไม่ระบุ";
case "1":
return "ความผิดวินัยไม่ร้ายแรง";
case "2":
return "ความผิดวินัยร้ายแรง";
}
}
function convertSatatus(val: string) {
switch (val) {
case "0":
return "เสร็จสิ้นแล้ว";
case "1":
return "ยุติเรื่อง";
}
}
function activeStatus(val: string) {
switch (val) {
case "0":
return "กำลังยืนยันผล";
case "1":
return "ยืนยันผลเเล้ว";
case "2":
return "ยืนยันผล";
}
}
function convertPenaltyLevel(val: string) {
switch (val) {
case "0":
return "ไม่ร้ายแรง";
case "1":
return "ภาคทัณฑ์";
case "3":
return "ตัดเงินเดือน";
case "4":
return "ลดขั้นเงินเดือน";
case "5":
return "ร้ายแรง";
case "6":
return "ปลดออก";
case "7":
return "ไล่ออก";
}
}
const visibleColumns = ref<String[]>([
"no",
"subject",
"interrogated",
"fault",
"penaltyLevel",
"caseFault",
"dateInvestigate",
"status",
]);
const columns = ref<QTableProps["columns"]>([
{
name: "no",
align: "center",
label: "ลำดับ",
sortable: false,
field: "no",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "subject",
align: "left",
label: "เรื่อง",
sortable: true,
field: "subject",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "interrogated",
align: "left",
label: "ผู้ถูกสืบสวน",
sortable: true,
field: "interrogated",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "fault",
align: "left",
label: "ลักษณะความผิด",
sortable: true,
field: "fault",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "penaltyLevel",
align: "left",
label: "ระดับโทษความผิด",
sortable: true,
field: "penaltyLevel",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "caseFault",
align: "left",
label: "กรณีความผิด",
sortable: true,
field: "caseFault",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "dateInvestigate",
align: "left",
label: "วันที่สอบสวน",
sortable: true,
field: "dateInvestigate",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "status",
align: "left",
label: "สถานะ",
sortable: true,
field: "status",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const visibleColumnsDirector = ref<String[]>([
"no",
"name",
"position",
"duty",
"email",
"telephone",
"role",
]);
const columnsDirector = 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: "duty",
align: "left",
label: "หน้าที่",
sortable: true,
field: "duty",
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: "telephone",
align: "left",
label: "เบอร์โทรศัพท์",
sortable: true,
field: "telephone",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "role",
align: "left",
label: "จำนวนเรื่องสืบสวน",
sortable: true,
field: "role",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
return {
tabMenu,
fecthList,
rows,
rows2,
optionsTypefault,
optionsfaultLevel,
fecthDirector,
visibleColumns,
columns,
visibleColumnsDirector,
columnsDirector,
};
}
);