修改关于海威

master
suixy 6 days ago
parent fea8545161
commit 010171046f

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@ -0,0 +1,5 @@
const files = require.context('./', false, /\.(png|jpe?g|gif|webp|svg)$/)
const logos = files.keys().map(key => files(key))
export default logos

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,248 @@
<template>
<div ref="viewport" class="infinite-image-scroller">
<div
ref="track"
class="infinite-image-scroller__track"
:style="trackStyle"
@mouseenter="handleMouseEnter"
@mouseleave="handleMouseLeave"
>
<div
v-for="groupIndex in repeatCount"
:key="groupIndex"
class="infinite-image-scroller__group"
>
<div
v-for="(image, index) in images"
:key="groupIndex + '-' + index"
class="infinite-image-scroller__item"
>
<img
class="infinite-image-scroller__image"
:src="getImageSrc(image)"
:alt="getImageAlt(image, index)"
draggable="false"
@load="updateSize"
>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'InfiniteImageScroller',
props: {
images: {
type: Array,
required: true
},
initialOffset: {
type: Number,
default: 0
},
direction: {
type: String,
default: 'rtl',
validator: function (value) {
return [
'ltr',
'rtl'
].indexOf(value) !== -1
}
},
speed: {
type: Number,
default: 40
},
gap: {
type: [
Number,
String
],
default: '1vw'
},
imageWidth: {
type: Number,
default: 160
},
imageHeight: {
type: Number,
default: 100
},
pauseOnHover: {
type: Boolean,
default: false
}
},
data: function () {
return {
distance: 0,
groupWidth: 0,
viewportWidth: 0,
animationFrameId: null,
lastTime: 0,
isPaused: false
}
},
computed: {
repeatCount: function () {
if (!this.groupWidth || !this.viewportWidth) {
return 3
}
return Math.max(3, Math.ceil(this.viewportWidth / this.groupWidth) + 2)
},
trackStyle: function () {
return {
transform: 'translate3d(' + this.translateX + 'px, 0, 0)',
'--scroller-gap': this.formatSize(this.gap),
'--scroller-image-width': this.imageWidth,
'--scroller-image-height': this.imageHeight
}
},
translateX: function () {
if (!this.groupWidth) {
return 0
}
var phase = this.getPositiveModulo(this.initialOffset + this.distance, this.groupWidth)
return this.direction === 'ltr' ? phase - this.groupWidth : -phase
}
},
watch: {
images: function () {
this.$nextTick(this.updateSize)
},
gap: function () {
this.$nextTick(this.updateSize)
},
imageWidth: function () {
this.$nextTick(this.updateSize)
}
},
mounted: function () {
this.$nextTick(function () {
this.updateSize()
this.startAnimation()
})
window.addEventListener('resize', this.updateSize)
},
beforeDestroy: function () {
this.stopAnimation()
window.removeEventListener('resize', this.updateSize)
},
methods: {
getImageSrc: function (image) {
return typeof image === 'string' ? image : image.src
},
getImageAlt: function (image, index) {
if (typeof image === 'string') {
return 'image-' + (index + 1)
}
return image.alt || 'image-' + (index + 1)
},
getPositiveModulo: function (value, base) {
return ((value % base) + base) % base
},
formatSize: function (value) {
return typeof value === 'number' ? value + 'px' : value
},
updateSize: function () {
var viewport = this.$refs.viewport
var track = this.$refs.track
this.viewportWidth = viewport ? viewport.offsetWidth : 0
if (!track || !track.children.length) {
this.groupWidth = 0
return
}
this.groupWidth = track.children[0].offsetWidth
},
startAnimation: function () {
this.stopAnimation()
this.lastTime = performance.now()
this.animationFrameId = requestAnimationFrame(this.animate)
},
stopAnimation: function () {
if (this.animationFrameId) {
cancelAnimationFrame(this.animationFrameId)
this.animationFrameId = null
}
},
animate: function (time) {
var delta = time - this.lastTime
this.lastTime = time
if (!this.isPaused && this.groupWidth) {
this.distance += this.speed * delta / 1000
}
this.animationFrameId = requestAnimationFrame(this.animate)
},
handleMouseEnter: function () {
if (this.pauseOnHover) {
this.isPaused = true
}
},
handleMouseLeave: function () {
this.isPaused = false
}
}
}
</script>
<style lang="less" scoped>
.infinite-image-scroller {
width: 100%;
overflow: hidden;
padding: 14px 0;
&__track {
display: flex;
width: max-content;
will-change: transform;
}
&__group {
display: flex;
flex: 0 0 auto;
gap: var(--scroller-gap);
padding-right: var(--scroller-gap);
}
&__item {
display: flex;
align-items: center;
justify-content: center;
width: calc(var(--scroller-image-width) - 2px);
height: calc(var(--scroller-image-height) - 2px);
flex: 0 0 auto;
box-shadow: 0 0 0 1px #e5e5e5, 0 2px 2px rgba(0, 0, 0, 0);
overflow: hidden;
}
&__image {
display: block;
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
user-select: none;
}
}
</style>

@ -1,16 +1,18 @@
import axios from 'axios'; import axios from 'axios';
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'; axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
const TokenKey = 'Admin-Token' const TokenKey = 'Admin-Token'
const service = axios.create({ const service = axios.create({
baseURL: '/prod-api', baseURL: '/prod-api', // baseURL: 'http://124.223.15.102:8888',
// baseURL: 'http://124.223.15.102:8888',
timeout: 10000000, timeout: 10000000,
}); });
function getToken() { function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)
} }
service.interceptors.response.use((res) => { service.interceptors.response.use((res) => {
return res.data; return res.data;
}); });
@ -20,12 +22,17 @@ service.interceptors.request.use(config => {
}, error => { }, error => {
}) })
function request({ method = 'get', url, data = {}, params = {} }) { function request({
method = 'get',
url,
data = {},
params = {}
}) {
return service({ return service({
method, method,
url, url,
data, data,
params, params,
}); });
} }

@ -1,30 +1,45 @@
<template> <template>
<div> <div style="background-color: #F7FBFF">
<TitleGroup> <TitleGroup>
<template slot="title">COMPANY PROFILE</template> <template slot="subTitle">
<template slot="subTitle">{{ data.title }}</template> <span class="subTitle">
媒体中心
</span>
</template>
</TitleGroup> </TitleGroup>
<div class="divider"></div>
<div class="content"> <div class="content">
<div v-for="(i,k) in data.list" class="infoCard"> <div>
<div class="image"> <div class="info-image-card" v-for="(i,k) in data.list">
<el-image :src="media1" alt="" style="width: 100%;height: 100%"> <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>
</el-image> <div class="info-image-card__content">
</div> <div class="info-image-card__title">
<div class="itemTitle" @click="toDetail(i)"> <span style="color: #3372FE">
{{ i.title }} [央视镜头]
</div> </span>
<div class="itemMaster"> 海威物联技术支持的"智慧物流"
<span> </div>
{{ i.master }} <div class="info-image-card__desc">
</span> 11月26-272024智能物流装备供应链集采大会监第十二次青浦圆桌会议在南陵举办本次大会以"向新而行、以质致远、绿色发展、共创未来"为主题200余家智能物流装备供应链企业参加共同探讨智能物流装备领城...
<span style="color: #999999;"> </div>
{{ i.time }} <div class="info-image-card__link">
</span> <span>查看</span>
</div> <span class="info-image-card__arrow"></span>
<div class="itemValue"> </div>
{{ i.value }} </div>
<img
class="info-image-card__image"
:src="media1"
:alt="123"
draggable="false"
>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -181,4 +196,140 @@ export default {
text-overflow: ellipsis; /* 省略号 */ 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: -1vw;
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.25;
text-overflow: ellipsis;
white-space: nowrap;
}
&__desc {
display: -webkit-box;
min-height: calc(0.8vw * 1.5 * 3);
margin-top: 1vw;
overflow: hidden;
color: #555;
font-size: 0.9vw;
text-indent: 2em;
line-height: 1.5;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
&__link {
display: flex;
align-items: center;
color: #3372fe;
font-size: 0.9vw;
line-height: 1;
margin-top: 2vw;
cursor: pointer;
}
&__arrow {
width: 0.45vw;
height: 0.45vw;
margin-left: 0.35vw;
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: 100%;
flex: 0 0 30%;
object-fit: cover;
}
}
</style> </style>

@ -1,10 +1,14 @@
<template> <template>
<div> <div>
<TitleGroup> <TitleGroup>
<template slot="title">COMPANY PROFILE</template> <template slot="subTitle">
<template slot="subTitle">{{ data.title }}</template> <span class="subTitle">
合作伙伴
</span>
</template>
</TitleGroup> </TitleGroup>
<div class="content"> <div class="divider"></div>
<div class="content" v-if="false">
<div class="right"> <div class="right">
<el-image <el-image
style="width: 100%;height: 100%" style="width: 100%;height: 100%"
@ -12,6 +16,18 @@
fit="contain"></el-image> fit="contain"></el-image>
</div> </div>
</div> </div>
<div style="margin-top: 3vw;">
<InfiniteImageScroller
v-for="(i,k) in images"
:images="i"
:initial-offset="80"
:direction="k % 2 === 0 ? 'rtl':'ltr'"
:speed="40"
:gap="16"
image-width="10vw"
image-height="3.6vw"
/>
</div>
</div> </div>
</template> </template>
@ -19,16 +35,33 @@
import TitleGroup from "@/components/TitleGroup.vue"; import TitleGroup from "@/components/TitleGroup.vue";
import partner from '@/assets/image/partner.png' import partner from '@/assets/image/partner.png'
import InfiniteImageScroller from '@/components/InfiniteImageScroller.vue'
import logos from '@/assets/image/logos'
export default { export default {
name: 'PlatformIntroduction', name: 'PlatformIntroduction',
props: ['data'], props: ['data'],
components: { components: {
TitleGroup TitleGroup,
InfiniteImageScroller
}, },
data() { data() {
return { return {
partner partner,
images: logos.reduce((groups, logo, index) => {
const groupIndex = Math.floor(index / 10)
if (!groups[groupIndex]) {
groups[groupIndex] = []
}
groups[groupIndex].push({
src: logo,
alt: '',
})
return groups
}, [])
} }
}, },
mounted() { mounted() {
@ -98,4 +131,18 @@ export default {
height: 100%; height: 100%;
} }
} }
.subTitle {
font-size: 2.4vw;
font-weight: 600;
}
.divider {
width: 5vw;
height: 4px;
background: #3372FE;
border-radius: 999px;
margin: 10px auto;
}
</style> </style>

@ -1,22 +1,42 @@
<template> <template>
<div> <div>
<TitleGroup> <TitleGroup>
<template slot="title">COMPANY PROFILE</template> <template slot="subTitle">
<template slot="subTitle">{{ data.title1 }}</template> <span class="subTitle">
公司概况
</span>
</template>
</TitleGroup> </TitleGroup>
<div class="content"> <div class="divider"></div>
<div class="left"> <div class="combo" v-if="true">
<div class="contentTitle">{{ data.title }}</div> <div class="combo-left">
<div class="contentSubTitle">HIGHWAY IOT</div> <div class="title">海威物联</div>
<div class="contentInfo">
{{ data.value }} <p class="intro">
青岛海威物联科技有限公司,致力于工业物联网软硬件系统研发生产和销售提供感知互联的工业化联网整体解决方案
</p>
<div class="item">
作为轮胎用RFID电子标签相关4项ISO国际标准与国家标准的制定者,公司具备全球最先进的RFID智能轮胎整体解决方案包括系列化轮胎用RFID电子标签产品RFID轮胎生产配套自动化设备RFID轮胎应用信息化管理系统及数据平台同时公司大力推进基于RFID传感边缘采集计舞数据传输等技术的工业互联网解决方案在轮胎产业链中的深入应用为轮胎生产管理仓储物流销售跟踪车队管理轮胎翻新等环节提供一站式解决方案所有核心技术及产品均具有自主知识产权
</div> </div>
<div class="item">
目前
公司为新能源锂电快递物流橡胶制品畜牧属宰轨道交通化工家电制造等行业打造工业物联网整体解决方案,以定制RFID标签及读写设备传感器及智能终端物联数据平台三个产品方向为支撑提供数据标识信息流传动物联网整合及人环全方位数据自动采集分析与智能化管控方案:促进工业领域产品质量和生产效率全面提升助力企业推进产业升级提升数字化精细化智能化管理水平
</div>
</div> </div>
<div class="right">
<el-image <div class="combo-right">
style="width: 100%;height: 100%" <img :src="img1" alt="">
:src="data.icon" </div>
fit="contain"></el-image> </div>
<div class="info">
<div class="text">
公司承担国家橡胶与轮胎工程技术研究中心RFID研究所;被认定为国家级专情特新"小巨人"企业国家高新技术企业青岛市技术创新中心科技型中小企业青岛市雏鹰企业;通过ISO9001:2015质量管理体系认证IS014001:2015环境体系认证1S045001:2018职业健康安全管理体系认证;主持制定轮胎用RFID电子标签四项I50国际标准四项国家标准
</div>
<div class="text">
公司承担山东省科技型中小企业创新能力提升工程项目青岛市第四批"人才特区"人才计划等各级政府项目;主要研发成果获技术发明一等奖专利金奖等多项省部级科学技术奖励
</div> </div>
</div> </div>
</div> </div>
@ -25,84 +45,129 @@
<script> <script>
import TitleGroup from "@/components/TitleGroup"; import TitleGroup from "@/components/TitleGroup";
import {getAboutUsInfoDetails} from "@/api/contactUs"; import {getAboutUsInfoDetails} from "@/api/contactUs";
import img1 from '@/assets/image/contactUs/img1.png'
export default { export default {
name: 'PlatformIntroduction', name: 'PlatformIntroduction',
props:['data'], props: ['data'],
components: { components: {
TitleGroup TitleGroup
}, },
data() { data() {
return { return {
img1,
} }
}, },
mounted() { mounted() {
}, },
methods: { methods: {}
}
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import "~@/style.less"; @import "~@/style.less";
.content {
display: inline-block; .combo {
display: flex;
align-items: stretch;
width: 62vw; width: 62vw;
//height: 20.1vw; margin: 0 auto;
border: 1px solid #ccc3; text-align: left;
margin-top: 3.7vw;
margin-bottom: 5.2vw;
vertical-align: top;
.left { &-left {
vertical-align: top; width: 60%;
display: inline-block; padding: 2vw;
width: 65%; background: linear-gradient(to bottom, #fff, #F5FAFF);
//height: 100%; box-shadow: -5px 0 15px rgba(0, 0, 0, 0.02),
position: relative; 0 -5px 15px rgba(0, 0, 0, 0.02),
background-color: #ffffff; 0 5px 15px rgba(0, 0, 0, 0.05);
box-sizing: border-box;
.contentTitle { .title {
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; text-align: left;
//position: absolute; font-size: 1.6vw;
margin-top: 7vw; font-weight: 600;
width: 78%; color: #3074FF;
margin-left: 50%; }
//height: 11vw;
overflow: hidden; .intro {
-webkit-transform: translateX(-50%); margin: 1.5vw 0 1.5vw;
transform: translateX(-50%); color: #333;
letter-spacing: 2.5px; line-height: 1.7;
font-size: 0.8vw; text-indent: 2em;
line-height: 1.62vw; font-size: 0.9vw;
color: #666; letter-spacing: 0.1vw;
}
.item {
background: #fff;
color: #333;
padding: 1vw;
margin-top: 1vw;
text-indent: 2em;
font-size: 0.9vw;
line-height: 1.8;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
box-sizing: border-box;
letter-spacing: 0.1vw;
} }
} }
.right { &-right {
display: inline-block; width: 40%;
width: 35%;
margin-top: 7vw; img {
height: 100%; width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
} }
} }
.subTitle {
font-size: 2.4vw;
font-weight: 600;
}
.divider {
width: 5vw;
height: 4px;
background: #3372FE;
border-radius: 999px;
margin: 10px auto;
}
.info {
margin-top: 5vw;
width: 100%;
height: 17.87vw;
background-image: url("!@/assets/image/contactUs/bg1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
padding-left: 18vw;
box-sizing: border-box;
.text {
width: 62%;
text-indent: 2em;
color: #fff;
font-size: 0.9vw;
line-height: 1.8vw;
text-align: left;
&:first-child {
margin-bottom: 1vw;
}
}
}
</style> </style>

@ -1,7 +1,13 @@
<template> <template>
<div> <div>
<div class="title">ENTERPRISE QUALIFICATION</div>
<div class="subTitle">{{ data.title }}</div> <TitleGroup>
<template slot="subTitle">
<span class="subTitle">
合作伙伴
</span>
</template>
</TitleGroup>
<div class="bg"> <div class="bg">
<div class="list1" ref="list1"> <div class="list1" ref="list1">
<div class="item" v-for="i in data.list1">{{ i }}</div> <div class="item" v-for="i in data.list1">{{ i }}</div>
@ -31,10 +37,12 @@
<script> <script>
import Swiper from 'swiper'; import Swiper from 'swiper';
import {Navigation, Autoplay} from 'swiper/modules' import {Navigation, Autoplay} from 'swiper/modules'
import TitleGroup from "@/components/TitleGroup.vue";
Swiper.use([Navigation, Autoplay]) Swiper.use([Navigation, Autoplay])
export default { export default {
name: 'ProductCenter', name: 'ProductCenter',
components: {TitleGroup},
props: ['data'], props: ['data'],
data() { data() {
return { return {
@ -144,4 +152,9 @@ export default {
.swiper-slide { .swiper-slide {
height: 30vw; height: 30vw;
} }
.subTitle {
font-size: 2.4vw;
font-weight: 600;
}
</style> </style>

@ -1,7 +1,8 @@
<template> <template>
<div> <div>
<div class="banner"> <div class="banner">
<Carousel class="carousel" :bannerList="bannerList" :indicator-position="'none'"/> <!-- <Carousel class="carousel" :bannerList="bannerList" :indicator-position="'none'"/>-->
<el-image class="carousel" :src="bannerImg" alt=""/>
</div> </div>
<div class="tabs"> <div class="tabs">
<div class="content"> <div class="content">
@ -14,24 +15,11 @@
</div> </div>
<div v-for="i in data.tabsList" v-if="true"> <div v-for="i in data.tabsList" v-if="true">
<CompanyProfile id="item3" class="companyProfile" v-if="i.type === 2" :data="i.data"/> <CompanyProfile id="item3" class="companyProfile" v-if="i.type === 2" :data="i.data"/>
<EnterpriseQualification id="item10" class="enterpriseQualification" v-if="i.type === 3"
:data="i.data"/>
<Partner id="item8" class="companyProfile" v-if="i.type === 4" :data="i.data"/> <Partner id="item8" class="companyProfile" v-if="i.type === 4" :data="i.data"/>
<MediaCenter id="item9" class="companyProfile" v-if="i.type === 5" :data="i.data"/> <MediaCenter id="item9" class="companyProfile" v-if="i.type === 5" :data="i.data"/>
<EnterpriseQualification id="item10" class="enterpriseQualification" v-if="i.type === 3"
:data="i.data"/>
</div> </div>
<div v-if="false">
<CompanyProfile v-if="itemId === 3" id="item3" class="companyProfile" :data="data.tabsList[0].data"/>
<Partner id="item8" v-if="itemId === 8" class="companyProfile" :data="data.tabsList[1].data"/>
<MediaCenter id="item9" v-if="itemId === 9" class="companyProfile" :data="data.tabsList[2].data"/>
<EnterpriseQualification v-if="itemId === 10" id="item10" class="enterpriseQualification"
:data="data.tabsList[3].data"/>
</div>
<!-- <div v-for="i in tabsList">-->
<!-- <CompanyProfile class="companyProfile" v-if="i.type === '2'" :data="i.data"/>-->
<!-- <EnterpriseQualification class="enterpriseQualification" v-if="i.aboutUsInfoType === '3'"-->
<!-- :aboutUsInfoId="i.aboutUsInfoId"/>-->
<!-- <TeamStyle class="teamStyle" v-if="i.aboutUsInfoType === '4'" :aboutUsInfoId="i.aboutUsInfoId"/>-->
<!-- </div>-->
<ContactUs class="contactUs"/> <ContactUs class="contactUs"/>
<Copyright class="copyright"/> <Copyright class="copyright"/>
</div> </div>
@ -49,6 +37,8 @@ import Copyright from '@/components/copyright'
import {getAboutUsInfo} from "@/api/contactUs"; import {getAboutUsInfo} from "@/api/contactUs";
import Carousel from "@/views/index/carousel.vue"; import Carousel from "@/views/index/carousel.vue";
import bannerImg from '@/assets/image/contactUs/banner.png'
export default { export default {
name: 'ContactUs1', name: 'ContactUs1',
components: { components: {
@ -69,17 +59,8 @@ export default {
// portalConfigTitle: '', // portalConfigTitle: '',
// portalConfigDesc: 'INDUSTRIAL IOT CUSTOMIZATION SOLUTION PROVIDER' // portalConfigDesc: 'INDUSTRIAL IOT CUSTOMIZATION SOLUTION PROVIDER'
}, },
{
portalConfigPic: 'http://www.highwayiot.com/home/2/6/3rrzpl/resource/2018/10/26/5bd2d7716deb5.jpg',
// portalConfigTitle: '',
// portalConfigDesc: 'INDUSTRIAL IOT CUSTOMIZATION SOLUTION PROVIDER'
},
{
portalConfigPic: 'http://www.highwayiot.com/home/2/6/3rrzpl/resource/2018/10/23/5bcedfa35afa1.jpg',
// portalConfigTitle: '',
// portalConfigDesc: 'INDUSTRIAL IOT CUSTOMIZATION SOLUTION PROVIDER'
},
], ],
bannerImg,
banner: '', banner: '',
bannerTitle: '', bannerTitle: '',
tabsActive: 0, tabsActive: 0,
@ -95,7 +76,7 @@ export default {
data: { data: {
title1: '公司概况', title1: '公司概况',
title: '海威物联', title: '海威物联',
value: '青岛海威物联科技有限公司,致力于工业物联网软硬件系统研发、生产和销售,提供感知互联的工业物联网整体解决方案。 作为轮胎用RFID电子标签相关4项ISO国际标准与国家标准的制定者公司具备全球最先进的RFID智能轮胎整体解决方案包括系列化轮胎用RFID电子标签产品、RFID轮胎生产配套自动化设备、RFID轮胎应用信息化管理系统及数据平台。同时公司大力推进基于RFID、传感、边缘采集计算、数据传输等技术的工业互联网解决方案在轮胎产业链中的深入应用为轮胎生产管理、仓储物流、销售跟踪、车队管理、轮胎翻新等环节提供一站式解决方案。所有核心技术及产品均具有自主知识产权。 目前公司为新能源锂电、快递物流、橡胶制品、畜牧屠宰、轨道交通、化工、家电制造等行业打造工业物联网整体解决方案以定制RFID标签及读写设备、传感器及智能终端、物联数据平台三个产品方向为支撑提供数据标识、信息流传动、物联网整合及人、机、料、法、环全方位数据自动采集、分析与智能化管控方案促进工业领域产品质量和生产效率全面提升。助力企业推进产业升级提升数字化、精细化、智能化管理水平。 公司承担国家橡胶与轮胎工程技术研究中心RFID研究所被认定为国家级专精特新“小巨人”企业、国家高新技术企业、青岛市技术创新中心、科技型中小企业、青岛市雏鹰企业通过ISO 9001:2015质量管理体系认证、ISO 14001:2015环境体系认证、IS045001:2018职业健康安全管理体系认证通过信息系统建设和服务能力评估CS2级主持制定轮胎用RFID电子标签四项ISO国际标准、四项国家标准。 公司承担山东省科技型中小企业创新能力提升工程项目、青岛市第四批“人才特区”人才计划等各级政府项目;主要研发成果获技术发明一等奖、专利金奖等多项省部级科学技术奖励。', value: '青岛海威物联科技有限公司,致力于工业物联网软硬件系统研发、生产和销售,提供感知互联的工业物联网整体解决方案。 作为轮胎用RFID电子标签相关4项ISO国际标准与国家标准的制定者公司具备全球最先进的RFID智能轮胎整体解决方案包括系列化轮胎用RFID电子标签产品、RFID轮胎生产配套自动化设备、RFID轮胎应用信息化管理系统及数据平台。同时公司大力推进基于RFID、传感、边缘采集计算、数据传输等技术的工业互联网解决方案在轮胎产业链中的深入应用为轮胎生产管理、仓储物流、销售跟踪、车队管理、轮胎翻新等环节提供一站式解决方案。',
icon: 'http://www.highwayiot.com/home/2/6/3rrzpl/resource/2018/10/23/5bcedfa35afa1.jpg' icon: 'http://www.highwayiot.com/home/2/6/3rrzpl/resource/2018/10/23/5bcedfa35afa1.jpg'
} }
}, },
@ -196,7 +177,10 @@ export default {
checkTabs(e, k) { checkTabs(e, k) {
this.tabsActive = k this.tabsActive = k
this.itemId = e.id this.itemId = e.id
document.querySelector('#item' + e.id).scrollIntoView(); // 使JavaScript document.querySelector('#item' + e.id).scrollIntoView({
behavior: 'smooth',
block: 'start'
})
}, },
getData() { getData() {
getAboutUsInfo().then(e => { getAboutUsInfo().then(e => {
@ -215,12 +199,12 @@ export default {
.carousel { .carousel {
width: 100%; width: 100%;
height: 35.5vw; height: 35.42vw;
} }
.banner { .banner {
width: 100%; width: 100%;
height: 35.5vw; height: 35.42vw;
position: relative; position: relative;
.bannerInfo { .bannerInfo {
@ -236,67 +220,68 @@ export default {
word-break: break-all; 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 { .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);
position: sticky; position: sticky;
top: 0; top: 0;
margin-top: calc(-6.405vw + 2px);
width: calc(100% - 2px);
height: calc(6.405vw - 2px);
white-space: nowrap;
//background: linear-gradient(to bottom, fade(@standard-color, 10), fade(#fff, 10));
background: linear-gradient(to bottom, #e7efff, #f6faff);
//backdrop-filter: saturate(50%) blur(4px);
border: 1px solid #fff;
z-index: 9999; z-index: 9999;
box-shadow: 0 10px 15px -10px rgba(0, 0, 0, 0.1);
.content { .content {
width: 100%; width: 100%;
position: relative; position: relative;
left: 50%; left: 19%;
bottom: 0; bottom: 0;
transform: translateX(-50%); text-align: left;
//transform: translateX(-50%);
.tab { .tab {
cursor: pointer;
display: inline-block; display: inline-block;
line-height: 6.2vw; line-height: 6.2vw;
letter-spacing: 3px; letter-spacing: 3px;
font-size: 1vw; font-size: 1.6vw;
position: relative; position: relative;
padding: 0 2vw; padding: 0 3vw;
&:last-child::after { //&:last-child::after {
display: none; // display: none;
} //}
//
&::after { //&::after {
content: ''; // content: '';
position: absolute; // position: absolute;
right: 0; // right: 0;
width: 1px; // width: 1px;
height: 1vw; // height: 1vw;
background-color: #409eff; // background-color: #409eff;
top: calc(50% - 0.5vw); // top: calc(50% - 0.5vw);
} //}
} }
.tab.active { .tab.active {
color: @standard-color; color: @standard-color;
//border: 1px solid #fff6; font-weight: 700;
//box-shadow: 0 0 3px #0002; border: 1px solid #fff;
box-shadow: 0 0 3px #0002;
} }
} }
} }
#item3, #item8, #item9, #item10 {
scroll-margin-top: calc(6.405vw - 2px);
}
.companyProfile { .companyProfile {
width: 100%; width: 100%;
} }

@ -141,7 +141,24 @@ export default {
letter-spacing: 3px; letter-spacing: 3px;
padding: 0 0.5vw; padding: 0 0.5vw;
height: 2.9vw; height: 2.9vw;
line-height: 2.9vw;
font-size: 1.6vw; font-size: 1.6vw;
position: relative;
&::before {
content: '';
position: absolute;
width: 1px;
height: 1.6vw;
top: 50%;
right: 0;
transform: translateY(-50%);
background-color: #409eff;
}
&:last-child::before {
display: none;
}
} }
/deep/ .el-tabs__item.is-active { /deep/ .el-tabs__item.is-active {

@ -1,6 +1,17 @@
<template> <template>
<div style="text-align: left"> <div>
<div v-html="newsData"></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> </div>
</template> </template>
@ -28,7 +39,6 @@ export default {
getHwWeb(-1).then(res => { getHwWeb(-1).then(res => {
let data = JSON.parse(res?.data?.webJsonString || '{}')?.news let data = JSON.parse(res?.data?.webJsonString || '{}')?.news
this.newsData = data.find(e => e.id == this.$route.query.id)?.detail || '' this.newsData = data.find(e => e.id == this.$route.query.id)?.detail || ''
console.log(data)
}) })
}, },
} }

@ -29,6 +29,7 @@
<EditEl15 v-if="i.type === 15" :data="i.value"/> <EditEl15 v-if="i.type === 15" :data="i.value"/>
<EditEl16 v-if="i.type === 16" :data="i.value"/> <EditEl16 v-if="i.type === 16" :data="i.value"/>
<EditEl17 v-if="i.type === 17" :data="i.value"/> <EditEl17 v-if="i.type === 17" :data="i.value"/>
</div> </div>
</div> </div>

@ -45,10 +45,10 @@
</section> </section>
<!-- 投递按钮 --> <!-- 投递按钮 -->
<div class="action-bar"> <!-- <div class="action-bar">-->
<button class="apply-btn">立即申请</button> <!-- <button class="apply-btn">立即申请</button>-->
<button class="share-btn">分享职位</button> <!-- <button class="share-btn">分享职位</button>-->
</div> <!-- </div>-->
</main> </main>
</div> </div>

@ -8,7 +8,7 @@ module.exports = defineConfig({
'/prod-api': { '/prod-api': {
// target: `http://175.27.215.92:8899/prod-api`, // target: `http://175.27.215.92:8899/prod-api`,
// target: `http://192.168.137.1:9081`, // target: `http://192.168.137.1:9081`,
target: `http://1.13.177.47:8899/prod-api`, target: `http://1.13.177.47:6699/prod-api`,
// target: `http://192.168.100.100:9081`, // target: `http://192.168.100.100:9081`,
changeOrigin: true, pathRewrite: { changeOrigin: true, pathRewrite: {
["^" + '/prod-api']: "", ["^" + '/prod-api']: "",

Loading…
Cancel
Save