import { defineStore } from "pinia"; import { ref } from "vue"; import type { QTableProps } from "quasar"; import type { investigatefactsDataRowType, DataOption, DataNumberOption, } from "@/modules/11_discipline/interface/index/Main"; /*** store ของข้อมูลสืบสวนข้อเท็จจริง */ export const useInvestigateFactStore = defineStore( "DisciplineInvestigateFact", () => { const tabMenu = ref("investigatefacts"); const rows = ref([]); const daysExtendOps = ref([ { id: 15, name: "15 วัน" }, { id: 30, name: "30 วัน" }, { id: 45, name: "45 วัน" }, { id: 60, name: "60 วัน" }, ]); const investigationOps = ref([ { id: "001", name: "แต่งตั้งกรรมการสืบสวน" }, { id: "002", name: "สืบสวนทางลับ" }, { id: "003", name: "อื่นๆ" }, ]); const faultOps = ref([ { id: "001", name: "ยังไม่ระบุ" }, { id: "002", name: "ไม่ร้ายเเรง" }, { id: "003", name: "ร้ายเเรง" }, ]); const statusResultOptions = ref([ { id: "not_specified", name: "ยังไม่ระบุ" }, { id: "have_cause", name: "มีมูล" }, { id: "no_cause", name: "ไม่มีมูล" }, ]); const causeTextOptions = ref([ { id: "ร้ายแรง", name: "ร้ายแรง" }, { id: "ไม่ร้ายแรง", name: "ไม่ร้ายแรง" }, ]); const daysExtendOp = ref(daysExtendOps.value); const investigationOp = ref(investigationOps.value); const faultOp = ref(faultOps.value); const visibleColumns = ref([ "no", "subject", "interrogated", "fault", "status", ]); // หัวตาราง const columns = ref([ { 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: "status", align: "left", label: "สถานะ", sortable: false, field: "status", headerStyle: "font-size: 14px", style: "font-size: 14px", }, ]); function filterFnOptionsType( val: string | number, update: any, type: string ) { update(() => { if (type === "faultOp") { faultOp.value = faultOps.value.filter( (v: any) => v.name.toLowerCase().indexOf(val) > -1 ); } else if (type === "investigationOp") { investigationOp.value = investigationOps.value.filter( (v: any) => v.name.toLowerCase().indexOf(val) > -1 ); } else if (type === "daysExtendOp") { daysExtendOp.value = daysExtendOps.value.filter( (v: any) => v.id.indexOf(val) > -1 ); } }); } function fecthList(data: investigatefactsDataRowType[]) { let datalist: investigatefactsDataRowType[] = data.map( (e: investigatefactsDataRowType) => { return { id: e.id, subject: e.subject, interrogated: e.interrogated, fault: e.fault ? convertFault(e.fault) : "-", status: e.status ? convertSatatus(e.status) : "-", active: e.active ? activeStatus(e.active) : "-", }; } ); rows.value = datalist; } function convertFault(val: string) { switch (val) { case "0": return "ความผิดวินัยไม่ร้ายแรง"; case "1": 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 "ยืนยันผลเเล้ว"; } } return { tabMenu, fecthList, rows, daysExtendOps, investigationOps, faultOps, filterFnOptionsType, faultOp, daysExtendOp, investigationOp, visibleColumns, columns, statusResultOptions, causeTextOptions, }; } );