เพิ่ม q-skeleton ===> PopupPersonalNew

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2025-07-29 10:59:19 +07:00
parent 3a308d8a8c
commit c07163b74f
3 changed files with 333 additions and 278 deletions

View file

@ -55,6 +55,7 @@ const emit = defineEmits(["update:modal"]);
/** ตัวแปร*/ /** ตัวแปร*/
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
const isLoading = ref<boolean>(true);
const employeeClass = ref<string>(""); const employeeClass = ref<string>("");
const avatar = reactive<Avatar>({ const avatar = reactive<Avatar>({
avatar: "", avatar: "",
@ -128,7 +129,7 @@ function calculateAge(birthDate: Date | null) {
* @param id profileID * @param id profileID
*/ */
async function fetchInformation(id: string) { async function fetchInformation(id: string) {
showLoader(); isLoading.value = true;
await http await http
.get( .get(
config.API.orgProfileById( config.API.orgProfileById(
@ -182,7 +183,7 @@ async function fetchInformation(id: string) {
messageError($q, err); messageError($q, err);
}) })
.finally(() => { .finally(() => {
hideLoader(); isLoading.value = false;
}); });
} }
@ -324,7 +325,33 @@ watch(modal, (newValue) => {
<q-card-section class="col q-pt-none bg-grey-12"> <q-card-section class="col q-pt-none bg-grey-12">
<div class="q-gutter-md"> <div class="q-gutter-md">
<q-card bordered class="text-center bg-grey-12"> <div v-if="isLoading">
<q-skeleton
type="QAvatar"
size="120px"
style="background: #e3e3e3"
class="q-mx-auto q-mt-md"
/>
<q-skeleton
type="text"
width="150px"
style="background: #e3e3e3"
class="q-mx-auto q-mt-md"
/>
<q-skeleton
type="text"
width="100px"
style="background: #e3e3e3"
class="q-mx-auto q-mt-sm"
/>
<q-skeleton
type="QBtn"
width="150px"
style="background: #e3e3e3"
class="q-mx-auto q-mt-sm"
/>
</div>
<q-card v-else bordered class="text-center bg-grey-12">
<div> <div>
<q-avatar size="120px" color="grey-4"> <q-avatar size="120px" color="grey-4">
<img <img
@ -341,6 +368,7 @@ watch(modal, (newValue) => {
/> />
</q-avatar> </q-avatar>
</div> </div>
<div <div
class="q-mt-md text-subtitle2 text-bold" class="q-mt-md text-subtitle2 text-bold"
style="font-size: 18px" style="font-size: 18px"
@ -378,7 +406,16 @@ watch(modal, (newValue) => {
<q-icon name="mdi-account" color="grey-7" /> <q-icon name="mdi-account" color="grey-7" />
<span class="q-ml-md">อมลสวนต </span> <span class="q-ml-md">อมลสวนต </span>
</div> </div>
<div class="row q-pa-sm"> <div v-if="isLoading" class="row q-pa-sm">
<div
v-for="n in 6"
:key="n"
class="col-xs-6 col-md-6 q-pa-sm"
>
<q-skeleton type="QInput" height="40px" />
</div>
</div>
<div v-else class="row q-pa-sm">
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
@ -460,294 +497,312 @@ watch(modal, (newValue) => {
}} }}
</span> </span>
</div> </div>
<div v-if="isLeave" class="row q-col-gutter-sm q-pa-sm">
<div class="col-xs-6 col-md-6"> <div v-if="isLoading" class="row q-pa-sm">
<q-input
borderless
readonly
:model-value="dateLeave ? dateLeave : '-'"
label="วันเดือนปีที่พ้นจากราชการ"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="leaveType ? leaveType : '-'"
label="ประเภทการพ้นจากราชการ"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="leaveCommandNo ? leaveCommandNo : '-'"
label="คำสั่ง/เอกสารอ้างอิง"
/>
</div>
<div class="col-xs-12 col-md-12">
<q-input
borderless
readonly
:model-value="leaveReason ? leaveReason : '-'"
label="สาเหตุ/เหตุผล"
/>
</div>
</div>
<q-separator v-if="isLeave" />
<div class="row q-pa-sm" v-if="employeeClass !== 'TEMP'">
<div class="col-xs-12 col-md-12 text-html">
<q-input
borderless
readonly
:model-value="goverment.oc ? goverment.oc : '-'"
label="สังกัด"
autogrow
></q-input>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="goverment.posNo ? goverment.posNo : '-'"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ตำแหน่งเลขที่'
: 'เลขที่ตำแหน่ง'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.position ? goverment.position : '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ตำแหน่ง'
: 'ตำแหน่งในสายงาน'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
autogrow
:model-value="
goverment.positionPathSide
? goverment.positionPathSide
: '-'
"
label="ด้าน/สาขา"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionLine ? goverment.positionLine : '-'
"
label="สายงาน"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionType ? goverment.positionType : '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'กลุ่มงาน'
: 'ตำแหน่งประเภท'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionLevel
? goverment.positionLevel
: '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ระดับชั้นงาน'
: 'ระดับตำแหน่ง'
"
/>
</div>
<div <div
class="col-xs-6 col-md-6" v-for="n in 8"
v-if="props.type.toLocaleLowerCase() !== 'employee'" :key="n"
class="col-xs-6 col-md-6 q-pa-sm"
> >
<q-input <q-skeleton type="QInput" height="40px" />
borderless
readonly
autogrow
:model-value="
goverment.positionExecutive
? goverment.positionExecutive
: '-'
"
label="ตำแหน่งทางการบริหาร"
/>
</div>
<div
class="col-xs-6 col-md-6"
v-if="props.type.toLocaleLowerCase() !== 'employee'"
>
<q-input
borderless
readonly
:model-value="
goverment.positionExecutiveSide
? goverment.positionExecutiveSide
: '-'
"
autogrow
label="ด้านทางการบริหาร"
/>
</div> </div>
</div> </div>
<div class="row q-pa-sm" v-else> <div v-else>
<div class="col-xs-12 col-md-12 text-html"> <div v-if="isLeave" class="row q-col-gutter-sm q-pa-sm">
<q-input <div class="col-xs-6 col-md-6">
borderless <q-input
readonly borderless
:model-value=" readonly
govermentTemp.employeeOc :model-value="dateLeave ? dateLeave : '-'"
? govermentTemp.employeeOc label="วันเดือนปีที่พ้นจากราชการ"
: '-' />
" </div>
label="สังกัด" <div class="col-xs-6 col-md-6">
autogrow <q-input
></q-input> borderless
readonly
:model-value="leaveType ? leaveType : '-'"
label="ประเภทการพ้นจากราชการ"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="leaveCommandNo ? leaveCommandNo : '-'"
label="คำสั่ง/เอกสารอ้างอิง"
/>
</div>
<div class="col-xs-12 col-md-12">
<q-input
borderless
readonly
:model-value="leaveReason ? leaveReason : '-'"
label="สาเหตุ/เหตุผล"
/>
</div>
</div> </div>
<div class="col-xs-6 col-md-6"> <q-separator v-if="isLeave" />
<q-input <div class="row q-pa-sm" v-if="employeeClass !== 'TEMP'">
borderless <div class="col-xs-12 col-md-12 text-html">
readonly <q-input
:model-value=" borderless
govermentTemp.positionEmployeeGroupId readonly
? govermentTemp.positionEmployeeGroupId :model-value="goverment.oc ? goverment.oc : '-'"
: '-' label="สังกัด"
" autogrow
label="กลุ่มงาน" ></q-input>
/> </div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="goverment.posNo ? goverment.posNo : '-'"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ตำแหน่งเลขที่'
: 'เลขที่ตำแหน่ง'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.position ? goverment.position : '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ตำแหน่ง'
: 'ตำแหน่งในสายงาน'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
autogrow
:model-value="
goverment.positionPathSide
? goverment.positionPathSide
: '-'
"
label="ด้าน/สาขา"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionLine
? goverment.positionLine
: '-'
"
label="สายงาน"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionType
? goverment.positionType
: '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'กลุ่มงาน'
: 'ตำแหน่งประเภท'
"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
goverment.positionLevel
? goverment.positionLevel
: '-'
"
:label="
props.type.toLocaleLowerCase() == 'employee'
? 'ระดับชั้นงาน'
: 'ระดับตำแหน่ง'
"
/>
</div>
<div
class="col-xs-6 col-md-6"
v-if="props.type.toLocaleLowerCase() !== 'employee'"
>
<q-input
borderless
readonly
autogrow
:model-value="
goverment.positionExecutive
? goverment.positionExecutive
: '-'
"
label="ตำแหน่งทางการบริหาร"
/>
</div>
<div
class="col-xs-6 col-md-6"
v-if="props.type.toLocaleLowerCase() !== 'employee'"
>
<q-input
borderless
readonly
:model-value="
goverment.positionExecutiveSide
? goverment.positionExecutiveSide
: '-'
"
autogrow
label="ด้านทางการบริหาร"
/>
</div>
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="row q-pa-sm" v-else>
<q-input <div class="col-xs-12 col-md-12 text-html">
borderless <q-input
readonly borderless
:model-value=" readonly
govermentTemp.positionEmployeeLineId :model-value="
? govermentTemp.positionEmployeeLineId govermentTemp.employeeOc
: '-' ? govermentTemp.employeeOc
" : '-'
label="สายงาน" "
/> label="สังกัด"
</div> autogrow
></q-input>
</div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.positionEmployeePositionId govermentTemp.positionEmployeeGroupId
? govermentTemp.positionEmployeePositionId ? govermentTemp.positionEmployeeGroupId
: '-' : '-'
" "
label="ตำแหน่ง" label="กลุ่มงาน"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeTypeIndividual govermentTemp.positionEmployeeLineId
? govermentTemp.employeeTypeIndividual ? govermentTemp.positionEmployeeLineId
: '-' : '-'
" "
label="ประเภทบุคคล" label="สายงาน"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeWage govermentTemp.positionEmployeePositionId
? govermentTemp.employeeWage ? govermentTemp.positionEmployeePositionId
: '-' : '-'
" "
label="ค่าจ้าง" label="ตำแหน่ง"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeMoneyIncrease govermentTemp.employeeTypeIndividual
? govermentTemp.employeeMoneyIncrease ? govermentTemp.employeeTypeIndividual
: '-' : '-'
" "
label="เงินเพิ่มการครองชีพชั่วคราว" label="ประเภทบุคคล"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeMoneyAllowance govermentTemp.employeeWage
? govermentTemp.employeeMoneyAllowance ? govermentTemp.employeeWage
: '-' : '-'
" "
label="เงินช่วยเหลือการครองชีพชั่วคราว" label="ค่าจ้าง"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeMoneyEmployee govermentTemp.employeeMoneyIncrease
? govermentTemp.employeeMoneyEmployee ? govermentTemp.employeeMoneyIncrease
: '-' : '-'
" "
label="เงินสมทบประกันสังคม (ลูกจ้าง)" label="เงินเพิ่มการครองชีพชั่วคราว"
/> />
</div> </div>
<div class="col-xs-6 col-md-6"> <div class="col-xs-6 col-md-6">
<q-input <q-input
borderless borderless
readonly readonly
:model-value=" :model-value="
govermentTemp.employeeMoneyEmployer govermentTemp.employeeMoneyAllowance
? govermentTemp.employeeMoneyEmployer ? govermentTemp.employeeMoneyAllowance
: '-' : '-'
" "
label="เงินสมทบประกันสังคม (นายจ้าง)" label="เงินช่วยเหลือการครองชีพชั่วคราว"
/> />
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
govermentTemp.employeeMoneyEmployee
? govermentTemp.employeeMoneyEmployee
: '-'
"
label="เงินสมทบประกันสังคม (ลูกจ้าง)"
/>
</div>
<div class="col-xs-6 col-md-6">
<q-input
borderless
readonly
:model-value="
govermentTemp.employeeMoneyEmployer
? govermentTemp.employeeMoneyEmployer
: '-'
"
label="เงินสมทบประกันสังคม (นายจ้าง)"
/>
</div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -23,7 +23,7 @@ import type {
import type { QTableProps } from "quasar"; import type { QTableProps } from "quasar";
import type { DataProfile } from "@/modules/05_placement/interface/index/Main"; import type { DataProfile } from "@/modules/05_placement/interface/index/Main";
import PopupPersonal from "@/components/Dialogs/PopupPersonal.vue"; import PopupPersonal from "@/components/Dialogs/PopupPersonalNew.vue";
import CardProfile from "@/components/CardProfile.vue"; import CardProfile from "@/components/CardProfile.vue";
import DialogAddCommander from "@/modules/06_retirement/components/DialogAddCommander.vue"; import DialogAddCommander from "@/modules/06_retirement/components/DialogAddCommander.vue";

View file

@ -25,7 +25,7 @@ import type {
} from "@/modules/06_retirement/interface/response/Main"; } from "@/modules/06_retirement/interface/response/Main";
import DialogHeader from "@/components/DialogHeader.vue"; import DialogHeader from "@/components/DialogHeader.vue";
import PopupPersonal from "@/components/Dialogs/PopupPersonal.vue"; import PopupPersonal from "@/components/Dialogs/PopupPersonalNew.vue";
import CardProfile from "@/components/CardProfile.vue"; import CardProfile from "@/components/CardProfile.vue";
import DialogAddCommander from "@/modules/06_retirement/components/DialogAddCommander.vue"; import DialogAddCommander from "@/modules/06_retirement/components/DialogAddCommander.vue";