สิทธิ์ สอบสวนความผิดทางวินัย

This commit is contained in:
STW_TTTY\stwtt 2024-08-08 15:45:11 +07:00
parent 3a6b4f83c8
commit 47ce1ce70d
5 changed files with 127 additions and 80 deletions

View file

@ -37,7 +37,7 @@ const store = useInvestigateDisStore();
const { dialogConfirm, success, messageError, showLoader, hideLoader } = mixin;
const router = useRouter();
const route = useRoute();
const checkRoutePermisson = ref<boolean>(route.name == "disciplineDisciplinaryDetail");
const modalPopup = ref<boolean>(false);
const id = ref<string>(route.params.id as string);
const data = ref<object>();
@ -396,9 +396,9 @@ onMounted(async () => {
class="q-mr-sm"
@click="$router.push(`/discipline/disciplinary`)"
/>
<div class="q-ma-none">แกไขการสอบสวนความผดทางว</div>
<div class="q-ma-none">{{ checkRoutePermisson ? 'รายละเอียดการสอบสวนความผิดทางวินัย':'แก้ไขการสอบสวนความผิดทางวินัย'}}</div>
<q-space />
<div class="q-gutter-x-sm">
<div class="q-gutter-x-sm" v-if="!checkRoutePermisson">
<q-btn
v-if="status === 'NEW'"
label="ส่งไปสรุปผลการพิจารณา"

View file

@ -61,7 +61,9 @@ const {
const route = useRoute();
const router = useRouter();
const $q = useQuasar();
const checkRoutePermisson = ref<boolean>(
route.name == "disciplineDisciplinaryDetail"
);
const organizationOption = ref<DataOption[]>([]);
/** query string*/
const page = ref<number>(1);
@ -684,7 +686,6 @@ function deletePerson(id: string) {
mainStore.rowsAdd = updatedRows;
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
@ -698,7 +699,6 @@ function filterOptionFn(val: string, update: Function) {
});
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
@ -712,7 +712,6 @@ function filterOptionFnOrganization(val: string, update: Function) {
});
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
@ -726,7 +725,6 @@ function filterOptionFnFaultLevel(val: string, update: Function) {
});
}
/**
* function นหาขอมลใน option
* @param val คำคนหา
@ -770,7 +768,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3">
<q-select
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
for="SelectrespondentType"
v-model="formData.respondentType"
ref="respondentTypeRef"
@ -808,7 +806,7 @@ onMounted(async () => {
id="organizationId"
>
<q-select
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
for="inputOffice"
name="organizationId"
ref="organizationIdRef"
@ -864,8 +862,7 @@ onMounted(async () => {
>
กรองเรยน
<q-btn
v-if="!isReadonly"
size="12px"
v-if="!isReadonly && !checkRoutePermisson"
flat
round
dense
@ -920,6 +917,21 @@ onMounted(async () => {
>
<q-tooltip>อมลในทะเบยนประว</q-tooltip>
</q-btn>
<q-btn
v-if="
!checkRoutePermisson &&
!isReadonly &&
props.row.isAncestorDNA === false
"
flat
round
dense
color="red"
class="q-ml-sm"
icon="mdi-delete"
@click="deletePerson(props.row.personId)"
><q-tooltip>ลบผกรองเรยน</q-tooltip></q-btn
>
</td>
<q-td
v-for="col in props.cols"
@ -942,22 +954,6 @@ onMounted(async () => {
{{ col.value }}
</div>
</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>
</template>
</d-table>
@ -967,7 +963,7 @@ onMounted(async () => {
<div class="row col-12 q-col-gutter-x-md">
<datepicker
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
menu-class-name="modalfix"
for="#dateAllegation"
v-model="formData.disciplinaryDateInvestigation"
@ -987,7 +983,7 @@ onMounted(async () => {
</template>
<template #trigger>
<q-input
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
outlined
dense
:class="inputEdit(isReadonly)"
@ -1010,7 +1006,7 @@ onMounted(async () => {
<template
v-if="
formData.disciplinaryDateInvestigation &&
isReadonly === false
isReadonly === false &&!checkRoutePermisson
"
v-slot:append
>
@ -1027,7 +1023,7 @@ onMounted(async () => {
</datepicker>
<datepicker
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
menu-class-name="modalfix"
for="#dateAllegation"
v-model="formData.disciplinaryDateAllegation"
@ -1047,7 +1043,7 @@ onMounted(async () => {
</template>
<template #trigger>
<q-input
:readonly="isReadonly"
:readonly="isReadonly || checkRoutePermisson"
ref="disciplinaryDateAllegationRef"
outlined
:class="inputEdit(isReadonly)"
@ -1071,7 +1067,7 @@ onMounted(async () => {
<template
v-if="
formData.disciplinaryDateAllegation &&
isReadonly === false
isReadonly === false &&!checkRoutePermisson
"
v-slot:append
>
@ -1102,7 +1098,8 @@ onMounted(async () => {
<q-checkbox
v-if="
formData.disciplinaryExtendHistory.length > 0 &&
!isReadonly
!isReadonly &&
!checkRoutePermisson
"
:disable="isReadonly"
for="#extendStatus"
@ -1124,7 +1121,6 @@ onMounted(async () => {
<q-btn
name="calendar"
round
size="12px"
flat
dense
icon="mdi-calendar-month"
@ -1144,7 +1140,7 @@ onMounted(async () => {
<div v-if="extendStatus" class="col-3">
<q-select
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
for="#daysExtend"
outlined
dense
@ -1182,7 +1178,7 @@ onMounted(async () => {
<div v-if="!extendStatus" class="col-3">
<datepicker
menu-class-name="modalfix"
:readonly="
:readonly="checkRoutePermisson||
isReadonly ||
formData.disciplinaryExtendHistory.length > 0
"
@ -1205,7 +1201,7 @@ onMounted(async () => {
class="full-width cursor-pointer"
ref="dateRef"
:class="inputEditExtend(isReadonly)"
:readonly="
:readonly="checkRoutePermisson||
isReadonly ||
formData.disciplinaryExtendHistory.length >
0
@ -1233,6 +1229,7 @@ onMounted(async () => {
</template>
<template
v-if="
!checkRoutePermisson &&
formData.disciplinaryDateStart &&
isReadonly === false &&
formData.disciplinaryExtendHistory
@ -1259,7 +1256,7 @@ onMounted(async () => {
:class="isReadonly ? '' : dateEndInputStyle"
menu-class-name="modalfix"
v-model="formData.disciplinaryDateEnd"
:readonly="
:readonly="checkRoutePermisson||
formData.disciplinaryDateStart === null ||
isReadonly ||
formData.disciplinaryExtendHistory.length > 0
@ -1282,7 +1279,7 @@ onMounted(async () => {
for="#dateEnd"
:class="inputEditExtend(isReadonly)"
ref="dateEndRef"
:readonly="
:readonly="checkRoutePermisson||
formData.disciplinaryDateStart === null ||
isReadonly ||
formData.disciplinaryExtendHistory.length >
@ -1310,7 +1307,7 @@ onMounted(async () => {
</q-icon>
</template>
<template
v-if="
v-if="!checkRoutePermisson&&
formData.disciplinaryDateEnd &&
isReadonly === false &&
formData.disciplinaryExtendHistory
@ -1363,7 +1360,7 @@ onMounted(async () => {
</div>
<datepicker
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
menu-class-name="modalfix"
for="#dateEvident"
v-model="formData.disciplinaryDateEvident"
@ -1383,7 +1380,7 @@ onMounted(async () => {
</template>
<template #trigger>
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
ref="disciplinaryDateEvidentRef"
outlined
dense
@ -1406,7 +1403,7 @@ onMounted(async () => {
</template>
<template
v-if="
formData.disciplinaryDateEvident && isReadonly === false
formData.disciplinaryDateEvident && isReadonly === false &&!checkRoutePermisson
"
v-slot:append
>
@ -1423,7 +1420,7 @@ onMounted(async () => {
</datepicker>
<datepicker
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
menu-class-name="modalfix"
for="#dateResult"
v-model="formData.disciplinaryDateResult"
@ -1444,7 +1441,7 @@ onMounted(async () => {
<template #trigger>
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
ref="disciplinaryDateResultRef"
outlined
:class="inputEdit(isReadonly)"
@ -1467,7 +1464,7 @@ onMounted(async () => {
</template>
<template
v-if="
formData.disciplinaryDateResult && isReadonly === false
formData.disciplinaryDateResult && isReadonly === false &&!checkRoutePermisson
"
v-slot:append
>
@ -1494,8 +1491,7 @@ onMounted(async () => {
>
รายชอกรรมการเพอพจารณาความผดทางว
<q-btn
v-if="!isReadonly"
size="12px"
v-if="!isReadonly&&!checkRoutePermisson"
flat
round
dense
@ -1530,9 +1526,8 @@ onMounted(async () => {
<q-td class="text-right">
<!-- แกไขกรรมการ -->
<q-btn
v-if="!isReadonly && props.row.check === 'props'"
v-if="!isReadonly && props.row.check === 'props' &&!checkRoutePermisson"
dense
size="12px"
flat
round
color="blue"
@ -1543,9 +1538,8 @@ onMounted(async () => {
</q-btn>
<q-btn
v-if="!isReadonly"
v-if="!isReadonly&&!checkRoutePermisson"
dense
size="12px"
flat
round
color="red"
@ -1570,7 +1564,6 @@ onMounted(async () => {
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>
</template>
</Table>
@ -1581,7 +1574,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3">
<q-input
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
dense
outlined
ref="disciplinaryCaseFaultRef"
@ -1596,7 +1589,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3">
<q-input
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
dense
hide-bottom-space
outlined
@ -1611,7 +1604,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3">
<q-select
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
dense
outlined
for="#faultLevel"
@ -1654,7 +1647,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-3">
<q-input
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
dense
for="#refLaw"
hide-bottom-space
@ -1669,7 +1662,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-6">
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
:class="inputEdit(isReadonly)"
dense
outlined
@ -1685,7 +1678,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-6">
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
:class="inputEdit(isReadonly)"
dense
outlined
@ -1701,7 +1694,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-6">
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
:class="inputEdit(isReadonly)"
dense
outlined
@ -1717,7 +1710,7 @@ onMounted(async () => {
<div class="col-xs-12 col-sm-6">
<q-input
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
:class="inputEdit(isReadonly)"
dense
outlined
@ -1752,7 +1745,7 @@ onMounted(async () => {
for="#fault"
outlined
dense
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
ref="disciplinaryStatusResultRef"
v-model="formData.disciplinaryStatusResult"
:options="option"
@ -1780,7 +1773,7 @@ onMounted(async () => {
>
<q-select
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
for="#fault"
outlined
dense
@ -1809,7 +1802,7 @@ onMounted(async () => {
<div class="col-12">
<q-input
:class="inputEdit(isReadonly)"
:readonly="isReadonly"
:readonly="isReadonly||checkRoutePermisson"
class="full-width cursor-pointer"
outlined
ref="disciplinaryResultRef"
@ -1841,7 +1834,7 @@ onMounted(async () => {
:id="id"
type="relevant"
:fetchData="props.fetchData"
:is-readonly="isReadonly"
:is-readonly="isReadonly||checkRoutePermisson"
:return-count="returnCount"
/>
</div>
@ -1853,7 +1846,7 @@ onMounted(async () => {
:id="id"
type="summaryEvidence"
:fetchData="props.fetchData"
:is-readonly="isReadonly"
:is-readonly="isReadonly||checkRoutePermisson"
:return-count="returnCount"
/>
</div>
@ -1865,7 +1858,7 @@ onMounted(async () => {
:id="id"
type="recordAccuser"
:fetchData="props.fetchData"
:is-readonly="isReadonly"
:is-readonly="isReadonly||checkRoutePermisson"
:return-count="returnCount"
/>
</div>
@ -1877,7 +1870,7 @@ onMounted(async () => {
:id="id"
type="witnesses"
:fetchData="props.fetchData"
:is-readonly="isReadonly"
:is-readonly="isReadonly||checkRoutePermisson"
:return-count="returnCount"
/>
</div>
@ -1889,7 +1882,7 @@ onMounted(async () => {
:id="id"
type="other"
:fetchData="props.fetchData"
:is-readonly="isReadonly"
:is-readonly="isReadonly||checkRoutePermisson"
:return-count="returnCount"
/>
</div>
@ -1897,7 +1890,7 @@ onMounted(async () => {
</div>
</div>
<div class="col-12"><q-separator /></div>
<div v-if="!isReadonly" class="row col-12 q-pa-sm">
<div v-if="!isReadonly&&!checkRoutePermisson" class="row col-12 q-pa-sm">
<q-space />
<q-btn
for="ButtonOnSubmit"

View file

@ -51,6 +51,13 @@ async function fetchListDisciplinary() {
function openEdit(id: string) {
router.push(`/discipline/disciplinary/${id}`);
}
/**
* ไปหนาแกไข
* @param id ไอดเฉพาะ รายบคคล
*/
function openDetail(id: string) {
router.push(`/discipline-detail/disciplinary/${id}`);
}
async function updatePagingProp(rowPerpage: number, pageCurrent: number) {
rowsPerPage.value = rowPerpage;
@ -95,6 +102,7 @@ onMounted(async () => {
:fetchListDisciplinary="fetchListDisciplinary"
@update:pagination="updatePagingProp"
v-model:open-edit="openEdit"
:open-detail="openDetail"
:filterStatus="filterStatus"
>
</Table>

View file

@ -3,6 +3,8 @@ import { ref, useAttrs, watch } from "vue";
import type { Pagination } from "@/modules/04_registry/interface/index/Main";
import { useInvestigateDisStore } from "@/modules/11_discipline/store/InvestigateDisStore";
import { checkPermission } from "@/utils/permissions";
const dataInvestigateDis = useInvestigateDisStore();
const table = ref<any>(null);
const filterRef = ref<any>(null);
@ -29,6 +31,10 @@ const props = defineProps({
type: Function,
default: () => console.log("not function"),
},
openDetail: {
type: Function,
default: () => console.log("not function"),
},
fetchListDisciplinary: {
type: Function,
default: () => console.log("not function"),
@ -169,11 +175,14 @@ function filterOptionFn(val: string, update: Function) {
<template v-if="statusFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="(option = dataInvestigateDis.statusOptions),(statusFilter = 'ALL'), dataUpdate()"
@click.stop.prevent="
(option = dataInvestigateDis.statusOptions),
(statusFilter = 'ALL'),
dataUpdate()
"
class="cursor-pointer"
/>
</template>
</q-select>
</div>
<q-space />
@ -242,6 +251,7 @@ function filterOptionFn(val: string, update: Function) {
</template>
<template v-slot:header="props">
<q-tr :props="props">
<q-th auto-width></q-th>
<q-th v-for="col in props.cols" :key="col.name" :props="props">
<span class="text-weight-medium" v-html="col.label" />
</q-th>
@ -249,12 +259,34 @@ function filterOptionFn(val: string, update: Function) {
</template>
<template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer">
<q-td
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="openEdit(props.row.id)"
>
<q-td auto-width>
<q-btn
v-if="checkPermission($route)?.attrIsGet"
flat
dense
round
icon="mdi-eye"
color="info"
@click="openDetail(props.row.id)"
>
<q-tooltip>รายละเอยด</q-tooltip>
</q-btn>
<q-btn
v-if="
checkPermission($route)?.attrIsUpdate &&
checkPermission($route)?.attrIsGet
"
flat
dense
round
icon="edit"
color="edit"
@click="openEdit(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'">
{{
(currentPage - 1) * Number(pagination.rowsPerPage) +

View file

@ -16,6 +16,10 @@ const disciplinaryEdit = () =>
import(
"@/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue"
);
const disciplinaryDetail = () =>
import(
"@/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue"
);
// const report = () =>
// import("@/modules/11_discipline/components/5_Report/MainPage.vue");
const directorMain = () =>
@ -183,6 +187,16 @@ export default [
Role: "STAFF",
},
},
{
path: "/discipline-detail/disciplinary/:id",
name: "disciplineDisciplinaryDetail",
component: disciplinaryDetail,
meta: {
Auth: true,
Key: "SYS_DISCIPLINE_INTERROGATE",
Role: "STAFF",
},
},
// {
// path: "/discipline/disciplinary/add",
// name: "disciplineInvestigateDisciplinaryAdd",