แสดงรูปโปรไฟล์หน้ารายการทะเบียนประวัติ

This commit is contained in:
Warunee Tamkoo 2024-04-29 17:31:02 +07:00
parent 4232c5d4e8
commit 81fd3a3ac8
5 changed files with 117 additions and 91 deletions

View file

@ -295,16 +295,7 @@ watch(
<q-item> <q-item>
<q-item-section avatar> <q-item-section avatar>
<q-avatar> <q-avatar>
<img <img :src="props.row.avartar" class="col-4 img-info" />
v-if="props.row.avatar == null"
src="@/assets/avatar_user.jpg"
class="col-4 img-info"
/>
<img
v-else
:src="props.row.avatar"
class="col-4 img-info"
/>
</q-avatar> </q-avatar>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
@ -332,8 +323,8 @@ watch(
<div class="col-xs-12 col-sm-4 col-md-3"> <div class="col-xs-12 col-sm-4 col-md-3">
<q-card flat bordered class=""> <q-card flat bordered class="">
<q-card-section class="text-center q-pb-none"> <q-card-section class="text-center q-pb-none">
<q-avatar size="80px"> <q-avatar size="80px" class="bg-grey-2">
<img src="@/assets/avatar_user.jpg" /> <q-img :src="props.row.avatar" />
</q-avatar> </q-avatar>
<div class="text-weight-medium q-mt-md"> <div class="text-weight-medium q-mt-md">

View file

@ -43,59 +43,53 @@ const splitterModel = ref<number>(12);
</script> </script>
<template> <template>
<q-splitter <q-splitter v-model="splitterModel" disable class="split">
v-model="splitterModel" <template v-slot:before>
disable <div class="">
class="split" <!-- bg-tab-regi -->
> <q-tabs
<template v-slot:before>
<div class=""><!-- bg-tab-regi -->
<q-tabs
v-model="store.tabMain"
vertical
class="text-grey-6 text-weight-light"
active-class="bg-white text-blue-8 text-weight-bold bg-blue-1"
><!-- indicator-color="transparent" -->
<q-tab
class="q-py-sm"
v-for="(tab, index) in itemsTab"
:key="index"
:name="tab.name"
:icon="tab.icon"
:label="tab.label"
/><!-- hover-tab -->
</q-tabs>
</div>
</template>
<template v-slot:after>
<q-tab-panels
v-model="store.tabMain" v-model="store.tabMain"
animated
swipeable
vertical vertical
transition-prev="jump-up" class="text-grey-6 text-weight-light"
transition-next="jump-up" active-class="bg-white text-blue-8 text-weight-bold bg-blue-1"
class="q-pa-none" ><!-- indicator-color="transparent" -->
><!-- split --> <q-tab
<q-tab-panel class="q-py-sm"
v-for="(tab, index) in itemsTab" v-for="(tab, index) in itemsTab"
:key="index" :key="index"
:name="tab.name" :name="tab.name"
class="q-pa-none" :icon="tab.icon"
:label="tab.label"
> /><!-- hover-tab -->
<PersonalInformationMain v-if="store.tabMain === '1'" /> </q-tabs>
<GovernmentInformationMain v-if="store.tabMain === '2'" /> </div>
<salaryMain v-if="store.tabMain === '3'" /> </template>
<AchievementMain v-if="store.tabMain === '4'" />
<OtherMaim v-if="store.tabMain === '5'" /> <template v-slot:after>
</q-tab-panel> <q-tab-panels
</q-tab-panels> v-model="store.tabMain"
</template> animated
</q-splitter> swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
class="q-pa-none"
><!-- split -->
<q-tab-panel
v-for="(tab, index) in itemsTab"
:key="index"
:name="tab.name"
class="q-pa-none"
>
<PersonalInformationMain v-if="store.tabMain === '1'" />
<GovernmentInformationMain v-if="store.tabMain === '2'" />
<salaryMain v-if="store.tabMain === '3'" />
<AchievementMain v-if="store.tabMain === '4'" />
<OtherMaim v-if="store.tabMain === '5'" />
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</template> </template>
<style scoped> <style scoped>
@ -104,10 +98,10 @@ const splitterModel = ref<number>(12);
color: white !important; color: white !important;
opacity: 1 !important; opacity: 1 !important;
} }
.bg-tab-regi{ .bg-tab-regi {
background-color: #273238; background-color: #273238;
} }
.split{ .split {
border-radius: 10px !important; border-radius: 10px !important;
} }
</style> </style>

View file

@ -13,6 +13,7 @@ interface DataLevel {
} }
interface DataPerson { interface DataPerson {
avatar?: string;
citizenId: string; citizenId: string;
firstName: string; firstName: string;
id: string; id: string;

View file

@ -285,21 +285,21 @@ async function clickSaveDeceased() {
formData.append("Reason", reasonDeath.value); formData.append("Reason", reasonDeath.value);
formData.append("ProfileId", profileId.value); formData.append("ProfileId", profileId.value);
dialogConfirm($q,()=>{ dialogConfirm($q, () => {
showLoader(); showLoader();
http http
.post(config.API.listDeceased(), formData) .post(config.API.listDeceased(), formData)
.then(() => { .then(() => {
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ");
router.push("/deceased"); router.push("/deceased");
}) })
.catch((e) => { .catch((e) => {
messageError($q, e); messageError($q, e);
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
}); });
}) });
} }
onMounted(async () => { onMounted(async () => {
@ -381,11 +381,11 @@ onMounted(async () => {
</q-btn> </q-btn>
</div> </div>
<q-card > <q-card>
<div class="column" style="height: 120px"> <div class="column" style="height: 120px">
<div class="col row items-center"> <div class="col row items-center">
<div class="row col-12"> <div class="row col-12">
<div class="col" style="padding-left: 14%;"> <div class="col" style="padding-left: 14%">
<div class="col-12 text-primary"> <div class="col-12 text-primary">
<h2 <h2
class="title q-ma-none q-pa-none" class="title q-ma-none q-pa-none"
@ -402,8 +402,8 @@ onMounted(async () => {
</div> </div>
<div class="absolute-center-left q-ml-lg"> <div class="absolute-center-left q-ml-lg">
<q-avatar size="90px" class="bg-grey-2" > <q-avatar size="90px" class="bg-grey-2">
<q-img :src="profilePicture"/> <q-img :src="profilePicture" />
</q-avatar> </q-avatar>
<q-btn <q-btn
round round
@ -418,7 +418,7 @@ onMounted(async () => {
</div> </div>
<div class="col row items-center bg-toolbar"> <div class="col row items-center bg-toolbar">
<div class="row col-12" style="padding-left: 14%;"> <div class="row col-12" style="padding-left: 14%">
<div class="col-2"> <div class="col-2">
<div class="col-sm-3 col-md-3"> <div class="col-sm-3 col-md-3">
<div class="col text-grey-6 text-caption">ตำแหนงในสายงาน</div> <div class="col text-grey-6 text-caption">ตำแหนงในสายงาน</div>
@ -584,13 +584,13 @@ h2.title {
border-radius: 10px; border-radius: 10px;
} }
.bg-toolbar{ .bg-toolbar {
background-color: #F2FBFA; background-color: #f2fbfa;
} }
.btnEditImg{ .btnEditImg {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
right: 0; right: 0;
border: 1px solid #EDEDED ; border: 1px solid #ededed;
} }
</style> </style>

View file

@ -12,6 +12,7 @@ import type { FormFilter } from "@/modules/04_registryNew/interface/request/Main
/** importComponents*/ /** importComponents*/
import TableView from "@/modules/04_registryNew/components/TableView.vue"; import TableView from "@/modules/04_registryNew/components/TableView.vue";
import avatar from "@/assets/avatar_user.jpg";
/** importStore*/ /** importStore*/
import { useRegistryNewDataStore } from "@/modules/04_registryNew/store"; import { useRegistryNewDataStore } from "@/modules/04_registryNew/store";
@ -152,6 +153,7 @@ async function fetchDataPerson(search: boolean = false) {
maxPage.value = Math.ceil(res.data.result.total / formFilter.pageSize); maxPage.value = Math.ceil(res.data.result.total / formFilter.pageSize);
dataPersonMain.value = res.data.result.data; dataPersonMain.value = res.data.result.data;
total.value = res.data.result.total; total.value = res.data.result.total;
insertAvatar(res.data.result.data);
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);
@ -163,6 +165,44 @@ async function fetchDataPerson(search: boolean = false) {
}); });
} }
function insertAvatar(items: DataPerson[]) {
items.map((x: any, index: number) => {
http
.get(
config.API.fileByFile(
"ทะเบียนประวัติ",
"โปรไฟล์",
x.id,
"profile-" + x.id
)
)
.then((img) => {
dataPersonMain.value[index] = {
...x,
avatar: img.data.downloadUrl,
};
})
.catch(() => {
dataPersonMain.value[index] = {
...x,
avatar: avatar,
};
});
});
}
// const convertImageProfile = (id: string) => {
// return http
// .get(
// config.API.fileByFile("", "", id, "profile-" + id)
// )
// .then((res) => {
// return res.data.downloadUrl;
// })
// .catch(() => {
// return avatar;
// });
// };
function onClickShowFilter() { function onClickShowFilter() {
isShowFilter.value = !isShowFilter.value; isShowFilter.value = !isShowFilter.value;
isShowBtnFilter.value = false; isShowBtnFilter.value = false;
@ -229,7 +269,7 @@ onMounted(async () => {
อมลทะเบยนประว อมลทะเบยนประว
</div> --> </div> -->
<q-card class="q-mt-md "> <q-card class="q-mt-md">
<q-card-section class="card-img q-pb-lg"> <q-card-section class="card-img q-pb-lg">
<div class="text-h5 text-center q-py-md text-weight-medium"> <div class="text-h5 text-center q-py-md text-weight-medium">
นหาขอมลทะเบยนประว นหาขอมลทะเบยนประว