添加图片素材

修改关于海威格式
修改行业方案格式
master
suixy 1 month ago
parent 398b776135
commit 2943b05cd7

Binary file not shown.

@ -0,0 +1,36 @@
import request from '@/utils/request'
// 查询新闻列表
export function listNews(query) {
return request({
url: '/portal/news/list',
method: 'get',
params: query
})
}
// 新增新闻
export function addNews(data) {
return request({
url: '/portal/news/add',
method: 'post',
data: data
})
}
// 修改新闻
export function updateNews(data) {
return request({
url: '/portal/news/update',
method: 'put',
data: data
})
}
// 删除新闻
export function deleteNews(newsId) {
return request({
url: '/portal/news/delete/' + newsId,
method: 'delete'
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 84 KiB

@ -78,7 +78,7 @@ export default {
} }
}, },
mounted() { mounted() {
listHwWebDocument() // listHwWebDocument()
// setTimeout(() => { // setTimeout(() => {
// this.isChat = true; // this.isChat = true;
// this.$nextTick(() => { // this.$nextTick(() => {

@ -5,7 +5,7 @@
:src="data.banner" :src="data.banner"
fit="contain"></el-image> fit="contain"></el-image>
<el-image <el-image
style="width: 40%; height: 40%;position:absolute;right:10%;top: 30%;" class="banner1"
:src="data.banner1" :src="data.banner1"
fit="contain"></el-image> fit="contain"></el-image>
<div class="bannerInfo">{{ data.bannerTitle }}</div> <div class="bannerInfo">{{ data.bannerTitle }}</div>
@ -35,7 +35,7 @@ export default {
.banner { .banner {
width: 100%; width: 100%;
height: 35.5vw; height: calc(680vw / 19.2);
position: relative; position: relative;
.bannerInfo { .bannerInfo {
@ -106,4 +106,13 @@ export default {
} }
} }
} }
.banner1 {
height: 40% !important;
position: absolute;
right: 26%;
bottom: 39%;
transform: translateX(50%);
}
</style> </style>

@ -110,9 +110,9 @@ export default {
.logo { .logo {
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 2%; left: 3%;
transform: translateY(-50%); transform: translateY(-50%);
height: 40%; height: 50%;
cursor: pointer; cursor: pointer;
} }

@ -10,23 +10,20 @@
<div class="divider"></div> <div class="divider"></div>
<div class="content"> <div class="content">
<div> <div>
<div class="info-image-card" v-for="(i,k) in data.list"> <div class="info-image-card" v-for="i in list" :key="i.newsCode || i.id">
<div class="info-image-card__side"> <div class="info-image-card__side">
<div class="info-image-card__side-main">06</div> <div class="info-image-card__side-main">{{ i.day }}</div>
<div class="info-image-card__side-sub">10/2026</div> <div class="info-image-card__side-sub">{{ i.month }}/{{ i.year }}</div>
</div> </div>
<div class="info-image-card__content"> <div class="info-image-card__content">
<div class="info-image-card__title"> <div class="info-image-card__title">
<span style="color: #3372FE"> <span :style="tagStyle(i.type)">[{{ i.tag }}]</span>{{ i.title }}
[央视镜头]
</span>
海威物联技术支持的"智慧物流"
</div> </div>
<div class="info-image-card__desc"> <div class="info-image-card__desc">
11月26-272024智能物流装备供应链集采大会监第十二次青浦圆桌会议在南陵举办本次大会以"向新而行、以质致远、绿色发展、共创未来"为主题200余家智能物流装备供应链企业参加共同探讨智能物流装备领城... {{ i.summary }}
</div> </div>
<div class="info-image-card__link"> <div class="info-image-card__link" @click="toDetail(i)">
<span>查看详情</span> <span>查看详情</span>
<span class="info-image-card__arrow"></span> <span class="info-image-card__arrow"></span>
</div> </div>
@ -34,8 +31,8 @@
<img <img
class="info-image-card__image" class="info-image-card__image"
:src="media1" :src="i.cover"
:alt="123" :alt="i.title"
draggable="false" draggable="false"
> >
</div> </div>
@ -48,24 +45,60 @@
<script> <script>
import TitleGroup from "@/components/TitleGroup.vue"; import TitleGroup from "@/components/TitleGroup.vue";
import media1 from '@/assets/image/media1.png' import {listNews} from "@/api/news";
export default { export default {
name: 'PlatformIntroduction', name: 'PlatformIntroduction',
props: ['data'],
components: { components: {
TitleGroup TitleGroup
}, },
data() { data() {
return { return {
media1 list: []
} }
}, },
mounted() { mounted() {
this.getData()
}, },
methods: { methods: {
getData() {
listNews().then(res => {
const rows = res.rows || res.data?.rows || []
const list = rows.map(item => this.parseNewsJson(item)).filter(Boolean)
this.list = list
.filter(item => this.isAboutVisible(item.field3))
.sort((a, b) => Number(a.field4 || 0) - Number(b.field4 || 0))
})
},
parseNewsJson(item) {
try {
return {
id: item.id || item.newsId,
newsCode: item.newsCode,
...JSON.parse(item.newsJson || '{}')
}
} catch (e) {
return null
}
},
isAboutVisible(value) {
return value === true || value === 1 || value === '1'
},
tagStyle(type) {
const colorMap = {
1: '#3372FE',
2: '#18A058',
3: '#D03050'
}
return {
color: colorMap[type] || colorMap[1]
}
},
toDetail(e) { toDetail(e) {
this.$router.push('/contactUs/MediaCenterDetail') this.$router.push({
path: '/newsDetail',
query: {newsCode: e.newsCode}
})
} }
} }
} }

@ -0,0 +1,336 @@
<template>
<div style="background-color: #F7FBFF">
<TitleGroup>
<template slot="subTitle">
<span class="subTitle">
媒体中心
</span>
</template>
</TitleGroup>
<div class="divider"></div>
<div class="content">
<div>
<div class="info-image-card" v-for="(i,k) in data.list">
<div class="info-image-card__side">
<div class="info-image-card__side-main">06</div>
<div class="info-image-card__side-sub">10/2026</div>
</div>
<div class="info-image-card__content">
<div class="info-image-card__title">
<span style="color: #3372FE">
[央视镜头]
</span>
海威物联技术支持的"智慧物流"
</div>
<div class="info-image-card__desc">
11月26-272024智能物流装备供应链集采大会监第十二次青浦圆桌会议在南陵举办本次大会以"向新而行、以质致远、绿色发展、共创未来"为主题200余家智能物流装备供应链企业参加共同探讨智能物流装备领城...
</div>
<div class="info-image-card__link">
<span>查看详情</span>
<span class="info-image-card__arrow"></span>
</div>
</div>
<img
class="info-image-card__image"
:src="media1"
:alt="123"
draggable="false"
>
</div>
</div>
</div>
</div>
</template>
<script>
import TitleGroup from "@/components/TitleGroup.vue";
import media1 from '@/assets/image/media1.png'
export default {
name: 'PlatformIntroduction',
props: ['data'],
components: {
TitleGroup
},
data() {
return {
media1
}
},
mounted() {
},
methods: {
toDetail(e) {
this.$router.push('/contactUs/MediaCenterDetail')
}
}
}
</script>
<style lang="less" scoped>
@import "~@/style.less";
.content {
display: inline-block;
width: 62vw;
//height: 20.1vw;
margin-top: 3.7vw;
margin-bottom: 5.2vw;
vertical-align: top;
.left {
vertical-align: top;
display: inline-block;
width: 65%;
//height: 100%;
position: relative;
background-color: #ffffff;
.contentTitle {
position: absolute;
top: 3.5vw;
left: 10.7%;
letter-spacing: 1px;
font-size: 1.4vw;
color: @standard-color;
}
.contentSubTitle {
position: absolute;
top: 3vw;
left: 10.7%;
letter-spacing: 3.2px;
font-size: 1.6vw;
color: #6666;
}
.contentInfo {
text-align: left;
//position: absolute;
margin-top: 7vw;
width: 78%;
margin-left: 50%;
//height: 11vw;
overflow: hidden;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
letter-spacing: 2.5px;
font-size: 0.8vw;
line-height: 1.62vw;
color: #666;
}
}
.right {
display: inline-block;
width: 100%;
height: 100%;
}
}
.infoCard {
width: 100%;
height: 8vw;
margin-top: 1vw;
border: 1px solid #ccc3;
position: relative;
&:hover {
.image {
.el-image {
transform: scale(1.1);
}
}
.itemTitle {
color: #3372ff;
}
}
.image {
.el-image {
transition: all 0.6s;
}
overflow: hidden;
position: absolute;
top: 0;
left: 0;
width: 8vw;
height: 8vw;
}
.itemTitle {
transition: all 0.6s;
position: absolute;
top: 0.5vw;
left: 8.5vw;
font-size: 1vw;
font-weight: 700;
cursor: pointer;
}
.itemMaster {
position: absolute;
top: 2vw;
left: 8.5vw;
font-size: 0.7vw;
color: #3372ff;
}
.itemValue {
position: absolute;
top: 4vw;
left: 8.5vw;
font-size: 0.7vw;
color: #666;
text-align: left;
display: -webkit-box; /* 关键:多行弹性盒 */
-webkit-box-orient: vertical; /* 纵向排列 */
-webkit-line-clamp: 3; /* 限制为 3 行 */
overflow: hidden; /* 超出隐藏 */
text-overflow: ellipsis; /* 省略号 */
}
}
.subTitle {
font-size: 2.4vw;
font-weight: 600;
}
.divider {
width: 5vw;
height: 4px;
background: #3372FE;
border-radius: 999px;
margin: 10px auto;
}
.info-image-card {
background-color: #fff;
display: flex;
align-items: stretch;
width: 100%;
height: 100%;
overflow: hidden;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.02);
margin-bottom: 1vw;
text-align: left;
&:hover &__side {
color: #fff;
background: #3372fe;
&::after {
border-left-color: #3372fe;
}
}
&__side {
position: relative;
z-index: 1;
display: flex;
width: 8vw;
align-self: stretch;
flex: 0 0 8vw;
flex-direction: column;
align-items: center;
justify-content: center;
color: #000;
background: #fff;
transition: color 0.2s ease, background-color 0.2s ease;
&::after {
position: absolute;
top: 50%;
right: calc(-1vw + 1px);
width: 0;
height: 0;
border-top: 1vw solid transparent;
border-bottom: 1vw solid transparent;
border-left: 1vw solid #fff;
content: '';
transform: translateY(-50%);
transition: border-left-color 0.2s ease;
}
}
&__side-main {
font-size: 3vw;
line-height: 1;
}
&__side-sub {
margin-top: 1vw;
font-size: 1vw;
line-height: 1.2;
}
&__content {
display: flex;
min-width: 0;
flex: 1 1 auto;
flex-direction: column;
padding: 2vw 2vw 2vw 4vw;
}
&__title {
overflow: hidden;
color: #000;
font-size: 1.3vw;
line-height: 1.6vw;
text-overflow: ellipsis;
white-space: nowrap;
font-weight: 600;
}
&__desc {
display: -webkit-box;
height: calc(1.5vw * 3);
margin-top: 1vw;
overflow: hidden;
color: #555;
font-size: 0.9vw;
text-indent: 2em;
line-height: 1.5vw;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
&__link {
display: flex;
align-items: center;
color: #3372fe;
font-size: 0.9vw;
line-height: 1.2vw;
margin-top: 2vw;
cursor: pointer;
}
&__arrow {
width: 0.3vw;
height: 0.3vw;
margin-left: 0.1vw;
border-top: 0.12vw solid currentColor;
border-right: 0.12vw solid currentColor;
transform: rotate(45deg);
}
&__image {
padding: 2vw 2vw 2vw 0;
display: block;
width: 30%;
height: calc(1.6vw + 1vw + calc(1.5vw * 3) + 2vw + 1.2vw);
flex: 0 0 30%;
object-fit: cover;
}
}
</style>

@ -264,7 +264,7 @@ export default {
.tabs { .tabs {
position: sticky; position: sticky;
top: 0; top: 0;
margin-top: calc(-6.405vw + 2px); margin-top: calc(-3px);
width: calc(100% - 2px); width: calc(100% - 2px);
height: calc(6.405vw - 2px); height: calc(6.405vw - 2px);
white-space: nowrap; white-space: nowrap;

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div class="title">CLASSIC CASE</div> <!-- <div class="title">CLASSIC CASE</div>-->
<div class="subTitle">典型案例</div> <div class="subTitle">典型案例</div>
<div class="content"> <div class="content">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
@ -115,8 +115,10 @@ export default {
}) })
}, },
getCaseInfo(e) { getCaseInfo(e) {
this.$router.push(`/productCenter/detail?type=${e.linkData[0]}&typeId=${e.linkData[1]}&id=${e.linkData[2]}`) console.log(e)
this.$router.push("test?id=" + e.configTypeId) this.$router.push(`/industrySolutions?id=${e.configTypeId}`)
// this.$router.push(`/productCenter/detail?type=${e.linkData[0]}&typeId=${e.linkData[1]}&id=${e.linkData[2]}`)
// this.$router.push("test?id=" + e.configTypeId)
}, },
learnMore() { learnMore() {
@ -130,7 +132,7 @@ export default {
.content { .content {
width: 65vw; width: 85vw;
margin: 2.1vw auto 0; margin: 2.1vw auto 0;
/deep/ .el-tabs__nav-wrap::after { /deep/ .el-tabs__nav-wrap::after {
@ -182,10 +184,12 @@ export default {
} }
.subTitle { .subTitle {
margin-top: 0.4vw; margin-top: 4.2vw;
//margin-top: 0.4vw;
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: 1.9vw; font-size: 2.2vw;
font-weight: 600;
letter-spacing: 2px; letter-spacing: 2px;
color: #000; color: #000;
} }

@ -77,7 +77,8 @@ export default {
} }
.newsCenter { .newsCenter {
width: 100%; width: 85vw;
margin: 2.1vw auto 0;
} }
.contactUs { .contactUs {

@ -1,20 +1,22 @@
<template> <template>
<div> <div>
<div class="title">NEWS CENTER</div> <!-- <div class="title">NEWS CENTER</div>-->
<div class="subTitle">新闻中心</div> <div class="subTitle">新闻中心</div>
<div class="newsList"> <div class="newsList">
<div v-for="i in data" class="newsItem"> <div v-for="i in data" :key="i.id" class="newsItem">
<div class="newsDay">{{ i.day }}</div> <div class="newsDay">{{ i.day }}</div>
<div class="newsTime">{{ i.time }}</div> <div class="newsTime">{{ i.month }}/{{ i.year }}</div>
<div class="newsTitle">{{ i.title }}</div> <div class="newsTitle">
<span class="newsTag" :style="tagStyle(i.type)">[{{ i.tag }}]</span>{{ i.title }}
</div>
<div class="newsImage"> <div class="newsImage">
<el-image <el-image
style="width: 100%;height: 100%" style="width: 100%;height: 100%"
:src="i.img" :src="i.cover"
fit="contain"></el-image> fit="contain"></el-image>
</div> </div>
<div class="newsInfo"> <div class="newsInfo">
{{ i.info }} {{ i.summary }}
</div> </div>
<div class="newsDetail" @click="viewDetail(i)"> ></div> <div class="newsDetail" @click="viewDetail(i)"> ></div>
</div> </div>
@ -26,19 +28,56 @@
</template> </template>
<script> <script>
import {listNews} from '@/api/news'
export default { export default {
name: 'ProductCenter', name: 'ProductCenter',
props: ['data'],
data() { data() {
return { return {
data: []
} }
}, },
mounted() {
this.getData()
},
methods: { methods: {
getData() {
listNews().then(res => {
const rows = res.rows || res.data?.rows || []
const list = rows.map(item => this.parseNewsJson(item)).filter(Boolean)
this.data = list
.filter(item => this.isHomeVisible(item.field1))
.sort((a, b) => Number(a.field2 || 0) - Number(b.field2 || 0))
})
},
parseNewsJson(item) {
try {
return {
id: item.id || item.newsId,
newsCode: item.newsCode,
...JSON.parse(item.newsJson || '{}')
}
} catch (e) {
return null
}
},
isHomeVisible(value) {
return value === true || value === 1 || value === '1'
},
tagStyle(type) {
const colorMap = {
1: '#3372FE',
2: '#18A058',
3: '#D03050'
}
return {
color: colorMap[type] || colorMap[1]
}
},
viewDetail(e) { viewDetail(e) {
this.$router.push({ this.$router.push({
path: '/newsDetail', path: '/newsDetail',
query: {id: e.id} query: {newsCode: e.newsCode}
}) })
} }
} }
@ -49,7 +88,7 @@ export default {
@import "~@/style.less"; @import "~@/style.less";
.content { .content {
width: 70vw; width: 850vw;
margin: 0 auto; margin: 0 auto;
} }
@ -63,23 +102,25 @@ export default {
} }
.subTitle { .subTitle {
margin-top: 0.4vw; margin-top: 4.2vw;
//margin-top: 0.4vw;
width: 100%; width: 100%;
text-align: center; font-size: 2.2vw;
font-size: 1.9vw; font-weight: 600;
letter-spacing: 2px; letter-spacing: 2px;
color: #000; color: #000;
} }
.newsList { .newsList {
margin-top: 3.9vw; margin-top: 3.9vw;
text-align: left;
.newsItem { .newsItem {
cursor: pointer; cursor: pointer;
transition: all 0.2s; transition: all 0.2s;
display: inline-block; display: inline-block;
width: 17vw; width: 17vw;
margin: 0 1vw; margin-right: 1vw;
background-color: #f8f8f8; background-color: #f8f8f8;
text-align: left; text-align: left;
padding: 1.5vw; padding: 1.5vw;

@ -0,0 +1,173 @@
<template>
<div>
<div class="title">NEWS CENTER</div>
<div class="subTitle">新闻中心</div>
<div class="newsList">
<div v-for="i in data" class="newsItem">
<div class="newsDay">{{ i.day }}</div>
<div class="newsTime">{{ i.time }}</div>
<div class="newsTitle">{{ i.title }}</div>
<div class="newsImage">
<el-image
style="width: 100%;height: 100%"
:src="i.img"
fit="contain"></el-image>
</div>
<div class="newsInfo">
{{ i.info }}
</div>
<div class="newsDetail" @click="viewDetail(i)"> ></div>
</div>
</div>
<div class="learnMore">
<el-button type="primary" plain>查看更多</el-button>
</div>
</div>
</template>
<script>
export default {
name: 'ProductCenter',
props: ['data'],
data() {
return {
}
},
methods: {
viewDetail(e) {
this.$router.push({
path: '/newsDetail',
query: {id: e.id}
})
}
}
}
</script>
<style lang="less" scoped>
@import "~@/style.less";
.content {
width: 70vw;
margin: 0 auto;
}
.title {
margin-top: 4.2vw;
width: 100%;
text-align: center;
font-size: 2.5vw;
letter-spacing: 2px;
color: #0003;
}
.subTitle {
margin-top: 0.4vw;
width: 100%;
text-align: center;
font-size: 1.9vw;
letter-spacing: 2px;
color: #000;
}
.newsList {
margin-top: 3.9vw;
.newsItem {
cursor: pointer;
transition: all 0.2s;
display: inline-block;
width: 17vw;
margin: 0 1vw;
background-color: #f8f8f8;
text-align: left;
padding: 1.5vw;
.newsDay {
margin-top: 0.7vw;
font-size: 2.9vw;
color: #000;
transition: all 0.2s;
}
.newsTime {
font-size: 1.1vw;
margin-top: 0.15vw;
color: #666;
transition: all 0.2s;
letter-spacing: 2px;
}
.newsTitle {
margin-top: 0.8vw;
font-size: 1.2vw;
color: #000;
transition: all 0.2s;
line-height: 1.9vw;
letter-spacing: 3px;
}
.newsImage {
margin-top: 1vw;
width: 100%;
height: 10.4vw;
}
.newsInfo {
margin-top: 0.85vw;
font-size: 0.9vw;
color: #666;
transition: all 0.2s;
line-height: 1.4vw;
}
.newsDetail {
margin-top: 1vw;
font-size: 1vw;
color: @standard-color;
transition: all 0.2s;
}
}
.newsItem:hover {
background-color: @standard-color;
.newsDay {
color: #fff;
}
.newsTime {
color: #fff;
}
.newsTitle {
color: #fff;
}
.newsInfo {
color: #fff;
}
.newsDetail {
color: #fff;
}
}
}
.learnMore {
margin-top: 3.2vw;
/deep/ .el-button {
background-color: #0000;
padding: 1vw 3vw;
border-color: @standard-color;
span {
font-size: 1.2vw;
letter-spacing: 3px;
color: @standard-color;
}
}
}
</style>

@ -17,7 +17,7 @@
<script> <script>
import {VueEditor} from "vue2-editor"; import {VueEditor} from "vue2-editor";
import {getHwWeb} from "@/api/hwWeb"; import {listNews} from "@/api/news";
export default { export default {
components: {VueEditor}, components: {VueEditor},
@ -36,11 +36,21 @@ export default {
}, },
methods: { methods: {
getData() { getData() {
getHwWeb(-1).then(res => { const newsCode = this.$route.query.newsCode
let data = JSON.parse(res?.data?.webJsonString || '{}')?.news listNews({newsCode}).then(res => {
this.newsData = data.find(e => e.id == this.$route.query.id)?.detail || '' const rows = res.rows || res.data?.rows || []
const current = rows.find(item => item.newsCode == newsCode) || rows[0]
this.newsData = this.parseNewsHtml(current)
}) })
}, },
parseNewsHtml(item) {
if (!item) return ''
try {
return JSON.parse(item.newsJson || '{}').html || ''
} catch (e) {
return ''
}
},
} }
}; };
</script> </script>

@ -0,0 +1,46 @@
<template>
<div>
<div id="quill-container" class="ql-container ql-snow">
<div style="text-align: left" class="ql-editor">
<div v-html="newsData"></div>
</div>
</div>
<vue-editor
v-show="false"
ref="editor"
v-model="newsData"
:useCustomImageHandler="true"/>
</div>
</template>
<script>
import {VueEditor} from "vue2-editor";
import {getHwWeb} from "@/api/hwWeb";
export default {
components: {VueEditor},
data: () => ({
newsData: ""
}),
watch: {
'$route': {
handler() {
this.getData()
},
deep: true,
immediate: true
}
},
methods: {
getData() {
getHwWeb(-1).then(res => {
let data = JSON.parse(res?.data?.webJsonString || '{}')?.news
this.newsData = data.find(e => e.id == this.$route.query.id)?.detail || ''
})
},
}
};
</script>

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div class="title">PRODUCT CENTER</div> <!-- <div class="title">PRODUCT CENTER</div>-->
<div class="subTitle">产品中心</div> <div class="subTitle">产品中心</div>
<div class="productList"> <div class="productList">
<template v-for="(i,k) in data"> <template v-for="(i,k) in data">
@ -117,7 +117,8 @@ export default {
} }
.subTitle { .subTitle {
margin-top: 0.4vw; margin-top: 4.2vw;
//margin-top: 0.4vw;
width: 100%; width: 100%;
text-align: center; text-align: center;
font-size: 1.9vw; font-size: 1.9vw;
@ -131,9 +132,9 @@ export default {
.productItem { .productItem {
display: inline-block; display: inline-block;
width: 14.5vw; width: 19vw;
height: 22vw; height: 22vw;
margin: 0 1vw; margin: 0 1.7vw;
box-shadow: 0 0 10px #0003; box-shadow: 0 0 10px #0003;
position: relative; position: relative;
margin-top: 2vw; margin-top: 2vw;

@ -364,9 +364,9 @@ export default {
.tabs { .tabs {
position: sticky; position: sticky;
top: 0; top: 0;
margin-top: calc(-6.405vw + 2px); margin-top: calc(-3px);
width: calc(100% - 2px); width: calc(100% - 2px);
height: calc(6.405vw - 2px); height: calc(4.405vw - 2px);
white-space: nowrap; white-space: nowrap;
//background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10)); //background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
background: linear-gradient(to bottom, #e7efff, #f6faff); background: linear-gradient(to bottom, #e7efff, #f6faff);
@ -387,7 +387,7 @@ export default {
.tab { .tab {
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
line-height: 6.2vw; line-height: 4.2vw;
letter-spacing: 3px; letter-spacing: 3px;
font-size: 1.6vw; font-size: 1.6vw;
position: relative; position: relative;
@ -413,6 +413,7 @@ export default {
color: @standard-color; color: @standard-color;
font-weight: 700; font-weight: 700;
border: 1px solid #fff; border: 1px solid #fff;
border-bottom: 1px solid #3372ff;
box-shadow: 0 0 3px #0002; box-shadow: 0 0 3px #0002;
} }
} }

@ -9,7 +9,8 @@
<ContactUs class="contactUs"/> <ContactUs class="contactUs"/>
<Copyright class="copyright"/> <Copyright class="copyright"/>
</div> </div>
<div v-if="$route.query.id !== '1'" class="component" v-for="(i,k) in components"> <div :style="{backgroundColor: (k % 2 ===0 ? '#fff':'#F5F8FE'),display: 'flow-root'}"
v-if="$route.query.id !== '1'" class="component" v-for="(i,k) in components">
<Carousel v-if="i.type === 'carousel'" :data="i.value"/> <Carousel v-if="i.type === 'carousel'" :data="i.value"/>
<El1 v-if="i.type === 1" :data="i.value"/> <El1 v-if="i.type === 1" :data="i.value"/>
<El2 v-if="i.type === 2" :data="i.value"/> <El2 v-if="i.type === 2" :data="i.value"/>
@ -123,7 +124,7 @@ export default {
<style scoped lang="less"> <style scoped lang="less">
.container { .container {
width: 90%; width: 100%;
text-align: left; text-align: left;
margin: 0 auto; margin: 0 auto;
} }

@ -10,7 +10,8 @@
<div class="tabs"> <div class="tabs">
<div class="content"> <div class="content">
<div @click="checkTabs(i,k)" <div @click="checkTabs(i,k)"
style="white-space: nowrap;overflow: auto" style="white-space: nowrap;overflow: auto;text-align: center"
:style="{width:`calc(${100 / tabsData.length}% - 2vw)`}"
:class="`tab ${tabsActive == i.webMenuId ? 'active':''}`" v-for="(i,k) in tabsData"> :class="`tab ${tabsActive == i.webMenuId ? 'active':''}`" v-for="(i,k) in tabsData">
{{ i.webMenuName }} {{ i.webMenuName }}
</div> </div>
@ -183,7 +184,8 @@ export default {
.tabs { .tabs {
position: sticky; position: sticky;
top: 0; top: 0;
margin-top: calc(-6.405vw + 2px); //margin-top: calc(-6.405vw + 2px);
margin-top: calc(-3px);
width: calc(100% - 2px); width: calc(100% - 2px);
height: calc(6.405vw - 2px); height: calc(6.405vw - 2px);
white-space: nowrap; white-space: nowrap;
@ -197,7 +199,7 @@ export default {
.content { .content {
width: 100%; width: 100%;
position: relative; position: relative;
left: 19%; //left: 19%;
bottom: 0; bottom: 0;
text-align: left; text-align: left;
//transform: translateX(-50%); //transform: translateX(-50%);
@ -231,6 +233,7 @@ export default {
font-weight: 700; font-weight: 700;
border: 1px solid #fff; border: 1px solid #fff;
box-shadow: 0 0 3px #0002; box-shadow: 0 0 3px #0002;
border-bottom: 1px solid #3372ff;
} }
} }
} }

@ -1,5 +1,5 @@
<template> <template>
<div> <div class="probg">
<div class="title"> <div class="title">
<span> <span>
{{ data.name }} {{ data.name }}
@ -98,7 +98,13 @@ export default {
color: #0003; color: #0003;
} }
.probg {
//background-color: fade(@standard-color, 10);
background: #EFF4FF;
}
.tabs { .tabs {
//background-color: fade(@standard-color, 10);
text-align: left; text-align: left;
margin-top: 2.3vw; margin-top: 2.3vw;
@ -108,7 +114,7 @@ export default {
/deep/ .el-tabs__content { /deep/ .el-tabs__content {
padding: 0 19vw; padding: 0 19vw;
background-color: fade(@standard-color, 10); //background-color: fade(@standard-color, 10);
} }
/deep/ .el-tabs__nav-wrap::after { /deep/ .el-tabs__nav-wrap::after {

Loading…
Cancel
Save