Merge branch 'develop' into devTee

# Conflicts:
#	src/api/02_organizational/api.organization.ts
This commit is contained in:
STW_TTTY\stwtt 2024-06-12 14:37:47 +07:00
commit d141f5f886
29 changed files with 180 additions and 341 deletions

7
.env Normal file
View file

@ -0,0 +1,7 @@
VITE_COMPETITIVE_EXAM_PANEL: "https://bma-dashboard.frappet.synology.me/goto/KO0GpSu4z?orgId=1"
VITE_QUALIFY_DISABLE_EMAM_PANEL: "https://bma-dashboard.frappet.synology.me/goto/dQQzpIX4z?orgId=1"
VITE_QUALIFY_EXAM_PANEL: "https://bma-dashboard.frappet.synology.me/goto/cj1ZtIX4z?orgId=1"
VITE_S3CLUSTER_PUBLIC_URL: "https://s3cluster.frappet.com/bma-ehr-fpt/organization/strueture/"
VITE_REALM_KEYCLOAK: "bma-ehr"
VITE_CLIENTID_KEYCLOAK: "bma-ehr-vue3"
VITE_URL_KEYCLOAK: "https://id.frappet.synology.me/"

View file

@ -94,4 +94,5 @@ export default {
orgCheckAvatar: (id: string) => `${orgProfile}/avatar/profileId/${id}`,
changePosition: `${organization}/placement/change-position`,
orgProfileReport: `${orgProfile}-employee/report`,
};

View file

@ -484,8 +484,10 @@ function selectOrgLevele(val: string, status: boolean = true) {
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white text-teal">
<q-btn type="submit" :label="`บันทึก`" color="public" />
<q-card-actions align="right">
<q-btn type="submit" :label="`บันทึก`" color="public">
<q-tooltip>นทกขอม</q-tooltip></q-btn
>
</q-card-actions>
</form>
</q-card>

View file

@ -55,7 +55,7 @@ const pagination = ref({
});
const dataLabel = {
citizenId: "เลขบัตรประจำตัวประชาชน",
citizenId: "เลขประจำตัวประชาชน",
name: "ชื่อ - สกุล",
birthDate: "วัน/เดือน/ปีเกิด",
age: "อายุ",

View file

@ -353,7 +353,7 @@ onMounted(async () => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ fatherData.citizenId ? fatherData.citizenId : "-" }}
@ -397,7 +397,7 @@ onMounted(async () => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ motherData.citizenId ? motherData.citizenId : "-" }}
@ -441,7 +441,7 @@ onMounted(async () => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ spouseData.citizenId ? spouseData.citizenId : "-" }}
@ -493,7 +493,7 @@ onMounted(async () => {
<div class="col-12 q-pa-md q-col-gutter-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col-10">
{{ children.childrenCitizenId }}
@ -1156,7 +1156,7 @@ onMounted(async () => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ historyRows[index - 1].fatherCitizenId }}
@ -1200,7 +1200,7 @@ onMounted(async () => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ historyRows[index - 1].motherCitizenId }}
@ -1251,7 +1251,7 @@ onMounted(async () => {
>
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ historyRows[index - 1].coupleCitizenId }}
@ -1309,7 +1309,7 @@ onMounted(async () => {
<div class="col-12 q-pa-md q-col-gutter-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col-10">
{{ children.childrenCitizenId }}

View file

@ -46,7 +46,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "citizenId",
align: "left",
label: "เลขบัตรประจำตัวประชาชน",
label: "เลขประจำตัวประชาชนตัวประชาชน",
sortable: true,
field: "citizenId",
headerStyle: "font-size: 14px",
@ -465,7 +465,7 @@ onMounted(() => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ fatherData.citizenId ? fatherData.citizenId : "-" }}
@ -540,7 +540,7 @@ onMounted(() => {
<q-card bordered class="bg-grey-1 q-gutter-md q-ma-none q-pb-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col">
{{ motherData.citizenId ? motherData.citizenId : "-" }}
@ -635,7 +635,7 @@ onMounted(() => {
</div>
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col-10">
{{ coupleData.citizenId ?? "-" }}
@ -738,7 +738,7 @@ onMounted(() => {
<div class="col-12 q-pa-md q-col-gutter-md">
<div class="row items-center">
<div class="col-2 text-grey-6 text-weight-medium">
<div>เลขตรประจำวประชาชน</div>
<div>เลขประจำตวประชาชนวประชาชน</div>
</div>
<div class="col-10">
{{ item.childrenCitizenId }}

View file

@ -5,7 +5,7 @@ import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import type { UserData } from "@/modules/05_placement/interface/response/AppointMent";
import DialogHeader from "@/modules/05_placement/components/AppointMent/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import http from "@/plugins/http";
import config from "@/app.config";
@ -158,9 +158,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่ง" :close="clickClose" />
<DialogHeader :tittle="'ส่งไปออกคำสั่ง'" :close="clickClose" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-between">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -307,14 +307,15 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="clickAddlist"
color="public"
:disable="checkSelected"
/>
><q-tooltip>งไปออกคำส</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -7,7 +7,8 @@ import { useCounterMixin } from "@/stores/mixin";
import { useTransferDataStore } from "@/modules/05_placement/store";
import Dialogbody from "@/modules/05_placement/components/AppointEmployee/Dialogbody.vue";
// import DialogOrgTree from "@/modules/05_placement/components/AppointEmployee/Modal.vue";
import DialogHeader from "@/modules/05_placement/components/AppointMent/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import type {
listAppointType,
resData,
@ -772,7 +773,7 @@ function onSave(data: any) {
</q-card>
<q-dialog v-model="ModalEmployee" persistent>
<q-card style="width: 70vw; max-width: 70vw">
<DialogHeader title="กำหนดตำแหน่ง" :close="clickClose" />
<DialogHeader :tittle="'กำหนดตำแหน่ง'" :close="clickClose" />
<q-separator />
<q-card-section class="q-pa-sm">
<div class="row justify-end">

View file

@ -1,7 +1,8 @@
<script setup lang="ts">
import { useQuasar, QForm } from "quasar";
import { onMounted, reactive, ref, watch } from "vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
@ -389,7 +390,7 @@ function findByPerson(element: any): any {
<q-dialog v-model="props.modal" persistent>
<q-card style="width: 900px; max-width: 80vw">
<q-form ref="myFormPosition">
<DialogHeader title="เลือกหน่วยงาน" :close="closeModal" />
<DialogHeader :tittle="'เลือกหน่วยงาน'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pa-sm bg-grey-1">
<div class="row col-12 q-col-gutter-sm">

View file

@ -1,7 +1,7 @@
<script setup lang="ts">
import { useQuasar, QForm } from "quasar";
import { onMounted, reactive, ref, watch } from "vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
@ -403,7 +403,7 @@ onMounted(async () => {
<q-card style="width: 900px; max-width: 80vw">
<q-form ref="myFormPosition">
<DialogHeader
title="เลือกหน่วยงานที่แต่งตั้ง - เลื่อน"
:tittle="'เลือกหน่วยงานที่แต่งตั้ง - เลื่อน'"
:close="closeModal"
/>
<q-separator />

View file

@ -4,8 +4,8 @@ import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import type { UserDataNew } from "@/modules/05_placement/interface/response/AppointMent";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogHeader from "@/modules/05_placement/components/AppointMent/DialogHeader.vue";
import { useTransferDataStore } from "@/modules/05_placement/store";
import http from "@/plugins/http";
@ -175,9 +175,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่ง" :close="clickClose" />
<DialogHeader :tittle="'ส่งไปออกคำสั่ง'" :close="clickClose" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-between">
<div class="col-5">
<!-- <q-toolbar style="padding: 0">
@ -329,14 +329,16 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="sendToCommand"
color="public"
:disable="checkSelected"
/>
>
<q-tooltip>งไปออกคำส</q-tooltip>
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -1,7 +1,8 @@
<script setup lang="ts">
import { useQuasar, QForm } from "quasar";
import { onMounted, reactive, ref, watch } from "vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
@ -403,7 +404,7 @@ onMounted(async () => {
<q-card style="width: 900px; max-width: 80vw">
<q-form ref="myFormPosition">
<DialogHeader
title="เลือกหน่วยงานที่แต่งตั้ง - เลื่อน"
:tittle="'เลือกหน่วยงานที่แต่งตั้ง - เลื่อน'"
:close="closeModal"
/>
<q-separator />

View file

@ -5,7 +5,8 @@ import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import type { UserDataNew } from "@/modules/05_placement/interface/response/AppointMent";
import DialogHeader from "@/modules/05_placement/components/AppointMent/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import { useTransferDataStore } from "@/modules/05_placement/store";
import http from "@/plugins/http";
@ -130,9 +131,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่ง" :close="clickClose" />
<DialogHeader :tittle="'ส่งไปออกคำสั่ง'" :close="clickClose" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-between">
<div class="col-5">
<!-- <q-toolbar style="padding: 0">
@ -284,14 +285,16 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="sendToCommand"
color="public"
:disable="checkSelected"
/>
>
<q-tooltip>งไปออกคำส</q-tooltip>
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -2,7 +2,7 @@
import { ref, computed, watchEffect } from "vue";
import { useQuasar } from "quasar";
import type { QTableProps } from "quasar";
import DialogHeader from "@/modules/05_placement/components/Receive/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import { useTransferDataStore } from "@/modules/05_placement/store";
import { useCounterMixin } from "@/stores/mixin";
@ -146,7 +146,7 @@ const addOther = async () => {
let pId: string[] = [];
let Type = props.type as string;
selected.value.forEach((e: any) => {
pId.push(e.profileId);
pId.push(e.id);
});
let data = {
id: pId,
@ -193,9 +193,9 @@ function filterFnOptionsType(val: string, update: any) {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่งอื่นๆ" :close="props.clickClose" />
<DialogHeader :tittle="'ส่งไปออกคำสั่งอื่นๆ'" :close="props.clickClose" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-between">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -308,14 +308,16 @@ function filterFnOptionsType(val: string, update: any) {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="clickAddlist"
:disable="checkSelected"
color="public"
/>
>
<q-tooltip>งไปออกคำส</q-tooltip>
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -1,7 +1,7 @@
<script setup lang="ts">
import { useQuasar, QForm } from "quasar";
import { onMounted, reactive, ref, watch } from "vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
@ -419,7 +419,7 @@ function findByPerson(element: any): any {
<q-dialog v-model="props.modal" persistent>
<q-card style="width: 900px; max-width: 80vw">
<q-form ref="myFormPosition">
<DialogHeader title="เลือกหน่วยงานที่รับโอน" :close="closeModal" />
<DialogHeader :tittle="'เลือกหน่วยงานที่รับโอน'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pa-sm bg-grey-1">
<div class="row col-12 q-col-gutter-sm">

View file

@ -440,7 +440,7 @@ watch(
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white text-teal">
<q-card-actions align="right">
<q-btn label="บันทึก" color="secondary" @click="onClickSubmit"
><q-tooltip>นทกขอม</q-tooltip></q-btn
>

View file

@ -1486,8 +1486,8 @@ onMounted(async () => {
</template> -->
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งรายชื่อ"
@click="savelist"

View file

@ -3,7 +3,7 @@ import { ref, watch } from "vue";
import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import http from "@/plugins/http";
import config from "@/app.config";
@ -79,7 +79,7 @@ const columns = ref<QTableProps["columns"]>([
]);
/** get ข้อมูลการศึกษา */
async function fetchData(){
async function fetchData() {
showLoader();
await http
.get(config.API.getDatapersonal(props.personalId))
@ -100,13 +100,13 @@ async function fetchData(){
.finally(() => {
hideLoader();
});
};
}
/**
* convert text
* @param val type
*/
function formBmaofficer(val: string){
function formBmaofficer(val: string) {
switch (val) {
case "OFFICER":
return "ขรก.กทม. สามัญ";
@ -117,16 +117,16 @@ function formBmaofficer(val: string){
default:
return "";
}
};
}
/** ปิด POPUP ข้อมูล */
async function close(){
async function close() {
props.close();
selection.value = [];
rows.value = [];
};
}
/** เมื่อ props.Modal จะเรียกข้อมูลการศึกษา */
/** เมื่อ props.Modal จะเรียกข้อมูลการศึกษา */
watch(props, () => {
if (props.Modal === true) {
fetchData();
@ -139,7 +139,7 @@ watch(props, () => {
<q-form ref="myForm">
<div class="row">
<DialogHeader
:title="`รายละเอียดของ ${personalForm.fullName}`"
:tittle="`รายละเอียดของ ${personalForm.fullName}`"
@click="close"
/>
</div>
@ -187,7 +187,6 @@ watch(props, () => {
{{ personalForm.gender }}
</div>
</div>
</div>
</q-card>
</div>
@ -222,7 +221,7 @@ watch(props, () => {
</q-table>
</q-card>
</div>
<div class="contanier-box-mini">
<q-card bordered class="card-panding">
<div class="row items-center q-pa-xs header-text">การสอบ</div>

View file

@ -4,7 +4,8 @@ import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import type { QTableProps } from "quasar";
import type { ResponseRow } from "@/modules/05_placement/interface/response/Receive";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
// import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import http from "@/plugins/http";
import config from "@/app.config";
import { useTransferDataStore } from "@/modules/05_placement/store";
@ -176,9 +177,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่งรับโอน" :close="clickClose" />
<DialogHeader :tittle="'ส่งไปออกคำสั่งรับโอน'" :close="clickClose" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-end">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -311,14 +312,15 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="saveOrder"
:disable="checkSelected"
color="public"
/>
><q-tooltip>งไปออกคำส</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -8,7 +8,7 @@ import { useTransferDataStore } from "@/modules/05_placement/store";
import http from "@/plugins/http";
import config from "@/app.config";
import DialogOrgTree from "@/modules/05_placement/components/Relocation/RelocationModal.vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import type { relocationType } from "@/modules/05_placement/interface/response/Relocation";
@ -581,9 +581,9 @@ const pagination = ref({
<q-dialog v-model="modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่งย้าย" :close="closeModal" />
<DialogHeader :tittle="'ส่งไปออกคำสั่งย้าย'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-end">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -709,14 +709,16 @@ const pagination = ref({
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="saveOrder"
:disable="checkSelected"
color="public"
/>
>
<q-tooltpi>งไปออกคำส</q-tooltpi>
</q-btn>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -7,7 +7,8 @@ import { useTransferDataStore } from "@/modules/05_placement/store";
import type { QTableProps } from "quasar";
import type { officerType } from "@/modules/05_placement/interface/response/officer";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import http from "@/plugins/http";
import config from "@/app.config";
@ -194,9 +195,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่งส่งตัวกลับ" :close="closeModal" />
<DialogHeader :tittle="'ส่งไปออกคำสั่งส่งตัวกลับ'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-end">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -288,14 +289,16 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="saveOrder"
:disable="checkSelected"
color="public"
/>
>
<q-tooltip>งไปออกคำส</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -6,7 +6,7 @@ import { useTransferDataStore } from "@/modules/05_placement/store";
import type { QTableProps } from "quasar";
import type { ResponseData } from "@/modules/05_placement/interface/response/Transfer";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import http from "@/plugins/http";
import config from "@/app.config";
@ -182,9 +182,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่ง" :close="closeModal" />
<DialogHeader :tittle="'ส่งไปออกคำสั่ง'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-end">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -276,14 +276,15 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
@click="saveOrder"
:disable="checkSelected"
color="public"
/>
><q-tooltip>งไปออกคำส</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -8,7 +8,7 @@ import config from "@/app.config";
import type { QTableProps } from "quasar";
import type { officerType } from "@/modules/05_placement/interface/response/officer";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
import { useTransferDataStore } from "@/modules/05_placement/store";
@ -227,9 +227,9 @@ watchEffect(() => {
<template>
<q-dialog v-model="props.Modal">
<q-card style="width: 1200px; max-width: 80vw">
<DialogHeader title="ส่งไปออกคำสั่งช่วยราชการ" :close="closeModal" />
<DialogHeader :tittle="'ส่งไปออกคำสั่งช่วยราชการ'" :close="closeModal" />
<q-separator />
<q-card-section class="q-pt-none">
<q-card-section>
<div class="row justify-end">
<div class="col-5">
<q-toolbar style="padding: 0">
@ -323,14 +323,15 @@ watchEffect(() => {
</template>
</d-table>
</q-card-section>
<q-card-actions align="right" class="bg-white text-teal">
<q-separator />
<q-card-actions align="right">
<q-btn
label="ส่งไปออกคำสั่ง"
:disable="checkSelected"
color="public"
@click="saveOrder"
/>
><q-tooltip>งไปออกคำส</q-tooltip></q-btn
>
</q-card-actions>
</q-card>
</q-dialog>

View file

@ -10,7 +10,8 @@ import config from "@/app.config";
import type { QTableProps } from "quasar";
import type { ResponseItems } from "@/modules/06_retirement/interface/response/exitInterview";
import DialogFooter from "@/modules/05_placement/components/PersonalList/DialogFooter.vue";
import DialogHeader from "@/modules/05_placement/components/PersonalList/DialogHeader.vue";
import DialogHeader from "@/components/DialogHeader.vue";
/** use */
const $q = useQuasar(); // noti quasar
@ -477,7 +478,7 @@ const openModalCalendar = (rows: any) => {
<q-card style="width: 800px">
<q-form ref="myForm">
<DialogHeader
title="กําหนดวันนัดหมายเพื่อทําการสัมภาษณ์การลาออก"
:tittle="'กําหนดวันนัดหมายเพื่อทําการสัมภาษณ์การลาออก'"
:close="closeModal"
/>
<q-separator />

View file

@ -8,6 +8,7 @@ import config from "@/app.config";
import type { QTableProps } from "quasar";
import type { DataEmployee } from "@/modules/08_registryEmployee/interface/response/Employee";
/** importComponents*/
import DialogHeader from "@/components/DialogHeader.vue";
/** inportStore*/
@ -180,7 +181,7 @@ function onClickSendOrder() {
id: pId,
};
http
.post(config.API.organizationEmployeeSendOrder, data)
.post(config.API.orgProfileReport, data)
.then(() => {
success($q, "บันทึกสำเร็จ");
closeDialog();

View file

@ -436,7 +436,7 @@ onMounted(() => {
v-close-popup
v-if="
props.row.draftOrgEmployeeStatus === null ||
props.row.draftOrgEmployeeStatus === 'REPORT'
props.row.draftOrgEmployeeStatus === 'PENDING'
"
@click.pervent="onClickSelectPos(props.row)"
>

View file

@ -1,3 +1,4 @@
div
<script setup lang="ts">
import { ref, onMounted, watch } from "vue";
import { useCounterMixin } from "@/stores/mixin";
@ -812,9 +813,9 @@ const getClass = (val: boolean) => {
};
</script>
<template>
<q-form greedy @submit.prevent @validation-success="onSubmit" class="q-pa-md">
<div class="q-pa-md">
<div style="max-height: 68vh; overflow-y: scroll">
<q-card>
<q-form greedy @submit.prevent @validation-success="onSubmit">
<q-card-section style="max-height: 50vh">
<!-- Main -->
<div class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md">
<div class="col-xs-12 col-md-6">
@ -834,8 +835,8 @@ const getClass = (val: boolean) => {
input-debounce="0"
@update:model-value="selectCMP(typeOrder)"
@filter="(inputValue:any,
doneFn:Function) => filterSelector(inputValue, doneFn,'typeOrderOption'
) "
doneFn:Function) => filterSelector(inputValue, doneFn,'typeOrderOption'
) "
/>
</div>
<div class="col-xs-12 col-md-6">
@ -2215,26 +2216,25 @@ const getClass = (val: boolean) => {
typeOrder.commandCode === 'C-PM-32')
"
>
<div class="row col-12">
<div class="col-xs-12 col-md-6">
<selector
:class="getClass(true)"
outlined
dense
v-model="complaintId"
:rules="[(val: string) => !!val || `${'กรุณาเลือกเรื่องร้องเรียน'}`]"
emit-value
hide-bottom-space
:label="`${'เรื่องร้องเรียน'}`"
map-options
option-label="name"
:options="DataStore.complaintOption"
option-value="id"
use-input
input-debounce="0"
/>
</div>
<div class="col-xs-12 col-md-6">
<selector
:class="getClass(true)"
outlined
dense
v-model="complaintId"
:rules="[(val: string) => !!val || `${'กรุณาเลือกเรื่องร้องเรียน'}`]"
emit-value
hide-bottom-space
:label="`${'เรื่องร้องเรียน'}`"
map-options
option-label="name"
:options="DataStore.complaintOption"
option-value="id"
use-input
input-debounce="0"
/>
</div>
<div class="col-xs-12 col-md-6"></div>
<div class="col-xs-12 col-md-6">
<q-input
@ -2281,22 +2281,15 @@ const getClass = (val: boolean) => {
/>
</div>
</div>
</div>
</div>
<q-separator />
<div class="flex justify-end q-gutter-sm q-mt-md">
<q-btn
unelevated
label="บันทึก"
id="onSubmit"
type="submit"
color="public"
>
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</div>
</q-form>
</q-card-section>
<q-separator />
<q-card-actions align="right">
<q-btn label="บันทึก" id="onSubmit" type="submit" color="public">
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</q-card-actions>
</q-form>
</q-card>
<q-dialog v-model="dialogVisible">
<q-card style="width: 900px; max-width: 80vw">

View file

@ -458,8 +458,8 @@ const pagination = ref({
</script>
<template>
<div>
<div class="q-py-md q-pl-md" style="max-height: 68vh; overflow-y: scroll">
<q-card>
<q-card-section>
<div class="col-12 row q-pb-sm items-center">
<q-btn flat round color="primary" @click="refresh" icon="mdi-plus">
<q-tooltip>เพมขอม</q-tooltip>
@ -599,11 +599,11 @@ const pagination = ref({
</q-tr>
</template>
</d-table>
</div>
</q-card-section>
<q-separator />
<div class="flex justify-end q-pa-sm q-gutter-sm">
<q-card-actions align="right">
<q-btn
dense
outline
color="primary"
icon="chevron_left"
@ -612,18 +612,11 @@ const pagination = ref({
label="กรอกรายละเอียด"
>
</q-btn>
<q-btn
dense
unelevated
label="บันทึก"
color="public"
@click="save"
class="q-px-md"
>
<q-btn label="บันทึก" color="public" @click="save" class="q-px-md">
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</div>
</div>
</q-card-actions>
</q-card>
<!--********************************** เงนเดอน ********************************** -->
<q-dialog v-model="modal" persistent>
<q-card style="width: 50vw; max-width: 50vw">
@ -691,8 +684,6 @@ const pagination = ref({
<q-separator />
<q-card-actions align="right">
<q-btn
dense
unelevated
label="บันทึก"
color="public"
@click="saveModal"
@ -761,8 +752,6 @@ const pagination = ref({
<q-separator />
<q-card-actions align="right">
<q-btn
dense
unelevated
label="บันทึก"
color="public"
@click="saveModalAdd"

View file

@ -2,7 +2,7 @@
import { ref, onMounted } from "vue";
import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import DialogHeader from "@/modules/04_registry/components/DialogHeader.vue";
import type { QInput, QForm } from "quasar";
import type { treeTab } from "@/modules/05_placement/interface/index/Main";
import http from "@/plugins/http";
@ -42,52 +42,13 @@ const filterRef = ref<QInput>();
const filter = ref<string>("");
const modal = ref<boolean>(false);
const search = ref<string>("");
const expanded = ref<string[]>([]);
const selected = ref<string>("");
const nodesTree = ref<treeTab[]>([]);
const selectedModal = ref<ResponseOrganiz[]>([]);
const filterModal = ref<string>("");
const visibleColumnsModal = ref<String[]>(["no", "idCard", "name", "position"]);
const columnsModal = ref<QTableProps["columns"]>([
{
name: "no",
align: "left",
label: "ลำดับ",
field: "no",
sortable: false,
},
{
name: "idCard",
align: "left",
label: "เลขประจำตัวประชาชน",
field: "idCard",
sortable: true,
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "name",
align: "left",
label: "ชื่อ-นามสกุล",
field: "name",
sortable: true,
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "position",
align: "left",
label: "ตำแหน่ง",
field: "position",
sortable: true,
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
]);
const rowsModal = ref<ResponseOrganiz[]>([]);
const optionSelect = ref<DataOption[]>([
@ -245,7 +206,6 @@ const getData = async (id: string) => {
};
//
const saveData = async () => {
const id = route.params.orderid
? route.params.orderid.toString()
: localStorage.getItem("orderId")
@ -377,8 +337,8 @@ const updateData = (row: DataCopyOrder) => {
</script>
<template>
<div>
<div class="q-py-md q-pl-md" style="max-height: 68vh; overflow-y: scroll">
<q-card>
<q-card-section>
<div class="col-12 row q-py-sm items-center">
<q-btn flat round color="primary" @click="clickAdd" icon="mdi-plus">
<q-tooltip>เพมขอม</q-tooltip>
@ -506,11 +466,11 @@ const updateData = (row: DataCopyOrder) => {
</template>
</d-table>
</q-form>
</div>
</q-card-section>
<q-separator />
<div class="flex justify-end q-pa-sm q-gutter-sm">
<q-card-actions align="right">
<q-btn
dense
outline
color="primary"
icon="chevron_left"
@ -520,8 +480,6 @@ const updateData = (row: DataCopyOrder) => {
>
</q-btn>
<q-btn
dense
unelevated
label="บันทึก"
color="public"
@click="saveDataCopyOrder"
@ -529,140 +487,8 @@ const updateData = (row: DataCopyOrder) => {
>
<q-tooltip>นทกขอม</q-tooltip>
</q-btn>
</div>
</div>
<!-- <q-dialog v-model="modal" persistent full-width>
<q-card>
<DialogHeader tittle="เลือกรายชื่อตามหน่วยงาน" :close="clickClose" />
<q-separator />
<q-card-section class="q-pa-sm bg-grey-1">
<div class="row col-12 q-col-gutter-sm">
<div class="col-xs-12 col-sm-5 row">
<q-card flat bordered class="fit q-pa-sm">
<q-scroll-area visible style="height: 70vh">
<q-input
outlined
dense
v-model="search"
placeholder="ค้นหา"
class="q-mb-sm"
>
<template v-slot:append>
<q-icon name="mdi-magnify" />
</template>
</q-input>
<q-tree
:nodes="nodesTree"
dense
node-key="id"
v-model:selected="selected"
v-model:expanded="expanded"
no-selection-unset
selected-color="primary"
@update:selected="onSelected"
default-expand-all
/>
</q-scroll-area>
</q-card>
</div>
<div class="col-xs-12 col-sm-7">
<div class="col-12 row q-py-sm items-center">
<q-space />
<div class="items-center" style="display: flex">
<q-input
standout
dense
v-model="filterModal"
ref="filterRef"
outlined
debounce="300"
placeholder="ค้นหา"
style="max-width: 200px"
class="q-ml-sm"
>
<template v-slot:append>
<q-icon v-if="filterModal == ''" name="search" />
<q-icon
v-if="filterModal !== ''"
name="clear"
class="cursor-pointer"
@click="resetFilter"
/>
</template>
</q-input>
<q-select
v-model="visibleColumnsModal"
:display-value="$q.lang.table.columns"
multiple
outlined
dense
:options="columnsModal"
options-dense
option-value="name"
map-options
emit-value
style="min-width: 150px"
class="gt-xs q-ml-sm"
/>
</div>
</div>
<d-table
:rows="rowsModal"
:columns="columnsModal"
:visible-columns="visibleColumnsModal"
:filter="filterModal"
row-key="profileId"
selection="multiple"
v-model:selected="selectedModal"
>
<template v-slot:header-selection="scope">
<q-checkbox
keep-color
color="primary"
dense
v-model="scope.selected"
/>
</template>
<template v-slot:body-selection="scope">
<q-checkbox
keep-color
color="primary"
dense
v-model="scope.selected"
/>
</template>
<template v-slot:body-cell="props">
<q-td :props="props">
<div v-if="props.col.name == 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else>
{{ props.value }}
</div>
</q-td>
</template>
</d-table>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right">
<q-btn
dense
unelevated
label="บันทึก"
color="public"
@click="saveData"
class="q-px-md"
/>
</q-card-actions>
</q-card>
</q-dialog> -->
</q-card-actions>
</q-card>
<DialogOrgSelectOneStep
v-model:modal="modal"