2023-10-16 18:13:03 +07:00
|
|
|
import { defineStore } from "pinia";
|
|
|
|
|
import { ref } from "vue";
|
2023-11-23 15:47:14 +07:00
|
|
|
import { useCounterMixin } from "@/stores/mixin";
|
|
|
|
|
|
2023-10-19 14:36:12 +07:00
|
|
|
import type { QTableProps } from "quasar";
|
2023-11-22 11:26:10 +07:00
|
|
|
import type {
|
2023-11-23 15:47:14 +07:00
|
|
|
InvestigatefactsDataRowType,
|
2023-11-22 11:26:10 +07:00
|
|
|
DataOption,
|
|
|
|
|
DataNumberOption,
|
|
|
|
|
} from "@/modules/11_discipline/interface/index/Main";
|
2023-11-23 15:47:14 +07:00
|
|
|
import type { ListData } from "@/modules/11_discipline/interface/response/investigate";
|
|
|
|
|
|
|
|
|
|
const mixin = useCounterMixin();
|
|
|
|
|
const { date2Thai } = mixin;
|
2023-10-16 18:13:03 +07:00
|
|
|
|
2023-11-08 15:25:01 +07:00
|
|
|
/*** store ของข้อมูลสืบสวนข้อเท็จจริง */
|
2023-11-22 11:26:10 +07:00
|
|
|
export const useInvestigateFactStore = defineStore(
|
|
|
|
|
"DisciplineInvestigateFact",
|
|
|
|
|
() => {
|
|
|
|
|
const tabMenu = ref<string>("investigatefacts");
|
2023-11-06 17:54:35 +07:00
|
|
|
|
2023-11-08 15:25:01 +07:00
|
|
|
const daysExtendOps = ref<DataNumberOption[]>([
|
2023-11-22 11:26:10 +07:00
|
|
|
{ id: 15, name: "15 วัน" },
|
|
|
|
|
{ id: 30, name: "30 วัน" },
|
|
|
|
|
{ id: 45, name: "45 วัน" },
|
|
|
|
|
{ id: 60, name: "60 วัน" },
|
2023-10-18 11:46:28 +07:00
|
|
|
]);
|
2023-11-23 15:47:14 +07:00
|
|
|
|
|
|
|
|
const offenseDetailsOps = ref<DataOption[]>([
|
|
|
|
|
{ id: "NOT_SPECIFIED", name: "ยังไม่ระบุ" },
|
|
|
|
|
{ id: "NOT_DEADLY", name: "ไม่ร้ายแรง" },
|
|
|
|
|
{ id: "DEADLY", name: "ร้ายแรง" },
|
|
|
|
|
]);
|
2023-10-18 11:46:28 +07:00
|
|
|
const investigationOps = ref<DataOption[]>([
|
2023-11-23 15:47:14 +07:00
|
|
|
{ id: "appoint_directors", name: "แต่งตั้งกรรมการสืบสวน" },
|
|
|
|
|
{ id: "secret_investigation", name: "สืบสวนทางลับ" },
|
|
|
|
|
{ id: "other", name: "อื่นๆ" },
|
2023-10-18 11:46:28 +07:00
|
|
|
]);
|
|
|
|
|
const faultOps = ref<DataOption[]>([
|
2023-11-23 15:47:14 +07:00
|
|
|
{ id: "new", name: "กำลังสืบสวน" },
|
|
|
|
|
{ id: "stop", name: "ยุติเรื่อง" },
|
|
|
|
|
{ id: "complete", name: "ส่งไปสอบสวน" },
|
2023-10-18 11:46:28 +07:00
|
|
|
]);
|
2023-11-08 15:25:01 +07:00
|
|
|
const statusResultOptions = ref<DataOption[]>([
|
2023-11-22 11:26:10 +07:00
|
|
|
{ id: "not_specified", name: "ยังไม่ระบุ" },
|
|
|
|
|
{ id: "have_cause", name: "มีมูล" },
|
|
|
|
|
{ id: "no_cause", name: "ไม่มีมูล" },
|
2023-11-08 15:25:01 +07:00
|
|
|
]);
|
|
|
|
|
const causeTextOptions = ref<DataOption[]>([
|
2023-11-22 11:26:10 +07:00
|
|
|
{ id: "ร้ายแรง", name: "ร้ายแรง" },
|
|
|
|
|
{ id: "ไม่ร้ายแรง", name: "ไม่ร้ายแรง" },
|
2023-11-08 15:25:01 +07:00
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
const daysExtendOp = ref<DataNumberOption[]>(daysExtendOps.value);
|
2023-11-06 17:54:35 +07:00
|
|
|
const investigationOp = ref<DataOption[]>(investigationOps.value);
|
|
|
|
|
const faultOp = ref<DataOption[]>(faultOps.value);
|
2023-10-19 14:36:12 +07:00
|
|
|
const visibleColumns = ref<string[]>([
|
2023-11-22 11:26:10 +07:00
|
|
|
"no",
|
|
|
|
|
"subject",
|
|
|
|
|
"interrogated",
|
2023-11-23 15:47:14 +07:00
|
|
|
"complaintOffenseDetails",
|
|
|
|
|
"investigationDetail",
|
|
|
|
|
"dateInvestigate",
|
|
|
|
|
"statusResult",
|
2023-11-22 11:26:10 +07:00
|
|
|
"status",
|
2023-11-14 11:18:52 +07:00
|
|
|
]);
|
2023-10-19 14:36:12 +07:00
|
|
|
|
|
|
|
|
// หัวตาราง
|
|
|
|
|
const columns = ref<QTableProps["columns"]>([
|
2023-11-22 11:26:10 +07:00
|
|
|
{
|
|
|
|
|
name: "no",
|
|
|
|
|
align: "center",
|
|
|
|
|
label: "ลำดับ",
|
|
|
|
|
sortable: false,
|
|
|
|
|
field: "no",
|
|
|
|
|
headerStyle: "font-size: 14px",
|
|
|
|
|
style: "font-size: 14px",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "subject",
|
|
|
|
|
align: "left",
|
2023-11-23 15:47:14 +07:00
|
|
|
label: "เรื่องร้องเรียน",
|
2023-11-22 11:26:10 +07:00
|
|
|
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" }),
|
|
|
|
|
},
|
|
|
|
|
{
|
2023-11-23 15:47:14 +07:00
|
|
|
name: "complaintOffenseDetails",
|
2023-11-22 11:26:10 +07:00
|
|
|
align: "left",
|
|
|
|
|
label: "ลักษณะความผิด",
|
|
|
|
|
sortable: true,
|
2023-11-23 15:47:14 +07:00
|
|
|
field: "complaintOffenseDetails",
|
|
|
|
|
headerStyle: "font-size: 14px",
|
|
|
|
|
style: "font-size: 14px",
|
|
|
|
|
sort: (a: string, b: string) =>
|
|
|
|
|
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "investigationDetail",
|
|
|
|
|
align: "left",
|
|
|
|
|
label: "ลักษณะการสืบสวน",
|
|
|
|
|
sortable: true,
|
|
|
|
|
field: "investigationDetail",
|
|
|
|
|
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",
|
|
|
|
|
sort: (a: string, b: string) =>
|
|
|
|
|
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "statusResult",
|
|
|
|
|
align: "left",
|
|
|
|
|
label: "ผลการสืบสวน",
|
|
|
|
|
sortable: true,
|
|
|
|
|
field: "statusResult",
|
2023-11-22 11:26:10 +07:00
|
|
|
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",
|
|
|
|
|
},
|
2023-10-19 14:36:12 +07:00
|
|
|
]);
|
2023-11-23 15:47:14 +07:00
|
|
|
|
2023-11-22 11:26:10 +07:00
|
|
|
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
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-10-18 11:46:28 +07:00
|
|
|
}
|
2023-11-23 15:47:14 +07:00
|
|
|
|
|
|
|
|
const rows = ref<InvestigatefactsDataRowType[]>();
|
|
|
|
|
async function fecthList(data: ListData[]) {
|
|
|
|
|
rows.value = await data.map((e: ListData) => {
|
|
|
|
|
return {
|
|
|
|
|
id: e.id,
|
|
|
|
|
subject: e.subject,
|
|
|
|
|
interrogated: e.interrogated,
|
|
|
|
|
complaintOffenseDetails: convertOffenseDetails(
|
|
|
|
|
e.complaintOffenseDetails
|
|
|
|
|
),
|
|
|
|
|
investigationDetail: convertInvestigationDetail(
|
|
|
|
|
e.investigationDetail
|
|
|
|
|
),
|
|
|
|
|
dateInvestigate:
|
|
|
|
|
e.startDate && e.endDate
|
|
|
|
|
? `${date2Thai(e.startDate)} - ${date2Thai(e.endDate)}`
|
|
|
|
|
: "-",
|
|
|
|
|
statusResult: activeStatusResult(e.statusResult),
|
|
|
|
|
status: convertStatus(e.status),
|
|
|
|
|
};
|
|
|
|
|
});
|
2023-10-16 18:13:03 +07:00
|
|
|
}
|
2023-11-23 15:47:14 +07:00
|
|
|
|
|
|
|
|
function convertOffenseDetails(val: string) {
|
|
|
|
|
const result = offenseDetailsOps.value.find((x: any) => x.id == val)?.name;
|
|
|
|
|
return result ? result : "-";
|
2023-10-16 18:13:03 +07:00
|
|
|
}
|
2023-11-23 15:47:14 +07:00
|
|
|
|
|
|
|
|
function convertInvestigationDetail(val: string) {
|
|
|
|
|
const result = investigationOps.value.find((x: any) => x.id == val)?.name;
|
|
|
|
|
return result ? result : "-";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function convertStatus(val: string) {
|
|
|
|
|
const result = faultOps.value.find((x: any) => x.id == val)?.name;
|
|
|
|
|
return result ? result : "-";
|
2023-10-16 18:13:03 +07:00
|
|
|
}
|
2023-11-23 15:47:14 +07:00
|
|
|
function activeStatusResult(val: string) {
|
|
|
|
|
const result = statusResultOptions.value.find(
|
|
|
|
|
(x: any) => x.id == val
|
|
|
|
|
)?.name;
|
|
|
|
|
return result ? result : "-";
|
2023-10-16 18:13:03 +07:00
|
|
|
}
|
2023-11-23 15:47:14 +07:00
|
|
|
|
2023-10-16 18:13:03 +07:00
|
|
|
return {
|
2023-11-22 11:26:10 +07:00
|
|
|
tabMenu,
|
|
|
|
|
fecthList,
|
|
|
|
|
rows,
|
|
|
|
|
daysExtendOps,
|
|
|
|
|
investigationOps,
|
|
|
|
|
faultOps,
|
|
|
|
|
filterFnOptionsType,
|
|
|
|
|
faultOp,
|
|
|
|
|
daysExtendOp,
|
|
|
|
|
investigationOp,
|
|
|
|
|
visibleColumns,
|
|
|
|
|
columns,
|
|
|
|
|
statusResultOptions,
|
|
|
|
|
causeTextOptions,
|
2023-10-16 18:13:03 +07:00
|
|
|
};
|
2023-11-22 11:26:10 +07:00
|
|
|
}
|
|
|
|
|
);
|