Merge branch 'develop' of https://github.com/Frappet/bma-ehr-frontend into develop

This commit is contained in:
AnandaTon 2023-12-06 12:08:16 +07:00
commit 8d5c6fcb61
12 changed files with 208 additions and 236 deletions

View file

@ -16,8 +16,9 @@ export default {
/**
* @param id type
*/
complaintListOp:()=>`${disciplineMain}/complaint_Channel`,
complaintChannelbyId: (id: string) => `${disciplineMain}/complaint_Channel/${id}`,
complaintListOp: () => `${disciplineMain}/complaint_Channel`,
complaintChannelbyId: (id: string) =>
`${disciplineMain}/complaint_Channel/${id}`,
complaintAdd: () => `${disciplineMain}/complaint`,
complaintbyId: (id: string) => `${disciplineMain}/complaint/${id}`,
complaintReject: (id: string) => `${disciplineMain}/complaint/reject/${id}`,
@ -46,7 +47,7 @@ export default {
investigateReject: (id: string) => `${investigate}/reject/${id}`,
investigateResume: (id: string) => `${investigate}/resume/${id}`,
investigateApprove: (id: string) => `${investigate}/approve/${id}`,
investigateCalendar: () => `${investigate}/calendar`,
/** ระบบวินัยเรื่องสอบสวน */
disciplineDisciplinary: () => `${discipline}`,
@ -62,16 +63,18 @@ export default {
disciplinaryResume: (id: string) => `${discipline}/resume/${id}`,
disciplinaryApprove: (id: string) => `${discipline}/approve/${id}`,
disciplinarySuspend: (id: string) => `${discipline}/suspend/${id}`,
disciplinaryCalendar: () => `${discipline}/calendar`,
/** รายการผลการพิจารณาทางวินัย*/
listResult: () => `${disciplineMain}/result`,
listResultById: (id: string) => `${disciplineMain}/result/${id}`,
/** ผู้ถูกพักราชการ */
suspendMain:(page: number, pageSize: number, keyword: string) => `${suspend}?page=${page}&pageSize=${pageSize}&keyword=${keyword}`,
suspendMain: (page: number, pageSize: number, keyword: string) =>
`${suspend}?page=${page}&pageSize=${pageSize}&keyword=${keyword}`,
suspendById: (id: string) => `${suspend}/${id}`,
suspendReport: () => `${suspend}/report`,
reportresult:(id:string)=>`${disciplineMain}/result/report/${id}`,
reportresult: (id: string) => `${disciplineMain}/result/report/${id}`,
};

View file

@ -624,7 +624,7 @@ onMounted(() => {
ref="dateReceivedRef"
outlined
dense
:input-style="isReadonly ? { color: 'teal' }:{color:'black'}"
:input-style="isReadonly ? { color: 'black' }:{color:'teal'}"
:readonly="isReadonly"
hide-bottom-space
class="full-width datepicker"
@ -701,7 +701,7 @@ onMounted(() => {
for="inputDateconsideration"
ref="dateConsiderationRef"
outlined
:input-style="isReadonly ? { color: 'teal' }:{color:'black'}"
:input-style="isReadonly ? { color: 'black' }:{color:'teal'}"
dense
class="full-width datepicker"
:model-value="
@ -774,7 +774,7 @@ onMounted(() => {
for="inputDatewarn"
ref="dateNotificationRef"
outlined
:input-style="isReadonly ? { color: 'teal' }:{color:'black'}"
:input-style="isReadonly ? { color: 'black' }:{color:'teal'}"
dense
:readonly="isReadonly"
hide-bottom-space

View file

@ -14,39 +14,26 @@ const props = defineProps({
});
</script>
<template>
<q-dialog v-model="props.modal" persistent>
<q-card style="min-width: 60vw">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold">ปฎ</q-toolbar-title>
<q-btn
icon="close"
unelevated
round
dense
@click="props.close"
style="color: #ff8080; background-color: #ffdede"
/>
</q-toolbar>
<q-separator />
<q-card-section class="q-pa-md bg-grey-1">
<Calendar/>
</q-card-section>
<!-- <q-separator /> -->
<!-- <div class="row justify-end q-px-md q-py-sm items-center">
<q-btn
dense
color="public"
id="onSubmit"
class="q-px-md q-py-xs"
@click="savePost"
>
<q-dialog v-model="props.modal">
<q-card style="min-width: 60vw">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold"
>ปฎ</q-toolbar-title
>
<q-btn
icon="close"
unelevated
round
dense
@click="props.close"
style="color: #ff8080; background-color: #ffdede"
/>
</q-toolbar>
<div>{{ props.btnTitle }}</div>
<q-tooltip>{{ props.btnTitle }}</q-tooltip>
</q-btn>
</div> -->
</q-card>
</q-dialog>
</template>
<q-separator />
<q-card-section class="q-pa-md bg-grey-1 scroll">
<Calendar />
</q-card-section>
</q-card>
</q-dialog>
</template>

View file

@ -7,17 +7,22 @@ import timeGridPlugin from "@fullcalendar/timegrid";
import interactionPlugin from "@fullcalendar/interaction";
import allLocales from "@fullcalendar/core/locales-all";
import listPlugin from "@fullcalendar/list";
import { useQuasar } from "quasar";
import config from "@/app.config";
import http from "@/plugins/http";
import type { DataDateMonthObject } from "@/modules/09_leave/interface/response/leave";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin(); //
const { monthYear2Thai } = mixin;
import type { DataDateMonthObject } from "@/modules/09_leave/interface/response/leave";
const { monthYear2Thai, showLoader, hideLoader, messageError } = mixin;
const $q = useQuasar();
/**
* Option ของปฏ
*/
const fullCalendar = ref<any>(); //ref calendar
const calendarOptions = ref<CalendarOptions>({
plugins: [
@ -47,64 +52,7 @@ const calendarOptions = ref<CalendarOptions>({
eventBorderColor: "#50a5fc",
displayEventTime: false,
editable: true,
events: [
{
groupId: "3",
title: "ลากิจส่วนตัว",
start: "2023-10-10",
allDay: true,
status: "done",
color: "#E3FDDA",
},
{
groupId: "3",
title: "ลากิจส่วนตัว",
start: "2023-11-10",
allDay: true,
status: "done",
color: "#E3FDDA",
},
{
groupId: "3",
title: "ลากิจส่วนตัว",
start: "2023-10-11",
allDay: true,
status: "done",
color: "#E3FDDA",
},
{
groupId: "3",
title: "ลากิจส่วนตัว",
start: "2023-10-12",
allDay: true,
status: "done",
color: "#E3FDDA",
},
{
groupId: "3",
title: "ลากิจส่วนตัว",
start: "2023-10-13",
allDay: true,
status: "done",
color: "#E3FDDA",
},
{
groupId: "2",
title: "ลาป่วย",
start: "2023-10-19",
allDay: true,
status: "proceed",
color: "#e4f3ff",
},
{
groupId: "1",
title: "ลาป่วย",
start: "2023-10-20",
allDay: true,
status: "new",
color: "#FFF1CC",
},
],
events: [],
});
/**
@ -123,41 +71,64 @@ const reason = ref("ยกเลิกการลา");
const model = ref(null);
const modeCancel = ref(true);
async function fetchCalendar() {
showLoader();
await http
.post(config.API.investigateCalendar(), {
year: dateMonth.value.year,
mounth: dateMonth.value.month,
})
.then((res) => {
console.log(res);
const data = [
{
groupId: "2",
title: "ลากิจส่วนตัว",
start: "2023-12-12",
end: "2024-01-02",
allDay: true,
status: "done",
color: "#E3FDDA",
},
];
calendarOptions.value.events = data;
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
setTimeout(() => {
if (fullCalendar !== undefined) {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
}
hideLoader();
}, 1000);
});
}
/**
* เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/
onMounted(async () => {
if (fullCalendar !== undefined) {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
}
fetchCalendar();
});
/** function เปลี่ยนปฎิทิน*/
function changCalendar() {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
fetchCalendar();
}
/**
* props(นเดอนปเลอก) ตอนอพเดท าฏนใหพเดทใหม
*/
// watch(props, async (count, prevCount) => {
// const calen = fullCalendar.value.getApi();
// const date = new Date(props.dateYear, props.dateMonth);
// calen.gotoDate(date);
// });
/**
* งกนยกเล model
* @param text
*/
const cancel = async (text: string) => {
async function cancel(text: string) {
title.value = text;
modalCancel.value = true;
modeCancel.value = true;
};
}
/**
* งกนเป model
* @param text
@ -168,26 +139,6 @@ const view = async (text: string) => {
modeCancel.value = false;
};
// filter calendar left
const filterLists = ref<any[]>([
{
id: "x1",
name: "นางสาววารุณี แต้มคู",
color: "green",
},
{
id: "x2",
name: "นางสาวสมศรี ใจดี",
color: "grey",
},
{
id: "x3",
name: "นายสมชาย สุขใจ",
color: "grey",
},
]);
const filterVal = ref(["x1"]);
const dateMonth = ref<DataDateMonthObject>({
month: new Date().getMonth(),
year: new Date().getFullYear(),
@ -261,7 +212,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
<div class="textHover col-10" @click="view(arg.event.title)">
{{ arg.event.title }}
</div>
<q-btn
<!-- <q-btn
dense
v-if="arg.event.groupId == 1"
icon="mdi-close"
@ -269,12 +220,12 @@ const monthYearThai = (val: DataDateMonthObject) => {
round
size="8px"
@click="cancel(arg.event.title)"
/>
/> -->
</div>
</template>
</FullCalendar>
<div class="row q-col-gutter-lg justify-end q-pb-lg">
<div class="items-center row">
<!-- <div class="items-center row">
<q-icon
size="10px"
color="light-green"
@ -282,8 +233,8 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะอน</span>
</div>
<div class="items-center row">
</div> -->
<!-- <div class="items-center row">
<q-icon
size="10px"
color="red-6"
@ -291,7 +242,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะไมอน</span>
</div>
</div> -->
<div class="items-center row">
<q-icon
size="10px"
@ -299,11 +250,9 @@ const monthYearThai = (val: DataDateMonthObject) => {
name="mdi-circle"
class="q-mr-sm"
/>
<span class="text-caption text-grey-8"
>สถานะอยระหวางดำเนนการ</span
>
<span class="text-caption text-grey-8">บสวน</span>
</div>
<div class="items-center row">
<!-- <div class="items-center row">
<q-icon
size="10px"
color="orange"
@ -311,7 +260,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะใหม</span>
</div>
</div> -->
</div>
</div>
</div>

View file

@ -139,7 +139,7 @@ function getData() {
.get(config.API.investigateById(id.value))
.then((res) => {
const dataList = res.data.result;
console.log(dataList)
console.log(dataList);
data.id = dataList.id;
data.idComplaint = dataList.idComplaint;
data.respondentType = dataList.respondentType;
@ -160,7 +160,7 @@ function getData() {
data.investigationStatusResult = dataList.investigationStatusResult;
data.investigationExtendStatus = dataList.investigationExtendStatus;
data.investigationDaysExtend = dataList.investigationDaysExtend;
console.log(dataList)
console.log(dataList);
})
.catch((e) => {
messageError($q, e);
@ -222,7 +222,7 @@ function sentConfirmNoPerson() {
.finally(() => {
hideLoader();
getData();
router.push(`/discipline/investigatefacts`)
router.push(`/discipline/investigatefacts`);
});
}
@ -261,13 +261,12 @@ function confirmEndInvestigate() {
http
.get(config.API.investigateReject(id.value))
.then((res) => {
success($q, "ยุติเรื่องสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
success($q, "ยุติเรื่องสำเร็จ");
await getData();
});
}
@ -407,4 +406,4 @@ watch(
padding: 0;
background-color: #f0f3f3;
}
</style>
</style>

View file

@ -765,7 +765,7 @@ onMounted(async () => {
for="#date"
class="full-width cursor-pointer"
ref="dateRef"
:input-style="isReadonly ? { color: 'teal' }:{color:'black'}"
:input-style="isReadonly ? { color: 'black' }:{color:'teal'}"
:readonly="isReadonly"
outlined
dense
@ -852,7 +852,7 @@ onMounted(async () => {
<template #trigger>
<q-input
for="#dateEnd"
:input-style="isReadonly ? { color: 'teal' }:{color:'black'}"
:input-style="isReadonly ? { color: 'black' }:{color:'teal'}"
ref="dateEndRef"
class="full-width cursor-pointer"
:readonly="isReadonly"

View file

@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, defineProps } from "vue";
import Calendar from "@/modules/11_discipline/components/2_InvestigateFacts/Calendar.vue";
import Calendar from "@/modules/11_discipline/components/3_InvestigateDisciplinary/Calendar.vue";
const props = defineProps({
modal: {
@ -14,26 +14,28 @@ const props = defineProps({
});
</script>
<template>
<q-dialog v-model="props.modal" persistent>
<q-card style="min-width: 60vw">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold">ปฎ</q-toolbar-title>
<q-btn
icon="close"
unelevated
round
dense
@click="props.close"
style="color: #ff8080; background-color: #ffdede"
/>
</q-toolbar>
<q-separator />
<q-card-section class="q-pa-md bg-grey-1">
<Calendar/>
</q-card-section>
<!-- <q-separator /> -->
<!-- <div class="row justify-end q-px-md q-py-sm items-center">
<q-dialog v-model="props.modal" persistent>
<q-card style="min-width: 60vw">
<q-toolbar>
<q-toolbar-title class="text-subtitle2 text-bold"
>ปฎ</q-toolbar-title
>
<q-btn
icon="close"
unelevated
round
dense
@click="props.close"
style="color: #ff8080; background-color: #ffdede"
/>
</q-toolbar>
<q-separator />
<q-card-section class="q-pa-md bg-grey-1 scroll">
<Calendar />
</q-card-section>
<!-- <q-separator /> -->
<!-- <div class="row justify-end q-px-md q-py-sm items-center">
<q-btn
dense
color="public"
@ -47,6 +49,6 @@ const props = defineProps({
<q-tooltip>{{ props.btnTitle }}</q-tooltip>
</q-btn>
</div> -->
</q-card>
</q-dialog>
</template>
</q-card>
</q-dialog>
</template>

View file

@ -7,13 +7,18 @@ import timeGridPlugin from "@fullcalendar/timegrid";
import interactionPlugin from "@fullcalendar/interaction";
import allLocales from "@fullcalendar/core/locales-all";
import listPlugin from "@fullcalendar/list";
import { useQuasar } from "quasar";
import config from "@/app.config";
import http from "@/plugins/http";
import type { DataDateMonthObject } from "@/modules/09_leave/interface/response/leave";
import { useCounterMixin } from "@/stores/mixin";
const mixin = useCounterMixin(); //
const { monthYear2Thai } = mixin;
const { monthYear2Thai, showLoader, hideLoader, messageError } = mixin;
import type { DataDateMonthObject } from "@/modules/09_leave/interface/response/leave";
const $q = useQuasar();
/**
* Option ของปฏ
@ -123,21 +128,48 @@ const reason = ref("ยกเลิกการลา");
const model = ref(null);
const modeCancel = ref(true);
async function fetchCalendar() {
showLoader();
await http
.post(config.API.disciplinaryCalendar(), {
year: dateMonth.value.year,
mouth: dateMonth.value.month,
})
.then((res) => {
console.log(res);
})
.catch((err) => {
messageError($q);
})
.finally(() => {
setTimeout(() => {
if (fullCalendar !== undefined) {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
}
hideLoader();
}, 1000);
});
}
/**
* เรยกฟงกนทงหมดตอนเรยกใชไฟล
*/
onMounted(async () => {
if (fullCalendar !== undefined) {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
}
fetchCalendar();
// if (fullCalendar !== undefined) {
// const calen = fullCalendar.value.getApi();
// const date = new Date(dateMonth.value.year, dateMonth.value.month);
// calen.gotoDate(date);
// }
});
function changCalendar() {
const calen = fullCalendar.value.getApi();
const date = new Date(dateMonth.value.year, dateMonth.value.month);
calen.gotoDate(date);
fetchCalendar();
// const calen = fullCalendar.value.getApi();
// const date = new Date(dateMonth.value.year, dateMonth.value.month);
// calen.gotoDate(date);
}
/**
@ -274,7 +306,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
</template>
</FullCalendar>
<div class="row q-col-gutter-lg justify-end q-pb-lg">
<div class="items-center row">
<!-- <div class="items-center row">
<q-icon
size="10px"
color="light-green"
@ -282,8 +314,8 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะอน</span>
</div>
<div class="items-center row">
</div> -->
<!-- <div class="items-center row">
<q-icon
size="10px"
color="red-6"
@ -291,7 +323,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะไมอน</span>
</div>
</div> -->
<div class="items-center row">
<q-icon
size="10px"
@ -299,11 +331,9 @@ const monthYearThai = (val: DataDateMonthObject) => {
name="mdi-circle"
class="q-mr-sm"
/>
<span class="text-caption text-grey-8"
>สถานะอยระหวางดำเนนการ</span
>
<span class="text-caption text-grey-8">สอบสวน</span>
</div>
<div class="items-center row">
<!-- <div class="items-center row">
<q-icon
size="10px"
color="orange"
@ -311,7 +341,7 @@ const monthYearThai = (val: DataDateMonthObject) => {
class="q-mr-sm"
/>
<span class="text-caption text-grey-8">สถานะใหม</span>
</div>
</div> -->
</div>
</div>
</div>

View file

@ -228,12 +228,14 @@ function confirmEndInvestigate() {
showLoader();
http
.get(config.API.disciplinaryReject(id.value))
.then((res) => {})
.then((res) => {
success($q, "ยุติเรื่องสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
success($q, "ยุติเรื่องสำเร็จ");
fetchDetailDisciplinary();
});
}

View file

@ -690,7 +690,7 @@ onMounted(async () => {
outlined
dense
:input-style="
isReadonly ? { color: 'teal' } : { color: 'black' }
isReadonly ? { color: 'black' } : { color: 'teal' }
"
class="col-xs-12 col-sm-4"
hide-bottom-space
@ -742,7 +742,7 @@ onMounted(async () => {
ref="disciplinaryDateAllegationRef"
outlined
:input-style="
isReadonly ? { color: 'teal' } : { color: 'black' }
isReadonly ? { color: 'black' } : { color: 'teal' }
"
dense
class="col-xs-12 col-sm-4"
@ -830,8 +830,8 @@ onMounted(async () => {
outlined
:input-style="
isReadonly
? { color: 'teal' }
: { color: 'black' }
? { color: 'black' }
: { color: 'teal' }
"
dense
lazy-rules
@ -924,8 +924,8 @@ onMounted(async () => {
lazy-rules
:input-style="
isReadonly
? { color: 'teal' }
: { color: 'black' }
? { color: 'black' }
: { color: 'teal' }
"
hide-bottom-space
borderless
@ -986,7 +986,7 @@ onMounted(async () => {
class="full-width"
hide-bottom-space
:input-style="
isReadonly ? { color: 'teal' } : { color: 'black' }
isReadonly ? { color: 'black' } : { color: 'teal' }
"
:model-value="
formData.disciplinaryDateEvident != null
@ -1038,7 +1038,7 @@ onMounted(async () => {
ref="disciplinaryDateResultRef"
outlined
:input-style="
isReadonly ? { color: 'teal' } : { color: 'black' }
isReadonly ? { color: 'black' } : { color: 'teal' }
"
dense
class="full-width"

View file

@ -1,10 +1,10 @@
<script setup lang="ts">
import { ref, useAttrs } from "vue";
import type { Pagination } from "@/modules/04_registry/interface/index/Main";
import CalandarDialog from "@/modules/11_discipline/components/2_InvestigateFacts/CalandarDialog.vue";
import CalandarDialog from "@/modules/11_discipline/components/3_InvestigateDisciplinary/CalandarDialog.vue";
const calendarModal = ref<boolean>(false);
const calendarModalclose = () =>(calendarModal.value = !calendarModal.value)
const calendarModalclose = () => (calendarModal.value = !calendarModal.value);
const table = ref<any>(null);
const filterRef = ref<any>(null);
const attrs = ref<any>(useAttrs());
@ -73,19 +73,19 @@ function resetFilter() {
<template>
<div class="q-pb-sm row q-col-gutter-sm">
<div>
<q-btn
name="calendar"
round
size="12px"
flat
icon="mdi-calendar-month"
class="q-mr-sm"
color="primary"
@click="calendarOpen"
>
<q-tooltip>ปฏ</q-tooltip>
</q-btn>
</div>
<q-btn
name="calendar"
round
size="12px"
flat
icon="mdi-calendar-month"
class="q-mr-sm"
color="primary"
@click="calendarOpen"
>
<q-tooltip>ปฏ</q-tooltip>
</q-btn>
</div>
<q-space />
<!-- นหาขอความใน table -->
<q-input
@ -148,10 +148,7 @@ function resetFilter() {
<slot v-bind="props" name="columns"></slot>
</template>
</d-table>
<CalandarDialog
:modal="calendarModal"
:close="calendarModalclose"
/>
<CalandarDialog :modal="calendarModal" :close="calendarModalclose" />
</template>
<style lang="scss">

View file

@ -9,7 +9,7 @@ import { useComplainstDataStore } from "@/modules/11_discipline/store/Complaints
const mixin = useCounterMixin();
const $q = useQuasar();
const { dialogConfirm } = mixin;
const { dialogConfirm,dialogMessageNotify } = mixin;
const props = defineProps({
title: {
@ -60,6 +60,9 @@ const initialPagination = ref<any>({
});
function onclickSend() {
if(selected.value.length === 0){
dialogMessageNotify($q,'กรุณาเลือกอย่างน้อย 1 บุคคล')
}else{
dialogConfirm(
$q,
async () => {
@ -70,7 +73,7 @@ function onclickSend() {
`ยืนยันการ${props.title}`,
`ต้องการยืนยันการ${props.title}หรือไม่`
);
}
}}
function onClickClose() {
props.close?.();