Merge branch 'develop' into devTee

This commit is contained in:
STW_TTTY\stwtt 2024-05-31 16:00:27 +07:00
commit 21fb81243c
9 changed files with 75 additions and 82 deletions

View file

@ -1,10 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ระบบทรัพยากรบุคคล</title> <title>ระบบบริหารทรัพยากรบุคคล</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View file

@ -224,7 +224,7 @@ const thaiOptions: Intl.DateTimeFormatOptions = {
สวสด, {{ fullname }} สวสด, {{ fullname }}
</div> </div>
<div style="color: #ffffff" class="text-18px text-weight-medium col-12"> <div style="color: #ffffff" class="text-18px text-weight-medium col-12">
ระบบทรพยากรบคคล ระบบบรหารทรพยากรบคคลของกรงเทพมหานคร
</div> </div>
</div> </div>
<div class="col-xs-12 col-sm-12 col-md-9"> <div class="col-xs-12 col-sm-12 col-md-9">

View file

@ -12,6 +12,8 @@ import type {
FromCancelDetail, FromCancelDetail,
} from "@/modules/05_leave/interface/response/leave"; } from "@/modules/05_leave/interface/response/leave";
import DialogHeader from "@/components/DialogHeader.vue";
/** import componest*/ /** import componest*/
import FormLeave from "@/modules/05_leave/components/formDetail/01_SickForm.vue"; import FormLeave from "@/modules/05_leave/components/formDetail/01_SickForm.vue";
import FormChildbirth from "@/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue"; import FormChildbirth from "@/modules/05_leave/components/formDetail/04_HelpWifeBirthForm.vue";
@ -433,34 +435,15 @@ watch(
<template> <template>
<q-dialog v-model="props.modal" persistent> <q-dialog v-model="props.modal" persistent>
<q-card q-card style="min-width: 70%" v-if="props.leaveStatus != 'DELETE'"> <q-card v-if="props.leaveStatus != 'DELETE'">
<q-card-section class="row items-center q-pa-sm"> <DialogHeader
<q-toolbar style="padding: 0px;"> :tittle="`${titleMain} ${titleName}`"
<q-toolbar-title class="text-bold" style="font-size: 15px;"> {{ titleMain }}{{ titleName }} </q-toolbar-title> :close="props.onClickClose"
/>
<q-btn
icon="close"
unelevated
round
dense
@click="props.onClickClose"
style="color: #ff8080; background-color: #ffdede"
/>
</q-toolbar>
<!-- <div class="text-bold q-pl-sm">{{ titleMain }}{{ titleName }}</div>
<q-space />
<q-btn
icon="close"
unelevated
round
dense
@click="props.onClickClose"
style="color: #ff8080; background-color: #ffdede"
/> -->
</q-card-section>
<q-separator /> <q-separator />
<q-card-section class="q-pa-sm row q-gutter-y-md">
<q-card-section class="scroll" style="max-height: 70vh">
<div <div
flat flat
:class=" :class="
@ -560,10 +543,7 @@ watch(
</div> </div>
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-section <q-card-section v-if="props.leaveStatus === 'CANCEL'" align="right">
class="row items-center q-pa-sm"
v-if="props.leaveStatus === 'CANCEL'"
>
<q-space /> <q-space />
<q-btn <q-btn
label="ยืนยัน" label="ยืนยัน"
@ -576,21 +556,12 @@ watch(
</q-card-section> </q-card-section>
</q-card> </q-card>
<q-card q-card style="min-width: 70%" v-if="props.leaveStatus === 'DELETE'"> <q-card q-card v-if="props.leaveStatus === 'DELETE'">
<q-card-section class="row items-center q-pa-sm"> <DialogHeader
<div class="text-bold q-pl-sm"> :tittle="`${titleMainCancle} ${titleName}`"
{{ titleMainCancle }}{{ titleName }} :close="props.onClickClose"
</div> />
<q-space />
<q-btn
icon="close"
unelevated
round
dense
@click="props.onClickClose"
style="color: #ff8080; background-color: #ffdede"
/>
</q-card-section>
<q-separator /> <q-separator />
<q-card-section class="q-p-md row q-gutter-y-md"> <q-card-section class="q-p-md row q-gutter-y-md">
<div flat class="col-12"> <div flat class="col-12">

View file

@ -58,8 +58,10 @@ function onSubmit() {
governmentDate: governmentDate.value, governmentDate: governmentDate.value,
governmentEndDate: governmentEndDate.value, governmentEndDate: governmentEndDate.value,
isGraduated: isGraduated.value, isGraduated: isGraduated.value,
graduatedDate: isGraduated.value == 'true' ? graduatedDate.value : null, graduatedDate:
graduatedReason: isGraduated.value == 'false' ? graduatedReason.value : null, isGraduated.value == "true" ? graduatedDate.value : null,
graduatedReason:
isGraduated.value == "false" ? graduatedReason.value : null,
}) })
.then((res) => { .then((res) => {
success($q, "บันทึกสำเร็จ"); success($q, "บันทึกสำเร็จ");
@ -110,7 +112,7 @@ watch(
<q-separator /> <q-separator />
<q-card-section> <q-card-section>
<div class="row q-col-gutter-sm"> <div class="row q-col-gutter-sm">
<div class="col-6"> <div class="col-xs-12 col-sm-12 col-md-6">
<q-input <q-input
label="เลขที่หนังสือรายงานตัวกลับเข้าปฏิบัติราชการ" label="เลขที่หนังสือรายงานตัวกลับเข้าปฏิบัติราชการ"
v-model="bookNumber" v-model="bookNumber"
@ -125,7 +127,7 @@ watch(
class="inputgreen" class="inputgreen"
/> />
</div> </div>
<div class="col-6"> <div class="col-xs-12 col-sm-12 col-md-6">
<datepicker <datepicker
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="bookDate" v-model="bookDate"
@ -163,7 +165,7 @@ watch(
</template> </template>
</datepicker> </datepicker>
</div> </div>
<div class="col-6"> <div class="col-xs-12 col-sm-12 col-md-6">
<datepicker <datepicker
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="governmentDate" v-model="governmentDate"
@ -203,7 +205,7 @@ watch(
</template> </template>
</datepicker> </datepicker>
</div> </div>
<div class="col-6"> <div class="col-xs-12 col-sm-12 col-md-6">
<datepicker <datepicker
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="governmentEndDate" v-model="governmentEndDate"
@ -305,8 +307,8 @@ watch(
dense dense
outlined outlined
hide-bottom-space hide-bottom-space
class="inputgreen" class="inputgreen"
:rules="[ :rules="[
(val:string) => (val:string) =>
!!val || `${'กรุณากรอก เนื่องจาก'}`, !!val || `${'กรุณากรอก เนื่องจาก'}`,
]" ]"

View file

@ -522,7 +522,7 @@ onMounted(async () => {
</div> </div>
<q-space /> <q-space />
<div v-if="fileList == null" class="col-xs-5 col-3"> <div v-if="fileList == null" class="col-xs-8 col-sm-3">
<q-file <q-file
for="inputFiles" for="inputFiles"
class="col-12" class="col-12"

View file

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useQuasar, type QTableColumn, type QTableProps } from "quasar"; import { useQuasar, type QTableColumn, type QTableProps } from "quasar";
import { ref, reactive,onMounted } from "vue"; import { ref, reactive, onMounted } from "vue";
import { useRegistryInFormationStore } from "@/modules/10_registry/store/registry"; import { useRegistryInFormationStore } from "@/modules/10_registry/store/registry";
//history dialog //history dialog
@ -11,7 +11,7 @@ import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
const store = useRegistryInFormationStore(); const store = useRegistryInFormationStore();
const rowsHistory = ref<any[]>([]) const rowsHistory = ref<any[]>([]);
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError, date2Thai } = mixin; const { showLoader, hideLoader, messageError, date2Thai } = mixin;
@ -222,7 +222,6 @@ const visibleColumnsHistory = ref<string[]>([
"createdAt", "createdAt",
]); ]);
function onHistory() { function onHistory() {
modalHistory.value = true; modalHistory.value = true;
} }
@ -258,7 +257,10 @@ function getData() {
/** get history */ /** get history */
function getHistory() { function getHistory() {
const url = store.typeProfile == 'OFFICER' ? config.API.dataUserInformatioHistory(''):config.API.dataUserInformatioHistory('-employee') const url =
store.typeProfile == "OFFICER"
? config.API.dataUserInformatioHistory("")
: config.API.dataUserInformatioHistory("-employee");
showLoader(); showLoader();
http http
.get(url) .get(url)

View file

@ -65,10 +65,10 @@ watch(
</script> </script>
<template> <template>
<q-dialog v-model="modal" persistent> <q-dialog v-model="modal" persistent>
<q-card style="min-width: 70vw"> <q-card>
<DialogHeader :tittle="title" :close="close" /> <DialogHeader :tittle="title" :close="close" />
<q-separator /> <q-separator />
<q-card-section> <q-card-section style="max-height: 80vh" class="scroll">
<div class="row justify-end q-col-gutter-sm q-mb-sm"> <div class="row justify-end q-col-gutter-sm q-mb-sm">
<div class="col-12 col-sm-3"> <div class="col-12 col-sm-3">
<q-input <q-input
@ -209,7 +209,9 @@ watch(
class="fix_top" class="fix_top"
> >
<q-item-label class="text-dark text-weight-medium"> <q-item-label class="text-dark text-weight-medium">
{{ props.row.status ? statusLeave(props.row.status) : "-" }}</q-item-label {{
props.row.status ? statusLeave(props.row.status) : "-"
}}</q-item-label
> >
</q-item-section> </q-item-section>
<q-item-section v-else class="fix_top"> <q-item-section v-else class="fix_top">

View file

@ -21,7 +21,7 @@ import { useQuasar } from "quasar";
const store = useRegistryInFormationStore(); const store = useRegistryInFormationStore();
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { messageError,dialogConfirm } = mixin; const { messageError, dialogConfirm } = mixin;
const profileImg = ref<string>(""); const profileImg = ref<string>("");
const router = useRouter(); const router = useRouter();
const tab = ref<string>("information"); const tab = ref<string>("information");
@ -100,7 +100,7 @@ function onClickDownloadKp7(type: string) {
* logout keycloak * logout keycloak
* confirm อนออกจากระบบ * confirm อนออกจากระบบ
*/ */
const doLogout = () => { const doLogout = () => {
dialogConfirm( dialogConfirm(
$q, $q,
() => { () => {
@ -332,6 +332,12 @@ onMounted(async () => {
<q-avatar text-color="info" icon="mdi-chevron-right" /> <q-avatar text-color="info" icon="mdi-chevron-right" />
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item clickable v-ripple disabled>
<q-item-section>เปลยนรหสผาน</q-item-section>
<q-item-section avatar>
<q-avatar text-color="info" icon="mdi-chevron-right" />
</q-item-section>
</q-item>
</q-list> </q-list>
</q-card> </q-card>
</div> </div>

View file

@ -7,7 +7,6 @@ import { useQuasar } from "quasar";
import keycloak from "@/plugins/keycloak"; import keycloak from "@/plugins/keycloak";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@ -154,8 +153,8 @@ const thaiOptions: Intl.DateTimeFormatOptions = {
minute: "2-digit", minute: "2-digit",
}; };
function onInfo(){ function onInfo() {
router.push(`/registry`) router.push(`/registry`);
} }
</script> </script>
<!-- โครงเว --> <!-- โครงเว -->
@ -178,9 +177,9 @@ function onInfo(){
style="color: #ffffff; letter-spacing: 1px; line-height: 10px" style="color: #ffffff; letter-spacing: 1px; line-height: 10px"
class="text-body2 text-weight-bolder col-12" class="text-body2 text-weight-bolder col-12"
> >
ระบบ<span class="text-primary">ทรพยากรบคคล</span> ระบบ<span class="text-primary">บรหารทรพยากรบคคล</span>
</div> </div>
<div class="text-caption text-white">กรงเทพมหานคร</div> <div class="text-caption text-white">ของกรงเทพมหานคร</div>
</div> </div>
</div> </div>
<div v-else class="row items-center"> <div v-else class="row items-center">
@ -364,11 +363,17 @@ function onInfo(){
</template> </template>
<q-list> <q-list>
<q-item clickable v-close-popup @click="onInfo"> <q-item clickable v-close-popup @click="onInfo">
<q-item-section avatar style="min-width: 30px" > <q-item-section avatar style="min-width: 30px">
<q-icon color="info" size="18px" name="mdi-clipboard-account-outline" /> <q-icon
color="blue-9"
size="18px"
name="mdi-clipboard-account-outline"
/>
</q-item-section> </q-item-section>
<q-item-section <q-item-section
><q-item-label>อมลทะเบยนประว</q-item-label></q-item-section ><q-item-label
>อมลทะเบยนประว</q-item-label
></q-item-section
> >
</q-item> </q-item>
@ -402,9 +407,8 @@ function onInfo(){
style="height: 30px; max-width: 30px" style="height: 30px; max-width: 30px"
/> />
</q-avatar> </q-avatar>
<q-menu> <!-- <q-menu>
<q-list dense style="min-width: 200px"> <q-list dense style="min-width: 200px">
<q-item clickable v-close-popup> <q-item clickable v-close-popup>
<q-item-section> <q-item-section>
<div class="row items-center"> <div class="row items-center">
@ -412,7 +416,7 @@ function onInfo(){
<q-item clickable v-close-popup @click="onInfo"> <q-item clickable v-close-popup @click="onInfo">
<q-item-section avatar style="min-width: 30px"> <q-item-section avatar style="min-width: 30px">
<q-icon <q-icon
color="info" color="blue-9"
size="18px" size="18px"
name="mdi-clipboard-account-outline" name="mdi-clipboard-account-outline"
/> />
@ -455,7 +459,7 @@ function onInfo(){
</q-item-section> </q-item-section>
</q-item> </q-item>
</q-list> </q-list>
</q-menu> </q-menu> -->
</q-btn> </q-btn>
</div> </div>
</q-toolbar> </q-toolbar>
@ -490,7 +494,13 @@ function onInfo(){
icon="mdi-calendar-blank-outline" icon="mdi-calendar-blank-outline"
@click="router.push(`/leave`)" @click="router.push(`/leave`)"
/> />
<q-btn flat round color="white" icon="mdi-account-outline" /> <q-btn
flat
round
color="white"
icon="mdi-account-outline"
@click="router.push(`/registry`)"
/>
</div> </div>
</q-toolbar> </q-toolbar>
</q-footer> </q-footer>