166 lines
4.8 KiB
Vue
166 lines
4.8 KiB
Vue
<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>
|