LtyhShop/pc/components/layoutFooter.vue
2025-04-09 14:59:26 +08:00

166 lines
4.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
//底部信息
import { computed, reactive, ref } from 'vue'
import { useAppStore } from '~/stores/app'
import { GlobalDatas } from '~/types/user'
//全局配置
const appStore = useAppStore()
const globalData = computed(() => reactive<GlobalDatas>(<GlobalDatas>appStore?.globalData))
const props = defineProps({
//列表数据
pcHomeCon: {
type: Object,
default: null,
},
})
const { pcHomeCon } = toRefs(props)
const { getFooterIsIntersecting } = useAppStore()
const targetElement = ref(null)
onMounted(() => {
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
// 元素进入可视区域
getFooterIsIntersecting(true)
} else {
getFooterIsIntersecting(false)
// 元素离开可视区域
}
})
})
if (targetElement.value) {
observer.observe(targetElement.value)
}
})
</script>
<!--页面底部-->
<template>
<div v-if="pcHomeCon" class="layoutFooter mt-20px" ref="targetElement">
<div
v-if="pcHomeCon.philosophyList && pcHomeCon.philosophyList.length"
class="w-100% h-90px bg-#FFFFFF"
style="border-top: 1px solid #f5f5f5"
>
<div class="wrapper_1200 h-90px flex-between-center">
<div v-for="item in pcHomeCon.philosophyList" :key="item.id">
<div class="flex-y-center">
<img :src="item.imageUrl" class="w-40px h-40px b-rd-50% mr-14px" />
<div class="text-16px text-#333 font-500">{{ item.name }}</div>
</div>
</div>
</div>
</div>
<!-- 底部黑色模块 -->
<div class="py-40px bg-#333333">
<div class="wrapper_1200 flex justify-between">
<!-- 左边 -->
<div class="color-#FFFFFF l-box">
<div v-for="(val, index) in pcHomeCon.quickEntryList" :key="index">
<div class="l-title" @click="openUrl(val.linkUrl)">
<span class="font-500 oppoSans-M">{{ val.name }}</span>
</div>
<div class="l-tips" v-for="(tip, index) in val.linkList" :key="index">
<a v-if="tip.linkUrl" :href="tip.linkUrl" target="_blank" class="font-400 oppoSans-R"> {{ tip.name }}</a>
<span v-else class="font-400 oppoSans-R">{{ tip.name }}</span>
</div>
</div>
</div>
<!-- 右边 -->
<div class="flex">
<div class="code-r" v-for="(code, index) in pcHomeCon.qrCodeList">
<div class="code">
<img :src="code.imageUrl" alt="" />
</div>
<span class="mt-12px">{{ code.name }}</span>
</div>
</div>
</div>
<!-- 分割线 -->
<div class="wrapper_1200 divisionLine"></div>
<!-- 企业信息 -->
<div v-if="pcHomeCon.friendlyLinkList.length" class="wrapper_1200 flex-x-center text-s mb-40px">
<div class="w-953px flex flex-justify-center flex-wrap lh-19px">
<div class="mr-15px text-#999" v-for="item in pcHomeCon.friendlyLinkList">
<a style="color: #999999" v-if="item.linkUrl" :href="item.linkUrl" target="_blank"> {{ item.name }}</a>
<span v-else>{{ item.name }}</span>
</div>
</div>
</div>
<div class="min_wrapper_1200 flex-col flex-items-center flex-x-center text-s">
<div>
<span v-if="globalData.authorizePhone" class="mr-20px">联系电话{{ globalData.authorizePhone }}</span>
<span v-if="globalData.authorizeAddress">地址{{ globalData.authorizeAddress }}</span>
</div>
<div class="mt-17px">
{{ globalData.authorizeInfo
}}<a style="color: #999999" href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">
{{ globalData.authorizeFilingNum }}</a
>
</div>
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.l-box {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
grid-template-rows: none;
grid-gap: 40px;
font-weight: 400;
font-family: PingFang SC-Regular, PingFang SC;
.l-title {
font-size: 16px;
margin-bottom: 26px;
}
.l-tips {
cursor: pointer;
margin-bottom: 14px;
color: #cccccc !important;
font-size: 14px;
a {
color: #cccccc !important;
}
}
}
.code-r {
color: #ffffff;
display: flex;
flex-direction: column;
align-items: center;
font-weight: 400;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC;
.code {
width: 100px;
height: 100px;
background-color: #fff;
img {
width: 100%;
height: 100%;
}
}
}
.code-r:nth-child(1) {
margin-right: 40px;
}
.divisionLine {
margin-top: 10px;
border: 0;
border-top: 2px dashed rgba(255, 255, 255, 0.15);
margin-bottom: 40px;
}
.text-s {
font-size: 12px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
}
</style>