绘制完成产品页面相关模块

This commit is contained in:
hejin 2025-07-06 16:16:34 +08:00
parent 4ff8fbe60a
commit 48a2972383
18 changed files with 599 additions and 8 deletions

View File

@ -56,14 +56,15 @@
h2 { h2 {
max-width: 19.125rem; max-width: 19.125rem;
height: 100%; height: 100%;
display: flex;
align-items: center;
position: relative; position: relative;
line-height: 3.6875rem;
background: linear-gradient( 180deg, #2177F4 0%, #015FE8 100%); background: linear-gradient( 180deg, #2177F4 0%, #015FE8 100%);
font-size: 1rem; font-size: 1rem;
&::after { &::after {
content: ''; content: '';
width: 5.875rem; width: 5.875rem;
height: 3.6875rem; height: 100%;
position: absolute; position: absolute;
top: 0; top: 0;
right: -5.8125rem; right: -5.8125rem;
@ -76,4 +77,4 @@
.breadcrumb-item + .breadcrumb-item::before { .breadcrumb-item + .breadcrumb-item::before {
content: '>>'; content: '>>';
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

View File

@ -48,7 +48,7 @@ export default {
menuList: [ menuList: [
{ name: this.$t('menu.Home'), href: '/' }, { name: this.$t('menu.Home'), href: '/' },
{ name: this.$t('menu.AboutUs'), href: '/abou-us' }, { name: this.$t('menu.AboutUs'), href: '/abou-us' },
{ name: this.$t('menu.Products'), href: '/' }, { name: this.$t('menu.Products'), href: '/products' },
{ name: this.$t('menu.News'), href: '/news' }, { name: this.$t('menu.News'), href: '/news' },
{ name: this.$t('menu.Exhibition'), href: '/exhibition' }, { name: this.$t('menu.Exhibition'), href: '/exhibition' },
{ name: this.$t('menu.ContactUs'), href: '/contact-us' }, { name: this.$t('menu.ContactUs'), href: '/contact-us' },

View File

@ -4,6 +4,11 @@
"viewDetails": "view details", "viewDetails": "view details",
"truckModel": "Truck Model", "truckModel": "Truck Model",
"dimension": "Dimension (LxWxH)(mm)", "dimension": "Dimension (LxWxH)(mm)",
"overhang": "Overhang (front/rear)(mm)",
"wheelBase": "Wheelbase (mm)",
"maxSpeed": "Max speed (km/h)",
"curbWeight": "Curb weight (kg)",
"loadingWeight": "Loading weight (kg)",
"approachingAngle/Departure": "Approaching angle/Departure angle (º)", "approachingAngle/Departure": "Approaching angle/Departure angle (º)",
"products": "PRODUCTS", "products": "PRODUCTS",
"companyProducts": "COMPANY PRODUCTS", "companyProducts": "COMPANY PRODUCTS",
@ -18,7 +23,9 @@
"enterEail": "Enter your email here", "enterEail": "Enter your email here",
"addressLabel": "Address", "addressLabel": "Address",
"fax": "Fax", "fax": "Fax",
"submit": "SUBMIT" "submit": "SUBMIT",
"sendInquiry": "Send Inquiry",
"chatNow": "Chat Now"
}, },
"menu": { "menu": {
"Home": "Home", "Home": "Home",
@ -43,6 +50,12 @@
"relatedExhibition": "Related Exhibition", "relatedExhibition": "Related Exhibition",
"relatedProducts": "Related Products" "relatedProducts": "Related Products"
}, },
"products": {
"products": "PRODUCTS",
"allProducts": "ALL PRODUCTS",
"productDetails": "Product Details",
"inquiry": "Inquiry"
},
"index": { "index": {
"companyProfile": "COMPANY PROFILE", "companyProfile": "COMPANY PROFILE",
"corporateName": "SINOTRUCK HOWO SALES CO.,LTD.", "corporateName": "SINOTRUCK HOWO SALES CO.,LTD.",

View File

@ -4,6 +4,11 @@
"viewDetails": "查看详情", "viewDetails": "查看详情",
"truckModel": "卡车型号", "truckModel": "卡车型号",
"dimension": "尺寸长x宽x高毫米", "dimension": "尺寸长x宽x高毫米",
"overhang": "悬垂(前/后mm",
"wheelBase": "轴距mm",
"maxSpeed": "最高速度(公里/小时)",
"curbWeight": "整备质量kg",
"loadingWeight": "装载重量kg",
"approachingAngle/Departure": "接近角/离开角(º)", "approachingAngle/Departure": "接近角/离开角(º)",
"products": "产品", "products": "产品",
"companyProducts": "公司产品", "companyProducts": "公司产品",
@ -18,7 +23,9 @@
"enterEail": "在此处输入您的电子邮件", "enterEail": "在此处输入您的电子邮件",
"addressLabel": "地址", "addressLabel": "地址",
"fax": "传真", "fax": "传真",
"submit": "提交" "submit": "提交",
"sendInquiry": "发送咨询",
"chatNow": "立即聊天"
}, },
"menu": { "menu": {
"Home": "首页", "Home": "首页",
@ -58,6 +65,12 @@
"relatedExhibition": "相关展览", "relatedExhibition": "相关展览",
"relatedProducts": "相关产品" "relatedProducts": "相关产品"
}, },
"products": {
"products": "产品",
"allProducts": "所有产品",
"productDetails": "产品详情",
"inquiry": "询价"
},
"aboutUs": { "aboutUs": {
"AboutUs": "关于我们", "AboutUs": "关于我们",
"company": "中车豪沃销售有限公司", "company": "中车豪沃销售有限公司",

View File

@ -60,6 +60,8 @@ export default {
{ src: "~plugins/router.js", ssr: true }, { src: "~plugins/router.js", ssr: true },
{ src: "~plugins/i18n.js", ssr: true }, { src: "~plugins/i18n.js", ssr: true },
{ src: "~plugins/element-tree.js", ssr: true }, { src: "~plugins/element-tree.js", ssr: true },
{ src: "~plugins/vue-piczoom.js", ssr: false },
{ src: "~plugins/swiper.js", ssr: false },
], ],
/* /*
** Nuxt.js modules ** Nuxt.js modules

55
package-lock.json generated
View File

@ -4577,6 +4577,14 @@
} }
} }
}, },
"dom7": {
"version": "2.1.5",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-2.1.5.tgz",
"integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==",
"requires": {
"ssr-window": "^2.0.0"
}
},
"domain-browser": { "domain-browser": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz", "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz",
@ -10985,6 +10993,11 @@
"resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
}, },
"ssr-window": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-2.0.0.tgz",
"integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A=="
},
"ssri": { "ssri": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
@ -11293,6 +11306,15 @@
} }
} }
}, },
"swiper": {
"version": "5.4.5",
"resolved": "https://registry.npmmirror.com/swiper/-/swiper-5.4.5.tgz",
"integrity": "sha512-7QjA0XpdOmiMoClfaZ2lYN6ICHcMm72LXiY+NF4fQLFidigameaofvpjEEiTQuw3xm5eksG5hzkaRsjQX57vtA==",
"requires": {
"dom7": "^2.1.5",
"ssr-window": "^2.0.0"
}
},
"tapable": { "tapable": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz", "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz",
@ -11913,6 +11935,31 @@
"csstype": "^3.1.0" "csstype": "^3.1.0"
} }
}, },
"vue-awesome-swiper": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/vue-awesome-swiper/-/vue-awesome-swiper-3.1.3.tgz",
"integrity": "sha512-E7suzkyApO8vNZbgdEnjSmnpsmQZyRvSVXJ7sey3XYwKPOkLhH3+GnHroBw+5PZIQXvWBwdCeQsPG1xQ1r1Rhg==",
"requires": {
"object-assign": "^4.1.1",
"swiper": "^4.0.7"
},
"dependencies": {
"ssr-window": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-1.0.1.tgz",
"integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg=="
},
"swiper": {
"version": "4.5.1",
"resolved": "https://registry.npmmirror.com/swiper/-/swiper-4.5.1.tgz",
"integrity": "sha512-se6I7PWWu950NAMXXT+ENtF/6SVb8mPyO+bTfNxbQBILSeLqsYp3Ndap+YOA0EczOIUlea274PKejT6gKZDseA==",
"requires": {
"dom7": "^2.1.3",
"ssr-window": "^1.0.1"
}
}
}
},
"vue-client-only": { "vue-client-only": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmmirror.com/vue-client-only/-/vue-client-only-2.1.0.tgz", "resolved": "https://registry.npmmirror.com/vue-client-only/-/vue-client-only-2.1.0.tgz",
@ -11983,6 +12030,14 @@
"resolved": "https://registry.npmmirror.com/vue-no-ssr/-/vue-no-ssr-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/vue-no-ssr/-/vue-no-ssr-1.1.1.tgz",
"integrity": "sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g==" "integrity": "sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g=="
}, },
"vue-photo-zoom-pro": {
"version": "2.5.0",
"resolved": "https://registry.npmmirror.com/vue-photo-zoom-pro/-/vue-photo-zoom-pro-2.5.0.tgz",
"integrity": "sha512-IL32nslKZUJxq8WI1EpoR6R9Hjj72/isLgJG6yEyXTLvD1a8UGYuTc3Avam87rbdnl5TnP+cZRT9Xye/uiU+Fg==",
"requires": {
"core-js": "^3.0.0"
}
},
"vue-router": { "vue-router": {
"version": "3.6.5", "version": "3.6.5",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz",

View File

@ -25,6 +25,9 @@
"nuxt": "2.15.0", "nuxt": "2.15.0",
"nuxt-sass-resources-loader": "^2.0.5", "nuxt-sass-resources-loader": "^2.0.5",
"patch-package": "^6.4.7", "patch-package": "^6.4.7",
"swiper": "^5.4.5",
"vue-awesome-swiper": "^3.1.3",
"vue-photo-zoom-pro": "^2.5.0",
"zxcvbn": "^4.4.2" "zxcvbn": "^4.4.2"
}, },
"devDependencies": { "devDependencies": {

View File

@ -1,5 +1,5 @@
<template> <template>
<!-- 新闻详情 --> <!-- 展览详情 -->
<div class="exhibition-info"> <div class="exhibition-info">
<div class="info-top"> <div class="info-top">
<h2 class="exhibition-title">How To Maintain The Chassis Of A Truck?</h2> <h2 class="exhibition-title">How To Maintain The Chassis Of A Truck?</h2>

View File

@ -1,5 +1,5 @@
<template> <template>
<!-- 新闻列表 --> <!-- 展览列表 -->
<section class="exhibition-list"> <section class="exhibition-list">
<nuxt-link <nuxt-link
class="exhibition-item box_shadow row mt-4" class="exhibition-item box_shadow row mt-4"

44
pages/products.vue Normal file
View File

@ -0,0 +1,44 @@
<template>
<!-- 新闻 -->
<div class="content">
<BannerTop :options="bannerTopOptions"/>
<section class="container pt-4 pb-4">
<div class="row">
<AsideTree class="col-md-3 mb-4 mb-md-0" :headerTitle="$t('products.allProducts')"/>
<main class="col-md-9">
<div class="pretty-header">
<h2>Low Bed Trailer</h2>
</div>
<nuxt-child />
</main>
</div>
</section>
</div>
</template>
<script>
export default {
name: 'products',
data() {
return {
bannerTopOptions: {
title: this.$t('products.products'),
subTitle: this.$t('products.allProducts'),
img: require('../assets/image/banner/products-banner.png')
},
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.content {
width: 100%;
height: 100%;
}
</style>

378
pages/products/_id.vue Normal file
View File

@ -0,0 +1,378 @@
<template>
<!-- 产品详情 -->
<div class="products-info">
<div class="row pl-0">
<div class="products-preview col-md-5">
<div class="preview-img">
<no-ssr>
<vuePhotoZoomPro :url="currentImgUrl" :width="100" :scale="3"/>
</no-ssr>
</div>
<div class="products-scroll-box">
<no-ssr>
<swiper :options="swiperOptions">
<swiper-slide
v-for="src in productsImages"
:key="src"
class="products-img-item"
:class="src===currentImgUrl ? 'is-products-img-active' : ''"
>
<img @click="() => {currentImgUrl = src}" :src="src" alt="产品图片" />
</swiper-slide>
<div class="swiper-button-prev" slot="button-prev"></div>
<div class="swiper-button-next" slot="button-next"></div>
</swiper>
</no-ssr>
</div>
</div>
<article class="prod-details col-md-7">
<h2 class="products-title">SINOTRUK HOWO Tractor Truck Head</h2>
<div class="parameter">
<p>
<label>{{ $t('common.truckModel') }}:</label>
<span>ZZ4257N3247C1</span>
</p>
<p>
<label>{{ $t('common.dimension') }}:</label>
<span>6800x2490x3668</span>
</p>
<p>
<label>{{ $t('common.approachingAngle/Departure') }}:</label>
<span>16/70</span>
</p>
<p>
<label>{{ $t('common.overhang') }}:</label>
<span>1500/700725</span>
</p>
<p>
<label>{{ $t('common.wheelBase') }}:</label>
<span>3200+14003225+1350</span>
</p>
<p>
<label>{{ $t('common.maxSpeed') }}:</label>
<span>102</span>
</p>
<p>
<label>{{ $t('common.curbWeight') }}:</label>
<span>11930</span>
</p>
<p>
<label>{{ $t('common.loadingWeight') }}:</label>
<span>40000</span>
</p>
</div>
<div class="visit">
<a class="box_shadow" href="javascript:;">
<img src="~assets/image/icon/email-highlight.png" :alt="$t('common.sendInquiry')" />
{{ $t('common.sendInquiry') }}
</a>
<a class="box_shadow" href="javascript:;">
<img src="~assets/image/icon/msg-highlight.png" :alt="$t('common.chatNow')" />
{{ $t('common.chatNow') }}
</a>
</div>
<ContactFooter />
</article>
</div>
<div class="mt-4">
<div class="pretty-header">
<h2>{{ $t('products.productDetails') }}</h2>
</div>
<div class="desc pt-3 pb-3">
富文本内容
</div>
<div class="guide">
<nuxt-link to="/">
Previous: How To Maintain The Chassis Of A Truck?
</nuxt-link>
<nuxt-link to="/">
Next: Flatbed Trailer Buying Guide
</nuxt-link>
</div>
</div>
<div class="mt-5">
<div class="pretty-header">
<h2>{{ $t('products.inquiry') }}</h2>
</div>
<div class="form-box box_shadow mt-3">
<b-form @submit="onSubmit">
<b-form-group
id="input-name"
label-for="input-name"
:invalid-feedback="$t('contactUs.name')"
>
<template v-solt:lable>
<div class="mb-2 d-flex align-items-center">
<b-img class="mr-1" src="~assets/image/icon/user.png" fluid :alt="$t('contactUs.name')"></b-img>
<h6 class="label-text">{{ $t('contactUs.name') }}</h6>
</div>
</template>
<b-form-input
id="input-name"
v-model="dataForm.name"
required
>
</b-form-input>
</b-form-group>
<b-form-group
id="input-mail"
label-for="input-mail"
:invalid-feedback="$t('contactUs.mail')"
>
<template v-solt:lable>
<div class="mb-2 d-flex align-items-center">
<b-img style="filter: brightness(0%);" class="mr-1" src="~assets/image/icon/email.png" fluid :alt="$t('contactUs.mail')"></b-img>
<h6 class="label-text">{{ $t('contactUs.mail') }}</h6>
</div>
</template>
<b-form-input
id="input-mail"
type="email"
v-model="dataForm.email"
required
>
</b-form-input>
</b-form-group>
<b-form-group
id="input-contactWay"
label-for="input-contactWay"
:invalid-feedback="$t('contactUs.contactWay')"
>
<template v-solt:lable>
<div class="mb-2 d-flex align-items-center">
<b-img style="filter: brightness(0%);" class="mr-1" src="~assets/image/icon/labl-phone.png" fluid :alt="$t('contactUs.contactWay')"></b-img>
<h6 class="label-text">{{ $t('contactUs.contactWay') }}</h6>
</div>
</template>
<b-form-input
id="input-contactWay"
v-model="dataForm.phone"
required
>
</b-form-input>
</b-form-group>
<b-form-group
id="input-desc"
label-for="input-desc"
:invalid-feedback="$t('contactUs.desc')"
>
<template v-solt:lable>
<div class="mb-2 d-flex align-items-center">
<b-img style="filter: brightness(0%);" class="mr-1" src="~assets/image/icon/msg.png" fluid :alt="$t('contactUs.desc')"></b-img>
<h6 class="label-text">{{ $t('contactUs.desc') }}</h6>
</div>
</template>
<b-form-textarea
id="input-desc"
v-model="dataForm.message"
rows="3"
>
</b-form-textarea>
</b-form-group>
<div class="text-center">
<b-button class="w-25" type="submit" variant="primary" pill>
{{ $t('common.submit') }}
</b-button>
</div>
</b-form>
</div>
</div>
</div>
</template>
<script>
import vuePhotoZoomPro from 'vue-photo-zoom-pro';
import 'vue-photo-zoom-pro/dist/style/vue-photo-zoom-pro.css';
if (process.client) {
var { swiper, swiperSlide } = require("vue-awesome-swiper");
}
import "swiper/css/swiper.min.css";
export default {
name: 'products-info',
components: {
swiper,
swiperSlide,
vuePhotoZoomPro,
},
data() {
return {
currentImgUrl: '',
dataForm: {
name: '',
email: '',
phone: '',
message: ''
},
swiperOptions: {
slidesPerView :'auto',
spaceBetween: 10,
slidesPerGroupAuto:true,
grabCursor: true,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
},
}
},
asyncData({$axios, params}) {
let productsImages = [
require('../../assets/image/banner/home-pord1.png'),
require('../../assets/image/banner/home1.png'),
];
let currentImgUrl = productsImages[0];
return {
currentImgUrl,
productsImages
}
},
methods: {
onSubmit(e) {
e.preventDefault()
console.log(this.dataForm);
}
}
}
</script>
<style lang="scss" >
.is-products-img-active {
border: 1px solid #CC0001;
}
.swiper-button-next, .swiper-button-prev {
width: 1.1875rem;
height: 3.75rem;
top: 38%;
color: #ffffff;
background-color: rgba(198, 198, 198, 0.6);
opacity: 1 !important;
&::after{
font-size: unset;
}
}
.swiper-button-prev {
left: 0;
}
.swiper-button-next {
right: 0;
}
</style>
<style lang="scss" scoped>
.products-info {
padding-top: .9375rem;
.products-preview {
height: min-content;
.preview-img {
width: 100%;
max-height: 25.625rem;
border: 1px solid #d9dde0;
::v-deep .vue-photo-zoom-pro {
max-height: 25rem;
.img-region {
max-width: 100% !important;
max-height: 25rem;
}
}
}
.products-scroll-box {
width: 100%;
height: 6.25rem;
margin-top: .625rem;
.products-img-item {
width: 3.75rem !important;
height: 3.75rem !important;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
}
.prod-details {
.products-title {
width: 100%;
height: min-content;
min-height: 3.5rem;
margin-bottom: 1.4375rem;
padding: 0 1.4375rem;
display: flex;
align-items: center;
color: #fff;
background: url('~assets/image/backGroundImg/products-title.png') no-repeat;
background-size: 100% 100%;
font-family: 'SourceHanSansCN-Heavy';
font-size: 1rem;
}
.parameter {
height: min-content;
min-height: 17.5rem;
p {
color: #2d2d30;
font-size: .875rem;
}
}
.visit {
display: flex;
align-items: center;
a {
flex: 1;
height: 2.75rem;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
border-radius: 1.25rem;
font-size: .875rem;
&:first-child {
margin-right: .75rem;
background-color: #015fe8;
}
&:last-child {
background-color: #fc8815;
}
img {
width: 1rem;
height: 1rem;
margin-right: .5rem;
}
}
}
}
.guide {
padding-top: .625rem;
display: flex;
align-items: center;
justify-content: space-between;
color: #515760;
border-top: 1px solid #d8dde1;
font-size: .875rem;
}
.form-box {
padding: 2.125rem 7.8125rem;
border: 1px solid #ebeef0;
background: linear-gradient( 180deg, #FDFEFE 0%, #F5FBFF 100%);
border-radius: .5rem;
}
}
//
@media screen and (max-width:400px) {
.form-box {
padding: 1.25rem !important;
}
}
</style>

74
pages/products/index.vue Normal file
View File

@ -0,0 +1,74 @@
<template>
<!-- 产品列表 -->
<section class="products-list">
<ul class="row pl-0">
<li class="col-12 col-md-4" v-for="item in 6" :key="item">
<nuxt-link
class="products-item box_shadow mt-2"
to="/products/123123"
>
<article class="product-card box_shadow">
<b-img src="~assets/image/banner/home-pord1.png" fluid alt="product"></b-img>
<div class="product-card-content">
<h4 class="text-ellipsis">SINOTRUK HOWO Tractor Truck Head</h4>
<p>{{ $t('common.truckModel') }}: ZZ4257N3247C1</p>
<p>{{ $t('common.dimension') }}: 6800x2490x3668</p>
<p>{{ $t('common.approachingAngle/Departure') }}: 16/70</p>
</div>
</article>
</nuxt-link>
</li>
</ul>
<SeoPagination class="mt-4" />
</section>
</template>
<script>
export default {
name: 'products-list',
data() {
return {
bannerTopOptions: {
},
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.products-list {
box-sizing: border-box;
ul {
margin: 0;
li {
padding: 0 .3125rem;
.products-item {
border: 1px solid #e6e8ec;
.product-card-content {
padding: 1.125rem 1rem;
border-top: .0625rem solid #e6e8ec;
font-size: .875rem;
h4 {
margin-bottom: .8125rem;
color: #212222;
-webkit-line-clamp: 1;
font-size: .875rem;
}
p {
color: #878b90;
}
.view-details {
margin: 0 auto;
margin-top: 2rem;
}
}
}
}
}
}
</style>

4
plugins/swiper.js Normal file
View File

@ -0,0 +1,4 @@
import Vue from "vue";
import VueAwesomeSwiper from "vue-awesome-swiper";
Vue.use(VueAwesomeSwiper);

4
plugins/vue-piczoom.js Normal file
View File

@ -0,0 +1,4 @@
import Vue from "vue";
import piczoom from "vue-photo-zoom-pro";
Vue.use(piczoom)