You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
3.7 KiB
Vue

1 year ago
<template>
<div>
<div class="banner">
<el-image
style="width: 100%; height: 100%;position:absolute;top: 0;left: 0;"
8 months ago
:src="pageData.banner"
1 year ago
fit="contain"></el-image>
8 months ago
<div class="bannerInfo">{{ pageData.bannerTitle }}</div>
<div class="tabs">
<div class="content">
<div @click="checkTabs(i,k)"
8 months ago
:style="`width:${tabsActive === i.webMenuId ? (100/tabsData.length+'%'):`calc(${100/tabsData.length}% - 2px)`}`"
:class="`tab ${tabsActive === i.webMenuId ? 'active':''}`" v-for="(i,k) in tabsData">
{{ i.webMenuName }}
</div>
</div>
</div>
1 year ago
</div>
8 months ago
<ProduceModel v-if="tabsActive" :data="pageData.productList.find(e=>e.id===tabsActive) || {}"/>
1 year ago
<ContactUs class="contactUs"/>
<Copyright class="copyright"/>
</div>
</template>
<script>
import ContactUs from '@/components/contactUs'
import Copyright from '@/components/copyright'
import ProduceModel from './produceModel.vue'
import {selectMenuTree} from "@/api/productCenter";
8 months ago
import {getHwWeb} from "@/api/hwWeb";
1 year ago
export default {
name: 'ProductCenter',
components: {
ContactUs,
1 year ago
Copyright,
ProduceModel
1 year ago
},
data() {
return {
tabsActive: 0,
8 months ago
pageData: {
banner: 'http://1.13.177.47:9665/statics/2025/07/24/mesnac_20250724093713A002.jpg',
bannerTitle: '',
productList: [],
},
webMenuId: 0,
tabsData: [],
1 year ago
}
},
1 year ago
mounted() {
this.getData()
},
watch: {
'$route'() {
// this.getData()
let id = this.$route.query.id
if (id === '11') {
this.tabsActive = 0
}
if (id === '12') {
this.tabsActive = 1
}
if (id === '13') {
this.tabsActive = 2
}
if (id === '14') {
this.tabsActive = 3
}
if (id === '15') {
this.tabsActive = 4
}
if (id === '16') {
this.tabsActive = 5
}
this.itemId = id
}
},
1 year ago
methods: {
1 year ago
getData() {
8 months ago
getHwWeb(7).then(res => {
this.pageData = JSON.parse(res?.data?.webJsonString || '[]')
})
selectMenuTree().then(e => {
8 months ago
let tabsData = e.data.find(v => v.webMenuId === 7).children
this.tabsData = tabsData
console.log(tabsData)
this.tabsActive = tabsData[0].webMenuId
1 year ago
})
},
checkTabs(e, k) {
8 months ago
this.tabsActive = e.webMenuId
},
1 year ago
}
}
</script>
<style lang="less" scoped>
@import "~@/style.less";
.banner {
width: 100%;
height: 35.5vw;
position: relative;
.bannerInfo {
position: absolute;
top: 35%;
left: 19%;
width: 45%;
text-align: left;
font-size: 1.4vw;
color: @standard-color;
line-height: 2.5vw;
letter-spacing: 4px;
word-break: break-all;
}
.bannerBtn {
position: absolute;
top: 58%;
left: 19%;
width: 11.5vw;
font-size: 1.2vw;
line-height: 2vw;
letter-spacing: 2px;
}
.tabs {
position: absolute;
bottom: 0;
width: 100%;
background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
backdrop-filter: saturate(50%) blur(4px);
.content {
width: 62%;
position: relative;
left: 50%;
bottom: 0;
transform: translateX(-50%);
.tab {
display: inline-block;
line-height: 6.2vw;
font-size: 1.6vw;
letter-spacing: 3px;
}
.tab.active {
color: @standard-color;
1 year ago
width: calc(50% - 3px);
1 year ago
border: 1px solid #fff;
box-shadow: 0 0 3px #0002;
}
}
}
}
.contactUs {
width: 100%;
background-color: #2e445c;
}
.copyright {
width: 100%;
background-color: #1d3348;
}
</style>