Browse Source

修改bug

master
xh-pan1 1 year ago
parent
commit
6ecdfe1e61
  1. 6
      canvas-container/components/canvasEditPage.vue
  2. 36
      canvas-container/components/canvasShow/basics/classifyheader/app/index.vue
  3. 1
      canvas-container/components/canvasShow/basics/classifyheader/mixin.js
  4. 44
      canvas-container/components/canvasShow/basics/classifyheader/pc/index.vue
  5. 515
      canvas-container/components/canvasShow/basics/product/app/index.vue
  6. 62
      canvas-container/components/canvasShow/basics/product/mixin.js
  7. 502
      canvas-container/components/canvasShow/basics/product/pc/index.vue
  8. 10
      canvas-container/components/canvasShow/basics/text.vue
  9. BIN
      canvas-container/components/canvasShow/static/images/product/icon_add.png
  10. BIN
      canvas-container/components/canvasShow/static/images/product/icon_index_1.png
  11. BIN
      canvas-container/components/canvasShow/static/images/product/icon_index_2.png
  12. BIN
      canvas-container/components/canvasShow/static/images/product/icon_index_3.png
  13. BIN
      canvas-container/components/canvasShow/static/images/product/icon_love.png
  14. BIN
      canvas-container/components/canvasShow/static/images/product/icon_right_arrow.png
  15. BIN
      canvas-container/components/canvasShow/static/images/product/icon_star.png
  16. 7
      canvas-container/components/leftBar/panelList.js
  17. 25
      canvas-container/components/toolBar/BasicsComp/classifyheaderTool.vue
  18. 29
      canvas-container/components/toolBar/goodsComp/productList.vue
  19. 24
      canvas-container/components/toolBar/toolModule/tool-product-source.vue
  20. 3
      canvas-container/locales/en.json
  21. 4
      canvas-container/locales/zh-CN.json
  22. 5
      src/locales/en.json
  23. 6
      src/locales/zh-CN.json
  24. 3
      src/views/stock/stocknote/Edit.vue

6
canvas-container/components/canvasEditPage.vue

@ -175,7 +175,7 @@
break break
case 'productList': case 'productList':
_data = newVal.productData _data = newVal.productData
if((_data.sourceType=='1' && _data.productIdList.length > 0) || (_data.sourceType=='2' && _data.categoryId != 0)){
if((_data.sourceType=='1' && _data.productIdList.length > 0) || (_data.sourceType=='2' && _data.categoryId != 0) || (_data.sourceType!='1' && _data.sourceType!='2')){
isEmpty = false isEmpty = false
} }
break break
@ -252,7 +252,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.hom-layout { .hom-layout {
background-color: #fff;
background-color: #FAFAFA;
::v-deep .sortable-chosen { ::v-deep .sortable-chosen {
.contentBox { .contentBox {
display: none; display: none;
@ -274,7 +274,7 @@
.list-group-item { .list-group-item {
position: relative; position: relative;
cursor: move; cursor: move;
background-color: #fff;
background-color: #FAFAFA;
min-height: 60px; min-height: 60px;
&.item-assistDiv,&.item-notice,&.item-text{ &.item-assistDiv,&.item-notice,&.item-text{
min-height: 0px; min-height: 0px;

36
canvas-container/components/canvasShow/basics/classifyheader/app/index.vue

@ -3,8 +3,8 @@
<div class="tabs-nav-warp"> <div class="tabs-nav-warp">
<div class="tabs-nav" scroll-x="true"> <div class="tabs-nav" scroll-x="true">
<div class="ul"> <div class="ul">
<div class="li" :class="{'on':activeTab===0}" @click="tabChange(0)">首页</div>
<div class="li" :class="{'on':activeTab===index+1}" v-for="(item,index) in classifyData" :key="index">
<div class="li" :class="{'on':activeTab===0}" @click="tabChange(0)" v-if="componentContent.firstClassify">{{componentContent.firstClassify}}</div>
<div class="li" :class="{'on':activeTab===index+beginIndex}" v-for="(item,index) in classifyData" :key="index">
{{item.categoryName}} {{item.categoryName}}
</div> </div>
</div> </div>
@ -19,12 +19,10 @@ export default {
mixins: [commonMixin], mixins: [commonMixin],
data () { data () {
return { return {
beginIndex:(this.componentContent.firstClassify && this.componentContent.firstClassify.length ) ? 1 : 0,
activeTab: 0 activeTab: 0
} }
},
computed: {
},
}
} }
</script> </script>
@ -37,27 +35,27 @@ export default {
.tabs-nav{ .tabs-nav{
.ul{ .ul{
display: flex; display: flex;
padding-left: 20px;
padding-right: 20px;
.li{ .li{
flex: 1 0 auto; flex: 1 0 auto;
margin-left: 36px;
margin-left: 5px;
margin-right: 5px;
font-size: 30px; font-size: 30px;
color: #999999;
color: #252744;
position: relative; position: relative;
padding-bottom: 18px;
padding-bottom: 15px;
padding-left: 27px;
padding-right: 27px;
padding-top: 15px;
&:first-child{ &:first-child{
margin-left: 0; margin-left: 0;
} }
&.on{ &.on{
&:after{
content: '';
width: 100%;
height: 4px;
background: #C5AA7B;
position: absolute;
left: 0;
bottom: 0;
}
font-weight:bold;
background: #252744;
box-shadow: 0px 7px 14px 0px #C5C8ED;
border-radius: 40px;
color: white;
} }
} }
} }

1
canvas-container/components/canvasShow/basics/classifyheader/mixin.js

@ -39,7 +39,6 @@ export const commonMixin = {
}, (res) => { }, (res) => {
_.afterGetData() _.afterGetData()
_.classifyData = res.data _.classifyData = res.data
console.log(_.classifyData)
},(err)=>{ },(err)=>{
_.afterGetData() _.afterGetData()
}) })

44
canvas-container/components/canvasShow/basics/classifyheader/pc/index.vue

@ -2,17 +2,21 @@
<div class="header"> <div class="header">
<nav class="nav"> <nav class="nav">
<ul> <ul>
<li class="on">
<li class="on" v-if="false">
<router-link to="/"> <router-link to="/">
首页 首页
</router-link> </router-link>
</li> </li>
<li v-for="(item,index) in classifyData.slice(0, 6)" :key="index" @click="jumpCategory(item)">
{{item.categoryName}}
<li v-for="(item,index) in classifyData" :key="index" @click="jumpCategory(item)">
<div class="classify-item">
<img class="classify-img" :src="item.classifyImage">
<span class="classify-name" >{{item.categoryName}}</span>
</div>
</li> </li>
</ul> </ul>
</nav> </nav>
<div class="search">
<div class="search" v-if="false">
<div class="searchSelect"> <div class="searchSelect">
<el-dropdown trigger="click"> <el-dropdown trigger="click">
<span class="el-dropdown-link">{{ $t('common.beautiproduct') }} <span class="el-dropdown-link">{{ $t('common.beautiproduct') }}
@ -43,11 +47,10 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.header{ .header{
height: 80px;
width: 1200px; width: 1200px;
margin: 0 auto; margin: 0 auto;
display: flex; display: flex;
justify-content: space-between;
justify-content: center;
align-items: center; align-items: center;
flex-wrap: nowrap; flex-wrap: nowrap;
.nav{ .nav{
@ -66,8 +69,33 @@
cursor: pointer; cursor: pointer;
border-bottom: 3px solid #fff; border-bottom: 3px solid #fff;
&.on,&:hover{ &.on,&:hover{
color: #C5AA7B;
border-color: #C5AA7B;
transform: scale(1.2);
}
.classify-item{
width: 126px;
height: 204px;
background: #F6F6F8;
box-shadow: 0rpx 12rpx 27rpx 0rpx #E2E2E2;
border-radius: 8rpx;
border: 1px solid #FFFFFF;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
.classify-img{
height: 100px;
}
.classify-name{
margin-top: 48px;
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 12px;
color: #252744;
}
} }
} }
} }

515
canvas-container/components/canvasShow/basics/product/app/index.vue

@ -1,32 +1,85 @@
<template> <template>
<div class="hom-pro-list"> <div class="hom-pro-list">
<div class="title">
<img src="../../../static/images/product/img-title.png" alt="商品推荐"/>
</div>
<div v-if="componentContent.arrangeType == '横向滑动'" class="product-list product-swiper"> <div v-if="componentContent.arrangeType == '横向滑动'" class="product-list product-swiper">
<swiper ref="mySwiper" class="product-list-box" :options="swiperOption"> <swiper ref="mySwiper" class="product-list-box" :options="swiperOption">
<swiper-slide class="product-list-item" v-for="(item,index) in productData.slice(0, 10)" :key="index" @click="jumpProductDetail(item)">
<swiper-slide class="item" v-for="(item, index) in productData" :key="index" @click="jumpProductDetail(item)">
<div class="product-list-item" v-if="componentContent.productStyleValue == '1'">
<div class="product-list-img"> <div class="product-list-img">
<img v-show="item.image" class="img" :src="item.image"> <img v-show="item.image" class="img" :src="item.image">
</div> </div>
<div class="product-list-info"> <div class="product-list-info">
<label class="product-name">{{item.productName}}</label>
<label class="product-name">{{ item.productName }}</label>
<div> <div>
<div class="shop-box" v-if="typeId == 1" @click.stop="jumpStore(item)"> <div class="shop-box" v-if="typeId == 1" @click.stop="jumpStore(item)">
<label class="shop-name">{{item.shopName}}</label>
<label class="shop-name">{{ item.shopName }}</label>
<div class="shop-logo"> <div class="shop-logo">
<img :src="item.shopLogo"> <img :src="item.shopLogo">
</div> </div>
</div> </div>
<label class="buy-count">{{item.users?item.users: 0}}人付款</label>
<label class="buy-count">{{ item.users ? item.users : 0 }}人付款</label>
</div> </div>
<div class="price-warp"> <div class="price-warp">
<div class="price"> <div class="price">
¥ {{item.price}}
¥ {{ item.price }}
</div> </div>
<div class="original-price"> <div class="original-price">
¥ {{item.originalPrice}}
¥ {{ item.originalPrice }}
</div>
</div>
</div>
</div>
<div class="product-swiper-item" v-if="componentContent.productStyleValue == '2'">
<div class="product-swiper-img">
<img class="img pic-img default-img" :src="item.image"
onerror="this.src='url(https://ceres.zkthink.com/static/root/default.png) no-repeat center';this.οnerrοr=null">
</div>
<div class="product-swiper-info">
<div class="product-info-content">
<div class="product-name-row">
<label class="product-name">{{ item.productName }}</label>
<img class="product-star" src="../../../static/images/product/icon_star.png">
<label class="product-star-text">{{ item.qaNum || 3.5 }}</label>
</div>
<div class="product-price-row">
<div class="price-warp">
¥ {{ item.price }}
</div>
<img class="product-add" src="../../../static/images/product/icon_add.png">
</div>
</div>
</div>
</div>
<div class="item3" v-if="componentContent.productStyleValue == '3'">
<div class="item3_name">{{ item.productName }}</div>
<div class="item3_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item3_btn_row">
<div class="item3_btn">点击</div>
</div>
</div>
<div class="item4" v-if="componentContent.productStyleValue == '4'">
<div class="item4_content">
<div class="item4_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item4_info">
<div class="item4_name">{{ item.productName }}</div>
<div class="item4_price">¥{{ item.price }}</div>
</div>
<div class="item4_arrow">
<img src="../../../static/images/product/icon_right_arrow.png">
</div>
</div> </div>
<div class="item4_index_image" v-if="index < 3">
<img src="../../../static/images/product/icon_index_1.png" v-if="index == 0">
<img src="../../../static/images/product/icon_index_2.png" v-if="index == 1">
<img src="../../../static/images/product/icon_index_3.png" v-if="index == 2">
</div> </div>
</div> </div>
</swiper-slide> </swiper-slide>
@ -34,43 +87,99 @@
<div class="pagination product-pagination" slot="pagination"></div> <div class="pagination product-pagination" slot="pagination"></div>
</div> </div>
<div v-if="componentContent.arrangeType == '多行多列'" class="product-list"> <div v-if="componentContent.arrangeType == '多行多列'" class="product-list">
<div class="product-list-box" >
<div class="product-list-item" v-for="(item,index) in productData" :key="index" @click="jumpProductDetail(item)">
<div class="product-list-box">
<div class="item" v-for="(item, index) in productData" :key="index" @click="jumpProductDetail(item)">
<div class="product-list-item" v-if="componentContent.productStyleValue == '1'">
<div class="product-list-img"> <div class="product-list-img">
<img v-show="item.image" class="img" :src="item.image"> <img v-show="item.image" class="img" :src="item.image">
</div> </div>
<div class="product-list-info"> <div class="product-list-info">
<label class="product-name">{{item.productName}}</label>
<label class="product-name">{{ item.productName }}</label>
<div> <div>
<div class="shop-box" v-if="typeId == 1" @click.stop="jumpStore(item)"> <div class="shop-box" v-if="typeId == 1" @click.stop="jumpStore(item)">
<label class="shop-name">{{item.shopName}}</label>
<label class="shop-name">{{ item.shopName }}</label>
<div class="shop-logo"> <div class="shop-logo">
<img :src="item.shopLogo"> <img :src="item.shopLogo">
</div> </div>
</div> </div>
<label class="buy-count">{{item.users?item.users: 0}}人付款</label>
<label class="buy-count">{{ item.users ? item.users : 0 }}人付款</label>
</div> </div>
<div class="price-warp"> <div class="price-warp">
<div class="price"> <div class="price">
¥ {{item.price}}
¥ {{ item.price }}
</div> </div>
<div class="original-price"> <div class="original-price">
¥ {{item.originalPrice}}
¥ {{ item.originalPrice }}
</div>
</div>
</div>
</div>
<div class="product-swiper-item" v-if="componentContent.productStyleValue == '2'">
<div class="product-swiper-img">
<img class="img pic-img default-img" :src="item.image"
onerror="this.src='url(https://ceres.zkthink.com/static/root/default.png) no-repeat center';this.οnerrοr=null">
</div>
<div class="product-swiper-info">
<div class="product-info-content">
<div class="product-name-row">
<label class="product-name">{{ item.productName }}</label>
<img class="product-star" src="../../../static/images/product/icon_star.png">
<label class="product-star-text">{{ item.qaNum || 3.5 }}</label>
</div>
<div class="product-price-row">
<div class="price-warp">
¥ {{ item.price }}
</div>
<img class="product-add" src="../../../static/images/product/icon_add.png">
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="item3" v-if="componentContent.productStyleValue == '3'">
<div class="item3_name">{{ item.productName }}</div>
<div class="item3_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item3_btn_row">
<div class="item3_btn">点击</div>
</div>
</div>
<div class="item4" v-if="componentContent.productStyleValue == '4'">
<div class="item4_content">
<div class="item4_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item4_info">
<div class="item4_name">{{ item.productName }}</div>
<div class="item4_price">¥{{ item.price }}</div>
</div>
<div class="item4_arrow">
<img src="../../../static/images/product/icon_right_arrow.png">
</div>
</div>
<div class="item4_index_image" v-if="index < 3">
<img src="../../../static/images/product/icon_index_1.png" v-if="index == 0">
<img src="../../../static/images/product/icon_index_2.png" v-if="index == 1">
<img src="../../../static/images/product/icon_index_3.png" v-if="index == 2">
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<button v-show="componentContent.showMore" class="btn-more" @click="jumpLink(componentContent.linkObj)">{{ $t('common.seeall') }} <span class="icon iconfont icon-arrow-right"></span></button>
<button v-show="componentContent.showMore" class="btn-more" @click="jumpLink(componentContent.linkObj)">{{
$t('common.seeall') }} <span class="icon iconfont icon-arrow-right"></span></button>
</div> </div>
</template> </template>
<script> <script>
import {commonMixin} from '../mixin'
import { commonMixin } from '../mixin'
export default { export default {
mixins: [commonMixin], mixins: [commonMixin],
data () {
data() {
return { return {
swiperOption: { swiperOption: {
slidesPerView: 2, slidesPerView: 2,
@ -92,92 +201,115 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.hom-pro-list{
.hom-pro-list {
padding: 20px 0; padding: 20px 0;
.title{
.title {
text-align: center; text-align: center;
margin-bottom: 20px; margin-bottom: 20px;
label{
label {
background: url("../../../static/images/icon-title.png") no-repeat left center; background: url("../../../static/images/icon-title.png") no-repeat left center;
font-size: 30px; font-size: 30px;
font-weight: bold; font-weight: bold;
padding-left: 48px; padding-left: 48px;
} }
} }
/**多行多列**/ /**多行多列**/
.product-list { .product-list {
position: relative; position: relative;
&-box {
.product-list-box {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: row; flex-direction: row;
padding-left: 20px; padding-left: 20px;
::v-deep .swiper-pagination-bullet{
padding-right: 20px;
::v-deep .swiper-pagination-bullet {
display: none; display: none;
} }
} }
&.product-swiper .product-list-box{
margin: 0 20px;
.product-swiper .product-list-box {
margin: 0 ;
padding-left: 0; padding-left: 0;
} }
&-item {
.item {
width:auto !important;
margin-right: 0px !important;
.product-list-item {
margin: 0 14px 20px 0; margin: 0 14px 20px 0;
width: 348px; width: 348px;
}
&-img {
.product-list-img {
width: 348px; width: 348px;
height: 348px; height: 348px;
background-color: #f5f5f5; background-color: #f5f5f5;
border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0;
.img { .img {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: contain; object-fit: contain;
} }
} }
&-info {
.product-list-info {
background-color: #FFFFFF; background-color: #FFFFFF;
//box-shadow: 0px 0px 15px 0px rgba(52, 52, 52, 0.15); //box-shadow: 0px 0px 15px 0px rgba(52, 52, 52, 0.15);
border-radius: 0 0 10px 10px; border-radius: 0 0 10px 10px;
padding: 20px; padding: 20px;
label{
label {
font-weight: normal; font-weight: normal;
} }
.product-name{
.product-name {
font-size: 28px; font-size: 28px;
color: #333; color: #333;
display: block; display: block;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis;
text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
margin-bottom: 18px; margin-bottom: 18px;
line-height: 40px; line-height: 40px;
} }
.shop-box{
.shop-box {
background-color: #333333; background-color: #333333;
border-radius: 0px 20px 20px 0px; border-radius: 0px 20px 20px 0px;
line-height: 40px; line-height: 40px;
display: inline-block; display: inline-block;
height: 40px; height: 40px;
margin-right: 10px; margin-right: 10px;
.shop-name{
.shop-name {
font-size: 20px; font-size: 20px;
color: #FFEBC4; color: #FFEBC4;
padding: 0 8px 0 12px; padding: 0 8px 0 12px;
} }
.shop-logo{
.shop-logo {
border: 2px solid #707070; border: 2px solid #707070;
border-radius: 50%; border-radius: 50%;
overflow: hidden; overflow: hidden;
float: right; float: right;
img{
img {
width: 34px; width: 34px;
height: 34px; height: 34px;
display: block; display: block;
} }
} }
} }
.buy-count{
.buy-count {
color: #C5AA7B; color: #C5AA7B;
font-size: 20px; font-size: 20px;
margin-bottom: 16px; margin-bottom: 16px;
@ -186,33 +318,325 @@ export default {
padding: 0 5px; padding: 0 5px;
display: inline-block; display: inline-block;
} }
.price-warp{
.price-warp {
display: flex; display: flex;
align-items: baseline; align-items: baseline;
line-height: 56px; line-height: 56px;
.price{
.price {
color: #C83732; color: #C83732;
font-size: 40px; font-size: 40px;
margin-right: 20px; margin-right: 20px;
} }
.original-price{
.original-price {
font-size: 24px; font-size: 24px;
color: #ccc; color: #ccc;
text-decoration: line-through; text-decoration: line-through;
} }
} }
} }
}
.product-swiper-item {
height: 320px;
width: 242px !important;
position: relative;
margin-left: 10px;
margin-right: 10px;
.product-swiper-img {
width: 210px;
height: 220px;
margin-left: auto;
margin-right: auto;
background: #F6F6F8;
border: 2px solid #FFFFFF;
border-radius: 16px;
position: relative;
padding: 20px;
z-index: 2;
box-sizing: border-box;
.img {
width: 100%;
height: 100%;
object-fit: contain;
}
}
.product-swiper-info {
width: 242px;
height: 210px;
position: absolute;
top: 110px;
background: #FDFDFD;
box-shadow: 0px 16px 24px 0px #F6F6F6;
border-radius: 16px;
text-align: center;
.product-info-content {
margin-top: 125px;
.product-name-row {
width: 100%;
height: 22px;
line-height: 22px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: flex-start;
align-items: center;
.product-name {
width: 100%;
height: auto;
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #252744;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 28px;
margin-left: 24px;
text-align: left;
}
.product-star {
width: 22px;
height: 22px;
}
.product-star-text {
width: auto;
height: 28px;
line-height: 28px;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #A5A5AD;
margin-right: 20px;
margin-left: 5px;
}
}
.product-sku-row {
width: 100%;
height: 28px;
line-height: 28px;
margin-top: 15px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: flex-start;
align-items: center;
.product-sku-name {
font-size: 24px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #90919C;
margin-left: 30px;
}
}
.product-price-row {
width: 100%;
height: 50px;
line-height: 50px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: center;
margin-top: 10px;
.price-warp {
display: flex;
align-items: center;
line-height: 28px;
margin-left: 24px;
justify-content: flex-start;
width: auto;
flex-direction: row;
flex-wrap: nowrap;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #252744;
}
.product-add {
width: 50px;
height: 50px;
margin-right: 24px;
}
}
}
}
}
.item3 {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
background: #F6F6F8;
box-shadow: 0px 12px 24px 0px #EDEDED;
border-radius: 24px;
border: 1px solid #FFFFFF;
width: 280px;
height: 400px;
margin: 10px 10px;
.item3_name {
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 14px;
color: #252744;
margin-top: 15px;
}
.item3_image {
margin: 15px;
width: 100%;
padding: 10px;
el-image{
width: 100%;
}
}
.item3_btn_row {
margin-bottom: 15px;
.item3_btn {
background: #252744;
border-radius: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 12px;
color: #FFFFFF;
padding-left: 20px;
padding-right: 20px;
padding-top: 8px;
padding-bottom: 8px;
}
}
}
.item4 {
width: 680px;
height: 210px;
margin: 10px 20px;
background: #FDFDFD;
box-shadow: 0px 24px 60px 0px #E5E5E5;
border-radius: 16px;
position: relative;
.item4_index_image {
width: 50px;
height: 50px;
position: absolute;
left: 26px;
z-index: 100;
img {
width: 100%;
}
}
.item4_content {
width: 100%;
height: 100%;
position: absolute;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: center;
.item4_image {
width: 164px;
height: 164px;
background: #F6F6F7;
border-radius: 8rpx;
margin: 24px;
img {
width: 100%;
}
}
.item4_info {
height: 100%;
padding-top: 46px;
padding-bottom: 46px;
flex: 1;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: flex-start;
.item4_name {
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 20px;
color: #252744;
}
.item4_price {
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 20px;
color: #252744;
}
}
.item4_arrow {
width: 20px;
height: 20px;
margin: 24px;
img {
width: 100%;
height: 100%;
}
}
}
}
}
//::v-deep .swiper-pagination-bullet{ //::v-deep .swiper-pagination-bullet{
// display: none; // display: none;
//} //}
} }
} }
.pagination{
.pagination {
display: flex; display: flex;
justify-content: center; justify-content: center;
padding: 20px 0; padding: 20px 0;
::v-deep .swiper-pagination-bullet{
::v-deep .swiper-pagination-bullet {
width: 10px; width: 10px;
height: 10px; height: 10px;
background: #333333; background: #333333;
@ -220,12 +644,14 @@ export default {
border-radius: 5px; border-radius: 5px;
margin: 0 5px; margin: 0 5px;
} }
::v-deep .swiper-pagination-bullet-active{
::v-deep .swiper-pagination-bullet-active {
width: 20px; width: 20px;
height: 10px; height: 10px;
opacity: 1; opacity: 1;
} }
} }
.btn-more { .btn-more {
width: 170px; width: 170px;
height: 54px; height: 54px;
@ -236,5 +662,4 @@ export default {
margin: 20px auto 0; margin: 20px auto 0;
display: block; display: block;
} }
</style> </style>

62
canvas-container/components/canvasShow/basics/product/mixin.js

@ -82,7 +82,7 @@ export const commonMixin = {
if(_.componentContent.productData.categoryId) { if(_.componentContent.productData.categoryId) {
this.beforeGetData() this.beforeGetData()
_.sendReq({ _.sendReq({
url: `${api.getProducts}?page=1&pageSize=99&classifyId=${_.componentContent.productData.categoryId}`,
url: `${api.getProducts}?page=1&pageSize=20&classifyId=${_.componentContent.productData.categoryId}`,
method: 'GET' method: 'GET'
}, (proRes) => { }, (proRes) => {
_.afterGetData() _.afterGetData()
@ -99,6 +99,66 @@ export const commonMixin = {
products:[] products:[]
} }
} }
}else if(_.componentContent.productData.sourceType === '3'){
this.beforeGetData()
_.sendReq({
url: `${api.getProducts}?page=1&pageSize=20&type=4`,
method: 'GET'
}, (proRes) => {
_.afterGetData()
_.productData = proRes.data.list
if(isFirst){
_.componentContent.productData.imgTextData = _.productData
}
// _.swiper.update()
},(err)=>{
_.afterGetData()
})
}else if(_.componentContent.productData.sourceType === '4'){
this.beforeGetData()
_.sendReq({
url: `${api.getProducts}?page=1&pageSize=20&type=5`,
method: 'GET'
}, (proRes) => {
_.afterGetData()
_.productData = proRes.data.list
if(isFirst){
_.componentContent.productData.imgTextData = _.productData
}
// _.swiper.update()
},(err)=>{
_.afterGetData()
})
}else if(_.componentContent.productData.sourceType === '5'){
this.beforeGetData()
_.sendReq({
url: `${api.getProducts}?page=1&pageSize=20&type=6`,
method: 'GET'
}, (proRes) => {
_.afterGetData()
_.productData = proRes.data.list
if(isFirst){
_.componentContent.productData.imgTextData = _.productData
}
// _.swiper.update()
},(err)=>{
_.afterGetData()
})
}else if(_.componentContent.productData.sourceType === '6'){
this.beforeGetData()
_.sendReq({
url: `${api.getProducts}?page=1&pageSize=6&type=7`,
method: 'GET'
}, (proRes) => {
_.afterGetData()
_.productData = proRes.data.list
if(isFirst){
_.componentContent.productData.imgTextData = _.productData
}
// _.swiper.update()
},(err)=>{
_.afterGetData()
})
} }
}, },
} }

502
canvas-container/components/canvasShow/basics/product/pc/index.vue

@ -1,62 +1,175 @@
<template> <template>
<div class="product-list" :class="'terminal'+terminal">
<div class="product-list" :class="'terminal' + terminal">
<div class="picListWarp" v-if="componentContent.arrangeType == '横向滑动'"> <div class="picListWarp" v-if="componentContent.arrangeType == '横向滑动'">
<div class="picList" v-if="productData && productData.length>0">
<div class="picList" v-if="productData && productData.length > 0">
<div class="swiper-button-prev"></div> <div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div> <div class="swiper-button-next"></div>
<swiper ref="swiper" class="products-swiper" :options="swiperOption"> <swiper ref="swiper" class="products-swiper" :options="swiperOption">
<swiper-slide class="products-swiper-slide item" v-for="(item,index) in productData" :key="index">
<div class="a-link" @click="jumpProductDetail(item)">
<swiper-slide class="products-swiper-slide item" v-for="(item, index) in productData" :key="index">
<div class="a-link" v-if="componentContent.productStyleValue == '1'" @click="jumpProductDetail(item)">
<div class="itemImgBox"> <div class="itemImgBox">
<div class="imgBox"> <div class="imgBox">
<el-image
:src="item.image"
fit="contain"></el-image>
<el-image :src="item.image" fit="contain"></el-image>
</div> </div>
</div> </div>
<div class="text"> <div class="text">
<h4 class="h4">{{item.productName}}</h4>
<h4 class="h4">{{ item.productName }}</h4>
<div class="priceBox"> <div class="priceBox">
<span>¥{{item.price}}</span>
<span class="discount" v-if="item.originalPrice">¥{{item.originalPrice}}</span>
<span>¥{{ item.price }}</span>
<span class="discount" v-if="item.originalPrice">¥{{ item.originalPrice }}</span>
</div>
</div>
</div>
<div class="product-swiper-item" v-if="componentContent.productStyleValue == '2'"
@click="jumpProductDetail(item)">
<div class="product-swiper-img">
<img class="img pic-img default-img" :src="item.image"
onerror="this.src='url(https://ceres.zkthink.com/static/root/default.png) no-repeat center';this.οnerrοr=null">
</div>
<div class="product-swiper-info">
<div class="product-info-content">
<div class="product-name-row">
<label class="product-name">{{ item.productName }}</label>
<img class="product-star" src="../../../static/images/product/icon_star.png">
<label class="product-star-text">{{ item.qaNum || 3.5 }}</label>
</div>
<div class="product-price-row">
<div class="price-warp">
¥ {{ item.price }}
</div>
<img class="product-add" src="../../../static/images/product/icon_add.png">
</div>
</div>
</div>
</div>
<div class="item3" v-if="componentContent.productStyleValue == '3'" @click="jumpProductDetail(item)">
<div class="item3_name">{{ item.productName }}</div>
<div class="item3_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item3_btn_row">
<div class="item3_btn">点击</div>
</div>
</div>
<div class="item4" v-if="componentContent.productStyleValue == '4'" @click="jumpProductDetail(item)">
<div class="item4_content">
<div class="item4_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item4_info">
<div class="item4_name">{{ item.productName }}</div>
<div class="item4_price">¥{{ item.price }}</div>
</div>
<div class="item4_arrow">
<img src="../../../static/images/product/icon_right_arrow.png">
</div>
</div> </div>
<div class="item4_index_image" v-if="index < 3">
<img src="../../../static/images/product/icon_index_1.png" v-if="index == 0">
<img src="../../../static/images/product/icon_index_2.png" v-if="index == 1">
<img src="../../../static/images/product/icon_index_3.png" v-if="index == 2">
</div> </div>
</div> </div>
</swiper-slide> </swiper-slide>
</swiper> </swiper>
</div> </div>
</div> </div>
<div v-else class="picList" >
<div v-else class="picList">
<ul class="clearfix" :class="'imgTextNum' + componentContent.productNum"> <ul class="clearfix" :class="'imgTextNum' + componentContent.productNum">
<li class="item" v-for="(item,index) in productData.slice(0, componentContent.productRowNum * componentContent.productNum)" :key="index">
<div class="a-link" @click="jumpProductDetail(item)">
<li class="item"
v-for="(item, index) in productData.slice(0, componentContent.productRowNum * componentContent.productNum)"
:key="index">
<div class="a-link" v-if="componentContent.productStyleValue == '1'" @click="jumpProductDetail(item)">
<div class="itemImgBox"> <div class="itemImgBox">
<div class="imgBox"> <div class="imgBox">
<el-image
:src="item.image"
fit="contain"></el-image>
<el-image :src="item.image" fit="contain"></el-image>
</div> </div>
</div> </div>
<div class="text"> <div class="text">
<h4 class="h4">{{item.productName}}</h4>
<h4 class="h4">{{ item.productName }}</h4>
<div class="priceBox"> <div class="priceBox">
<span>¥{{item.price}}</span>
<span class="discount" v-if="item.originalPrice">¥{{item.originalPrice}}</span>
<span>¥{{ item.price }}</span>
<span class="discount" v-if="item.originalPrice">¥{{ item.originalPrice }}</span>
</div>
</div>
</div> </div>
<div class="product-swiper-item" v-if="componentContent.productStyleValue == '2'"
@click="jumpProductDetail(item)">
<div class="product-swiper-img">
<img class="img pic-img default-img" :src="item.image"
onerror="this.src='url(https://ceres.zkthink.com/static/root/default.png) no-repeat center';this.οnerrοr=null">
</div>
<div class="product-swiper-info">
<div class="product-info-content">
<div class="product-name-row">
<label class="product-name">{{ item.productName }}</label>
<img class="product-star" src="../../../static/images/product/icon_star.png">
<label class="product-star-text">{{ item.qaNum || 3.5 }}</label>
</div>
<div class="product-price-row">
<div class="price-warp">
¥ {{ item.price }}
</div>
<img class="product-add" src="../../../static/images/product/icon_add.png">
</div>
</div>
</div>
</div>
<div class="item3" v-if="componentContent.productStyleValue == '3'" @click="jumpProductDetail(item)">
<div class="item3_name">{{ item.productName }}</div>
<div class="item3_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item3_btn_row">
<div class="item3_btn">点击</div>
</div>
</div>
<div class="item4" v-if="componentContent.productStyleValue == '4'" @click="jumpProductDetail(item)">
<div class="item4_content">
<div class="item4_image"><el-image :src="item.image" fit="contain"></el-image></div>
<div class="item4_info">
<div class="item4_name">{{ item.productName }}</div>
<div class="item4_price">¥{{ item.price }}</div>
</div>
<div class="item4_arrow">
<img src="../../../static/images/product/icon_right_arrow.png">
</div>
</div>
<div class="item4_index_image" v-if="index < 3">
<img src="../../../static/images/product/icon_index_1.png" v-if="index == 0">
<img src="../../../static/images/product/icon_index_2.png" v-if="index == 1">
<img src="../../../static/images/product/icon_index_3.png" v-if="index == 2">
</div> </div>
</div> </div>
</li> </li>
</ul> </ul>
</div> </div>
<button v-show="componentContent.showMore" class="btn-more" @click="jumpLink(componentContent.linkObj)">{{ $t('common.seeall') }} <span class="icon iconfont icon-arrow-right"></span></button>
<button v-show="componentContent.showMore" class="btn-more" @click="jumpLink(componentContent.linkObj)">{{
$t('common.seeall') }} <span class="icon iconfont icon-arrow-right"></span></button>
</div> </div>
</template> </template>
<script> <script>
import {commonMixin} from '../mixin'
export default {
import { commonMixin } from '../mixin'
export default {
mixins: [commonMixin], mixins: [commonMixin],
data () {
data() {
return { return {
swiperOption: { swiperOption: {
slidesPerView: 4, // slidesPerView: 4, //
@ -73,56 +186,68 @@ import {commonMixin} from '../mixin'
} }
} }
} }
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.product-list{
.product-list {
padding: 20px 0; padding: 20px 0;
background-color: #fff;
.picListWarp{
background-color: #FAFAFA;
.picListWarp {
width: 1380px; width: 1380px;
max-width: 100%; max-width: 100%;
margin: 0 auto; margin: 0 auto;
position: relative; position: relative;
} }
.picList{
.picList {
width: 1200px; width: 1200px;
max-width: 100%; max-width: 100%;
margin: 0 auto; margin: 0 auto;
.swiper-button-prev,.swiper-button-next{
.swiper-button-prev,
.swiper-button-next {
width: 50px; width: 50px;
height: 50px; height: 50px;
position: absolute; position: absolute;
cursor:pointer;
cursor: pointer;
top: 140px; top: 140px;
background-repeat: no-repeat; background-repeat: no-repeat;
&:after{
&:after {
content: ''; content: '';
} }
} }
.swiper-button-prev{
.swiper-button-prev {
left: 0; left: 0;
background: url('../../../static/images/btn-prev.png'); background: url('../../../static/images/btn-prev.png');
} }
.swiper-button-next{
.swiper-button-next {
right: 0; right: 0;
background: url('../../../static/images/btn-next.png'); background: url('../../../static/images/btn-next.png');
} }
.a-link{
.a-link {
cursor: pointer; cursor: pointer;
&:hover{
&:hover {
box-shadow: 3px 4px 20px 0px rgba(186, 186, 186, 0.5); box-shadow: 3px 4px 20px 0px rgba(186, 186, 186, 0.5);
} }
.itemImgBox { .itemImgBox {
height: auto; height: auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
.imgBox { .imgBox {
padding-bottom: 100%; padding-bottom: 100%;
background-color: #cacaca; background-color: #cacaca;
position: relative; position: relative;
.el-image { .el-image {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -132,29 +257,33 @@ import {commonMixin} from '../mixin'
} }
} }
} }
.text{
padding:25px 20px 17px;
.text {
padding: 25px 20px 17px;
text-align: center; text-align: center;
//height: 180px; //height: 180px;
.h4{
.h4 {
font-size: 18px; font-size: 18px;
line-height: 24px; line-height: 24px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis;
text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
color: #333333; color: #333333;
//max-height: 48px; //max-height: 48px;
} }
.p{
.p {
color: #999; color: #999;
font-size: 16px; font-size: 16px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis;
text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
padding-top: 18px; padding-top: 18px;
position: relative; position: relative;
margin-top: 8px; margin-top: 8px;
&:after{
&:after {
position: absolute; position: absolute;
top: 0; top: 0;
left: 50%; left: 50%;
@ -165,14 +294,17 @@ import {commonMixin} from '../mixin'
content: ''; content: '';
} }
} }
.priceBox { .priceBox {
padding-top: 11px; padding-top: 11px;
line-height: 33px; line-height: 33px;
span { span {
font-size: 25px; font-size: 25px;
color: #C83732; color: #C83732;
padding-right: 12px; padding-right: 12px;
} }
span.discount { span.discount {
font-size: 18px; font-size: 18px;
color: #ccc; color: #ccc;
@ -181,39 +313,314 @@ import {commonMixin} from '../mixin'
} }
} }
} }
ul{
ul {
margin: -15px 0 0 -15px; margin: -15px 0 0 -15px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
li{
li {
flex: 0 0 50%; flex: 0 0 50%;
padding: 15px 0 0 15px;
padding: 15px;
width: 0; width: 0;
} }
} }
.imgTextNum2 { .imgTextNum2 {
li { li {
flex: 0 0 50%; flex: 0 0 50%;
} }
} }
.imgTextNum3 { .imgTextNum3 {
li { li {
flex: 0 0 33.33%; flex: 0 0 33.33%;
} }
} }
.imgTextNum4 { .imgTextNum4 {
li { li {
flex: 0 0 25%; flex: 0 0 25%;
} }
} }
.imgTextNum5 { .imgTextNum5 {
li { li {
flex: 0 0 20%; flex: 0 0 20%;
} }
} }
.product-swiper-item {
height: 320px;
width: 242px !important;
position: relative;
.product-swiper-img {
width: 210px;
height: 220px;
margin-left: auto;
margin-right: auto;
background: #F6F6F8;
border: 2px solid #FFFFFF;
border-radius: 16px;
position: relative;
padding: 20px;
z-index: 2;
.img {
width: 100%;
height: 100%;
object-fit: contain;
}
}
.product-swiper-info {
width: 242px;
height: 210px;
position: absolute;
top: 110px;
background: #FDFDFD;
box-shadow: 0px 16px 24px 0px #F6F6F6;
border-radius: 16px;
text-align: center;
.product-info-content {
margin-top: 125px;
.product-name-row {
width: 100%;
height: 22px;
line-height: 22px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: flex-start;
align-items: center;
.product-name {
width: 100%;
height: auto;
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #252744;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 28px;
margin-left: 24px;
text-align: left;
}
.product-star {
width: 22px;
height: 22px;
}
.product-star-text {
width: auto;
height: 28px;
line-height: 28px;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #A5A5AD;
margin-right: 20px;
margin-left: 5px;
}
}
.product-sku-row {
width: 100%;
height: 28px;
line-height: 28px;
margin-top: 15px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: flex-start;
align-items: center;
.product-sku-name {
font-size: 24px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #90919C;
margin-left: 30px;
}
}
.product-price-row {
width: 100%;
height: 50px;
line-height: 50px;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: center;
margin-top: 10px;
.price-warp {
display: flex;
align-items: center;
line-height: 28px;
margin-left: 24px;
justify-content: flex-start;
width: auto;
flex-direction: row;
flex-wrap: nowrap;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: bold;
color: #252744;
}
.product-add {
width: 50px;
height: 50px;
margin-right: 24px;
} }
} }
.btn-more {
}
}
}
.item3 {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
align-items: center;
background: #F6F6F8;
box-shadow: 0px 12px 24px 0px #EDEDED;
border-radius: 24px;
border: 1px solid #FFFFFF;
.item3_name {
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 14px;
color: #252744;
margin-top: 15px;
}
.item3_image {
margin: 15px;
}
.item3_btn_row {
margin-bottom: 15px;
.item3_btn {
background: #252744;
border-radius: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
font-size: 12px;
color: #FFFFFF;
padding-left: 20px;
padding-right: 20px;
padding-top: 8px;
padding-bottom: 8px;
}
}
}
.item4 {
height: 210px;
background: #FDFDFD;
box-shadow: 0px 24px 60px 0px #E5E5E5;
border-radius: 16px;
position: relative;
.item4_index_image {
width: 50px;
height: 50px;
position: absolute;
left: 26px;
z-index: 100;
img{
width: 100%;
}
}
.item4_content {
width: 100%;
height: 100%;
position: absolute;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: center;
.item4_image {
width: 164px;
height: 164px;
background: #F6F6F7;
border-radius: 8rpx;
margin: 24px;
img{
width: 100%;
}
}
.item4_info {
height: 100%;
padding-top: 46px;
padding-bottom: 46px;
flex: 1;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
align-items: flex-start;
.item4_name {
font-family: Microsoft YaHei;
font-weight: bold;
font-size: 20px;
color: #252744;
}
.item4_price {
font-family: Source Han Sans CN;
font-weight: 400;
font-size: 20px;
color: #252744;
}
}
.item4_arrow {
width: 20px;
height: 20px;
margin: 24px;
img{
width: 100%;
height: 100%;
}
}
}
}
}
}
.btn-more {
width: 130px; width: 130px;
height: 41px; height: 41px;
border: 2px solid #C5AA7B; border: 2px solid #C5AA7B;
@ -222,5 +629,4 @@ import {commonMixin} from '../mixin'
background-color: transparent; background-color: transparent;
margin: 20px auto 0; margin: 20px auto 0;
display: block; display: block;
}
</style>
}</style>

10
canvas-container/components/canvasShow/basics/text.vue

@ -3,7 +3,7 @@
<div class="line-warp" :class="{'borderBot':componentContent.showLine}"> <div class="line-warp" :class="{'borderBot':componentContent.showLine}">
<h3 class="h3" :style="{fontSize:componentContent.fontSizeNum+'px',fontWeight:componentContent.textFontW,color:componentContent.titColor}">{{componentContent.title}}</h3> <h3 class="h3" :style="{fontSize:componentContent.fontSizeNum+'px',fontWeight:componentContent.textFontW,color:componentContent.titColor}">{{componentContent.title}}</h3>
<p class="p" :style="{fontSize:componentContent.describeSizeNum+'px',fontWeight:componentContent.describeFontW,color:componentContent.describeColor}">{{componentContent.describe}}</p> <p class="p" :style="{fontSize:componentContent.describeSizeNum+'px',fontWeight:componentContent.describeFontW,color:componentContent.describeColor}">{{componentContent.describe}}</p>
<div class="btn-more" v-show="componentContent.showMore" :class="'style'+componentContent.styleValue" @click="jumpLink(item.linkObj)"><span>{{ $t('common.seemore') }}</span><i class="iconfont icon-arrow-right"></i></div>
<div class="btn-more" v-show="componentContent.showMore" :class="'style'+componentContent.styleValue" @click="jumpLink(item.linkObj)"><span>{{ $t('common.more') }}</span><i class="iconfont icon-arrow-right"></i></div>
</div> </div>
</div> </div>
</template> </template>
@ -33,12 +33,19 @@
position: relative; position: relative;
.line-warp{ .line-warp{
padding: 10px 0; padding: 10px 0;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-content: center;
justify-content: flex-start;
align-items: center;
} }
.borderBot{ .borderBot{
border-bottom: 1px solid #cccc; border-bottom: 1px solid #cccc;
} }
.h3{ .h3{
line-height: 1.5; line-height: 1.5;
flex:1;
} }
.p{ .p{
line-height: 1.5; line-height: 1.5;
@ -65,7 +72,6 @@
.btn-more{ .btn-more{
position: absolute; position: absolute;
right: 0; right: 0;
top: 10px;
} }
} }
} }

BIN
canvas-container/components/canvasShow/static/images/product/icon_add.png

After

Width: 114  |  Height: 114  |  Size: 16 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_index_1.png

After

Width: 128  |  Height: 126  |  Size: 2.0 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_index_2.png

After

Width: 128  |  Height: 126  |  Size: 2.2 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_index_3.png

After

Width: 128  |  Height: 126  |  Size: 2.4 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_love.png

After

Width: 105  |  Height: 105  |  Size: 9.9 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_right_arrow.png

After

Width: 200  |  Height: 200  |  Size: 4.7 KiB

BIN
canvas-container/components/canvasShow/static/images/product/icon_star.png

After

Width: 50  |  Height: 50  |  Size: 1.7 KiB

7
canvas-container/components/leftBar/panelList.js

@ -26,13 +26,13 @@ export const panelList = [
iconClass: 'icon-dianputoubu', iconClass: 'icon-dianputoubu',
type: 'classify-header', type: 'classify-header',
undraggable: true, // 不可拖动 undraggable: true, // 不可拖动
onlyAdmin: true, // 平台端显示
onlyApp: true, // 只在app显示
componentContent: { componentContent: {
fontSizeNum: '', fontSizeNum: '',
textFontW: 'normal', textFontW: 'normal',
titColor: '#CD5353', titColor: '#CD5353',
firstClassify:'所有',
searchKey:'all',
showProduct: true
} }
}, },
{ {
@ -309,6 +309,7 @@ export const panelList = [
productRowNum: 1, // 展示行数 productRowNum: 1, // 展示行数
productNum: 4, // 展示列数 productNum: 4, // 展示列数
arrangeType: '多行多列', // 布局方式 arrangeType: '多行多列', // 布局方式
productStyleValue: '1', // 商品样式
showMore: false, // 显示隐藏更多 showMore: false, // 显示隐藏更多
styleValue: '1', // 查看更多样式 styleValue: '1', // 查看更多样式
linkObj: { linkObj: {

25
canvas-container/components/toolBar/BasicsComp/classifyheaderTool.vue

@ -3,13 +3,13 @@
<h3 class="toolTit">类别设置</h3> <h3 class="toolTit">类别设置</h3>
<div class="operationBox"> <div class="operationBox">
<div class="itemBox">
<div class="itemBox" v-if="false">
<div class="Tit">文本大小</div> <div class="Tit">文本大小</div>
<div class="modifyBox fontSize"> <div class="modifyBox fontSize">
<font-size-select :fontSize.sync='activeComponent.componentContent.fontSizeNum'></font-size-select> <font-size-select :fontSize.sync='activeComponent.componentContent.fontSizeNum'></font-size-select>
</div> </div>
</div> </div>
<div class="itemBox">
<div class="itemBox" v-if="false">
<div class="Tit">文本粗细</div> <div class="Tit">文本粗细</div>
<div class="Info" v-text="activeComponent.componentContent.textFontW === 'bold' ? '加粗体' : '常规体'"></div> <div class="Info" v-text="activeComponent.componentContent.textFontW === 'bold' ? '加粗体' : '常规体'"></div>
<div class="modifyBox fontSize"> <div class="modifyBox fontSize">
@ -17,7 +17,7 @@
<span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'normal'}" @click="changeFontW(type = 'normal')">&#xe8c2;</span> <span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'normal'}" @click="changeFontW(type = 'normal')">&#xe8c2;</span>
</div> </div>
</div> </div>
<div class="itemBox">
<div class="itemBox" v-if="false">
<div class="Tit">文本颜色</div> <div class="Tit">文本颜色</div>
<div class="Info">{{activeComponent.componentContent.titColor}}</div> <div class="Info">{{activeComponent.componentContent.titColor}}</div>
<div class="modifyBox"> <div class="modifyBox">
@ -29,7 +29,26 @@
</div> </div>
</div> </div>
</div> </div>
<div class="itemBox">
<div class="Tit">第一项文本</div>
<el-input class="item-input" v-model="activeComponent.componentContent.firstClassify" maxlength="8" :placeholder="$t('common.defaulthint')"></el-input>
</div>
<div class="itemBox">
<div class="Tit">第一项搜索类型</div>
<el-select v-model="activeComponent.componentContent.searchKey" :placeholder="$t('common.choose')">
<el-option label="all" value="所有"></el-option>
<el-option label="hot" value="热销"></el-option>
</el-select>
</div>
</div> </div>
<div class="itemBox">
<div class="Tit">是否显示具体商品</div>
<el-radio-group v-model="activeComponent.componentContent.showProduct">
<el-radio label="true"></el-radio>
<el-radio label="false"></el-radio>
</el-radio-group>
</div>
</div> </div>
</template> </template>

29
canvas-container/components/toolBar/goodsComp/productList.vue

@ -7,6 +7,17 @@
<!-- <el-input v-model="activeComponent.componentContent.title" :placeholder="$t('common.defaulthint')"></el-input>--> <!-- <el-input v-model="activeComponent.componentContent.title" :placeholder="$t('common.defaulthint')"></el-input>-->
<!-- </div>--> <!-- </div>-->
<tool-product-source :productData.sync='activeComponent.componentContent.productData' :type="activeComponent.type"></tool-product-source> <tool-product-source :productData.sync='activeComponent.componentContent.productData' :type="activeComponent.type"></tool-product-source>
<div class="title">
<div>商品显示样式</div>
<div class="source-select">
<el-radio class="source-item" v-model="activeComponent.componentContent.productStyleValue" label="1">样式一</el-radio>
<el-radio class="source-item" v-model="activeComponent.componentContent.productStyleValue" label="2">样式二</el-radio>
<el-radio class="source-item" v-model="activeComponent.componentContent.productStyleValue" label="3">样式三</el-radio>
<el-radio class="source-item" v-model="activeComponent.componentContent.productStyleValue" label="4">样式四</el-radio>
</div>
</div>
<div class="styleSelectLine"> <div class="styleSelectLine">
<div class="blockTit"> <div class="blockTit">
<span>排列样式</span> <span>排列样式</span>
@ -220,6 +231,24 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.title{
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-content: flex-start;
justify-content: center;
align-items: flex-start;
margin-bottom: 10px;
.source-select{
margin-top: 10px;
.source-item{
width: 50%;
margin-right: 0px;
}
}
}
.brandListTool { .brandListTool {
padding: 20px 20px 0px 20px; padding: 20px 20px 0px 20px;
h3 { h3 {

24
canvas-container/components/toolBar/toolModule/tool-product-source.vue

@ -1,10 +1,14 @@
<template> <template>
<div class="tool-select-product"> <div class="tool-select-product">
<div class="title"> <div class="title">
<span>商品来源</span>
<div>商品来源</div>
<div class="source-select"> <div class="source-select">
<el-radio v-model="productData.sourceType" label="1">商品</el-radio>
<el-radio v-model="productData.sourceType" label="2">类别</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="1">商品</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="2">类别</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="3">新品推荐</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="4">低价优选</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="5">尖端首发</el-radio>
<el-radio class="source-item" v-model="productData.sourceType" label="6">热销排行</el-radio>
</div> </div>
</div> </div>
<div class="porListBox"> <div class="porListBox">
@ -48,8 +52,20 @@ name: "tool-product-source",
.tool-select-product{ .tool-select-product{
.title{ .title{
display: flex; display: flex;
justify-content: space-between;
flex-direction: column;
flex-wrap: nowrap;
align-content: flex-start;
justify-content: center;
align-items: flex-start;
margin-bottom: 10px; margin-bottom: 10px;
.source-select{
margin-top: 10px;
.source-item{
width: 50%;
margin-right: 0px;
}
}
} }
} }
</style> </style>

3
canvas-container/locales/en.json

@ -602,5 +602,6 @@
"common.refundamount":"Refund Amount", "common.refundamount":"Refund Amount",
"common.deal":"Deal", "common.deal":"Deal",
"common.exportafterorder_filename":"afterorderdatadetail.xls", "common.exportafterorder_filename":"afterorderdatadetail.xls",
"common.after-salestatus_info":"After-sale Info"
"common.after-salestatus_info":"After-sale Info",
"common.more":"More"
} }

4
canvas-container/locales/zh-CN.json

@ -602,6 +602,6 @@
"common.refundamount":"退款金额(元)", "common.refundamount":"退款金额(元)",
"common.deal":"处理", "common.deal":"处理",
"common.exportafterorder_filename":"售后订单数据明细表.xls", "common.exportafterorder_filename":"售后订单数据明细表.xls",
"common.after-salestatus_info":"售后信息"
"common.after-salestatus_info":"售后信息",
"common.more":"更多"
} }

5
src/locales/en.json

@ -573,6 +573,7 @@
"common.productinfo":"Product Info", "common.productinfo":"Product Info",
"common.product":"Product", "common.product":"Product",
"common.quantity":"Quantity", "common.quantity":"Quantity",
"common.total":"Total",
"common.total_small":"Total", "common.total_small":"Total",
"common.producttotalprice":"Product Amount", "common.producttotalprice":"Product Amount",
"common.freightamount":"Freight Amount", "common.freightamount":"Freight Amount",
@ -602,5 +603,7 @@
"common.refundamount":"Refund Amount", "common.refundamount":"Refund Amount",
"common.deal":"Deal", "common.deal":"Deal",
"common.exportafterorder_filename":"afterorderdatadetail.xls", "common.exportafterorder_filename":"afterorderdatadetail.xls",
"common.after-salestatus_info":"After-sale Info"
"common.after-salestatus_info":"After-sale Info",
"common.own":"All",
"common.more":"More"
} }

6
src/locales/zh-CN.json

@ -573,6 +573,7 @@
"common.productinfo":"商品信息", "common.productinfo":"商品信息",
"common.product":"商品", "common.product":"商品",
"common.quantity":"数量", "common.quantity":"数量",
"common.total":"合计",
"common.total_small":"小计", "common.total_small":"小计",
"common.producttotalprice":"商品总价", "common.producttotalprice":"商品总价",
"common.freightamount":"运费金额", "common.freightamount":"运费金额",
@ -602,6 +603,7 @@
"common.refundamount":"退款金额(元)", "common.refundamount":"退款金额(元)",
"common.deal":"处理", "common.deal":"处理",
"common.exportafterorder_filename":"售后订单数据明细表.xls", "common.exportafterorder_filename":"售后订单数据明细表.xls",
"common.after-salestatus_info":"售后信息"
"common.after-salestatus_info":"售后信息",
"common.own":"所有",
"common.more":"更多"
} }

3
src/views/stock/stocknote/Edit.vue

@ -224,7 +224,6 @@ export default {
this.$emit('close') this.$emit('close')
}, },
async reset() { async reset() {
console.log("reset")
this.params = { this.params = {
storehouseId: 0, storehouseId: 0,
storehouseName: '', storehouseName: '',
@ -240,6 +239,7 @@ export default {
} }
if(this.storehouseList && this.storehouseList.length > 0){ if(this.storehouseList && this.storehouseList.length > 0){
this.params.storehouseId = this.storehouseList[0].storehouseId this.params.storehouseId = this.storehouseList[0].storehouseId
this.params.storehouseName = this.storehouseList[0].storehouseName
this.getProductList(); this.getProductList();
} }
}, },
@ -251,6 +251,7 @@ export default {
} }
}, },
async onSubmit() { async onSubmit() {
console.log(this.params)
this.params.originPrice = this.params.price; this.params.originPrice = this.params.price;
if (this.params.storehouseName === '') { if (this.params.storehouseName === '') {
this.$message.error('请输入仓库名称') this.$message.error('请输入仓库名称')

Loading…
Cancel
Save