รายการสืบสวนข้อเท็จจริง

This commit is contained in:
STW_TTTY\stwtt 2024-08-08 10:42:47 +07:00
parent 3f2aff52e1
commit 8b54d6b4b1
4 changed files with 123 additions and 66 deletions

View file

@ -27,6 +27,8 @@ const store = useInvestigateFactStore();
const { dialogConfirm, showLoader, success, hideLoader, messageError } = mixin; const { dialogConfirm, showLoader, success, hideLoader, messageError } = mixin;
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const checkRoutePermisson = ref<boolean>(route.name == "disciplineInvestigatefactsDetail");
const id = ref<string>(route.params.id as string); const id = ref<string>(route.params.id as string);
const modalPopup = ref<boolean>(false); const modalPopup = ref<boolean>(false);
@ -349,10 +351,10 @@ watch(
class="q-mr-sm" class="q-mr-sm"
@click="$router.push(`/discipline/investigatefacts`)" @click="$router.push(`/discipline/investigatefacts`)"
/> />
<div class="q-ma-none">แกไขรายการสบสวนขอเทจจร</div> <div class="q-ma-none">{{ checkRoutePermisson ? 'รายละเอียดรายการสืบสวนข้อเท็จจริง':'แก้ไขรายการสืบสวนข้อเท็จจริง'}}</div>
<q-space /> <q-space />
<div class="q-gutter-x-sm"> <div class="q-gutter-x-sm" v-if="!checkRoutePermisson">
<q-btn <q-btn
v-if="data.status === 'NEW'" v-if="data.status === 'NEW'"
label="ส่งไปสอบสวน" label="ส่งไปสอบสวน"

View file

@ -28,6 +28,9 @@ const personId = ref<string>("");
const $q = useQuasar(); const $q = useQuasar();
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const checkRoutePermisson = ref<boolean>(
route.name == "disciplineInvestigatefactsDetail"
);
const id = ref<string>(route.params.id as string); 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);
@ -763,7 +766,7 @@ onMounted(async () => {
ref="respondentTypeRef" ref="respondentTypeRef"
dense dense
outlined outlined
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
label="ผู้ถูกร้องเรียน" label="ผู้ถูกร้องเรียน"
option-value="id" option-value="id"
option-label="name" option-label="name"
@ -799,7 +802,7 @@ onMounted(async () => {
ref="organizationIdRef" ref="organizationIdRef"
dense dense
hide-bottom-space hide-bottom-space
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
outlined outlined
option-label="name" option-label="name"
option-value="id" option-value="id"
@ -836,7 +839,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-5"> <div class="col-xs-12 col-sm-5">
<q-select <q-select
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
for="#investigationDetail" for="#investigationDetail"
outlined outlined
hide-bottom-space hide-bottom-space
@ -878,7 +881,7 @@ onMounted(async () => {
> >
กรองเรยน กรองเรยน
<q-btn <q-btn
v-if="!isReadonly" v-if="!isReadonly && !checkRoutePermisson"
size="12px" size="12px"
flat flat
round round
@ -918,7 +921,6 @@ onMounted(async () => {
col.label col.label
}}</span> }}</span>
</q-th> </q-th>
<q-th auto-width></q-th>
</q-tr> </q-tr>
</template> </template>
<template v-slot:body="props"> <template v-slot:body="props">
@ -929,11 +931,25 @@ onMounted(async () => {
flat flat
round round
color="info" color="info"
icon="info" icon="mdi-eye"
@click="onclickViewinfo(props.row.personId)" @click="onclickViewinfo(props.row.personId)"
> >
<q-tooltip>อมลในทะเบยนประว</q-tooltip> <q-tooltip>อมลในทะเบยนประว</q-tooltip>
</q-btn> </q-btn>
<q-btn
v-if="
!isReadonly &&
!checkRoutePermisson &&
props.row.isAncestorDNA === false
"
flat
round
dense
color="red"
icon="mdi-delete"
@click="deletePerson(props.row.personId)"
><q-tooltip>ลบผกรองเรยน</q-tooltip></q-btn
>
</td> </td>
<q-td <q-td
v-for="col in props.cols" v-for="col in props.cols"
@ -956,22 +972,6 @@ onMounted(async () => {
{{ col.value ?? "-" }} {{ col.value ?? "-" }}
</div> </div>
</q-td> </q-td>
<q-td auto-width>
<q-btn
v-if="
!isReadonly && props.row.isAncestorDNA === false
"
size="12px"
flat
round
dense
color="red"
class="q-ml-sm"
icon="mdi-delete-outline"
@click="deletePerson(props.row.personId)"
><q-tooltip>ลบผกรองเรยน</q-tooltip></q-btn
>
</q-td>
</q-tr> </q-tr>
</template> </template>
</d-table> </d-table>
@ -984,7 +984,7 @@ onMounted(async () => {
> >
<q-input <q-input
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
for="#investigationDetailOther" for="#investigationDetailOther"
outlined outlined
ref="investigationDetailOtherRef" ref="investigationDetailOtherRef"
@ -1012,7 +1012,8 @@ onMounted(async () => {
<q-checkbox <q-checkbox
v-if=" v-if="
props.data.investigationExtendHistory.length > 0 && props.data.investigationExtendHistory.length > 0 &&
!isReadonly !isReadonly &&
!checkRoutePermisson
" "
:disable="isReadonly" :disable="isReadonly"
for="#extendStatus" for="#extendStatus"
@ -1054,7 +1055,7 @@ onMounted(async () => {
<div v-if="investigationExtendStatus" class="col-3"> <div v-if="investigationExtendStatus" class="col-3">
<q-select <q-select
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
for="#daysExtend" for="#daysExtend"
outlined outlined
dense dense
@ -1083,6 +1084,7 @@ onMounted(async () => {
<datepicker <datepicker
menu-class-name="modalfix" menu-class-name="modalfix"
:readonly=" :readonly="
checkRoutePermisson ||
isReadonly || isReadonly ||
formData.investigationExtendHistory.length > 0 formData.investigationExtendHistory.length > 0
" "
@ -1105,6 +1107,7 @@ onMounted(async () => {
:class="inputEditExtend(isReadonly)" :class="inputEditExtend(isReadonly)"
ref="dateRef" ref="dateRef"
:readonly=" :readonly="
checkRoutePermisson ||
isReadonly || isReadonly ||
formData.investigationExtendHistory.length > formData.investigationExtendHistory.length >
0 0
@ -1163,6 +1166,7 @@ onMounted(async () => {
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="formData.investigationDateEnd" v-model="formData.investigationDateEnd"
:readonly=" :readonly="
checkRoutePermisson ||
formData.investigationDateStart === null || formData.investigationDateStart === null ||
isReadonly || isReadonly ||
formData.investigationExtendHistory.length > 0 formData.investigationExtendHistory.length > 0
@ -1186,6 +1190,7 @@ onMounted(async () => {
ref="dateEndRef" ref="dateEndRef"
:class="inputEditExtend(isReadonly)" :class="inputEditExtend(isReadonly)"
:readonly=" :readonly="
checkRoutePermisson ||
formData.investigationDateStart === null || formData.investigationDateStart === null ||
isReadonly || isReadonly ||
formData.investigationExtendHistory.length > formData.investigationExtendHistory.length >
@ -1274,7 +1279,7 @@ onMounted(async () => {
> >
รายชอกรรมการ รายชอกรรมการ
<q-btn <q-btn
v-if="!isReadonly" v-if="!isReadonly && !checkRoutePermisson"
size="12px" size="12px"
flat flat
round round
@ -1310,25 +1315,27 @@ onMounted(async () => {
<q-td class="text-right"> <q-td class="text-right">
<!-- แกไขกรรมการ --> <!-- แกไขกรรมการ -->
<q-btn <q-btn
v-if="!isReadonly && props.row.check === 'props'" v-if="
!checkRoutePermisson &&
!isReadonly &&
props.row.check === 'props'
"
dense dense
size="12px"
flat flat
round round
color="blue" color="edit"
@click="openEditDirector(props.row)" @click="openEditDirector(props.row)"
icon="mdi-pencil-outline" icon="edit"
> >
<q-tooltip>แกไข</q-tooltip> <q-tooltip>แกไข</q-tooltip>
</q-btn> </q-btn>
<q-btn <q-btn
v-if="!isReadonly" v-if="!checkRoutePermisson && !isReadonly"
dense dense
size="12px"
flat flat
round round
color="red" color="red"
icon="mdi-delete-outline" icon="mdi-delete"
@click="deleteDirector(props.row.id)" @click="deleteDirector(props.row.id)"
> >
<q-tooltip>ลบขอม</q-tooltip> <q-tooltip>ลบขอม</q-tooltip>
@ -1349,7 +1356,6 @@ onMounted(async () => {
{{ col.value ?? "-" }} {{ col.value ?? "-" }}
</div> </div>
</q-td> </q-td>
</q-tr> </q-tr>
</template> </template>
</Table> </Table>
@ -1360,7 +1366,7 @@ onMounted(async () => {
<div class="col-12"> <div class="col-12">
<q-input <q-input
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
for="#investigationDescription" for="#investigationDescription"
outlined outlined
ref="investigationDescriptionRef" ref="investigationDescriptionRef"
@ -1395,7 +1401,7 @@ onMounted(async () => {
for="#fault" for="#fault"
outlined outlined
dense dense
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
ref="investigationStatusResultRef" ref="investigationStatusResultRef"
v-model="formData.investigationStatusResult" v-model="formData.investigationStatusResult"
:options="optionStatusResult" :options="optionStatusResult"
@ -1423,7 +1429,7 @@ onMounted(async () => {
> >
<q-select <q-select
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
for="#fault" for="#fault"
outlined outlined
clearable clearable
@ -1453,7 +1459,7 @@ onMounted(async () => {
:class="inputEdit(isReadonly)" :class="inputEdit(isReadonly)"
outlined outlined
ref="resultRef" ref="resultRef"
:readonly="isReadonly" :readonly="isReadonly || checkRoutePermisson"
dense dense
borderless borderless
v-model="formData.result" v-model="formData.result"
@ -1487,7 +1493,9 @@ onMounted(async () => {
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<div class="row col-12 q-col-gutter-y-sm q-pa-sm"> <div class="row col-12 q-col-gutter-y-sm q-pa-sm">
<div <div
v-if="!isReadonly && formData.id !== ''" v-if="
!checkRoutePermisson && !isReadonly && formData.id !== ''
"
class="col-12 row" class="col-12 row"
> >
<q-file <q-file
@ -1505,7 +1513,6 @@ onMounted(async () => {
<template v-slot:after> <template v-slot:after>
<q-btn <q-btn
v-if="formData.evidenceFiles" v-if="formData.evidenceFiles"
size="14px"
flat flat
round round
dense dense
@ -1544,7 +1551,6 @@ onMounted(async () => {
dense dense
flat flat
round round
size="12px"
color="blue" color="blue"
icon="mdi-download-outline" icon="mdi-download-outline"
@click="downloadFileRelevant(file.pathName)" @click="downloadFileRelevant(file.pathName)"
@ -1554,13 +1560,12 @@ onMounted(async () => {
</div> </div>
<div> <div>
<q-btn <q-btn
v-if="!isReadonly" v-if="!isReadonly && !checkRoutePermisson"
dense dense
flat flat
round round
size="12px"
color="red" color="red"
icon="mdi-delete-outline" icon="mdi-delete"
@click="deleteFileRelevant(file.id)" @click="deleteFileRelevant(file.id)"
><q-tooltip>ลบไฟล</q-tooltip></q-btn ><q-tooltip>ลบไฟล</q-tooltip></q-btn
> >
@ -1593,7 +1598,9 @@ onMounted(async () => {
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator /></div>
<div class="row col-12 q-col-gutter-y-sm q-pa-sm"> <div class="row col-12 q-col-gutter-y-sm q-pa-sm">
<div <div
v-if="!isReadonly && formData.id !== ''" v-if="
!checkRoutePermisson && !isReadonly && formData.id !== ''
"
class="col-12 row" class="col-12 row"
> >
<!-- accept=".pdf,.xlsx,.docx" --> <!-- accept=".pdf,.xlsx,.docx" -->
@ -1613,7 +1620,6 @@ onMounted(async () => {
<template v-slot:after> <template v-slot:after>
<q-btn <q-btn
v-if="formData.documentFile" v-if="formData.documentFile"
size="14px"
flat flat
round round
dense dense
@ -1649,7 +1655,6 @@ onMounted(async () => {
dense dense
flat flat
round round
size="12px"
color="blue" color="blue"
icon="mdi-download-outline" icon="mdi-download-outline"
@click="downloadFile(file.pathName)" @click="downloadFile(file.pathName)"
@ -1659,13 +1664,12 @@ onMounted(async () => {
</div> </div>
<div> <div>
<q-btn <q-btn
v-if="!isReadonly" v-if="!isReadonly && !checkRoutePermisson"
dense dense
flat flat
round round
size="12px"
color="red" color="red"
icon="mdi-delete-outline" icon="mdi-delete"
@click="deleteFile(file.id)" @click="deleteFile(file.id)"
><q-tooltip>ลบไฟล</q-tooltip></q-btn ><q-tooltip>ลบไฟล</q-tooltip></q-btn
> >
@ -1687,8 +1691,11 @@ onMounted(async () => {
</div> </div>
</div> </div>
<div class="col-12"><q-separator /></div> <div class="col-12"><q-separator v-if="!checkRoutePermisson" /></div>
<div class="row col-12 q-pa-sm" v-if="!isReadonly"> <div
class="row col-12 q-pa-sm"
v-if="!isReadonly && !checkRoutePermisson"
>
<q-space /> <q-space />
<q-btn id="onSubmit" type="submit" label="บันทึก" color="secondary" <q-btn id="onSubmit" type="submit" label="บันทึก" color="secondary"
><q-tooltip>นทกขอม</q-tooltip></q-btn ><q-tooltip>นทกขอม</q-tooltip></q-btn

View file

@ -9,6 +9,8 @@ import config from "@/app.config";
import http from "@/plugins/http"; import http from "@/plugins/http";
import { useInvestigateFactStore } from "@/modules/11_discipline/store/InvestigateFactStore"; import { useInvestigateFactStore } from "@/modules/11_discipline/store/InvestigateFactStore";
import { checkPermission } from "@/utils/permissions";
const dataInvestigate = useInvestigateFactStore(); const dataInvestigate = useInvestigateFactStore();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { messageError, showLoader, hideLoader } = mixin; const { messageError, showLoader, hideLoader } = mixin;
@ -94,6 +96,14 @@ async function editPage(id: string) {
dataInvestigate.tabMenu = await "investigatefacts"; dataInvestigate.tabMenu = await "investigatefacts";
router.push(`/discipline/investigatefacts/${id}`); router.push(`/discipline/investigatefacts/${id}`);
} }
/**
* ไปหนาแกไข
* @param id ไอดเฉพาะ รายบคคล
*/
async function detailPage(id: string) {
dataInvestigate.tabMenu = await "investigatefacts";
router.push(`/discipline-detail/investigatefacts/${id}`);
}
function filterFn() { function filterFn() {
getList(); getList();
@ -149,12 +159,15 @@ onMounted(async () => {
<template v-if="statusFilter !== 'ALL'" v-slot:append> <template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon <q-icon
name="cancel" name="cancel"
@click.stop.prevent="(option = dataInvestigate.statusOptions),(statusFilter = 'ALL'), getList()" @click.stop.prevent="
(option = dataInvestigate.statusOptions),
(statusFilter = 'ALL'),
getList()
"
class="cursor-pointer" class="cursor-pointer"
/> </template />
> </template>
</q-select </q-select>
>
</div> </div>
<q-space /> <q-space />
@ -216,6 +229,7 @@ onMounted(async () => {
> >
<template v-slot:header="props"> <template v-slot:header="props">
<q-tr :props="props"> <q-tr :props="props">
<q-th auto-width></q-th>
<q-th <q-th
v-for="col in props.cols" v-for="col in props.cols"
:key="col.name" :key="col.name"
@ -228,13 +242,35 @@ onMounted(async () => {
</q-tr> </q-tr>
</template> </template>
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer"> <q-tr :props="props">
<q-td <q-td auto-width>
v-for="col in props.cols" <q-btn
:key="col.name" v-if="checkPermission($route)?.attrIsGet"
:props="props" flat
@click="editPage(props.row.id)" dense
> round
color="info"
icon="mdi-eye"
@click="detailPage(props.row.id)"
>
<q-tooltip>รายละเอยด</q-tooltip>
</q-btn>
<q-btn
v-if="
checkPermission($route)?.attrIsGet &&
checkPermission($route)?.attrIsUpdate
"
flat
dense
round
color="edit"
icon="edit"
@click="editPage(props.row.id)"
>
<q-tooltip>แกไขขอม</q-tooltip>
</q-btn>
</q-td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'no'"> <div v-if="col.name == 'no'">
{{ {{
(currentPage - 1) * Number(pagination.rowsPerPage) + (currentPage - 1) * Number(pagination.rowsPerPage) +

View file

@ -6,6 +6,8 @@ const factsMain = () =>
// import("@/modules/11_discipline/components/2_InvestigateFacts/AddPage.vue"); // import("@/modules/11_discipline/components/2_InvestigateFacts/AddPage.vue");
const investigatefactsEdit = () => const investigatefactsEdit = () =>
import("@/modules/11_discipline/components/2_InvestigateFacts/EditPage.vue"); import("@/modules/11_discipline/components/2_InvestigateFacts/EditPage.vue");
const investigatefactsDetail = () =>
import("@/modules/11_discipline/components/2_InvestigateFacts/EditPage.vue");
const disciplinaryMain = () => const disciplinaryMain = () =>
import( import(
"@/modules/11_discipline/components/3_InvestigateDisciplinary/MainPage.vue" "@/modules/11_discipline/components/3_InvestigateDisciplinary/MainPage.vue"
@ -151,6 +153,16 @@ export default [
Role: "STAFF", Role: "STAFF",
}, },
}, },
{
path: "/discipline-detail/investigatefacts/:id",
name: "disciplineInvestigatefactsDetail",
component: investigatefactsDetail,
meta: {
Auth: true,
Key: "SYS_DISCIPLINE_INVESTIGATE",
Role: "STAFF",
},
},
{ {
path: "/discipline/disciplinary", path: "/discipline/disciplinary",
name: "disciplineDisciplinary", name: "disciplineDisciplinary",