Add New Tab about placement2Detail

This commit is contained in:
watcharanondh 2023-06-19 10:18:11 +07:00
parent 290fb639cd
commit ea7cf898b0
3 changed files with 139 additions and 8 deletions

View file

@ -277,5 +277,38 @@ const tabList = readonly<tabType[]>([
},
]);
export { menuList, tabList };
const tabList_placement = readonly<tabType[]>([
{
key: 1,
label: "ข้อมูลทั่วไป",
tag: "information",
},
{
key: 2,
label: "ประวัติการศึกษา",
tag: "education",
},
{
key: 3,
label: "ใบอนุญาตประกอบอาชีพ",
tag: "certicate",
},
{
key: 4,
label: "เครื่องราชอิสริยาภรณ์",
tag: "insignia",
},
{
key: 5,
label: "ผลการสอบ",
tag: "examresult",
},
{
key: 6,
label: "การคัดกรองคุณสมบัติ",
tag: "qualification",
},
]);
export { menuList, tabList ,tabList_placement };
export type { ScrollType, tabType, menuType, notiType, optionType };

View file

@ -45,19 +45,19 @@ onMounted(async () => {
<EducationVue v-model:statusEdit="statusEdit" />
</div>
<div class="horizontal-line"></div>
<div id="certicate" name="15" class="row col-12 q-mt-md">
<div id="certicate" name="4" class="row col-12 q-mt-md">
<Certicate v-model:statusEdit="statusEdit" :profileType="profileType" />
</div>
<div class="horizontal-line"></div>
<div id="insignia" name="4" class="row col-12 q-mt-md">
<div id="insignia" name="5" class="row col-12 q-mt-md">
<InsigniaVue v-model:statusEdit="statusEdit" />
</div>
<div class="horizontal-line"></div>
<div id="examresult" name="0" class="q-px-lg q-py-lg">
<div id="examresult" name="6" class="q-px-lg q-py-lg">
<ExamResult />
</div>
<div class="horizontal-line"></div>
<div id="qualification" name="0" class="q-px-lg q-py-lg">
<div id="qualification" name="7" class="q-px-lg q-py-lg">
<Qualification v-model:statusEdit="statusEdit" />
</div>
</q-card>

View file

@ -10,7 +10,7 @@ import type {
notiType,
optionType,
} from "../interface/request/main/main";
import { menuList, tabList } from "../interface/request/main/main";
import { menuList, tabList ,tabList_placement } from "../interface/request/main/main";
const { setVerticalScrollPosition, getVerticalScrollPosition } = scroll;
const store = useDataStore();
@ -67,6 +67,10 @@ const tabScroll = () => {
return route.name == "registryDetail";
};
const tabScroll2 = () => {
return route.name == "placement2Detail";
};
/**
* toggleBtnRight มย ขยาย drawer ขวา
*/
@ -93,6 +97,7 @@ const toggleBtnLeft = () => {
const onScroll = (scroll: ScrollType) => {
const { position } = scroll;
updateScroll(position);
updateScroll2(position);
};
/**
@ -152,6 +157,60 @@ const activeBtn = () => {
return route.name == "registryDetail" && rightActive.value;
};
const updateScroll2 = (position: number) => {
// position undifind position top scroll
if (position === void 0) {
position = document.documentElement.scrollTop || document.body.scrollTop;
}
let last;
/**
* วนหา id ของ div
*/
for (const i in tabList_placement) {
const section = tabList_placement[i];
const item = document.getElementById(section.tag);
/**
* วนหา id ของ div หนาน
* เมอหาไมเจอใหไปตอตวตอไป
* เมอเจอแล ให ตำแหนงบนสดของ div มากกวาหรอเทาก ตำแหน top scroll บวกก แทปดานบน 155
* last เป undifind ให last เทาก tag แล หยดล
* าไมใช undifind ให last เทาก tag แล ปหาต กรณ div นยาว
*/
if (item === null) {
continue;
}
if (item.offsetTop >= position + 155) {
if (last === void 0) {
last = section.tag;
}
break;
} else {
last = section.tag;
}
}
/**
* last ไมเทาก undifind
* ใช เซ active ใหเปนแทปส
* และใช scrollIntoView ายตำแหน activeโดยการเลอนไปหา
*/
if (last !== void 0) {
changeTab(last);
const tocEl = document.getElementById("tab--" + last);
if (tocEl) {
tocEl.scrollIntoView({ block: "nearest" });
}
}
};
/**
* ใหแสดง แทปดานขวา เมอเขาหน รายละเอยดหนอยงานอนๆ และ rightActive เทาก true
*/
const activeBtn2 = () => {
return route.name == "placement2Detail" && rightActive.value;
};
/**
* เมอเรมตนโปรแกรมให event resize และ function myEventHandler
* set function myEventHandler เพราะ state งไมเซ , state เซทเม หนาจอเร ขยบหนาจอ
@ -235,7 +294,8 @@ const tagClick = (tag: string) => {
// router.replace({ hash });
if (route.hash !== hash) {
const check = activeBtn();
if (check) {
const check2 = activeBtn2();
if (check || check2) {
// router.replace({ hash, position: { x: 0, y: 0 } });
// router.replace({ hash }).then(() => {
// setVerticalScrollPosition(window, offset, 300);
@ -436,7 +496,7 @@ if (keycloak.tokenParsed != null) {
<q-btn
size="13px"
class="bg-blue-1"
v-if="activeBtn()"
v-if="activeBtn() || activeBtn2()"
flat
dense
round
@ -775,6 +835,44 @@ if (keycloak.tokenParsed != null) {
</q-list>
</q-scroll-area>
</q-drawer>
<!-- drawer page placement2/detail/:id -->
<q-drawer
side="right"
class="bg-grey-2"
show-if-above
v-if="tabScroll2()"
v-model="drawerR"
:width="220"
:breakpoint="1023"
>
<q-scroll-area class="fit">
<q-list padding>
<q-item
v-for="(tabItem, index) in tabList_placement"
:key="index"
:id="'tab--' + tabItem.tag"
class="tabNative"
active-class="text-blue-7 active-item text-weight-medium tabActive"
:active="activeTab(tabItem.tag)"
clickable
v-ripple
dense
exact
@click="tagClick(tabItem.tag)"
>
<q-item-section>
<q-item-label
><q-icon size="11px" name="mdi-circle-medium" /><span
class="q-pl-xs"
>{{ tabItem.label }}</span
></q-item-label
>
</q-item-section>
</q-item>
</q-list>
</q-scroll-area>
</q-drawer>
<!-- drawer -->
<q-page-container class="bg-grey-2">