Merge branch 'develop' into devTee
This commit is contained in:
commit
a09dbbd849
14 changed files with 750 additions and 668 deletions
|
|
@ -223,8 +223,8 @@ const clickSave = async () => {
|
|||
|
||||
// ค้นหาคนจากเลขประจำตัวประชาชน
|
||||
const searchcardid = async () => {
|
||||
showLoader();
|
||||
if (cardid.value.length === 13) {
|
||||
showLoader();
|
||||
const node = await listPerson.value.find(
|
||||
(e: any) => e.citizenId === cardid.value
|
||||
);
|
||||
|
|
|
|||
|
|
@ -14,24 +14,22 @@ const $q = useQuasar();
|
|||
const mixin = useCounterMixin();
|
||||
const { dialogConfirm, date2Thai } = mixin;
|
||||
const currentDate = ref<Date | null>(new Date());
|
||||
const startTimeMorningRef = ref<Object | null>(null);
|
||||
const endTimeMorningRef = ref<Object | null>(null);
|
||||
const checkInRef = ref<Object | null>(null);
|
||||
const checkOutRef = ref<Object | null>(null);
|
||||
const checkInStatusRef = ref<Object | null>(null);
|
||||
const checkOutStatusRef = ref<Object | null>(null);
|
||||
|
||||
const formData = reactive<dataRowRound>({
|
||||
startTimeMorning: "",
|
||||
endTimeMorning: "",
|
||||
startTimeAfternoon: "",
|
||||
endTimeAfternoon: "",
|
||||
checkIn: "",
|
||||
checkOut: "",
|
||||
note: "",
|
||||
checkInStatus: "",
|
||||
checkOutStatus: "",
|
||||
});
|
||||
|
||||
const objectRound: MyObjectRoundRef = {
|
||||
startTimeMorning: startTimeMorningRef,
|
||||
endTimeMorning: endTimeMorningRef,
|
||||
checkIn: checkInRef,
|
||||
checkOut: checkOutRef,
|
||||
checkInStatus: checkInStatusRef,
|
||||
checkOutStatus: checkOutStatusRef,
|
||||
};
|
||||
|
|
@ -81,17 +79,13 @@ watch(
|
|||
() => props.modal,
|
||||
(newDetailData, oldDetailData) => {
|
||||
if (props.editCheck === "APPROVE") {
|
||||
formData.startTimeMorning = "";
|
||||
formData.endTimeMorning = "";
|
||||
formData.startTimeAfternoon = "";
|
||||
formData.endTimeAfternoon = "";
|
||||
formData.checkIn = "";
|
||||
formData.checkOut = "";
|
||||
formData.note = "";
|
||||
} else if (props.editCheck === "PENDING") {
|
||||
if (props.detailData) {
|
||||
formData.startTimeMorning = props.detailData.startTimeMorning;
|
||||
formData.endTimeMorning = props.detailData.endTimeMorning;
|
||||
formData.startTimeAfternoon = props.detailData.startTimeAfternoon;
|
||||
formData.endTimeAfternoon = props.detailData.endTimeAfternoon;
|
||||
formData.checkIn = props.detailData.checkIn;
|
||||
formData.checkOut = props.detailData.checkOut;
|
||||
formData.note = props.detailData.note;
|
||||
}
|
||||
}
|
||||
|
|
@ -174,27 +168,21 @@ watch(
|
|||
<div class="row justify-between q-my-sm items-start">
|
||||
<p class="q-ma-none mt">เวลาเข้างาน</p>
|
||||
<q-input
|
||||
ref="startTimeMorningRef"
|
||||
ref="checkInRef"
|
||||
class="inputgreen"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
outlined
|
||||
v-model="formData.startTimeMorning"
|
||||
v-model="formData.checkIn"
|
||||
:rules="[
|
||||
(val) => !!val || 'กรุณากรอกเวลาเข้างาน',
|
||||
(val) => {
|
||||
if (val && formData.endTimeMorning) {
|
||||
if (val > formData.endTimeMorning) {
|
||||
if (val && formData.checkOut) {
|
||||
if (val > formData.checkOut) {
|
||||
return 'ต้องน้อยกว่าเวลาออกงาน';
|
||||
}
|
||||
if (
|
||||
val >= formData.startTimeAfternoon &&
|
||||
val <= formData.endTimeAfternoon
|
||||
) {
|
||||
return 'ช่วงเวลาทับซ้อนกับช่วงบ่าย';
|
||||
}
|
||||
if (val === formData.endTimeMorning) {
|
||||
if (val === formData.checkOut) {
|
||||
return 'เวลาเข้างานช่วงเช้าต้องไม่ซ้ำกับออกงานเช้า';
|
||||
}
|
||||
}
|
||||
|
|
@ -210,27 +198,21 @@ watch(
|
|||
<div class="row items-start q-my-sm justify-between">
|
||||
<p class="q-ma-none mt">เวลาออกงาน</p>
|
||||
<q-input
|
||||
ref="endTimeMorningRef"
|
||||
ref="checkOutRef"
|
||||
class="inputgreen"
|
||||
dense
|
||||
v-model="formData.endTimeMorning"
|
||||
v-model="formData.checkOut"
|
||||
lazy-rules
|
||||
borderless
|
||||
outlined
|
||||
:rules="[
|
||||
(val) => !!val || 'กรุณากรอกเวลาออกงาน',
|
||||
(val) => {
|
||||
if (val && formData.startTimeMorning) {
|
||||
if (val < formData.startTimeMorning) {
|
||||
if (val && formData.checkIn) {
|
||||
if (val < formData.checkIn) {
|
||||
return 'ต้องมากกว่าเวลาเข้างาน';
|
||||
}
|
||||
if (
|
||||
val >= formData.startTimeAfternoon &&
|
||||
val <= formData.endTimeAfternoon
|
||||
) {
|
||||
return 'ช่วงเวลาทับซ้อนกับช่วงบ่าย';
|
||||
}
|
||||
if (val === formData.startTimeMorning) {
|
||||
if (val === formData.checkIn) {
|
||||
return 'เวลาออกงานช่วงเช้าต้องไม่ซ้ำกับเข้างานเช้า';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,5 +10,7 @@ interface ListData {
|
|||
status: string;
|
||||
checkInStatus: string;
|
||||
checkOutStatus: string;
|
||||
checkOut: string;
|
||||
checkIn: string;
|
||||
}
|
||||
export type { ListData };
|
||||
|
|
|
|||
|
|
@ -8,17 +8,15 @@ interface DataRows {
|
|||
status: string;
|
||||
}
|
||||
interface dataRowRound {
|
||||
startTimeMorning: string;
|
||||
endTimeMorning: string;
|
||||
startTimeAfternoon: string;
|
||||
endTimeAfternoon: string;
|
||||
checkIn: string;
|
||||
checkOut: string;
|
||||
checkInStatus: string;
|
||||
checkOutStatus: string;
|
||||
note: string;
|
||||
}
|
||||
interface MyObjectRoundRef {
|
||||
startTimeMorning: object | null;
|
||||
endTimeMorning: object | null;
|
||||
checkIn: object | null;
|
||||
checkOut: object | null;
|
||||
checkInStatus: object | null;
|
||||
checkOutStatus: object | null;
|
||||
[key: string]: any;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ export const useSpecialTimeStore = defineStore("LeaveSpecialTime", () => {
|
|||
endTimeMorning: e.endTimeMorning,
|
||||
startTimeAfternoon: e.startTimeAfternoon,
|
||||
endTimeAfternoon: e.endTimeAfternoon,
|
||||
checkIn: e.checkOut,
|
||||
checkOut: e.checkOut,
|
||||
status: e.status,
|
||||
checkInStatus: convertStatus(e.checkInStatus),
|
||||
checkOutStatus: convertStatus(e.checkOutStatus),
|
||||
|
|
|
|||
|
|
@ -76,6 +76,8 @@ onMounted(async () => {
|
|||
status: "PENDING",
|
||||
checkInStatus: "normal",
|
||||
checkOutStatus: "late",
|
||||
checkIn: "08:00",
|
||||
checkOut: "12.00",
|
||||
},
|
||||
{
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
|
|
@ -89,6 +91,8 @@ onMounted(async () => {
|
|||
status: "APPROVE",
|
||||
checkInStatus: "normal",
|
||||
checkOutStatus: "late",
|
||||
checkIn: "08:00",
|
||||
checkOut: "12.00",
|
||||
},
|
||||
{
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
|
|
@ -102,6 +106,8 @@ onMounted(async () => {
|
|||
status: "REJECT",
|
||||
checkInStatus: "normal",
|
||||
checkOutStatus: "late",
|
||||
checkIn: "08:00",
|
||||
checkOut: "12.00",
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ watch(props.data, async () => {
|
|||
<form @submit.prevent="validateForm">
|
||||
<div class="col-12 row q-pa-md">
|
||||
<div
|
||||
class="col-xs-12 col-sm-12 row q-col-gutter-x-md q-col-gutter-y-xs"
|
||||
class="col-xs-12 col-sm-12 row q-col-gutter-md"
|
||||
>
|
||||
<div class="col-xs-12 col-sm-3" id="complainantType">
|
||||
<q-select
|
||||
|
|
@ -243,6 +243,7 @@ watch(props.data, async () => {
|
|||
option-label="name"
|
||||
emit-value
|
||||
map-options
|
||||
hide-bottom-space
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกผู้ร้องเรียน'}`]"
|
||||
lazy-rules
|
||||
@update:model-value="
|
||||
|
|
@ -278,6 +279,7 @@ watch(props.data, async () => {
|
|||
label="รายชื่อจากทะเบียรประวัติ"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
hide-bottom-space
|
||||
emit-value
|
||||
map-options
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกรายชื่อ'}`]"
|
||||
|
|
@ -305,6 +307,7 @@ watch(props.data, async () => {
|
|||
name="office"
|
||||
ref="officeRef"
|
||||
dense
|
||||
hide-bottom-space
|
||||
outlined
|
||||
v-model="formData.office"
|
||||
label="เลือกสำนักงาน"
|
||||
|
|
@ -323,6 +326,7 @@ watch(props.data, async () => {
|
|||
label="หน่วยงานที่พิจารณา"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
hide-bottom-space
|
||||
emit-value
|
||||
map-options
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกหน่วยงาน'}`]"
|
||||
|
|
@ -347,6 +351,7 @@ watch(props.data, async () => {
|
|||
ref="topicComplaintRef"
|
||||
dense
|
||||
outlined
|
||||
hide-bottom-space
|
||||
v-model="formData.topicComplaint"
|
||||
:rules="[(val) => !!val || 'กรุณาการข้อมูล']"
|
||||
lazy-rules
|
||||
|
|
@ -361,6 +366,7 @@ watch(props.data, async () => {
|
|||
ref="detailRef"
|
||||
dense
|
||||
outlined
|
||||
hide-bottom-space
|
||||
v-model="formData.detail"
|
||||
:rules="[(val) => !!val || 'กรุณาการข้อมูล']"
|
||||
lazy-rules
|
||||
|
|
@ -391,6 +397,7 @@ watch(props.data, async () => {
|
|||
ref="datereceiveRef"
|
||||
outlined
|
||||
dense
|
||||
hide-bottom-space
|
||||
class="full-width datepicker"
|
||||
:model-value="
|
||||
formData.datereceive != null
|
||||
|
|
@ -428,6 +435,7 @@ watch(props.data, async () => {
|
|||
option-value="id"
|
||||
option-label="name"
|
||||
emit-value
|
||||
hide-bottom-space
|
||||
map-options
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกระดับการพิจารณา'}`]"
|
||||
lazy-rules
|
||||
|
|
@ -464,6 +472,7 @@ watch(props.data, async () => {
|
|||
: null
|
||||
"
|
||||
label="วันที่กำหนดวันพิจารณา"
|
||||
hide-bottom-space
|
||||
:rules="[
|
||||
(val) => !!val || `${'กรุณาเลือกวันที่กำหนดวันพิจารณา'}`,
|
||||
]"
|
||||
|
|
@ -493,6 +502,7 @@ watch(props.data, async () => {
|
|||
option-value="id"
|
||||
option-label="name"
|
||||
emit-value
|
||||
hide-bottom-space
|
||||
map-options
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกลักษณะความผิด'}`]"
|
||||
lazy-rules
|
||||
|
|
@ -521,6 +531,7 @@ watch(props.data, async () => {
|
|||
ref="datewarnRef"
|
||||
outlined
|
||||
dense
|
||||
hide-bottom-space
|
||||
class="full-width datepicker"
|
||||
:model-value="
|
||||
formData.datewarn != null
|
||||
|
|
@ -557,6 +568,7 @@ watch(props.data, async () => {
|
|||
label="รับเรื่องร้องเรียน"
|
||||
option-value="id"
|
||||
option-label="name"
|
||||
hide-bottom-space
|
||||
emit-value
|
||||
map-options
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกรับเรื่องร้องเรียน'}`]"
|
||||
|
|
@ -573,16 +585,18 @@ watch(props.data, async () => {
|
|||
label="ผู้ร้องเรียน"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกข้อมูล'}`]"
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
rows="5"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6" id="files">
|
||||
<div class="col-12" id="files">
|
||||
<q-file
|
||||
for="inputFiles"
|
||||
ref="filesRef"
|
||||
outlined
|
||||
dense
|
||||
class="fit"
|
||||
v-model="formData.files"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารหลักฐาน"
|
||||
|
|
|
|||
|
|
@ -117,341 +117,341 @@ watch(props.data, async () => {
|
|||
</script>
|
||||
<template>
|
||||
<q-card flat bordered class="col-12 q-mt-sm">
|
||||
<div class="q-pa-md">
|
||||
<form @submit.prevent="validateForm">
|
||||
<div class="row col-12">
|
||||
<div class="col-12 row bg-white q-col-gutter-md">
|
||||
<div class="col-xs-12 row items-center">
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
for="#complaint"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
ref="complaintRef"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.complaint"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกเรื่องร้องเรียน'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'เรื่องร้องเรียน'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="row no-wrap col-12">
|
||||
<div class="col-4 q-my-md q-mr-xs">
|
||||
<q-select
|
||||
for="#fault"
|
||||
outlined
|
||||
dense
|
||||
ref="faultRef"
|
||||
v-model="formData.fault"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกลักษณะความผิด'}`]"
|
||||
:options="investigateFactStore.faultOp"
|
||||
label="ลักษณะความผิด"
|
||||
emit-value
|
||||
map-options
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'faultOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
<div class="col-4 q-my-md q-mr-xs">
|
||||
<q-select
|
||||
for="#investigation"
|
||||
outlined
|
||||
dense
|
||||
ref="investigationRef"
|
||||
:rules="[
|
||||
(val) => !!val || `${'กรุณาเลือกลักษณะการสืบสวน'}`,
|
||||
]"
|
||||
v-model="formData.investigation"
|
||||
:options="investigateFactStore.investigationOp"
|
||||
label="ลักษณะการสืบสวน"
|
||||
emit-value
|
||||
map-options
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'investigationOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="formData.investigation === '003'"
|
||||
class="col-12 q-mb-md"
|
||||
<div class="q-pa-md">
|
||||
<div class="col-xs-12 row items-center q-col-gutter-md">
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
for="#complaint"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
ref="complaintRef"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.complaint"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกเรื่องร้องเรียน'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'เรื่องร้องเรียน'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<q-select
|
||||
for="#fault"
|
||||
outlined
|
||||
dense
|
||||
ref="faultRef"
|
||||
v-model="formData.fault"
|
||||
:rules="[(val) => !!val || `${'กรุณาเลือกลักษณะความผิด'}`]"
|
||||
:options="investigateFactStore.faultOp"
|
||||
label="ลักษณะความผิด"
|
||||
emit-value
|
||||
map-options
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
hide-bottom-space
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'faultOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<q-select
|
||||
for="#investigation"
|
||||
outlined
|
||||
dense
|
||||
ref="investigationRef"
|
||||
:rules="[
|
||||
(val) => !!val || `${'กรุณาเลือกลักษณะการสืบสวน'}`,
|
||||
]"
|
||||
v-model="formData.investigation"
|
||||
:options="investigateFactStore.investigationOp"
|
||||
label="ลักษณะการสืบสวน"
|
||||
emit-value
|
||||
map-options
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
hide-bottom-space
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'investigationOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
<div
|
||||
v-if="formData.investigation === '003'"
|
||||
class="col-12"
|
||||
>
|
||||
<q-input
|
||||
for="#other"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="otherRef"
|
||||
dense
|
||||
borderless
|
||||
v-model="formData.other"
|
||||
hide-bottom-space
|
||||
:label="`${'รายการอื่นๆ(โปรดระบุ)'}`"
|
||||
type="textarea"
|
||||
:rules="[
|
||||
(val) =>
|
||||
formData.investigation === '003'
|
||||
? !!val || 'กรุณาเลือกจำนวนวันที่ต้องการขยาย'
|
||||
: true,
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||
วันที่สืบสวน
|
||||
<q-checkbox
|
||||
for="#clickTime"
|
||||
size="md"
|
||||
v-model="formData.clickTime"
|
||||
label="ขยายเวลา"
|
||||
color="primary"
|
||||
dense
|
||||
class="text-weight-medium q-ml-sm"
|
||||
keep-color
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 col-sm-12 q-pa-sm row">
|
||||
<div v-if="formData.clickTime !== true" class="q-col-gutter-sm row">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
for="#date"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
ref="dateRef"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
hide-bottom-space
|
||||
:model-value="
|
||||
formData.date ? date2Thai(formData.date) : null
|
||||
"
|
||||
:rules="[
|
||||
(val) =>
|
||||
!!val || `${'กรุณาเลือกวันที่เริ่มการสอบสวน'}`,
|
||||
]"
|
||||
:label="`${'วันที่เริ่มการสอบสวน'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
color="primary"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.dateEnd"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
for="#dateEnd"
|
||||
ref="dateEndRef"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
hide-bottom-space
|
||||
borderless
|
||||
:model-value="
|
||||
formData.dateEnd
|
||||
? date2Thai(formData.dateEnd)
|
||||
: null
|
||||
"
|
||||
:rules="[
|
||||
(val) =>
|
||||
!!val || `${'กรุณาเลือกวันที่สิ้นสุดการสอบสวน'}`,
|
||||
]"
|
||||
:label="`${'วันที่สิ้นสุดการสอบสวน'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
color="primary"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
<div v-else class="q-mx-xs col-xs-12 col-sm-6">
|
||||
<q-select
|
||||
for="#daysExtend"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
ref="daysExtendRef"
|
||||
v-model="formData.daysExtend"
|
||||
:options="investigateFactStore.daysExtendOp"
|
||||
label="จำนวนวันที่ต้องการขยาย"
|
||||
emit-value
|
||||
hide-bottom-space
|
||||
map-options
|
||||
:rules="[
|
||||
(val) =>
|
||||
formData.clickTime === true
|
||||
? !!val || 'กรุณาเลือกจำนวนวันที่ต้องการขยาย'
|
||||
: true,
|
||||
]"
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'daysExtendOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="col-12 ">
|
||||
<q-input
|
||||
for="#complaintdetail"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="complaintdetailRef"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.complaintdetail"
|
||||
:rules="[
|
||||
(val) => !!val || `${'กรุณากรอกรายละเอียดเรื่องร้องเรียน'}`,
|
||||
]"
|
||||
hide-bottom-space
|
||||
:label="`${'รายละเอียดเรื่องร้องเรียน'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-file
|
||||
for="#fileComplaint"
|
||||
outlined
|
||||
ref="fileComplaintRef"
|
||||
dense
|
||||
v-model="formData.fileComplaint"
|
||||
label="ไฟล์เอกสารหลักฐานเรื่องร้องเรียน"
|
||||
lazy-rules
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกไฟล์หลักฐานการรับ']"
|
||||
hide-bottom-space
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" color="primary" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-input
|
||||
for="#detail"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="detailRef"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.detail"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกรายละเอียด'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'รายละเอียด'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<q-file
|
||||
for="#evidenceFiles"
|
||||
outlined
|
||||
dense
|
||||
ref="evidenceFilesRef"
|
||||
v-model="formData.evidenceFiles"
|
||||
label="ไฟล์หลักฐานการรับ"
|
||||
lazy-rules
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกไฟล์หลักฐานการรับ']"
|
||||
hide-bottom-space
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" color="primary" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
<div class="row col-12 items-start">
|
||||
<div class="col-4">
|
||||
<q-input
|
||||
for="#other"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="otherRef"
|
||||
for="#results"
|
||||
standout
|
||||
dense
|
||||
borderless
|
||||
v-model="formData.other"
|
||||
ref="resultsRef"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกผลการสืบสวน'}`]"
|
||||
v-model="formData.results"
|
||||
outlined
|
||||
debounce="300"
|
||||
placeholder="ผลการสืบสวน"
|
||||
hide-bottom-space
|
||||
:label="`${'รายการอื่นๆ(โปรดระบุ)'}`"
|
||||
type="textarea"
|
||||
:rules="[
|
||||
(val) =>
|
||||
formData.investigation === '003'
|
||||
? !!val || 'กรุณาเลือกจำนวนวันที่ต้องการขยาย'
|
||||
: true,
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="row items-start col-12">
|
||||
<p
|
||||
class="text-weight-medium q-ma-none text-center align-top q-pt-sm"
|
||||
>
|
||||
วันที่สืบสวน
|
||||
</p>
|
||||
<q-checkbox
|
||||
for="#clickTime"
|
||||
size="md"
|
||||
v-model="formData.clickTime"
|
||||
label="ขยายเวลา"
|
||||
</q-input>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<q-btn
|
||||
id="#confirm"
|
||||
label="ยืนยันผลการสืบสวน"
|
||||
color="primary"
|
||||
class="text-weight-medium q-ml-sm"
|
||||
keep-color
|
||||
/>
|
||||
<div v-if="formData.clickTime !== true" class="self-start row">
|
||||
<div class="q-mx-xs">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.date"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
for="#date"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
ref="dateRef"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
:model-value="
|
||||
formData.date ? date2Thai(formData.date) : null
|
||||
"
|
||||
:rules="[
|
||||
(val) =>
|
||||
!!val || `${'กรุณาเลือกวันที่เริ่มการสอบสวน'}`,
|
||||
]"
|
||||
:label="`${'วันที่เริ่มการสอบสวน'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
color="primary"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
<div class="q-mx-xs q-">
|
||||
<datepicker
|
||||
menu-class-name="modalfix"
|
||||
v-model="formData.dateEnd"
|
||||
:locale="'th'"
|
||||
autoApply
|
||||
:enableTimePicker="false"
|
||||
week-start="0"
|
||||
>
|
||||
<template #year="{ year }">{{ year + 543 }}</template>
|
||||
<template #year-overlay-value="{ value }">{{
|
||||
parseInt(value + 543)
|
||||
}}</template>
|
||||
<template #trigger>
|
||||
<q-input
|
||||
for="#dateEnd"
|
||||
ref="dateEndRef"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
:model-value="
|
||||
formData.dateEnd
|
||||
? date2Thai(formData.dateEnd)
|
||||
: null
|
||||
"
|
||||
:rules="[
|
||||
(val) =>
|
||||
!!val || `${'กรุณาเลือกวันที่สิ้นสุดการสอบสวน'}`,
|
||||
]"
|
||||
:label="`${'วันที่สิ้นสุดการสอบสวน'}`"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon
|
||||
name="event"
|
||||
class="cursor-pointer"
|
||||
color="primary"
|
||||
>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="q-mx-xs">
|
||||
<q-select
|
||||
for="#daysExtend"
|
||||
outlined
|
||||
dense
|
||||
lazy-rules
|
||||
ref="daysExtendRef"
|
||||
v-model="formData.daysExtend"
|
||||
:options="investigateFactStore.daysExtendOp"
|
||||
label="จำนวนวันที่ต้องการขยาย"
|
||||
emit-value
|
||||
map-options
|
||||
:rules="[
|
||||
(val) =>
|
||||
formData.clickTime === true
|
||||
? !!val || 'กรุณาเลือกจำนวนวันที่ต้องการขยาย'
|
||||
: true,
|
||||
]"
|
||||
option-label="name"
|
||||
option-value="id"
|
||||
use-input
|
||||
@filter="(inputValue: any,
|
||||
doneFn: Function) => filterFnOptionsType(inputValue, doneFn, 'daysExtendOp'
|
||||
)"
|
||||
><template v-slot:no-option>
|
||||
<q-item>
|
||||
<q-item-section class="text-grey">
|
||||
ไม่มีข้อมูล
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</template>
|
||||
</q-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 q-my-xs">
|
||||
<q-input
|
||||
for="#complaintdetail"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="complaintdetailRef"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.complaintdetail"
|
||||
:rules="[
|
||||
(val) => !!val || `${'กรุณากรอกรายละเอียดเรื่องร้องเรียน'}`,
|
||||
]"
|
||||
hide-bottom-space
|
||||
:label="`${'รายละเอียดเรื่องร้องเรียน'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 q-my-sm">
|
||||
<q-file
|
||||
for="#fileComplaint"
|
||||
outlined
|
||||
ref="fileComplaintRef"
|
||||
dense
|
||||
v-model="formData.fileComplaint"
|
||||
label="ไฟล์เอกสารหลักฐานเรื่องร้องเรียน"
|
||||
lazy-rules
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกไฟล์หลักฐานการรับ']"
|
||||
hide-bottom-space
|
||||
class="q-py-sm q-ml-sm"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" color="primary" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
<div class="col-12 q-my-sm">
|
||||
<q-input
|
||||
for="#detail"
|
||||
class="full-width inputgreen cursor-pointer"
|
||||
outlined
|
||||
ref="detailRef"
|
||||
dense
|
||||
lazy-rules
|
||||
borderless
|
||||
v-model="formData.detail"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกรายละเอียด'}`]"
|
||||
hide-bottom-space
|
||||
:label="`${'รายละเอียด'}`"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 q-my-xs">
|
||||
<q-file
|
||||
for="#evidenceFiles"
|
||||
outlined
|
||||
dense
|
||||
ref="evidenceFilesRef"
|
||||
v-model="formData.evidenceFiles"
|
||||
label="ไฟล์หลักฐานการรับ"
|
||||
lazy-rules
|
||||
:rules="[(val) => !!val || 'กรุณาเลือกไฟล์หลักฐานการรับ']"
|
||||
hide-bottom-space
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" color="primary" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
<div class="row col-12 items-start q-mt-sm">
|
||||
<div class="col-4">
|
||||
<q-input
|
||||
for="#results"
|
||||
standout
|
||||
dense
|
||||
ref="resultsRef"
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกผลการสืบสวน'}`]"
|
||||
v-model="formData.results"
|
||||
outlined
|
||||
debounce="300"
|
||||
placeholder="ผลการสืบสวน"
|
||||
>
|
||||
</q-input>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<q-btn
|
||||
id="#confirm"
|
||||
label="ยืนยันผลการสืบสวน"
|
||||
color="public"
|
||||
class="q-py-sm q-ml-sm"
|
||||
>
|
||||
<q-tooltip>ยืนยันผลการสืบสวน</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
<q-tooltip>ยืนยันผลการสืบสวน</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -464,6 +464,5 @@ watch(props.data, async () => {
|
|||
>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</q-card>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ const visibleColumns2 = ref<string[]>([
|
|||
"duty",
|
||||
"email",
|
||||
"telephone",
|
||||
"role"
|
||||
]);
|
||||
const columns2 = ref<QTableProps["columns"]>([
|
||||
{
|
||||
|
|
@ -90,6 +91,17 @@ const columns2 = ref<QTableProps["columns"]>([
|
|||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
||||
},
|
||||
{
|
||||
name: "role",
|
||||
align: "left",
|
||||
label: "จำนวนเรื่องสืบสวน",
|
||||
sortable: true,
|
||||
field: "role",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
sort: (a: string, b: string) =>
|
||||
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
||||
},
|
||||
]);
|
||||
|
||||
const props = defineProps({
|
||||
|
|
@ -138,35 +150,28 @@ watchEffect(() => {
|
|||
<q-card style="width: 1200px; max-width: 80vw">
|
||||
<DialogHeader title="เลือกรายชื่อกรรมการ" :close="clickClose" />
|
||||
<q-separator />
|
||||
<q-card-section class="q-pt-none">
|
||||
<div>
|
||||
<div>
|
||||
<q-toolbar style="padding: 0">
|
||||
<q-input
|
||||
borderless
|
||||
outlined
|
||||
dense
|
||||
class="col-12"
|
||||
debounce="300"
|
||||
:model-value="filterKeyword2"
|
||||
@update:model-value="updateInput"
|
||||
placeholder="ค้นหารายชื่อ"
|
||||
style="max-width: 100%"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon v-if="filterKeyword2 == ''" name="search" />
|
||||
<q-icon
|
||||
v-if="filterKeyword2 !== ''"
|
||||
name="clear"
|
||||
class="cursor-pointer"
|
||||
@click="Reset"
|
||||
/>
|
||||
</template>
|
||||
</q-input>
|
||||
</q-toolbar>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<q-card-section >
|
||||
<q-input
|
||||
borderless
|
||||
outlined
|
||||
dense
|
||||
class="col-12 q-mb-sm"
|
||||
debounce="300"
|
||||
:model-value="filterKeyword2"
|
||||
@update:model-value="updateInput"
|
||||
placeholder="ค้นหารายชื่อ"
|
||||
style="max-width: 100%"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon v-if="filterKeyword2 == ''" name="search" />
|
||||
<q-icon
|
||||
v-if="filterKeyword2 !== ''"
|
||||
name="clear"
|
||||
class="cursor-pointer"
|
||||
@click="Reset"
|
||||
/>
|
||||
</template>
|
||||
</q-input>
|
||||
<d-table
|
||||
:columns="columns2"
|
||||
:rows="rows2"
|
||||
|
|
@ -208,6 +213,8 @@ watchEffect(() => {
|
|||
</d-table>
|
||||
</q-card-section>
|
||||
|
||||
<q-separator />
|
||||
|
||||
<q-card-actions align="right" class="bg-white text-teal">
|
||||
<q-btn
|
||||
label="เพิ่มรายชื่อกรรมการ"
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ onMounted(async () => {
|
|||
duty: "ประธาน",
|
||||
email: "e@email.com",
|
||||
telephone: "0800808080",
|
||||
role: "4",
|
||||
},
|
||||
{
|
||||
nameDirector: "นาย สรวิชญ์ พลสิทธิ์",
|
||||
|
|
@ -37,6 +38,7 @@ onMounted(async () => {
|
|||
duty: "เลขานุการ",
|
||||
email: "g@gmail.com",
|
||||
telephone: "0614565145",
|
||||
role: "6",
|
||||
},
|
||||
]);
|
||||
await hideLoader();
|
||||
|
|
@ -213,10 +215,8 @@ watch(props.data, async () => {
|
|||
<form @submit.prevent="validateForm">
|
||||
<div class="col-12">
|
||||
<q-card bordered>
|
||||
<div class="col-12 row q-col-gutter-md q-pa-md">
|
||||
<div class="col-xs-12 col-sm-12 row">
|
||||
<q-separator />
|
||||
<div class="col-12 row q-pa-sm q-col-gutter-sm">
|
||||
<div class="col-12 row q-pa-md">
|
||||
<div class="col-12 row q-col-gutter-md">
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
|
|
@ -225,6 +225,7 @@ watch(props.data, async () => {
|
|||
for="#Complaint"
|
||||
ref="complaintRef"
|
||||
label="เรื่องร้องเรียน"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกเรื่องร้องเรียน'}`]"
|
||||
/>
|
||||
|
|
@ -251,6 +252,7 @@ watch(props.data, async () => {
|
|||
outlined
|
||||
dense
|
||||
class="full-width datepicker"
|
||||
hide-bottom-space
|
||||
:model-value="
|
||||
dateInvestigate != null
|
||||
? date2Thai(dateInvestigate)
|
||||
|
|
@ -293,6 +295,7 @@ watch(props.data, async () => {
|
|||
outlined
|
||||
dense
|
||||
class="col-xs-12 col-sm-4"
|
||||
hide-bottom-space
|
||||
:model-value="
|
||||
dateAllegation != null
|
||||
? date2Thai(dateAllegation)
|
||||
|
|
@ -338,6 +341,7 @@ watch(props.data, async () => {
|
|||
outlined
|
||||
dense
|
||||
class="full-width datepicker"
|
||||
hide-bottom-space
|
||||
:model-value="
|
||||
dateEvident != null ? date2Thai(dateEvident) : null
|
||||
"
|
||||
|
|
@ -358,65 +362,72 @@ watch(props.data, async () => {
|
|||
</q-input>
|
||||
</template>
|
||||
</datepicker>
|
||||
<div class="col-xs-12 col-sm-12 text-bold">
|
||||
กรรมการ
|
||||
<q-btn
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="add"
|
||||
@click="popup()"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
<q-tooltip>เพิ่มกรรมการ</q-tooltip>
|
||||
</q-btn>
|
||||
<div class="row col-12">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
|
||||
กรรมการ
|
||||
<q-btn
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
dense
|
||||
color="add"
|
||||
class="q-ml-sm"
|
||||
@click="popup()"
|
||||
icon="mdi-plus"
|
||||
>
|
||||
<q-tooltip>เพิ่มกรรมการ</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 q-pa-sm row">
|
||||
<Table
|
||||
class="col-12"
|
||||
style="max-height: 80vh"
|
||||
:rows="rows"
|
||||
:columns="investigateDis.columnsDirector"
|
||||
:filter="filter"
|
||||
:visible-columns="investigateDis.visibleColumnsDirector"
|
||||
v-model:inputfilter="filter"
|
||||
v-model:inputvisible="investigateDis.visibleColumnsDirector"
|
||||
:pagination="initialPagination"
|
||||
:nornmalData="true"
|
||||
:paging="true"
|
||||
:titleText="''"
|
||||
>
|
||||
<template #columns="props">
|
||||
<q-tr :props="props" class="cursor-pointer">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'" class="table_ellipsis2">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
<div v-else class="table_ellipsis2">
|
||||
{{ col.value }}
|
||||
</div>
|
||||
</q-td>
|
||||
<q-td>
|
||||
<q-btn
|
||||
dense
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="red"
|
||||
@click="deleteData(props.row.id)"
|
||||
icon="mdi-delete"
|
||||
>
|
||||
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||
</q-btn>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</Table>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-12 q-pb-md">
|
||||
<Table
|
||||
style="max-height: 80vh"
|
||||
:rows="rows"
|
||||
:columns="investigateDis.columnsDirector"
|
||||
:filter="filter"
|
||||
:visible-columns="investigateDis.visibleColumnsDirector"
|
||||
v-model:inputfilter="filter"
|
||||
v-model:inputvisible="investigateDis.visibleColumnsDirector"
|
||||
:pagination="initialPagination"
|
||||
:nornmalData="true"
|
||||
:paging="true"
|
||||
:titleText="''"
|
||||
>
|
||||
<template #columns="props">
|
||||
<q-tr :props="props" class="cursor-pointer">
|
||||
<q-td
|
||||
v-for="col in props.cols"
|
||||
:key="col.name"
|
||||
:props="props"
|
||||
>
|
||||
<div v-if="col.name == 'no'" class="table_ellipsis2">
|
||||
{{ props.rowIndex + 1 }}
|
||||
</div>
|
||||
<div v-else class="table_ellipsis2">
|
||||
{{ col.value }}
|
||||
</div>
|
||||
</q-td>
|
||||
<q-td>
|
||||
<q-btn
|
||||
dense
|
||||
size="12px"
|
||||
flat
|
||||
round
|
||||
color="red"
|
||||
@click="deleteData(props.row.id)"
|
||||
icon="mdi-delete"
|
||||
>
|
||||
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||
</q-btn>
|
||||
</q-td>
|
||||
</q-tr>
|
||||
</template>
|
||||
</Table>
|
||||
</div>
|
||||
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-6"
|
||||
dense
|
||||
|
|
@ -425,12 +436,14 @@ watch(props.data, async () => {
|
|||
v-model="formData.casefault"
|
||||
for="#casefault"
|
||||
label="กรณีมีความผิด"
|
||||
hide-bottom-space
|
||||
:rules="[(val) => !!val || `${'กรุณากรอกกรณีมีความผิด'}`]"
|
||||
lazy-rules
|
||||
/>
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-6"
|
||||
dense
|
||||
hide-bottom-space
|
||||
outlined
|
||||
for="#whereInvestigate"
|
||||
ref="whereInvestigateRef"
|
||||
|
|
@ -450,6 +463,7 @@ watch(props.data, async () => {
|
|||
option-value="id"
|
||||
emit-value
|
||||
map-options
|
||||
hide-bottom-space
|
||||
:options="investigateDis.optionsTypefault"
|
||||
label="ลักษณะความผิด"
|
||||
/>
|
||||
|
|
@ -464,13 +478,15 @@ watch(props.data, async () => {
|
|||
option-value="id"
|
||||
emit-value
|
||||
map-options
|
||||
hide-bottom-space
|
||||
:options="investigateDis.optionsfaultLevel"
|
||||
label="ระดับโทษความผิด"
|
||||
/>
|
||||
<q-input
|
||||
class="col-xs-12 col-sm-6 q-pb-md"
|
||||
class="col-xs-12 col-sm-6"
|
||||
dense
|
||||
for="#refLaw"
|
||||
hide-bottom-space
|
||||
outlined
|
||||
ref="refLawRef"
|
||||
v-model="formData.refLaw"
|
||||
|
|
@ -484,6 +500,7 @@ watch(props.data, async () => {
|
|||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
hide-bottom-space
|
||||
for="#detailComplaint"
|
||||
ref="detailComplaintRef"
|
||||
v-model="formData.detailComplaint"
|
||||
|
|
@ -495,6 +512,7 @@ watch(props.data, async () => {
|
|||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
hide-bottom-space
|
||||
for="#trueDetail"
|
||||
ref="trueDetailRef"
|
||||
v-model="formData.trueDetail"
|
||||
|
|
@ -502,90 +520,123 @@ watch(props.data, async () => {
|
|||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกรายละเอียดสืบสวนข้อเท็จจริง'}`]"
|
||||
/>
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
for="#evidence"
|
||||
ref="evidenceRef"
|
||||
v-model="formData.evidence"
|
||||
label="สรุปพยานหลักฐานสนับสนุนข้อกล่าวหา"
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกสรุปพยานหลักฐานสนับสนุนข้อกล่าวหา'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-pb-md"
|
||||
outlined
|
||||
dense
|
||||
ref="filesEvidenceRef"
|
||||
for="#filesEvidence"
|
||||
v-model="formData.filesEvidence"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารหลักฐานสรุปพยานหลักฐานสนับสนุนข้อกล่าวหา"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
ref="recordAccuserRef"
|
||||
for="#recordAccuser"
|
||||
v-model="formData.recordAccuser"
|
||||
label="บันทึกถ้อยคำของผู้กล่าวหา"
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกบันทึกถ้อยคำของผู้กล่าวหา'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-pb-md"
|
||||
outlined
|
||||
dense
|
||||
ref="filesRecordAccuserRef"
|
||||
for="#filesRecordAccuser"
|
||||
v-model="formData.filesRecordAccuser"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารบันทึกถ้อยคำของผู้กล่าวหา"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
for="#witnesses"
|
||||
ref="witnessesRef"
|
||||
v-model="formData.witnesses"
|
||||
label="พยานและการบันทึกถ้อยคำ"
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกพยานและการบันทึกถ้อยคำ'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-pb-md"
|
||||
outlined
|
||||
dense
|
||||
ref="filesWitnessesRef"
|
||||
for="#filesWitnesses"
|
||||
v-model="formData.filesWitnesses"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารพยานและการบันทึกถ้อยคำ"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
<div class="row col-12">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
|
||||
หลักฐานสนับสนุนข้อกล่าวหา
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 q-pa-sm row">
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
for="#evidence"
|
||||
ref="evidenceRef"
|
||||
hide-bottom-space
|
||||
v-model="formData.evidence"
|
||||
label="สรุปพยานหลักฐานสนับสนุนข้อกล่าวหา"
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกสรุปพยานหลักฐานสนับสนุนข้อกล่าวหา'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-mt-sm"
|
||||
outlined
|
||||
dense
|
||||
ref="filesEvidenceRef"
|
||||
for="#filesEvidence"
|
||||
v-model="formData.filesEvidence"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารหลักฐานสรุปพยานหลักฐานสนับสนุนข้อกล่าวหา"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
|
||||
บันทึกถ้อยคำของผู้กล่าวหา
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 q-pa-sm row">
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
ref="recordAccuserRef"
|
||||
for="#recordAccuser"
|
||||
v-model="formData.recordAccuser"
|
||||
label="บันทึกถ้อยคำของผู้กล่าวหา"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกบันทึกถ้อยคำของผู้กล่าวหา'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-mt-sm"
|
||||
outlined
|
||||
dense
|
||||
ref="filesRecordAccuserRef"
|
||||
for="#filesRecordAccuser"
|
||||
v-model="formData.filesRecordAccuser"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารบันทึกถ้อยคำของผู้กล่าวหา"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="row col-12">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
|
||||
พยานและการบันทึกถ้อยคำ
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 q-pa-sm row">
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
outlined
|
||||
for="#witnesses"
|
||||
ref="witnessesRef"
|
||||
v-model="formData.witnesses"
|
||||
label="พยานและการบันทึกถ้อยคำ"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกพยานและการบันทึกถ้อยคำ'}`]"
|
||||
/>
|
||||
<q-file
|
||||
class="col-12 q-mt-sm"
|
||||
outlined
|
||||
dense
|
||||
ref="filesWitnessesRef"
|
||||
for="#filesWitnesses"
|
||||
v-model="formData.filesWitnesses"
|
||||
@added="fileUploadDoc"
|
||||
label="ไฟล์เอกสารพยานและการบันทึกถ้อยคำ"
|
||||
hide-bottom-space
|
||||
lazy-rules
|
||||
accept=".pdf,.xlsx,.doc"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="attach_file" />
|
||||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<q-input
|
||||
class="col-12"
|
||||
dense
|
||||
|
|
@ -594,6 +645,7 @@ watch(props.data, async () => {
|
|||
ref="InvestResultsRef"
|
||||
v-model="formData.InvestResults"
|
||||
label="ผลการสอบสวน"
|
||||
hide-bottom-space
|
||||
type="textarea"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกผลการสอบสวน'}`]"
|
||||
/>
|
||||
|
|
@ -615,7 +667,6 @@ watch(props.data, async () => {
|
|||
</template>
|
||||
</q-file>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-sm">
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ const clickBack = () => {
|
|||
outlined
|
||||
v-model="channel"
|
||||
for="channel"
|
||||
hide-bottom-space
|
||||
label="กรอกชื่อช่องทาง"
|
||||
:rules="[(val:string) => !!val || `${'กรุณากรอกชื่อช่องทาง'}`]"
|
||||
/>
|
||||
|
|
@ -78,17 +79,13 @@ const clickBack = () => {
|
|||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-sm">
|
||||
<q-space />
|
||||
<q-btn
|
||||
flat
|
||||
round
|
||||
label="บันทึก"
|
||||
color="public"
|
||||
@click="checkSave"
|
||||
icon="mdi-content-save-outline"
|
||||
>
|
||||
<q-tooltip>{{ edit ? "แก้ไขข้อมูล" : "บันทึกข้อมูล" }}</q-tooltip>
|
||||
</q-btn>
|
||||
</div>
|
||||
</q-card>
|
||||
|
|
|
|||
|
|
@ -81,117 +81,129 @@ function onValidate() {
|
|||
}
|
||||
</script>
|
||||
<template>
|
||||
<form @submit.prevent.stop="onValidate" class="q-gutter-md">
|
||||
<q-card bordered class="q-pa-md">
|
||||
<div v-if="data === null" class="row q-col-gutter-sm">
|
||||
<div class="col-3 row q-pa-md text-bold">
|
||||
<label>ค้นหาบุคคลากรที่อยู่ในระบบ</label>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="idCard"
|
||||
label="รหัสบัตรประชาชน"
|
||||
ref="idCardRef"
|
||||
for="idCardRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกรหัสบัตรประชาชน'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<q-btn
|
||||
unelevated
|
||||
dense
|
||||
color="primary"
|
||||
class="q-px-md q-py-sm"
|
||||
@click="addEmployee"
|
||||
label="เพิ่มบุคลากร"
|
||||
id="addCustomer"
|
||||
/>
|
||||
<form @submit.prevent.stop="onValidate">
|
||||
<q-card bordered>
|
||||
<div class="col-12 row q-pa-md">
|
||||
<div class="row q-col-gutter-md">
|
||||
<div class="row col-12" v-if="data === null">
|
||||
<q-card bordered class="row col-12" style="border:1px solid #d6dee1;">
|
||||
<div class="col-xs-12 col-sm-12 text-weight-medium bg-grey-1 q-py-sm q-px-md">
|
||||
ค้นหาบุคคลากรที่อยู่ในระบบ
|
||||
</div>
|
||||
<div class="col-12"><q-separator /></div>
|
||||
<div class="col-xs-12 q-pa-sm row">
|
||||
<div class="col-6">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="idCard"
|
||||
label="รหัสบัตรประชาชน"
|
||||
ref="idCardRef"
|
||||
for="idCardRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกรหัสบัตรประชาชน'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<q-btn
|
||||
unelevated
|
||||
dense
|
||||
color="primary"
|
||||
class="q-px-md q-py-sm q-ml-sm"
|
||||
@click="addEmployee"
|
||||
label="เพิ่มบุคลากร"
|
||||
id="addCustomer"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.prefix"
|
||||
label="คำนำหน้า"
|
||||
ref="prefixRef"
|
||||
for="prefixRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => val !== null && val !== '' || `${'กรุณากรอกคำนำหน้า'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.firstname"
|
||||
label="ชื่อ"
|
||||
ref="firstnameRef"
|
||||
for="firstnameRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => val !== null && val !== '' || `${'กรุณากรอกชื่อ'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.lastname"
|
||||
label="นามสกุล"
|
||||
ref="lastnameRef"
|
||||
for="lastnameRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกนามสกุล'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.position"
|
||||
label="ตำแหน่ง"
|
||||
ref="positionRef"
|
||||
for="positionRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.phone"
|
||||
label="เบอร์โทร"
|
||||
ref="phoneRef"
|
||||
for="phoneRef"
|
||||
hide-bottom-space
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกเบอร์โทร'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.email"
|
||||
label="อีเมล"
|
||||
ref="emailRef"
|
||||
hide-bottom-space
|
||||
for="emailRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกอีเมล'}`]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row q-px-md q-col-gutter-sm">
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.prefix"
|
||||
label="คำนำหน้า"
|
||||
ref="prefixRef"
|
||||
for="prefixRef"
|
||||
:rules="[(val: string) => val !== null && val !== '' || `${'กรุณากรอกคำนำหน้า'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.firstname"
|
||||
label="ชื่อ"
|
||||
ref="firstnameRef"
|
||||
for="firstnameRef"
|
||||
:rules="[(val: string) => val !== null && val !== '' || `${'กรุณากรอกชื่อ'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.lastname"
|
||||
label="นามสกุล"
|
||||
ref="lastnameRef"
|
||||
for="lastnameRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกนามสกุล'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.position"
|
||||
label="ตำแหน่ง"
|
||||
ref="positionRef"
|
||||
for="positionRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.phone"
|
||||
label="เบอร์โทร"
|
||||
ref="phoneRef"
|
||||
for="phoneRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกเบอร์โทร'}`]"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<q-input
|
||||
dense
|
||||
outlined
|
||||
v-model="formData.email"
|
||||
label="อีเมล"
|
||||
ref="emailRef"
|
||||
for="emailRef"
|
||||
:rules="[(val: string) => !!val || `${'กรุณากรอกอีเมล'}`]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-sm">
|
||||
<q-space />
|
||||
<q-btn
|
||||
for="ButtonOnSubmit"
|
||||
id="formSubmit"
|
||||
color="secondary"
|
||||
label="บันทึก"
|
||||
type="submit"
|
||||
><q-tooltip>บับทึกข้อมูล</q-tooltip></q-btn
|
||||
>
|
||||
</div>
|
||||
</q-card>
|
||||
</form>
|
||||
<q-separator />
|
||||
<div class="row col-12 q-pa-sm">
|
||||
<q-space />
|
||||
<q-btn
|
||||
for="ButtonOnSubmit"
|
||||
id="formSubmit"
|
||||
color="secondary"
|
||||
label="บันทึก"
|
||||
type="submit"
|
||||
><q-tooltip>บับทึกข้อมูล</q-tooltip></q-btn
|
||||
>
|
||||
</div>
|
||||
</q-card>
|
||||
</form>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ interface directorType {
|
|||
duty: string;
|
||||
email: string;
|
||||
telephone: string;
|
||||
role: string;
|
||||
}
|
||||
|
||||
export type {
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ export const useInvestigateDisStore = defineStore(
|
|||
duty: e.duty,
|
||||
email: e.email,
|
||||
telephone: e.telephone,
|
||||
role: e.role,
|
||||
}));
|
||||
rows2.value = datalistDirector;
|
||||
selected.value = rows2.value;
|
||||
|
|
@ -204,6 +205,7 @@ export const useInvestigateDisStore = defineStore(
|
|||
"duty",
|
||||
"email",
|
||||
"telephone",
|
||||
"role",
|
||||
]);
|
||||
const columnsDirector = ref<QTableProps["columns"]>([
|
||||
{
|
||||
|
|
@ -260,6 +262,15 @@ export const useInvestigateDisStore = defineStore(
|
|||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
{
|
||||
name: "role",
|
||||
align: "left",
|
||||
label: "จำนวนเรื่องสืบสวน",
|
||||
sortable: true,
|
||||
field: "role",
|
||||
headerStyle: "font-size: 14px",
|
||||
style: "font-size: 14px",
|
||||
},
|
||||
]);
|
||||
return {
|
||||
fecthList,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue