Commit 1737f143 authored by zhanglw's avatar zhanglw

优质供应商

parent dceff943
src/assets/home_images/top_area.png

79.6 KB | W: | H:

src/assets/home_images/top_area.png

46.9 KB | W: | H:

src/assets/home_images/top_area.png
src/assets/home_images/top_area.png
src/assets/home_images/top_area.png
src/assets/home_images/top_area.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -9,7 +9,7 @@ import { filterAsyncRouter } from '@/store/modules/permission'
NProgress.configure({ showSpinner: false })// NProgress Configuration
const whiteList = ['/login', '/backlogin', '/home', '/product']// 免登录路由白名单
const whiteList = ['/login', '/backlogin', '/home', '/product', '/supplier', '/project', '/course']// 免登录路由白名单
const backUrlList = ['/dashboard', '/system', '/monitor', '/sys-tools', '/backstage']// 后台路由
router.beforeEach((to, from, next) => {
......
......@@ -52,6 +52,30 @@ export const constantRouterMap = [
},
hidden: true
},
{
path: '/supplier',
meta: { title: '优质供应商', noCache: true },
component: (resolve) => {
return require(['@/views/homepage/supplier/index'], resolve)
},
hidden: true
},
{
path: '/project',
meta: { title: '解决方案与服务', noCache: true },
component: (resolve) => {
return require(['@/views/homepage/project/index'], resolve)
},
hidden: true
},
{
path: '/course',
meta: { title: '专业培训', noCache: true },
component: (resolve) => {
return require(['@/views/homepage/course/index'], resolve)
},
hidden: true
},
{
path: '/backstage',
component: Layout,
......
......@@ -38,7 +38,7 @@ export default {
'course': '课程定制'
},
visible: false,
title: '询 价',
title: '咨 询',
formData: {
name: '',
phone: '',
......@@ -94,6 +94,8 @@ export default {
initView(id, type) {
if (type) {
this.title = this.typeDict[type]
} else {
this.title = '咨 询'
}
this.showView()
}
......
......@@ -10,7 +10,7 @@ export default {
data() {
return {
menus: [
{ name: '首页', url: '/home' }, { name: '优质产品', url: '/product' }, { name: '优质供应商' }, { name: '解决方案与服务' }, { name: '软件系统' }, { name: '专业培训' }, { name: '行业资讯' }, { name: '信息发布' }
{ name: '首页', url: '/home' }, { name: '优质产品', url: '/product' }, { name: '优质供应商', url: '/supplier' }, { name: '解决方案与服务', url: '/project' }, { name: '软件系统' }, { name: '专业培训', url: '/course' }, { name: '行业资讯' }, { name: '信息发布' }
],
currentMenuObj: null
}
......
......@@ -17,7 +17,7 @@ export default {
data() {
return {
menus: [
{ name: '首页', url: '/home' }, { name: '优质产品', url: '/product' }, { name: '优质供应商' }, { name: '解决方案与服务' }, { name: '软件系统' }, { name: '专业培训' }, { name: '行业资讯' }, { name: '信息发布' }
{ name: '首页', url: '/home' }, { name: '优质产品', url: '/product' }, { name: '优质供应商', url: '/supplier' }, { name: '解决方案与服务', url: '/project' }, { name: '软件系统' }, { name: '专业培训', url: '/course' }, { name: '行业资讯' }, { name: '信息发布' }
],
currentMenuObj: null
}
......
......@@ -39,9 +39,7 @@ export default {
])
},
mounted() {
this.$nextTick(() => {
console.log(this.user)
})
this.$nextTick(() => {})
},
methods: {
login(item) {
......
......@@ -39,9 +39,7 @@ export default {
])
},
mounted() {
this.$nextTick(() => {
console.log(this.user)
})
this.$nextTick(() => {})
},
methods: {
login(item) {
......
<template>
<div class="page-body">
<div class="head-box">
<div class="head-box-top">
<div class="top-call" />
<div class="top-call"><img src="@/assets/home_images/gemho_logo_b.png"></div>
<div class="top-call"><title-menus ref="titleMenus" menu-index="5" style="padding-top: 15px" /></div>
<div class="top-call"><user-login ref="userLogin" /></div>
<div class="top-call"><language-setting ref="languageSetting" /></div>
</div>
</div>
<div class="content-box">
<div style="width: 88%;padding-left: 9%;">
<breadcrumb />
<!--专业培训-->
<div class="page-title">专业培训</div>
<div style="padding-top: 6px">
<div v-for="(item,index) in courseList" :key="'p_'+index" class="box-card" style="padding: 0 0 10px 0">
<el-image
:src="item.imgSrc?imgSrcStart+'/img'+item.imgSrc:defaultImgSystem"
style="width:358px;height: 240px;left: -4px;top: -3px"
/>
<div class="line-text touch">{{ item.title }}</div>
<div style="width: 100%;text-align: center;padding: 2px;color: #333">{{ item.subTitle }}</div>
<div class="line-btn" style="margin-top: 14px">
<div class="btn-o" style="width: 150px;border-radius: 10px;box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);font-size:20px;" @click="inquiry(item, 'course')">课程定制</div>
</div>
</div>
</div>
</div>
</div>
<home-footer ref="homeFooter" />
<inquiry-view ref="inquiryView" />
<el-backtop />
</div>
</template>
<script>
import default_product from '@/assets/home_images/default_product.png'
import default_project from '@/assets/home_images/default_project.png'
import default_system from '@/assets/home_images/default_system.png'
import titleMenus from '../components/titleMenusV2'
import userLogin from '../components/userLoginV2'
import languageSetting from '../components/languageSettingV2'
import breadcrumb from '../components/breadcrumb'
import homeFooter from '../components/homeFooter'
import inquiryView from '../components/inquiryView'
import NProgress from 'nprogress'
export default {
components: { titleMenus, userLogin, languageSetting, breadcrumb, homeFooter, inquiryView },
dicts: ['product_type', 'area_province'],
data() {
return {
defaultImgProduct: default_product,
defaultImgProject: default_project,
defaultImgSystem: default_system,
imgSrcStart: process.env.VUE_APP_BASE_API,
page: 1,
pageSize: 16,
total: 0,
query: {
keyword: '',
area: undefined,
type: undefined,
sort: false
},
areaOpts: [],
courseList: [
{
title: '自然灾害应急避险',
subTitle: '由xxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxxx单位提供培训',
imgSrc: ''
}, {
title: '自然灾害应急避险',
subTitle: '由xxxxxxxxx单位提供培训',
imgSrc: ''
}
],
throttle: null, // 节流器
throttleTime: 300
}
},
mounted() {
this.$nextTick(() => {
})
},
methods: {
onDictReady(dict) {
this.areaOpts = [{ value: undefined, label: '全部' }, ...dict.area_province]
},
setQuertType(type) {
if (type === this.query.type) {
this.query.sort = !this.query.sort
} else {
this.query.type = type
this.query.sort = false
}
},
// 点击询价
inquiry(item, type) {
console.log(item, type)
this.$refs.inquiryView.initView(item.id, type)
},
// 跳转到详情
goToDetails(item, type) {
console.log(item, type)
},
pageChange(e) {
this.page = e
this.loadData()
},
loadData() {
},
goTop() {
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.touch {
cursor:pointer;
}
.clear {
clear: both
}
.inline-block {
display: inline-block;
}
.ellipsis {
// 多行溢出省略号
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
}
// 分页 前文字+分页
.pagination {
margin-top: 23px;
text-align: center;
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
>>>.el-pagination.is-background .el-pager li {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #000000;
border: 1px solid #e5e5ea;
}
/* 激活后的样式 */
>>>.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #ffffff;
color: #0366ed;
border: 1px solid #0366ed;
text-align: center;
}
/* 修改左右箭头样式 */
>>>.el-pagination .btn-next .el-icon, >>>.el-pagination .btn-prev .el-icon {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #e5e5ea;
border: 1px solid #e5e5ea;
}
>>>.el-pager {
height: 35.5px !important;
}
>>>.number, >>>.el-icon {
height: 35.5px !important;
line-height: 35.5px !important;
}
}
.head-box {
width: 100vw;
top: 0;
position: fixed;
background: none repeat scroll 0 0 white;
z-index: 999;
box-shadow: 0px 3px 7px 0px rgba(0,0,0,0.2);
.head-box-top {
display: flex;
justify-content: space-evenly;
align-items: center;
.top-call {
height: 80px;
padding-top: 15px;
}
}
}
.content-box {
min-height: 80vh;
margin-top: 94px;
font-family: Source Han Sans CN;
user-select: none;
.page-title {
margin-top: 20px;
padding: 0 20px;
font-size: 26px;
font-weight: bold;
color: #333333;
}
.box-card {
display: inline-block;
position: relative;
margin: 12px;
padding: 10px 0;
width: 350px;
background: #FFFFFF;
border: 1px solid rgba(0,0,0,0.12);
box-shadow: 1px 2px 8px 0 rgba(0,0,0,0.12);
border-radius: 10px;
.line-text {
width: 100%;
text-align: center;
padding: 5px;
font-size: 18px;
font-weight: bolder;
opacity: 0.85;
}
.line-text:hover {
opacity: 1;
}
.float-title {
width: 344px;
position: absolute;
padding: 5px;
top: 200px;
left: 2px;
text-align: center;
font-weight: 600;
color: #fff;
background: rgba(0,0,0,0.6);
opacity: 0.9;
}
.float-title:hover {
opacity: 1;
}
.title {
width: 305px;
padding: 2px 20px;
font-size: 18px;
color: #333333;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.title:hover {
font-weight: 600;
}
.subTitle {
width: 260px;
padding: 2px 20px;
font-size: 15px;
color: #1961C5;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.area {
padding: 2px 0;
font-size: 17px;
color: #666666;
}
.date {
padding: 2px 10px;
font-size: 17px;
color: #999999;
}
.stamp {
border-style: none;
position: absolute;
z-index: 99;
}
}
}
.search-box {
padding-top: 12px;
width: 100%;
font-family: Source Han Sans CN;
font-weight: 400;
color: #666666;
user-select: none;
.search-item {
width: 100%;
height: 38px;
display: inline-block;
padding: 8px 20px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
.label:hover {
font-weight: 600;
}
.btn {
width: 74px;
padding: 3px;
margin-left: 12px;
display: inline-block;
background: #1961C5;
border-radius: 6px;
color: white;
text-align: center;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
}
.area-title {
height: 62px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
text-align: center;
line-height: 60px;
}
.area_item {
height: 30px;
padding: 6px 12px;
display: inline-block;
}
.area_item:hover {
font-weight: 600;
}
.active {
color: #1961C5;
}
.search-tools {
width: 100%;
.btn{
width: 76%;
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
background: #1961C5;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 21px;
color: #ffffff;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
>>>.el-input__inner {
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 18px;
color: #333333;
opacity: 0.7;
}
>>>.el-input__inner:hover {
opacity: 1;
}
}
.search-keyword {
padding: 5px 0;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 14px;
text-align: left;
.label {
padding: 1px 15px 1px;
color: #333333;
cursor:pointer;
user-select: none;
}
.label:hover {
color: #1961C5;
}
}
}
.line-btn {
display: flex;
justify-content: center;
font-family: Source Han Sans CN;
font-weight: 400;
.btn-o {
margin: 0 25px;
width: 360px;
padding: 6px 10px;
background: #F7601A;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-o:hover {
border: 1px solid rgba(30, 144, 255, 0.8);
color: #1482f0;
}
.btn-l {
margin: 0 25px;
width: 360px;
padding: 10px;
background: #1961C5;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-l:hover {
border: 1px solid rgba(0,0,0,0.3);
color: #F7601A;
}
.btn-b {
margin: 0 10px;
width: 168px;
padding: 6px;
background: #EFF6FF;
border: 1px solid transparent;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);
text-align: center;
font-size: 20px;
color: #1961C5;
cursor:pointer;
user-select: none;
}
.btn-b:hover {
border: 1px solid rgba(30, 144, 255, 0.9);
}
.active {
color: #FFFFFF;
font-weight: 400;
background: #1961C5;
}
}
</style>
......@@ -107,7 +107,15 @@
<!--热门排行榜-->
<div class="line-title"><div class="title-point" /><span class="title-text">热门排行榜</span></div>
<el-row :gutter="20" style="padding-top: 20px">
<el-col :span="8"><div class="top_area" /></el-col>
<el-col :span="8"><div class="top_area">
<div
v-for="(item,index) in topAreas"
:key="'ta_'+index"
class="top_area_text touch"
:style="'top:'+item.top+';left:'+item.left+';font-size:'+item.size+';color:'+color[index]"
@click="areaTopClick(item.name)"
>{{ item.name }}</div>
</div></el-col>
<el-col :span="8"><div class="box-toplist">
<div class="title">供应商TOP8</div>
<ul class="contact-list">
......@@ -167,6 +175,7 @@ export default {
dicts: ['product_type', 'area_province'],
data() {
return {
color: ['#C1232B', '#27727B', '#FCCE10', '#E87C25', '#B5C334', '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD', '#D7504B', '#C6E579', '#F4E001', '#F0805A', '#26C0C0'],
defaultImgProduct: default_product,
defaultImgLogo: default_p_logo,
imgSrcStart: process.env.VUE_APP_BASE_API,
......@@ -352,6 +361,7 @@ export default {
imgSrcList: []
}
],
topAreas: [],
topSuppliers: [
{ name: '中山市三角镇凌创传感器厂', id: 123 },
{ name: '中山市三角镇凌创传感器厂', id: 123 },
......@@ -387,7 +397,20 @@ export default {
},
mounted() {
this.$nextTick(() => {
const random = (min, max) => {
return Math.floor(Math.random() * (max - min)) + min
}
const arr = ['北京', '上海', '广州', '深圳', '青岛', '南京', '杭州', '天津', '石家庄', '济南', '烟台', '威海', '大连', '连云港', '潍坊']
arr.forEach((item, index) => {
this.topAreas.push({
name: item,
top: `${random(0, 382)}px`,
left: `${random(0, 324)}px`,
size: `${Math.max(80 - index * 7, 12)}px`
})
})
this.topAreas[0].top = '180px'
this.topAreas[0].left = '120px'
})
},
methods: {
......@@ -422,6 +445,10 @@ export default {
goToDetails(item, type) {
console.log(item, type)
},
// 点击地区top
areaTopClick(text) {
console.log(text)
},
// 点击更多
moreTo(type) {
console.log(type)
......@@ -546,10 +573,19 @@ export default {
}
}
.top_area {
position: relative;
width: 100%;
height: 492px;
background: url("../../assets/home_images/top_area.png") no-repeat;
background-size:100% 100%;
.top_area_text {
position: absolute;
font-weight: bolder;
opacity: 0.7;
}
.top_area_text:hover {
opacity: 1;
}
}
.box-toplist{
background: #FFFFFF;
......
......@@ -175,6 +175,7 @@
</div>
<home-footer ref="homeFooter" />
<inquiry-view ref="inquiryView" />
<el-backtop />
</div>
</template>
<script>
......
<template>
<div class="page-body">
<div class="head-box">
<div class="head-box-top">
<div class="top-call" />
<div class="top-call"><img src="@/assets/home_images/gemho_logo_b.png"></div>
<div class="top-call"><title-menus ref="titleMenus" menu-index="3" style="padding-top: 15px" /></div>
<div class="top-call"><user-login ref="userLogin" /></div>
<div class="top-call"><language-setting ref="languageSetting" /></div>
</div>
</div>
<div class="content-box">
<div style="width: 88%;padding-left: 9%;">
<breadcrumb />
<!--解决方案展柜-->
<div class="page-title">解决方案</div>
<div style="padding-top: 6px">
<div v-for="(item,index) in projectList" :key="'pj_'+index" class="box-block">
<el-row :gutter="20">
<el-col :span="12">
<div style="display: flex">
<el-image :src="item.imgSrc?imgSrcStart+'/img'+item.imgSrc:defaultImgProject" style="width:100%;height: 410px;margin: 1px;border-radius: 10px;" />
</div>
</el-col>
<el-col :span="12">
<div class="content ellipsis"><span style="font-size: 22px;font-weight: bolder">方案概述</span><br>{{ item.content }}</div>
<div class="line-btn" style="margin-top: 4px;justify-content: flex-end;">
<div class="btn-o" style="width: 140px;border-radius: 10px;box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);font-size:20px;" @click="inquiry(item, 'project')">咨 询</div>
</div>
<div class="content" style="padding-top: 0">
<span style="font-size: 22px;font-weight: bolder">相关产品</span>
<div style="display: flex;justify-content: space-between;">
<el-image :src="item.imgSrcList[0]?imgSrcStart+'/img'+item.imgSrcList[0]:defaultImgProject" style="width: 230px;height: 140px;" />
<el-image :src="item.imgSrcList[1]?imgSrcStart+'/img'+item.imgSrcList[1]:defaultImgProject" style="width: 230px;height: 140px;" />
<el-image :src="item.imgSrcList[2]?imgSrcStart+'/img'+item.imgSrcList[2]:defaultImgProject" style="width: 230px;height: 140px;" />
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<!--服务展柜-->
<div class="line-title" style="margin: 20px 0"><div class="title-point" /><span class="title-text">服务</span></div>
<div v-for="(item,index) in serveList" :key="'pj_'+index" class="box-block">
<el-row :gutter="20">
<el-col :span="12">
<div class="content ellipsis" style="height: 240px;padding: 20px 10px 20px 30px;-webkit-line-clamp: 7;">
<span style="font-size: 22px;font-weight: bolder">服务</span>
<br>{{ item.content }}
</div>
<div class="line-btn" style="margin-top: 4px;justify-content: flex-end;">
<div class="btn-o" style="width: 140px;border-radius: 10px;box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);font-size:20px;" @click="inquiry(item, null)">咨 询</div>
</div>
</el-col>
<el-col :span="12">
<div style="display: flex">
<el-image :src="item.imgSrc?imgSrcStart+'/img'+item.imgSrc:defaultImgProject" style="width:100%;height: 300px;margin: 1px;border-radius: 10px;" />
</div>
</el-col>
</el-row>
</div>
<div class="line-btn" style="padding: 30px 0 45px 0;">
<div class="btn-l">未找到所需信息,想咨询</div>
</div>
</div>
</div>
<home-footer ref="homeFooter" />
<inquiry-view ref="inquiryView" />
<el-backtop />
</div>
</template>
<script>
import default_product from '@/assets/home_images/default_product.png'
import default_project from '@/assets/home_images/default_project.png'
import default_system from '@/assets/home_images/default_system.png'
import titleMenus from '../components/titleMenusV2'
import userLogin from '../components/userLoginV2'
import languageSetting from '../components/languageSettingV2'
import breadcrumb from '../components/breadcrumb'
import homeFooter from '../components/homeFooter'
import inquiryView from '../components/inquiryView'
import NProgress from 'nprogress'
export default {
components: { titleMenus, userLogin, languageSetting, breadcrumb, homeFooter, inquiryView },
dicts: ['product_type', 'area_province'],
data() {
return {
defaultImgProduct: default_product,
defaultImgProject: default_project,
defaultImgSystem: default_system,
imgSrcStart: process.env.VUE_APP_BASE_API,
page: 1,
pageSize: 16,
total: 0,
query: {
keyword: '',
area: undefined,
type: undefined,
sort: false
},
areaOpts: [],
projectList: [
{
content: '状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测',
date: '2023-06-12',
imgSrc: '',
imgSrcList: []
}, {
content: '状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测',
date: '2023-06-12',
imgSrc: '',
imgSrcList: []
}
],
serveList: [
{
content: '状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测',
date: '2023-06-12',
imgSrc: ''
}, {
content: '状态监测已存在多年,如今,随着物耿网(loT) 的发展,它也有了新发展观看此网络研讨会,了解loT如何演化,状态监测',
date: '2023-06-12',
imgSrc: ''
}
],
throttle: null, // 节流器
throttleTime: 300
}
},
mounted() {
this.$nextTick(() => {
})
},
methods: {
onDictReady(dict) {
this.areaOpts = [{ value: undefined, label: '全部' }, ...dict.area_province]
},
setQuertType(type) {
if (type === this.query.type) {
this.query.sort = !this.query.sort
} else {
this.query.type = type
this.query.sort = false
}
},
// 点击询价
inquiry(item, type) {
console.log(item, type)
this.$refs.inquiryView.initView(item.id, type)
},
// 跳转到详情
goToDetails(item, type) {
console.log(item, type)
},
pageChange(e) {
this.page = e
this.loadData()
},
loadData() {
},
goTop() {
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.touch {
cursor:pointer;
}
.clear {
clear: both
}
.inline-block {
display: inline-block;
}
.ellipsis {
// 多行溢出省略号
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 5;
text-overflow: ellipsis;
}
// 分页 前文字+分页
.pagination {
margin-top: 23px;
text-align: center;
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
>>>.el-pagination.is-background .el-pager li {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #000000;
border: 1px solid #e5e5ea;
}
/* 激活后的样式 */
>>>.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #ffffff;
color: #0366ed;
border: 1px solid #0366ed;
text-align: center;
}
/* 修改左右箭头样式 */
>>>.el-pagination .btn-next .el-icon, >>>.el-pagination .btn-prev .el-icon {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #e5e5ea;
border: 1px solid #e5e5ea;
}
>>>.el-pager {
height: 35.5px !important;
}
>>>.number, >>>.el-icon {
height: 35.5px !important;
line-height: 35.5px !important;
}
}
.head-box {
width: 100vw;
top: 0;
position: fixed;
background: none repeat scroll 0 0 white;
z-index: 999;
box-shadow: 0px 3px 7px 0px rgba(0,0,0,0.2);
.head-box-top {
display: flex;
justify-content: space-evenly;
align-items: center;
.top-call {
height: 80px;
padding-top: 15px;
}
}
}
.content-box {
min-height: 80vh;
margin-top: 94px;
font-family: Source Han Sans CN;
user-select: none;
.page-title {
margin-top: 20px;
padding: 0 20px;
font-size: 26px;
font-weight: bold;
color: #333333;
}
.box-block {
width: 100%;
margin: 12px 0;
border: 1px solid rgba(0,0,0,0.12);
box-shadow: 1px 2px 8px 0 rgba(0,0,0,0.12);
border-radius: 10px;
.content {
height: 180px;
padding: 20px 30px 20px 10px;
font-size: 16px;
line-height: 32px;
}
}
.box-card {
display: inline-block;
position: relative;
margin: 12px;
padding: 10px 0;
width: 350px;
background: #FFFFFF;
border: 1px solid rgba(0,0,0,0.12);
box-shadow: 1px 2px 8px 0 rgba(0,0,0,0.12);
border-radius: 10px;
.line-text {
width: 100%;
text-align: center;
padding: 5px;
font-size: 18px;
font-weight: bolder;
opacity: 0.85;
}
.line-text:hover {
opacity: 1;
}
.float-title {
width: 344px;
position: absolute;
padding: 5px;
top: 200px;
left: 2px;
text-align: center;
font-weight: 600;
color: #fff;
background: rgba(0,0,0,0.6);
opacity: 0.9;
}
.float-title:hover {
opacity: 1;
}
.title {
width: 305px;
padding: 2px 20px;
font-size: 18px;
color: #333333;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.title:hover {
font-weight: 600;
}
.subTitle {
width: 260px;
padding: 2px 20px;
font-size: 15px;
color: #1961C5;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
.area {
padding: 2px 0;
font-size: 17px;
color: #666666;
}
.date {
padding: 2px 10px;
font-size: 17px;
color: #999999;
}
.stamp {
border-style: none;
position: absolute;
z-index: 99;
}
}
.more {
font-size: 18px;
font-weight: 600;
color: #0457C7;
opacity: 0.7;
}
.more:hover {
opacity: 1;
}
.line-title {
padding: 6px 0;
position: relative;
border-bottom: 3px solid #0457C7;
font-size: 24px;
color: #333333;
.title-point {
width: 8px;
height: 21px;
position: absolute;
top: 9px;
background: #0457c7;
}
.title-text {
padding-left: 14px;
font-weight: 600;
}
.title-line{
width: 100%;
position: absolute;
bottom: -7px;
border-bottom: 2px solid #1961C5;
opacity: 0.35
}
}
}
.search-box {
padding-top: 12px;
width: 100%;
font-family: Source Han Sans CN;
font-weight: 400;
color: #666666;
user-select: none;
.search-item {
width: 100%;
height: 38px;
display: inline-block;
padding: 8px 20px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
.label:hover {
font-weight: 600;
}
.btn {
width: 74px;
padding: 3px;
margin-left: 12px;
display: inline-block;
background: #1961C5;
border-radius: 6px;
color: white;
text-align: center;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
}
.area-title {
height: 62px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
text-align: center;
line-height: 60px;
}
.area_item {
height: 30px;
padding: 6px 12px;
display: inline-block;
}
.area_item:hover {
font-weight: 600;
}
.active {
color: #1961C5;
}
.search-tools {
width: 100%;
.btn{
width: 76%;
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
background: #1961C5;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 21px;
color: #ffffff;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
>>>.el-input__inner {
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 18px;
color: #333333;
opacity: 0.7;
}
>>>.el-input__inner:hover {
opacity: 1;
}
}
.search-keyword {
padding: 5px 0;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 14px;
text-align: left;
.label {
padding: 1px 15px 1px;
color: #333333;
cursor:pointer;
user-select: none;
}
.label:hover {
color: #1961C5;
}
}
}
.line-btn {
display: flex;
justify-content: center;
font-family: Source Han Sans CN;
font-weight: 400;
.btn-o {
margin: 0 25px;
width: 360px;
padding: 6px 10px;
background: #F7601A;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-o:hover {
border: 1px solid rgba(30, 144, 255, 0.8);
color: #1482f0;
}
.btn-l {
margin: 0 25px;
width: 360px;
padding: 10px;
background: #1961C5;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-l:hover {
border: 1px solid rgba(0,0,0,0.3);
color: #F7601A;
}
.btn-b {
margin: 0 10px;
width: 168px;
padding: 6px;
background: #EFF6FF;
border: 1px solid transparent;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);
text-align: center;
font-size: 20px;
color: #1961C5;
cursor:pointer;
user-select: none;
}
.btn-b:hover {
border: 1px solid rgba(30, 144, 255, 0.9);
}
.active {
color: #FFFFFF;
font-weight: 400;
background: #1961C5;
}
}
</style>
<template>
<div class="page-body">
<div class="head-box">
<div class="head-box-top">
<div class="top-call" />
<div class="top-call"><img src="@/assets/home_images/gemho_logo_b.png"></div>
<div class="top-call"><title-menus ref="titleMenus" menu-index="2" style="padding-top: 15px" /></div>
<div class="top-call"><user-login ref="userLogin" /></div>
<div class="top-call"><language-setting ref="languageSetting" /></div>
</div>
</div>
<div class="content-box">
<div style="width: 88%;padding-left: 9%;">
<breadcrumb />
<!--查询面板-->
<div class="search-box">
<el-row style="padding-top: 16px">
<el-col :span="2"><div class="area-title">地区选择</div></el-col>
<el-col :span="22" style="border: 1px solid rgba(0,0,0,0.12);">
<div v-for="(item,index) in areaOpts" :key="'a_'+index" class="area_item touch" :class="query.area===item.value?'active':''" @click="query.area=item.value">{{ item.label }}</div>
</el-col>
</el-row>
<el-row style="padding-top: 10px">
<el-col :span="2">
<div class="search-item" :class="query.type===undefined?'active':''">
<span class="touch label" @click="setQuertType()">默认排序</span>
<span v-if="query.type===undefined">
<i v-if="query.sort" class="el-icon-sort-up touch" />
<i v-else class="el-icon-sort-down touch" />
</span>
</div>
</el-col>
<el-col :span="2">
<div class="search-item" :class="query.type==='hot'?'active':''">
<span class="touch label" @click="setQuertType('hot')">人气排序</span>
<span v-if="query.type==='hot'">
<i v-if="query.sort" class="el-icon-sort-up touch" />
<i v-else class="el-icon-sort-down touch" />
</span>
</div>
</el-col>
<el-col :span="2">
<div class="search-item" :class="query.type==='time'?'active':''">
<span class="touch label" @click="setQuertType('time')">上架时间</span>
<span v-if="query.type==='time'">
<i v-if="query.sort" class="el-icon-sort-up touch" />
<i v-else class="el-icon-sort-down touch" />
</span>
</div>
</el-col>
<el-col :span="18">
<div class="search-item">
<span>产品价格区间</span>
<div style="position: absolute;top: 15px;left: 35%;">
<el-input v-model="query.minPrice" placeholder="请输入价格(元)" clearable style="width: 140px" />
~
<el-input v-model="query.maxPrice" placeholder="请输入价格(元)" clearable style="width: 140px" />
<div class="btn touch">确 定</div>
</div>
</div>
</el-col>
</el-row>
</div>
<!--供应商展柜-->
<div v-for="(item,index) in supplierList" :key="'s_'+index" class="showcase-line">
<div class="supplier_card" style="position: relative;">
<div class="sup_btn touch" style="position: absolute;top: 15px;right: 30px" @click="goToDetails(item, 'supplier')">查看产品</div>
<div class="sup_btn touch" style="position: absolute;top: 60px;right: 30px;background: transparent;color: #FB7B09" @click="inquiry(item, null)">留言咨询</div>
<div class="sup_title touch">
{{ item.name }}
<img v-if="item.isGood" src="@/assets/home_images/diamond.png" title="推荐" style="position:relative;top:4px;">
</div>
<div class="sup_area">
<img src="@/assets/home_images/locate.png" style="position:relative;top:4px;">
{{ item.area }}
</div>
<div style="margin: 25px 40px">
<div class="block-c">
<div>成立时间</div>
<div>{{ item.createTime }}</div>
</div>
<div class="block-c">
<div>可购品类数</div>
<div style="color: #EF1F1F">{{ item.classSum }}</div>
</div>
<div class="block-c">
<div>产品价格区间</div>
<div style="color: #EF1F1F">{{ item.price }}</div>
</div>
</div>
<el-row style="margin-top: 38px">
<el-col :span="3">
<div class="block-b">主营品类:</div>
</el-col>
<el-col :span="21">
<div class="block-b ellipsis">{{ item.mainProduct }}</div>
</el-col>
</el-row>
</div>
<div v-for="(p,i) in item.products" :key="'p_'+index+'_'+i" class="product_card">
<el-image :src="p.imgSrc?imgSrcStart+'/img'+p.imgSrc:defaultImgProduct" style="width:240px;height: 220px;border-radius: 10px;" />
<div class="product_title touch ellipsis" :title="p.name">{{ p.name }}</div>
</div>
</div>
<div class="pagination">
<!-- <span style="font-size: 14px; color: #666; margin-right: 8px">{{ total }} 条记录</span>-->
<el-pagination
:hide-on-single-page="true"
:background="true"
:current-page.sync="page"
:page-size="pageSize"
:total="total"
layout=" prev, pager, next"
@current-change="pageChange"
/>
</div>
</div>
</div>
<home-footer ref="homeFooter" />
<inquiry-view ref="inquiryView" />
<el-backtop />
</div>
</template>
<script>
import default_product from '@/assets/home_images/default_product.png'
import default_project from '@/assets/home_images/default_project.png'
import default_system from '@/assets/home_images/default_system.png'
import titleMenus from '../components/titleMenusV2'
import userLogin from '../components/userLoginV2'
import languageSetting from '../components/languageSettingV2'
import breadcrumb from '../components/breadcrumb'
import homeFooter from '../components/homeFooter'
import inquiryView from '../components/inquiryView'
import NProgress from 'nprogress'
export default {
components: { titleMenus, userLogin, languageSetting, breadcrumb, homeFooter, inquiryView },
dicts: ['product_type', 'area_province'],
data() {
return {
defaultImgProduct: default_product,
defaultImgProject: default_project,
defaultImgSystem: default_system,
imgSrcStart: process.env.VUE_APP_BASE_API,
page: 1,
pageSize: 10,
total: 0,
query: {
keyword: '',
area: undefined,
type: undefined,
sort: false
},
areaOpts: [],
supplierList: [
{
isGood: true,
name: '佛山英沃传感器科技有限公司',
area: '江苏省淮安市',
createTime: '2023 01-01 ',
classSum: '18',
price: '15 -300元',
mainProduct: '温度传感器 热电偶传感器 流量计 报做仪 pt100热电阳 压力变送器 气体检测仪 氟化氢检测仪',
products: [
{ name: '3GDN M30百流三线防 爆电感式接近传感爆电感式接近传感爆电感式接近传感爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' }
]
}, {
isGood: true,
name: '佛山英沃传感器科技有限公司',
area: '江苏省淮安市',
createTime: '2023 01-01 ',
classSum: '18',
price: '15 -300元',
mainProduct: '温度传感器 热电偶传感器 流量计 报做仪 pt100热电阳 压力变送器 气体检测仪 氟化氢检测仪',
products: [
{ name: '3GDN M30百流三线防 爆电感式接近传感爆电感式接近传感爆电感式接近传感爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' }
]
}, {
isGood: true,
name: '佛山英沃传感器科技有限公司',
area: '江苏省淮安市',
createTime: '2023 01-01 ',
classSum: '18',
price: '15 -300元',
mainProduct: '温度传感器 热电偶传感器 流量计 报做仪 pt100热电阳 压力变送器 气体检测仪 氟化氢检测仪',
products: [
{ name: '3GDN M30百流三线防 爆电感式接近传感爆电感式接近传感爆电感式接近传感爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' },
{ name: '3GDN M30百流三线防 爆电感式接近传感', imgSrc: '' }
]
}
],
throttle: null, // 节流器
throttleTime: 300
}
},
mounted() {
this.$nextTick(() => {
})
},
methods: {
onDictReady(dict) {
this.areaOpts = [{ value: undefined, label: '全部' }, ...dict.area_province]
},
setQuertType(type) {
if (type === this.query.type) {
this.query.sort = !this.query.sort
} else {
this.query.type = type
this.query.sort = false
}
},
// 点击询价
inquiry(item, type) {
console.log(item, type)
this.$refs.inquiryView.initView(item.id, type)
},
// 跳转到详情
goToDetails(item, type) {
console.log(item, type)
},
pageChange(e) {
this.page = e
this.loadData()
},
loadData() {
},
goTop() {
document.body.scrollTop = 0
document.documentElement.scrollTop = 0
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.touch {
cursor:pointer;
}
.clear {
clear: both
}
.inline-block {
display: inline-block;
}
.ellipsis {
// 多行溢出省略号
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
}
// 分页 前文字+分页
.pagination {
margin-top: 23px;
text-align: center;
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
>>>.el-pagination.is-background .el-pager li {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #000000;
border: 1px solid #e5e5ea;
}
/* 激活后的样式 */
>>>.el-pagination.is-background .el-pager li:not(.disabled).active {
background-color: #ffffff;
color: #0366ed;
border: 1px solid #0366ed;
text-align: center;
}
/* 修改左右箭头样式 */
>>>.el-pagination .btn-next .el-icon, >>>.el-pagination .btn-prev .el-icon {
font-style: normal;
font-weight: 400;
font-size: 14px;
text-align: center;
background-color: #fff;
color: #e5e5ea;
border: 1px solid #e5e5ea;
}
>>>.el-pager {
height: 35.5px !important;
}
>>>.number, >>>.el-icon {
height: 35.5px !important;
line-height: 35.5px !important;
}
}
.head-box {
width: 100vw;
top: 0;
position: fixed;
background: none repeat scroll 0 0 white;
z-index: 999;
box-shadow: 0px 3px 7px 0px rgba(0,0,0,0.2);
.head-box-top {
display: flex;
justify-content: space-evenly;
align-items: center;
.top-call {
height: 80px;
padding-top: 15px;
}
}
}
.content-box {
min-height: 80vh;
margin-top: 94px;
user-select: none;
.showcase-line {
margin: 16px 0 28px;
display: flex;
justify-content: space-between;
font-family: Source Han Sans CN;
font-weight: 400;
}
.supplier_card {
padding: 10px 20px;
width: 742px;
height: 278px;
background: #F3F4F5;
border: 1px solid rgba(25,97,197,0.12);
box-shadow: 1px 2px 8px 0 rgba(0,0,0,0.12);
border-radius: 10px;
.sup_btn {
width: 124px;
height: 36px;
padding: 6px;
background: #FB7B09 ;
border: 1px solid #FB7B09 ;
border-radius: 10px;
font-size: 20px;
color: #FFFFFF;
text-align: center;
}
.sup_btn:hover {
font-weight: bold;
}
.sup_title {
max-width: 540px;
color: #1961C5;
font-size: 26px;
line-height: 34px;
}
.sup_title:hover {
font-weight: bolder;
}
.sup_area {
padding: 10px 0;
color: #666666;
font-size: 18px;
}
.block-c {
display: inline-block;
width: 180px;
font-size: 20px;
line-height: 26px;
font-weight: 600;
color: #333333;
text-align: center;
opacity: 0.9;
}
.block-b {
height: 50px;
font-size: 18px;
color: #666666;
line-height: 25px;
opacity: 0.9;
}
}
.product_card {
width: 240px;
height: 278px;
background: #FFFFFF;
border: 1px solid rgba(0,0,0,0.12);
box-shadow: 1px 2px 8px 0 rgba(0,0,0,0.12);
border-radius: 10px;
.product_title {
padding: 0 10px;
width: 100%;
height: 40px;
line-height: 20px;
text-align: center;
}
.product_title:hover {
font-weight: bolder;
}
}
}
.search-box {
padding-top: 12px;
width: 100%;
font-family: Source Han Sans CN;
font-weight: 400;
color: #666666;
user-select: none;
.search-item {
width: 100%;
height: 38px;
display: inline-block;
padding: 8px 20px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
.label:hover {
font-weight: 600;
}
.btn {
width: 74px;
padding: 3px;
margin-left: 12px;
display: inline-block;
background: #1961C5;
border-radius: 6px;
color: white;
text-align: center;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
}
.area-title {
height: 62px;
background: #F7F7F7;
border: 1px solid rgba(0,0,0,0.12);
text-align: center;
line-height: 60px;
}
.area_item {
height: 30px;
padding: 6px 12px;
display: inline-block;
}
.area_item:hover {
font-weight: 600;
}
.active {
color: #1961C5;
}
.search-tools {
width: 100%;
.btn{
width: 76%;
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
background: #1961C5;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 21px;
color: #ffffff;
opacity: 0.7;
}
.btn:hover {
opacity: 1;
}
>>>.el-input__inner {
height: 38px;
border: 2px solid #1961C5;
border-radius: 8px;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 18px;
color: #333333;
opacity: 0.7;
}
>>>.el-input__inner:hover {
opacity: 1;
}
}
.search-keyword {
padding: 5px 0;
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 14px;
text-align: left;
.label {
padding: 1px 15px 1px;
color: #333333;
cursor:pointer;
user-select: none;
}
.label:hover {
color: #1961C5;
}
}
}
.line-btn {
display: flex;
justify-content: center;
font-family: Source Han Sans CN;
font-weight: 400;
.btn-o {
margin: 0 25px;
width: 360px;
padding: 6px 10px;
background: #F7601A;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-o:hover {
border: 1px solid rgba(30, 144, 255, 0.8);
color: #1482f0;
}
.btn-l {
margin: 0 25px;
width: 360px;
padding: 10px;
background: #1961C5;
box-shadow: 0 3px 6px 0 rgba(0,0,0,0.2);
text-align: center;
border: 1px solid transparent;
font-size: 22px;
color: #FFFFFF;
cursor:pointer;
user-select: none;
}
.btn-l:hover {
border: 1px solid rgba(0,0,0,0.3);
color: #F7601A;
}
.btn-b {
margin: 0 10px;
width: 168px;
padding: 6px;
background: #EFF6FF;
border: 1px solid transparent;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.2);
text-align: center;
font-size: 20px;
color: #1961C5;
cursor:pointer;
user-select: none;
}
.btn-b:hover {
border: 1px solid rgba(30, 144, 255, 0.9);
}
.active {
color: #FFFFFF;
font-weight: 400;
background: #1961C5;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment