Files
aida_front/src/component/Events/eventsDetail.vue

297 lines
6.4 KiB
Vue
Raw Normal View History

2024-10-08 18:34:22 +08:00
<template>
2026-02-05 10:33:42 +08:00
<div class="eventsDetail_page" :class="{ active: isScroll }">
<div class="eventsDetail_title">
2024-10-08 18:34:22 +08:00
<div class="modal_title_text" @click="setBack">
<i class="fi fi-sr-left"></i>
2026-02-05 10:33:42 +08:00
<div class="eventsDetail_title_text">{{ $t("event.back") }}</div>
2024-10-08 18:34:22 +08:00
</div>
</div>
<div class="eventsDetail_content">
<div class="eventsDetail_content_left">
2026-02-05 10:33:42 +08:00
<fullScreenImg
:src="eventsDetail.imgUrl"
width="100%"
:center="true"
></fullScreenImg>
2024-10-08 18:34:22 +08:00
</div>
<div class="eventsDetail_content_right">
2026-02-05 10:33:42 +08:00
<div class="modal_title_text modal_title_text-header flex space-between">
2024-10-08 18:34:22 +08:00
<div>{{ eventsDetail.title }}</div>
2026-02-05 10:33:42 +08:00
<div class="detail-btn" v-if="eventsDetail.id === 3" @click="openDetail">
2026-02-05 16:25:12 +08:00
{{ $t("event.detail") }}
2026-02-05 10:33:42 +08:00
</div>
2024-10-08 18:34:22 +08:00
</div>
2026-02-05 10:33:42 +08:00
<div class="modal_title_text content" v-for="item in eventsDetail.textList">
2024-10-08 18:34:22 +08:00
<div class="eventsDetail_content_right_btn_box">
2026-02-05 10:33:42 +08:00
<div
class="eventsDetail_content_right_btn"
v-for="(buttonItem, buttonIndex) in item?.button"
@click="openButton(buttonItem, buttonIndex)"
>
<div v-show="!loadingShow[buttonIndex]" class="started_btn">
{{ buttonItem.text }}
</div>
<div v-show="loadingShow[buttonIndex]" class="started_btn">
<i class="fi fi-br-loading"></i>
</div>
2024-10-08 18:34:22 +08:00
</div>
</div>
2026-02-05 10:33:42 +08:00
<div
class="modal_title_text_intro"
v-for="introItem in item?.paragraph"
:class="{ active: introItem.display == 'flex' }"
v-detailText="introItem.text"
></div>
2024-10-08 18:34:22 +08:00
</div>
</div>
</div>
2026-02-05 10:33:42 +08:00
</div>
2024-10-08 18:34:22 +08:00
</template>
<script lang="ts">
2026-02-05 10:33:42 +08:00
import { LoadingOutlined } from "@ant-design/icons-vue"
import {
defineComponent,
h,
toRefs,
ref,
reactive,
onMounted,
nextTick,
provide,
computed
} from "vue"
2024-10-08 18:34:22 +08:00
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
2026-02-05 10:33:42 +08:00
import { Https } from "@/tool/https"
import { message, Upload, Modal } from "ant-design-vue"
import fullScreenImg from "@/component/HomePage/fullScreenImg.vue"
import { useRouter } from "vue-router"
import { useI18n } from "vue-i18n"
import generalMenu from "@/component/HomePage/generalMenu.vue"
import eventData from "@/assets/json/events.json"
import eventDataCn from "@/assets/json/events_cn.json"
import { useStore } from "vuex"
2026-02-09 11:52:31 +08:00
2024-10-08 18:34:22 +08:00
export default defineComponent({
2026-02-05 10:33:42 +08:00
components: {
2024-10-08 18:34:22 +08:00
generalMenu,
2026-02-05 10:33:42 +08:00
fullScreenImg
2024-10-08 18:34:22 +08:00
},
2026-02-05 10:33:42 +08:00
props: {
isScroll: {
type: Boolean,
default: true
}
},
setup() {
2026-02-09 11:52:31 +08:00
const { t, locale } = useI18n()
2026-02-05 10:33:42 +08:00
const router = useRouter()
const store = useStore()
let filter: any = reactive({
eventsDetail: {},
getListDate: {
getLikePortfolio: 0,
getMyPortfolio: 0,
page: 1,
size: 10
2024-10-08 18:34:22 +08:00
},
2026-02-05 10:33:42 +08:00
isShowMark: false,
isNoData: false, //如果数据为空就不加载
loadingShow: {}
2024-10-08 18:34:22 +08:00
})
2026-02-05 10:33:42 +08:00
let likeFile = (item: any, type: string) => {}
let setBack = () => {
router.go(-1)
2024-11-22 09:20:25 +08:00
// router.push('/home/events')
2026-02-05 10:33:42 +08:00
}
let openButton = (data: any, index: number) => {
if (filter.loadingShow[index]) {
2024-10-08 18:34:22 +08:00
return
}
filter.loadingShow[index] = true
2026-02-05 10:33:42 +08:00
Https.axiosGet(data.https)
.then((rv: any) => {
if (rv) {
2024-10-08 18:34:22 +08:00
message.success(data.success)
filter.loadingShow[index] = false
}
2026-02-05 10:33:42 +08:00
})
.catch((res) => {
filter.loadingShow[index] = false
})
2024-10-08 18:34:22 +08:00
}
2026-02-05 10:33:42 +08:00
const openDetail = () => {
2026-02-25 14:48:47 +08:00
let language = locale.value === "ENGLISH" ? "en" : "zh"
let url = `https://aida-global-design-awards.com.hk/${language}`
window.open(url, "_blank")
2026-02-09 11:52:31 +08:00
2026-02-25 14:48:47 +08:00
// router.push("/award/index")
2026-02-05 10:33:42 +08:00
}
onMounted(() => {
const currentLocale = locale.value
let eventLangData: any
if (currentLocale == "ENGLISH") {
2024-10-08 18:34:22 +08:00
eventLangData = eventData
2026-02-05 10:33:42 +08:00
} else {
2024-10-08 18:34:22 +08:00
eventLangData = eventDataCn
}
2026-02-05 10:33:42 +08:00
eventLangData.eventsItem.forEach((item: any) => {
if (item.id == router.currentRoute.value.query.eventId) {
filter.eventsDetail = item
2024-10-08 18:34:22 +08:00
}
})
})
2026-02-05 10:33:42 +08:00
return {
2024-10-08 18:34:22 +08:00
...toRefs(filter),
likeFile,
setBack,
openButton,
2026-02-05 10:33:42 +08:00
openDetail
}
},
directives: {
detailText: {
mounted(el, binding) {
2024-10-08 18:34:22 +08:00
el.innerHTML = binding.value
}
}
},
2026-02-05 10:33:42 +08:00
async mounted() {}
2024-10-08 18:34:22 +08:00
})
</script>
<style lang="less">
.eventsDetail_page {
min-height: 100%;
2026-02-05 10:33:42 +08:00
width: 100%;
2024-12-11 16:26:36 +08:00
padding: 0 6rem;
2024-10-08 18:34:22 +08:00
padding-top: 5rem;
2026-02-05 10:33:42 +08:00
&.active {
2024-10-08 18:34:22 +08:00
display: flex;
flex-direction: column;
height: 100%;
2026-02-05 10:33:42 +08:00
.eventsDetail_content {
2024-10-08 18:34:22 +08:00
overflow-y: auto;
width: 100%;
}
}
@media (max-width: 768px) {
padding-top: 0;
min-height: auto;
padding-bottom: 10rem;
}
2026-02-05 10:33:42 +08:00
.eventsDetail_title {
2024-10-08 18:34:22 +08:00
display: flex;
padding: 2rem 0rem;
align-items: center;
position: sticky;
top: 0;
z-index: 222;
background: #fff;
2026-02-05 10:33:42 +08:00
.modal_title_text {
2024-10-08 18:34:22 +08:00
cursor: pointer;
display: flex;
margin-bottom: 0;
}
2026-02-05 10:33:42 +08:00
.modal_title_text:hover .eventsDetail_title_text {
2024-10-08 18:34:22 +08:00
text-decoration: underline;
}
2026-02-05 10:33:42 +08:00
i {
2024-10-08 18:34:22 +08:00
display: flex;
align-items: center;
margin-right: 1rem;
}
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content {
2024-10-08 18:34:22 +08:00
border-top: 1px solid #f0f0f0;
display: flex;
justify-content: space-between;
padding-top: 8rem;
@media (max-width: 768px) {
flex-direction: column;
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content_left,
.eventsDetail_content_right {
2024-10-08 18:34:22 +08:00
width: 50%;
@media (max-width: 768px) {
width: 100%;
}
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content_left {
2024-10-08 18:34:22 +08:00
width: 40%;
max-height: 60rem;
@media (max-width: 768px) {
width: 100%;
}
2026-02-05 10:33:42 +08:00
.ant-image {
2024-10-08 18:34:22 +08:00
// height: auto;
height: 100%;
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content_left_img {
2024-10-08 18:34:22 +08:00
width: 100%;
cursor: zoom-in;
}
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content_right {
.modal_title_text {
letter-spacing: 0.4rem;
2024-10-08 18:34:22 +08:00
font-weight: 600;
2026-02-05 10:33:42 +08:00
&-header {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
gap: 1rem;
> div:first-child {
flex: 1;
min-width: 0;
}
}
.modal_title_text_intro {
2024-10-08 18:34:22 +08:00
display: block;
2026-02-05 10:33:42 +08:00
&.active {
2024-10-08 18:34:22 +08:00
display: flex;
justify-content: space-between;
}
2026-02-05 10:33:42 +08:00
li {
2024-10-08 18:34:22 +08:00
width: 48%;
}
2026-02-05 10:33:42 +08:00
em {
2024-10-08 18:34:22 +08:00
// font-family: auto;
}
2026-02-05 10:33:42 +08:00
a {
2024-10-08 18:34:22 +08:00
display: inline;
}
}
2026-02-05 10:33:42 +08:00
.eventsDetail_content_right_btn_box {
2024-10-08 18:34:22 +08:00
display: flex;
justify-content: space-evenly;
2026-02-05 10:33:42 +08:00
.eventsDetail_content_right_btn {
2024-10-08 18:34:22 +08:00
}
}
}
2026-02-05 10:33:42 +08:00
.modal_title_text:last-child {
2024-10-08 18:34:22 +08:00
}
2026-02-05 10:33:42 +08:00
.modal_title_text:last-child::after {
2024-10-08 18:34:22 +08:00
content: "";
display: block;
border-top: 3px solid;
height: 6rem;
}
}
}
}
2026-02-05 10:33:42 +08:00
.detail-btn {
// width: 11rem;
padding: 0 1.4rem;
height: 4rem;
line-height: 4rem;
text-align: center;
color: #fff;
border-radius: 2rem;
background-color: #000;
font-size: 1.4rem;
white-space: nowrap;
cursor: pointer;
}
</style>