修改首页和行业方案

master
suixy 3 weeks ago
parent a91ca52bcb
commit 05b8fbeb60

Binary file not shown.

@ -1,77 +1,15 @@
<template>
<div class="menu">
<div v-if="false" v-for="(i,k) in menuList" :class="`menuItem ${$route.path === i.path ? 'focus':''}`"
@mouseenter="getChildren(i)" @click="toLink( i.webMenuId )">
<div :class="`name`">{{ i.webMenuName }}</div>
<div class="line"></div>
</div>
<div v-if="false" class="subMenu" v-show="(subMenuList||[]).length>0 && subMenuType === 1"
@mouseleave="clearChildren">
<div :class="`topMenuItem${$route.fullPath === ii.path ? ' active':''}`" v-for="(ii,k) in subMenuList"
@click="toLink(ii.webMenuId)">
<div class="icon">
<img :src="ii.webMenuPic" alt="" style="width: 1.8vw;height: 1.8vw;object-fit: contain">
</div>
<div class="menuChildrenName">
<span>
{{ ii.webMenuName }}
</span>
<div>
<div class="topMenu">
<div class="item" v-for="(i,k) in menuList">
<div class="menuItem" :class="{active: k == activeIndex}" @click="toLink1(i)">{{ i.webMenuName }}</div>
<div class="itemChildren" v-if="i.children.length > 0">
<div class="itemChildrenBg">
<div class="menuChildrenItem" @click="toLink2(ii)" v-for="ii in i.children">{{ ii.webMenuName }}</div>
</div>
</div>
</div>
</div>
<div v-if="false" class="subMenu1"
:style="{height:20 + 50 + 40*(Math.max(...subMenuList.map(e=>e.children.length || 0)))+'px'}"
v-show="(subMenuList||[]).length>0 && subMenuType === 2"
@mouseleave="clearChildren">
<div class="subMenuList" :style="{width:100/subMenuList.length+'%'}"
v-for="(ii,k) in subMenuList">
<div class="subMenuListTitle" @click="toLink(ii.webMenuId)">
<img class="subMenuListTitleIcon" :src="ii.configTypeIcon" alt=""
style="width: 1vw;height: 1vw;object-fit: contain">
<div class="subMenuListTitleSpan">{{ ii.webMenuName }}</div>
<i class="el-icon-arrow-down subMenuListTitleIcon1"></i>
</div>
<div class="subMenuListItem" v-for="(iii,kkk) in ii.children"
@click="toLink(iii.webMenuId)">
<img :src="iii.webMenuPic" alt=""
style="vertical-align: sub;width: 18px;height: 18px;line-height: 30px;object-fit: contain;margin-right: 6px">
<span>
{{ iii.webMenuName }}
</span>
<el-tag size="small" v-if="kkk <1"></el-tag>
</div>
</div>
</div>
<el-menu :default-active="activeIndex" class="el-menu-demo" style="height: 4.5vw" mode="horizontal"
@select="handleSelect">
<template v-for="(i,k) in menuList">
<el-menu-item style="height: 4.5vw;line-height: 4.5vw;font-size: 1vw;" :index="i.webMenuId"
@click="toLink(i)"
v-if="(i.children || []).length ===0">{{
i.webMenuName
}}
</el-menu-item>
<el-submenu :index="i.webMenuId" v-else style="height: 4.5vw;line-height: 4.5vw">
<template slot="title">
<div style="height: 4.5vw;line-height: 4.5vw;font-size: 1vw;" @click="toLink(i)">{{
i.webMenuName
}}
</div>
</template>
<template v-for="ii in i.children">
<el-menu-item :index="ii.webMenuId" @click="toLink(ii)">
<div style="width: 100%;text-align: center">{{ ii.webMenuName }}</div>
</el-menu-item>
<!-- <el-submenu :index="ii.webMenuId" v-if="(ii.children || []).length >0">-->
<!-- <template slot="title">{{ ii.webMenuName }}</template>-->
<!-- <el-menu-item :index="iii.webMenuId" v-for="iii in ii.children">{{ iii.webMenuName }}</el-menu-item>-->
<!-- </el-submenu>-->
</template>
</el-submenu>
</template>
</el-menu>
</div>
</template>
@ -79,6 +17,12 @@
import {selectConfigTypeList} from "@/api/menu";
import {listHwWebMenu, selectMenuTree} from "@/api/hwWebMenu";
const indexRoute = ['/index']
const contactUsRoute = ['/contactUs']
const industrySolutionsRoute = ['/industrySolutions']
const productCenterRoute = ['/productCenter']
const serviceSupportRoute = ['/serviceSupport']
export default {
name: 'Index',
data() {
@ -90,13 +34,33 @@ export default {
subMenuPath: ''
}
},
watch: {
'$route': {
handler() {
let path = this.$route.path;
if (indexRoute.includes(path)) {
this.activeIndex = 0
} else if (contactUsRoute.includes(path)) {
this.activeIndex = 1
} else if (industrySolutionsRoute.includes(path)) {
this.activeIndex = 2
} else if (productCenterRoute.includes(path)) {
this.activeIndex = 3
} else if (serviceSupportRoute.includes(path)) {
this.activeIndex = 4
} else {
this.activeIndex = -1
}
},
immediate: true
}
},
mounted() {
this.getMenu()
},
methods: {
toLink(e) {
toLink1(e) {
let id = e.webMenuId
console.log()
if (!id) return
if (id === 7) {
this.$router.push('/productCenter')
@ -108,14 +72,21 @@ export default {
this.$router.push('/serviceSupport')
} else if (id === 1) {
this.$router.push('/index')
} else if (e.ancestors.split(',').includes("2")) {
// this.$router.push('/contactUs#item' + id)
} else {
this.$router.push('/test?id=' + id)
}
},
toLink2(e) {
let id = e.webMenuId
if (!id) return
if (e.ancestors.split(',').includes("2")) {
this.$router.push('/contactUs?id=' + id)
} else if (e.ancestors.split(',').includes("7")) {
// this.$router.push('/productCenter#item' + id)
this.$router.push('/productCenter?id=' + id)
} else if (e.ancestors.split(',').includes("24")) {
this.$router.push('/serviceSupport?type=' + id)
} else if (e.ancestors.split(',').includes("4")) {
this.$router.push('/industrySolutions?id=' + id)
} else {
this.$router.push('/test?id=' + id)
}
@ -123,28 +94,9 @@ export default {
getMenu() {
selectMenuTree().then(e => {
this.menuList = e.data
console.log(e)
})
},
getChildren(e) {
console.log(e)
if (e.children) {
this.subMenuList = e.children
this.subMenuType = e.webMenuType || 1
this.subMenuPath = e.path
} else {
this.subMenuList = []
this.subMenuType = 0
this.subMenuPath = ''
}
},
clearChildren() {
this.subMenuList = []
this.subMenuType = 0
this.subMenuPath = ''
},
handleSelect(e) {
console.log(e)
}
}
}
</script>
@ -152,200 +104,77 @@ export default {
<style lang="less" scoped>
@import "~@/style.less";
.menu {
position: relative;
.topMenu {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
white-space: nowrap;
.focus, .menuItem:hover {
font-weight: 700;
color: #3076f8;
background-color: #ebf1ff;
.line {
width: 100%;
height: 2px;
position: absolute;
bottom: 0;
left: 0;
background-color: #3076f8;
}
}
.menuItem {
//width: 120px;
padding: 0 2vw;
position: relative;
.item {
display: inline-block;
vertical-align: top;
line-height: @top-height;
font-size: 1.1vw;
padding: 0 2vw;
cursor: pointer;
transition: all 0.2s;
user-select: none;
position: relative;
color: #666;
.active {
color: #000;
.name {
line-height: @top-height;
font-size: 1vw;
letter-spacing: 2px;
}
}
.subMenu {
position: absolute;
width: 100vw;
left: 50%;
transform: translateX(-50%);
height: @menuHeight;
display: flex;
justify-content: center;
background-color: #fff;
z-index: -1;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.04);
.topMenuItem.active, .topMenuItem:hover {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
.menuChildrenName {
color: @standard-color;
}
}
.topMenuItem {
width: @menuHeight;
height: @menuHeight;
transition: all 0.2s;
.icon {
&::after {
content: '';
position: absolute;
width: 100%;
height: 36%;
margin-top: 22%;
display: flex;
align-items: center;
justify-content: center;
}
.menuName {
height: 20%;
font-size: 0.9vw;
color: #111;
letter-spacing: 1px;
display: flex;
align-items: center;
justify-content: center;
height: 2px;
bottom: 0;
left: 0;
background-color: #419EFF;
}
}
.subMenuList {
&:hover {
color: #000;
.itemChildren {
visibility: visible;
opacity: 1;
}
}
.itemChildren {
visibility: hidden;
opacity: 0;
transition: opacity 0.3s;
position: absolute;
width: 80%;
height: @menuHeight;
}
}
top: 100%;
left: 50%;
transform: translateX(-50%);
line-height: 2vw;
font-size: 0.9vw;
color: #666;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1),
0 6px 20px 0 rgba(0, 0, 0, 0.08);
.subMenu1 {
position: absolute;
width: 100vw;
left: 50%;
transform: translateX(-50%);
min-height: @menuHeight;
display: flex;
justify-content: center;
background-color: #fff;
z-index: -1;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.04);
.itemChildrenBg {
margin-top: 4px;
border-radius: 4px;
padding: 4px 1.4vw;
background-color: #fff;
.subMenuList {
max-width: 14vw;
display: inline-block;
text-align: left;
vertical-align: top;
border-right: 1px solid #0001;
&:last-child {
border-right: 0;
}
.subMenuListTitle {
height: 50px;
cursor: pointer;
position: relative;
.subMenuListTitleIcon {
position: absolute;
top: 50%;
left: 2vw;
width: 1vw;
height: 1vw;
transform: translateY(-50%);
}
.subMenuListTitleIcon1 {
position: absolute;
top: 50%;
right: 2vw;
width: 1vw;
height: 1vw;
font-size: 1vw;
transform: translateY(-50%);
}
.subMenuListTitleSpan {
position: absolute;
letter-spacing: 0.1vw;
top: 50%;
left: calc(2vw + 1vw + 0.5vw);
transform: translateY(-50%);
font-size: 1vw;
font-weight: 500;
}
}
.subMenuListItem {
padding-left: 2vw;
cursor: pointer;
font-size: 14px;
line-height: 40px;
&:hover {
color: @standard-color;
background-color: #0001;
.menuChildrenItem {
&:hover {
color: #000
}
}
}
}
}
}
@menuHeight: 11vw;
/deep/ .el-submenu.is-active .el-submenu__title {
height: 4.5vw;
}
/deep/ .el-menu--horizontal > .el-submenu .el-submenu__title {
height: 4.5vw;
}
/deep/ .el-menu--horizontal > .el-submenu .el-submenu__icon-arrow {
display: none;
}
/deep/ .el-submenu__title {
margin: 0;
padding: 0;
}
</style>
<style>
.el-submenu {
width: 10vw;
}
.el-menu--horizontal {
transform: translateX(calc(-90px + 4vw)) !important;
}
.el-menu-item > div {
font-size: 1vw !important;
}
</style>

@ -0,0 +1,351 @@
<template>
<div class="menu">
<div v-if="false" v-for="(i,k) in menuList" :class="`menuItem ${$route.path === i.path ? 'focus':''}`"
@mouseenter="getChildren(i)" @click="toLink( i.webMenuId )">
<div :class="`name`">{{ i.webMenuName }}</div>
<div class="line"></div>
</div>
<div v-if="false" class="subMenu" v-show="(subMenuList||[]).length>0 && subMenuType === 1"
@mouseleave="clearChildren">
<div :class="`topMenuItem${$route.fullPath === ii.path ? ' active':''}`" v-for="(ii,k) in subMenuList"
@click="toLink(ii.webMenuId)">
<div class="icon">
<img :src="ii.webMenuPic" alt="" style="width: 1.8vw;height: 1.8vw;object-fit: contain">
</div>
<div class="menuChildrenName">
<span>
{{ ii.webMenuName }}
</span>
</div>
</div>
</div>
<div v-if="false" class="subMenu1"
:style="{height:20 + 50 + 40*(Math.max(...subMenuList.map(e=>e.children.length || 0)))+'px'}"
v-show="(subMenuList||[]).length>0 && subMenuType === 2"
@mouseleave="clearChildren">
<div class="subMenuList" :style="{width:100/subMenuList.length+'%'}"
v-for="(ii,k) in subMenuList">
<div class="subMenuListTitle" @click="toLink(ii.webMenuId)">
<img class="subMenuListTitleIcon" :src="ii.configTypeIcon" alt=""
style="width: 1vw;height: 1vw;object-fit: contain">
<div class="subMenuListTitleSpan">{{ ii.webMenuName }}</div>
<i class="el-icon-arrow-down subMenuListTitleIcon1"></i>
</div>
<div class="subMenuListItem" v-for="(iii,kkk) in ii.children"
@click="toLink(iii.webMenuId)">
<img :src="iii.webMenuPic" alt=""
style="vertical-align: sub;width: 18px;height: 18px;line-height: 30px;object-fit: contain;margin-right: 6px">
<span>
{{ iii.webMenuName }}
</span>
<el-tag size="small" v-if="kkk <1"></el-tag>
</div>
</div>
</div>
<el-menu :default-active="activeIndex" class="el-menu-demo" style="height: 4.5vw" mode="horizontal"
@select="handleSelect">
<template v-for="(i,k) in menuList">
<el-menu-item style="height: 4.5vw;line-height: 4.5vw;font-size: 1vw;" :index="i.webMenuId"
@click="toLink(i)"
v-if="(i.children || []).length ===0">{{
i.webMenuName
}}
</el-menu-item>
<el-submenu :index="i.webMenuId" v-else style="height: 4.5vw;line-height: 4.5vw">
<template slot="title">
<div style="height: 4.5vw;line-height: 4.5vw;font-size: 1vw;" @click="toLink(i)">{{
i.webMenuName
}}
</div>
</template>
<template v-for="ii in i.children">
<el-menu-item :index="ii.webMenuId" @click="toLink(ii)">
<div style="width: 100%;text-align: center">{{ ii.webMenuName }}</div>
</el-menu-item>
<!-- <el-submenu :index="ii.webMenuId" v-if="(ii.children || []).length >0">-->
<!-- <template slot="title">{{ ii.webMenuName }}</template>-->
<!-- <el-menu-item :index="iii.webMenuId" v-for="iii in ii.children">{{ iii.webMenuName }}</el-menu-item>-->
<!-- </el-submenu>-->
</template>
</el-submenu>
</template>
</el-menu>
</div>
</template>
<script>
import {selectConfigTypeList} from "@/api/menu";
import {listHwWebMenu, selectMenuTree} from "@/api/hwWebMenu";
export default {
name: 'Index',
data() {
return {
activeIndex: 0,
menuList: [],
subMenuList: [],
subMenuType: 0,
subMenuPath: ''
}
},
mounted() {
this.getMenu()
},
methods: {
toLink(e) {
let id = e.webMenuId
console.log()
if (!id) return
if (id === 7) {
this.$router.push('/productCenter')
} else if (id === 2) {
this.$router.push('/contactUs')
} else if (id === 4) {
this.$router.push('/industrySolutions')
} else if (id === 24) {
this.$router.push('/serviceSupport')
} else if (id === 1) {
this.$router.push('/index')
} else if (e.ancestors.split(',').includes("2")) {
// this.$router.push('/contactUs#item' + id)
this.$router.push('/contactUs?id=' + id)
} else if (e.ancestors.split(',').includes("7")) {
// this.$router.push('/productCenter#item' + id)
this.$router.push('/productCenter?id=' + id)
} else if (e.ancestors.split(',').includes("24")) {
this.$router.push('/serviceSupport?type=' + id)
} else {
this.$router.push('/test?id=' + id)
}
},
getMenu() {
selectMenuTree().then(e => {
this.menuList = e.data
})
},
getChildren(e) {
console.log(e)
if (e.children) {
this.subMenuList = e.children
this.subMenuType = e.webMenuType || 1
this.subMenuPath = e.path
} else {
this.subMenuList = []
this.subMenuType = 0
this.subMenuPath = ''
}
},
clearChildren() {
this.subMenuList = []
this.subMenuType = 0
this.subMenuPath = ''
},
handleSelect(e) {
console.log(e)
}
}
}
</script>
<style lang="less" scoped>
@import "~@/style.less";
.menu {
position: relative;
.focus, .menuItem:hover {
font-weight: 700;
color: #3076f8;
background-color: #ebf1ff;
.line {
width: 100%;
height: 2px;
position: absolute;
bottom: 0;
left: 0;
background-color: #3076f8;
}
}
.menuItem {
//width: 120px;
padding: 0 2vw;
position: relative;
display: inline-block;
cursor: pointer;
transition: all 0.2s;
.name {
line-height: @top-height;
font-size: 1vw;
letter-spacing: 2px;
}
}
.subMenu {
position: absolute;
width: 100vw;
left: 50%;
transform: translateX(-50%);
height: @menuHeight;
display: flex;
justify-content: center;
background-color: #fff;
z-index: -1;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.04);
.topMenuItem.active, .topMenuItem:hover {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
.menuChildrenName {
color: @standard-color;
}
}
.topMenuItem {
width: @menuHeight;
height: @menuHeight;
transition: all 0.2s;
.icon {
width: 100%;
height: 36%;
margin-top: 22%;
display: flex;
align-items: center;
justify-content: center;
}
.menuName {
height: 20%;
font-size: 0.9vw;
color: #111;
letter-spacing: 1px;
display: flex;
align-items: center;
justify-content: center;
}
}
.subMenuList {
position: absolute;
width: 80%;
height: @menuHeight;
}
}
.subMenu1 {
position: absolute;
width: 100vw;
left: 50%;
transform: translateX(-50%);
min-height: @menuHeight;
display: flex;
justify-content: center;
background-color: #fff;
z-index: -1;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.04);
.subMenuList {
max-width: 14vw;
display: inline-block;
text-align: left;
vertical-align: top;
border-right: 1px solid #0001;
&:last-child {
border-right: 0;
}
.subMenuListTitle {
height: 50px;
cursor: pointer;
position: relative;
.subMenuListTitleIcon {
position: absolute;
top: 50%;
left: 2vw;
width: 1vw;
height: 1vw;
transform: translateY(-50%);
}
.subMenuListTitleIcon1 {
position: absolute;
top: 50%;
right: 2vw;
width: 1vw;
height: 1vw;
font-size: 1vw;
transform: translateY(-50%);
}
.subMenuListTitleSpan {
position: absolute;
letter-spacing: 0.1vw;
top: 50%;
left: calc(2vw + 1vw + 0.5vw);
transform: translateY(-50%);
font-size: 1vw;
font-weight: 500;
}
}
.subMenuListItem {
padding-left: 2vw;
cursor: pointer;
font-size: 14px;
line-height: 40px;
&:hover {
color: @standard-color;
background-color: #0001;
}
}
}
}
}
@menuHeight: 11vw;
/deep/ .el-submenu.is-active .el-submenu__title {
height: 4.5vw;
}
/deep/ .el-menu--horizontal > .el-submenu .el-submenu__title {
height: 4.5vw;
}
/deep/ .el-menu--horizontal > .el-submenu .el-submenu__icon-arrow {
display: none;
}
/deep/ .el-submenu__title {
margin: 0;
padding: 0;
}
</style>
<style>
.el-submenu {
width: 10vw;
}
.el-menu--horizontal {
transform: translateX(calc(-90px + 4vw)) !important;
}
.el-menu-item > div {
font-size: 1vw !important;
}
</style>

@ -62,7 +62,7 @@ export default {
this.list1.push({
snippet: e.snippet,
title: e.title,
link: e.title.split('详情#')?.[1]?.split('-')
link: e.title?.split('详情#')?.[1]?.split('-')
})
}
if (e.sourceType === 'web') {
@ -94,6 +94,7 @@ export default {
top: 50%;
right: 20px;
transform: translateY(-50%);
z-index: 9;
}
.container {

@ -98,6 +98,7 @@ export default {
left: 50%;
top: 0;
height: 100%;
width: 100%;
transform: translateX(-50%);
z-index: 4;
}

@ -199,6 +199,7 @@ export default {
this.banner = e.data?.[0]?.aboutUsInfoPic
this.bannerTitle = e.data?.[0]?.aboutUsInfoDesc
this.tabsList = e.data.slice(1, e.data.length)
console.log(this.tabsList)
})
}
}
@ -242,11 +243,21 @@ export default {
}
.tabs {
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
//background-color: #fff;
//background: linear-gradient(to bottom, #EBF1FF, #fff);
}
position: absolute;
bottom: 0;
width: 100%;
background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
backdrop-filter: saturate(50%) blur(4px);
backdrop-filter: saturate(50%) blur(10px);
.content {
width: 62%;

@ -139,7 +139,7 @@ export default {
/deep/ .el-tabs__item {
letter-spacing: 3px;
padding: 0 30px;
padding: 0 0.5vw;
height: 2.9vw;
font-size: 1.6vw;
}

@ -1,9 +1,9 @@
<template>
<div>
<Carousel class="carousel" :bannerList="bannerList"/>
<Carousel class="carousel" :bannerList="components.swiper || bannerList"/>
<ClassicCase class="classicCase" :data="components.classicCaseData ||[]"/>
<ProductCenter class="productCenter" :data="components.productCenterData ||[]"/>
<!-- <NewsCenter class="newsCenter"/>-->
<NewsCenter class="newsCenter"/>
<ContactUs class="contactUs"/>
<Copyright class="copyright"/>
</div>
@ -18,8 +18,6 @@ import ContactUs from './contactUs'
import Copyright from '@/components/copyright'
import {getHwWeb} from "@/api/hwWeb";
export default {
name: 'Index',
components: {

@ -6,69 +6,71 @@
:src="pageData.banner"
fit="contain"></el-image>
<div class="bannerInfo">{{ pageData.bannerTitle }}</div>
<div class="tabs">
<div class="content">
<div @click="checkTabs(i,k)"
style="white-space: nowrap;overflow: auto"
:style="`fontSize:clamp(0.7vw,calc(${(60/tabsData.length)}vw / ${ i.title.length}),1.4vw);width:${tabsActive === i.id ? (100/tabsData.length+'%'):`calc(${100/tabsData.length}% - 2px)`}`"
:class="`tab ${tabsActive === i.id ? 'active':''}`" v-for="(i,k) in tabsData">
{{ i.title }}
</div>
</div>
<div class="tabs">
<div class="content">
<div @click="checkTabs(i,k)"
style="white-space: nowrap;overflow: auto"
:class="`tab ${tabsActive == i.id ? 'active':''}`" v-for="(i,k) in tabsData">
{{ i.title }}
</div>
</div>
</div>
<TitleGroup>
<template slot="title">TYPICAL CASE</template>
<template slot="subTitle">经典案例</template>
</TitleGroup>
<div style="width: 75vw;margin:0 auto;margin-top: 2vw; text-align: left">
<div class="swiper mySwiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="i in cases">
<el-image
style="width: 100%;height: 100%"
:src="i.img"
fit="contain"></el-image>
<div class="inner">
<div class="title">
{{ i.title }}
</div>
<div class="value">
{{ i.value }}
<template v-if="false">
<TitleGroup>
<template slot="title">TYPICAL CASE</template>
<template slot="subTitle">经典案例</template>
</TitleGroup>
<div style="width: 75vw;margin:0 auto;margin-top: 2vw; text-align: left">
<div class="swiper mySwiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="i in cases">
<el-image
style="width: 100%;height: 100%"
:src="i.img"
fit="contain"></el-image>
<div class="inner">
<div class="title">
{{ i.title }}
</div>
<div class="value">
{{ i.value }}
</div>
</div>
</div>
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
<TitleGroup>
<template slot="title">SUPPORTING PRODUCT</template>
<template slot="subTitle">配套产品</template>
</TitleGroup>
<div style="width: 75vw;margin:0 auto;margin-top: 2vw; text-align: left">
<template v-for="i in productList">
<div class="card">
<!-- 左侧图片 -->
<div class="card-img" :style="{backgroundImage: 'url(' + i.img + ') '}">
</div>
<TitleGroup>
<template slot="title">SUPPORTING PRODUCT</template>
<template slot="subTitle">配套产品</template>
</TitleGroup>
<div style="width: 75vw;margin:0 auto;margin-top: 2vw; text-align: left">
<template v-for="i in productList">
<div class="card">
<!-- 左侧图片 -->
<div class="card-img" :style="{backgroundImage: 'url(' + i.img + ') '}">
</div>
<!-- 右侧内容 -->
<div class="card-content">
<div class="card-title">{{ i.name }}</div>
<div class="card-arrow"
@click="$router.push(`productCenter/detail?type=${i.route[0]}&typeId=${i.route[1]}&id=${i.route[2]}`)">
<i class="el-icon-right"></i>
<!-- 右侧内容 -->
<div class="card-content">
<div class="card-title">{{ i.name }}</div>
<div class="card-arrow"
@click="$router.push(`productCenter/detail?type=${i.route[0]}&typeId=${i.route[1]}&id=${i.route[2]}`)">
<i class="el-icon-right"></i>
</div>
</div>
</div>
</div>
</template>
</div>
<ContactUs class="contactUs"/>
<Copyright class="copyright"/>
</template>
</div>
</template>
<template v-if="true">
<Page :id="tabsActive"/>
</template>
<!-- <ContactUs class="contactUs"/>-->
<!-- <Copyright class="copyright"/>-->
</div>
</template>
@ -78,6 +80,7 @@ import Copyright from '@/components/copyright'
import Swiper from 'swiper';
import {Autoplay, Navigation} from "swiper/modules";
import TitleGroup from "@/components/TitleGroup.vue";
import Page from "@/views/page/index.vue";
Swiper.use([Navigation, Autoplay])
@ -87,6 +90,7 @@ export default {
TitleGroup,
ContactUs,
Copyright,
Page
},
data() {
return {
@ -121,49 +125,49 @@ export default {
],
tabsData: [
{
title: '智能轮胎',
title: '工厂制造-RFID全流程管理',
value: '智能轮胎介绍',
info: '智能轮胎信息',
img: 'http://1.13.177.47:9665/statics/2025/07/24/mesnac_20250724093713A002.jpg',
id: '5'
},
{
title: '轮胎工厂',
title: '成品胎RFID全生命周期',
value: '轮胎工厂介绍',
info: '轮胎工厂信息',
img: 'http://1.13.177.47:9665/statics/2025/07/24/mesnac_20250724093713A002.jpg',
id: '18'
},
{
title: '快递物流',
title: 'RFID包裹分拣',
value: '快递物流介绍',
info: '快递物流信息',
img: 'http://1.13.177.47:9665/statics/2025/08/22/%E5%9B%BE%E7%89%8717_20250822141810A130.jpg',
id: '19'
},
{
title: '畜牧食品',
title: '工厂制造-仓储物流',
value: '畜牧食品介绍',
info: '在畜牧屠宰行业RFID助力车间自动化智能化生产合作客户包括双汇、正大、牧原等',
img: 'http://1.13.177.47:9665/statics/2025/08/22/12_20250822135124A121.png',
id: '20'
},
{
title: '新能源',
title: '信息化数据平台',
value: '新能源介绍',
info: '新能源信息',
img: 'http://1.13.177.47:9665/statics/2025/07/24/mesnac_20250724093713A002.jpg',
id: '21'
},
{
title: '智能制造',
title: '智能制造物联网',
value: '智能制造介绍',
info: '智能制造信息',
img: 'http://1.13.177.47:9665/statics/2025/08/22/%E5%9B%BE%E7%89%8736_20250822142617A134.jpg',
id: '22'
},
{
title: '工业物联',
title: '能源计量',
value: '工业物联介绍',
info: '工业物联信息',
img: 'http://1.13.177.47:9665/statics/2025/07/24/mesnac_20250724093713A002.jpg',
@ -197,6 +201,8 @@ export default {
mounted() {
if (this.$route.query.id) {
this.tabsActive = parseFloat(this.$route.query.id)
} else {
this.tabsActive = this.tabsData[0].id
}
this.initSwiper()
},
@ -211,7 +217,6 @@ export default {
},
initSwiper() {
const swiper = new Swiper(".mySwiper", {
slidesPerView: 1.5,
spaceBetween: '3.9%',
centeredSlides: true,
@ -256,37 +261,53 @@ export default {
letter-spacing: 2px;
}
.tabs {
position: absolute;
bottom: 0;
}
.tabs {
cursor: pointer;
bottom: 0;
width: 100%;
white-space: nowrap;
background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
backdrop-filter: saturate(50%) blur(4px);
.content {
width: 100%;
background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
backdrop-filter: saturate(50%) blur(4px);
position: relative;
left: 50%;
bottom: 0;
transform: translateX(-50%);
.content {
width: 62%;
.tab {
display: inline-block;
line-height: 6.2vw;
letter-spacing: 3px;
font-size: 1vw;
position: relative;
left: 50%;
bottom: 0;
transform: translateX(-50%);
padding: 0 2vw;
.tab {
display: inline-block;
line-height: 6.2vw;
font-size: 1.6vw;
letter-spacing: 3px;
&:last-child::after {
display: none;
}
.tab.active {
color: @standard-color;
width: calc(50% - 3px);
border: 1px solid #fff6;
box-shadow: 0 0 3px #0002;
&::after {
content: '';
position: absolute;
right: 0;
width: 1px;
height: 1vw;
background-color: #409eff;
top: calc(50% - 0.5vw);
}
}
.tab.active {
color: @standard-color;
//border: 1px solid #fff6;
//box-shadow: 0 0 3px #0002;
}
}
}
.swiper {
width: 58vw;
margin: 0 auto;
@ -320,6 +341,7 @@ export default {
display: inline-block;
height: 300px;
position: relative;
margin-bottom: 1vw;
border: 1px solid #0001;
&:nth-child(3n) {

@ -21,7 +21,7 @@
<EditEl8 v-if="i.type === 8" :data="i.value"/>
<EditEl9 v-if="i.type === 9" :data="i.value"/>
<EditEl10 v-if="i.type ===10" :data="i.value"/>
<EditEl11 v-if="i.type === 11" :data="i.value"/>
<EditEl11 v-if="i.type === 11" :data="i.value"/>
<EditEl12 v-if="i.type === 12" :data="i.value"/>
<EditEl13 v-if="i.type === 13" :data="i.value"/>
<EditEl14 v-if="i.type === 14" :data="i.value"/>
@ -86,6 +86,7 @@ export default {
EditEl15,
EditEl16,
},
props: ["id"],
data() {
return {
a: '1',
@ -99,6 +100,12 @@ export default {
getHwWeb(this.$route.query.id).then(res => {
this.components = JSON.parse(res?.data?.webJsonString || '[]')
})
},
id(newVal) {
getHwWeb(newVal).then(res => {
this.components = JSON.parse(res?.data?.webJsonString || '[]')
})
console.log(newVal)
}
},
mounted() {
@ -106,8 +113,7 @@ export default {
this.components = JSON.parse(res?.data?.webJsonString || '[]')
})
},
methods: {
}
methods: {}
}
</script>
<style scoped lang="less">

@ -20,7 +20,6 @@
<ProduceModel v-if="tabsActive" :data="pageData.productList.find(e=>e.id===tabsActive) || {}"/>
<ContactUs class="contactUs"/>
<Copyright class="copyright"/>
</div>
@ -88,6 +87,7 @@ export default {
getData() {
getHwWeb(7).then(res => {
this.pageData = JSON.parse(res?.data?.webJsonString || '[]')
console.log(JSON.parse(res?.data?.webJsonString || '[]'))
})
selectMenuTree().then(e => {
let tabsData = e.data.find(v => v.webMenuId === 7).children

@ -1,24 +1,21 @@
<template>
<div>
<!-- <TitleGroup>-->
<!-- <template slot="title">CONTACT US</template>-->
<!-- <template slot="subTitle"> 联系我们</template>-->
<!-- </TitleGroup>-->
<TitleGroup>
<!-- <template slot="title">CONTACT US</template>-->
<template slot="subTitle"> 联系我们</template>
</TitleGroup>
<div class="content">
<el-form ref="form" :inline="true" :model="form" label-width="80px" label-position="top">
<el-form-item label="联系人姓名" style="width: 45%">
<el-form-item label="姓名" style="width: 32%">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="联系电话 " style="width: 45%">
<el-form-item label="电话" style="width: 32%">
<el-input v-model="form.phone"></el-input>
</el-form-item>
<el-form-item label="公司名称 " style="width: 45%">
<el-form-item label="公司名称 " style="width: 32%">
<el-input v-model="form.company"></el-input>
</el-form-item>
<el-form-item label="咨询设备名称 " style="width: 45%">
<el-input v-model="form.deviceName"></el-input>
</el-form-item>
<el-form-item label="需求信息/故障描述" style="width: 100%">
<el-form-item label="留言" style="width: 100%">
<el-input type="textarea" v-model="form.value"></el-input>
</el-form-item>
<br>
@ -69,9 +66,9 @@ export default {
.content {
display: inline-block;
width: 62vw;
width: 65vw;
//height: 20.1vw;
border: 1px solid #ccc3;
//border: 1px solid #ccc3;
margin-top: 3.7vw;
margin-bottom: 5.2vw;
vertical-align: top;

@ -7,8 +7,9 @@ module.exports = defineConfig({
// detail: https://cli.vuejs.org/config/#devserver-proxy
'/prod-api': {
// target: `http://175.27.215.92:8899/prod-api`,
target: `http://192.168.137.1:9081`,
// target: `http://1.13.177.47:8899/prod-api`,
// target: `http://192.168.137.1:9081`,
target: `http://1.13.177.47:8899/prod-api`,
// target: `http://192.168.100.100:9081`,
changeOrigin: true, pathRewrite: {
["^" + '/prod-api']: "",
},

Loading…
Cancel
Save