import { defineStore } from "pinia"; import { ref } from "vue"; import type { QTableProps } from "quasar"; import type { investigateDisDataRowType, DataOption, directorType, responseType, DataOptioGroup, DataNumberOption, } from "@/modules/11_discipline/interface/index/Main"; import type { Persons } from "@/modules/11_discipline/interface/request/disciplinary"; import { useCounterMixin } from "@/stores/mixin"; const mixin = useCounterMixin(); const { date2Thai } = mixin; export const useInvestigateDisStore = defineStore( "DisciplineInvestigateDis", () => { const tabMenu = ref("disciplinary"); const rows = ref([]); const rowSent = ref([]); const rows2 = ref([]); const selected = ref([]); const daysExtendOps = ref([ { id: 15, name: "15 วัน" }, { id: 30, name: "30 วัน" }, { id: 45, name: "45 วัน" }, { id: 60, name: "60 วัน" }, ]); const offenseDetailsOps = ref([ { id: "NOT_SPECIFIED", name: "ยังไม่ระบุ" }, { id: "HAVE_CAUSE", name: "มีมูล" }, { id: "NO_CAUSE", name: "ไม่มีมูล" }, ]); const optionsfaultLevel = ref([ { id: "0", name: "ไม่ร้ายแรง", disable: true }, { id: "ภาคทัณฑ์", name: "ภาคทัณฑ์", disable: false }, { id: "ตัดเงินเดือน", name: "ตัดเงินเดือน", disable: false, }, { id: "ลดขั้นเงินเดือน", name: "ลดขั้นเงินเดือน", disable: false, }, { id: "4", name: "ร้ายแรง", disable: true }, { id: "ปลดออก", name: "ปลดออก", disable: false }, { id: "ไล่ออก", name: "ไล่ออก", disable: false }, { id: "อื่นๆ", name: "อื่นๆ", disable: false }, ]); const statusOps = ref([ { id: "NEW", name: "กำลังสอบสวน" }, { id: "STOP", name: "ยุติเรื่อง" }, { id: "DONE", name: "ส่งไปสรุปผลการพิจารณาแล้ว" }, ]); const causeTextOptions = ref([ { id: "ร้ายแรง", name: "ร้ายแรง" }, { id: "ไม่ร้ายแรง", name: "ไม่ร้ายแรง" }, ]); const statusOptions = ref([ { id: "ALL", name: "ทั้งหมด" }, { id: "NEW", name: "กำลังสอบสวน" }, { id: "STOP", name: "ยุติเรื่อง" }, { id: "DONE", name: "ส่งไปสรุปผลการพิจารณาแล้ว" }, ]); const visibleColumns = ref([ "no", "title", "respondentType", "offenseDetails", "disciplinaryFaultLevel", "disciplinaryCaseFault", "disciplinaryDate", "createdAt", "status", ]); const columns = ref([ { name: "no", align: "center", label: "ลำดับ", sortable: false, field: "no", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "title", align: "left", label: "เรื่องร้องเรียน", sortable: true, field: "title", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "respondentType", align: "left", label: "ผู้ถูกสอบสวน", sortable: true, field: "respondentType", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "offenseDetails", align: "left", label: "ลักษณะความผิด", sortable: true, field: "offenseDetails", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "disciplinaryFaultLevel", align: "left", label: "ระดับโทษความผิด", sortable: true, field: "disciplinaryFaultLevel", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "disciplinaryCaseFault", align: "left", label: "กรณีความผิด", sortable: true, field: "disciplinaryCaseFault", headerStyle: "font-size: 14px", style: "font-size: 14px", sort: (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "disciplinaryDate", align: "left", label: "วันที่สอบสวน", sortable: true, field: "disciplinaryDate", headerStyle: "font-size: 14px", style: "font-size: 14px", }, { name: "createdAt", align: "left", label: "วันที่รับเรื่อง", sortable: true, field: "createdAt", 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([ "no", "name", "position", "duty", "commandNo", "email", "phone", "total", ]); const columnsDirector = ref([ { 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: "commandNo", align: "left", label: "มติ/คำสั่ง", sortable: true, field: "commandNo", 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", } ]); function convertStatus(val: string) { const result = statusOps.value.find((x: any) => x.id == val)?.name; return result ? result : "-"; } async function fetchList(data: investigateDisDataRowType[]) { let datalist: any[] = data.map((e: any) => ({ id: e.id, title: e.title ? e.title : '-', respondentType: e.respondentType ? convertRespondentType(e.respondentType) : '-', offenseDetails: e.offenseDetails ? convertFault(e.offenseDetails) : '-', disciplinaryFaultLevel: e.disciplinaryFaultLevel ?? "-", disciplinaryCaseFault: e.disciplinaryCaseFault ?? "-", disciplinaryDate: e.disciplinaryDateStart && e.disciplinaryDateEnd ? `${date2Thai(e.disciplinaryDateStart)} - ${date2Thai(e.disciplinaryDateEnd)}` : '-', status: convertStatus(e.status) ?? "-", createdAt: e.createdAt ? date2Thai(e.createdAt) : "-", })); 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 convertRespondentType(val: string) { switch (val) { case "PERSON": return "บุคคล"; case "ORGANIZATION": return "หน่วยงาน"; case "BANGKOK": return "กรุงเทพมหานคร"; } } function convertFault(val: string) { switch (val) { case "NOT_SPECIFIED": return "ความผิดวินัยยังไม่ระบุ"; case "NOT_DEADLY": return "ความผิดวินัยไม่ร้ายแรง"; case "DEADLY": return "ความผิดวินัยร้ายแรง"; default: return "-"; } } function filterFnOptionsType( val: string | number, update: any, type: string ) { update(() => { if (type === "offenseDetailsOps") { offenseDetailsOps.value = offenseDetailsOps.value.filter( (v: any) => v.name.toLowerCase().indexOf(val) > -1 ); } }); } return { tabMenu, fetchList, rows, rows2, rowSent, offenseDetailsOps, optionsfaultLevel, fecthDirector, visibleColumns, columns, visibleColumnsDirector, columnsDirector, daysExtendOps, filterFnOptionsType, causeTextOptions, convertRespondentType, convertFault, statusOptions }; } );