@@ -1,6 +1,6 @@
< template >
< template >
< view class = "goods-sku" @touchmove.prevent.stop >
< view class = "goods-sku" @touchmove.prevent.stop >
< uni -popup ref = "skuPopup" :type = "popupType" >
< uni -popup -sku -category ref = "skuPopup" :type = "popupType" >
< view class = "sku-layer" >
< view class = "sku-layer" >
< view class = "sku-content" >
< view class = "sku-content" >
< view class = "sku-info" : style = "{ height: systemInfo.windowHeight * 2 + 'rpx' }" >
< view class = "sku-info" : style = "{ height: systemInfo.windowHeight * 2 + 'rpx' }" >
@@ -9,19 +9,21 @@
< image : src = "$util.img(goodsDetail.sku_image, { size: 'mid' })" @error ="imageError()" / >
< image : src = "$util.img(goodsDetail.sku_image, { size: 'mid' })" @error ="imageError()" / >
< / view >
< / view >
< view class = "main" >
< view class = "main" >
< view class = "goodname" > { { goodsDetail . sku _name ? goodsDetail . sku _name : ( isEnEnv ? goodsDetail . en _goods _name : goodsDetail . goods _name ) } } < / view >
< view class = "goodname" > { { goodsDetail . sku _name ? goodsDetail . sku _name : ( isEnEnv ?
goodsDetail . en _goods _name : goodsDetail . goods _name ) } } < / view >
< view class = "other-info" >
< view class = "other-info" >
< view class = "stock color-tip" v-if = "goodsDetail.stock_show" >
< view class = "stock color-tip" v-if = "goodsDetail.stock_show" >
库存 {{ goodsDetail.stock }}{{ goodsDetail.unit }} < / view >
库存 {{ goodsDetail.stock }}{{ goodsDetail.unit }} < / view >
< view class = "starting-num" v-if = "parseFloat(goodsDetail.min_buy)" >
< view class = "starting-num" v-if = "parseFloat(goodsDetail.min_buy)" >
起售 {{ goodsDetail.min_buy }} 件
起售 {{ goodsDetail.min_buy }} 件
< / view >
< / view >
< / view >
< / view >
< / view >
< / view >
< / view >
< / view >
< view class = "body-item" >
< view class = "body-item" >
< scroll-view scroll -y class = "wrap" >
< scroll-view scroll -y class = "wrap" >
< view class = "sku-list-wrap" v-for = "(item, index) in goodsDetail.goods_spec_format" :key="index" >
< view class = "sku-list-wrap" v-for = "(item, index) in goodsDetail.goods_spec_format"
:key = "index" >
< text class = "title font-size-tag" > { { item . spec _name } } < / text >
< text class = "title font-size-tag" > { { item . spec _name } } < / text >
< view class = "sku-list_item" >
< view class = "sku-list_item" >
< view v-for = "(item_value, index_value) in item.value" :key="index_value" : class = "{
< view v-for = "(item_value, index_value) in item.value" :key="index_value" : class = "{
@@ -29,7 +31,9 @@
disabled: item_value['disabled'] || (!item_value['selected'] && disabled)
disabled: item_value['disabled'] || (!item_value['selected'] && disabled)
}" class = "items color-line-border font-size-tag"
}" class = "items color-line-border font-size-tag"
@click ="change(item_value.sku_id, item_value.spec_id)" >
@click ="change(item_value.sku_id, item_value.spec_id)" >
< image v-if = "item_value.image" :src="$util.img(item_value.image, { size: 'small' })" @error="valueImageError(index, index_value)" / >
< image v-if = "item_value.image"
: src = "$util.img(item_value.image, { size: 'small' })"
@error ="valueImageError(index, index_value)" / >
< text > { { item _value . spec _value _name } } < / text >
< text > { { item _value . spec _value _name } } < / text >
< / view >
< / view >
< / view >
< / view >
@@ -40,7 +44,8 @@
< view class = "sku-name font-size-goods-tag" >
< view class = "sku-name font-size-goods-tag" >
< template v-if = "goodsDetail.sku_spec_format" class="color-tip" >
< template v-if = "goodsDetail.sku_spec_format" class="color-tip" >
已选择 :
已选择 :
< text class = "color-tip" v-for = "(item, index) in goodsDetail.sku_spec_format" :key="index" > {{ item.spec_value_name }} < / text >
< text class = "color-tip" v-for = "(item, index) in goodsDetail.sku_spec_format"
:key = "index" > { { item . spec _value _name } } < / text >
< / template >
< / template >
< / view >
< / view >
< view class = "footer-bottom" >
< view class = "footer-bottom" >
@@ -55,15 +60,19 @@
< text class = "desc iconfont icon-jianshao color-base-text" > < / text >
< text class = "desc iconfont icon-jianshao color-base-text" > < / text >
< view class = "click-event" > < / view >
< view class = "click-event" > < / view >
< / view >
< / view >
< input type = "number" class = "uni-input" @blur ="blur" v-model = "number" placeholder="0" @input="keyInput(false)" / >
< input type = "number" class = "uni-input" @blur ="blur" v-model = "number"
< view class = "num-action" : id = "'select-sku-num-' + goodsDetail.goods_id" @click ="changeNum('+', $event)" >
placeholder = "0" @input ="keyInput(false)" / >
< text class = "add iconfont icon-add-fill color-base-text change_hover" > < / text >
< view class = "num-action" : id = "'select-sku-num-' + goodsDetail.goods_id"
@click ="changeNum('+', $event)" >
< text
class = "add iconfont icon-add-fill color-base-text change_hover" > < / text >
< view class = "click-event" > < / view >
< view class = "click-event" > < / view >
< / view >
< / view >
< / view >
< / view >
< view v-else-if = "number == 0 && isLoad" >
< view v-else-if = "number == 0 && isLoad" >
< view class = "num-action" >
< view class = "num-action" >
< button type = "primary" v-if = "goodsDetail.stock && goodsDetail.stock != 0" @click="confirm($event)" > 加入购物车 < / button >
< button type = "primary" v-if = "goodsDetail.stock && goodsDetail.stock != 0"
@click ="confirm($event)" > 加入购物车 < / button >
< button type = "primary" disabled = "true" v-else > 确定 < / button >
< button type = "primary" disabled = "true" v-else > 确定 < / button >
< view class = "click-event" > < / view >
< view class = "click-event" > < / view >
< / view >
< / view >
@@ -75,20 +84,16 @@
< / view >
< / view >
< / view >
< / view >
< view class = "sku-close iconfont icon-close-guanbi" @click ="closeSkuPopup()" > < / view >
< view class = "sku-close iconfont icon-close-guanbi" @click ="closeSkuPopup()" > < / view >
< / uni -popup >
< / uni -popup -sku -category >
< ns-login ref = "login" > < / ns-login >
< ns-login ref = "login" > < / ns-login >
< / view >
< / view >
< / template >
< / template >
< script >
< script >
import uniPopup from '@/uni_modules/uni-popup/components/uni-popup/uni-popup-sku-new.vue' ;
// 商品SKU
// 商品SKU
export default {
export default {
name : 'ns-goods-sku-category' ,
name : 'ns-goods-sku-category' ,
components : {
uniPopup
} ,
props : {
props : {
disabled : {
disabled : {
type : Boolean ,
type : Boolean ,
@@ -147,7 +152,7 @@
this . $refs . skuPopup . open ( ) ;
this . $refs . skuPopup . open ( ) ;
} ,
} ,
hide ( ) {
hide ( ) {
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
} ,
} ,
change ( skuId , spec _id ) {
change ( skuId , spec _id ) {
if ( this . disabled ) return ;
if ( this . disabled ) return ;
@@ -457,14 +462,14 @@
this . btnSwitch = false ;
this . btnSwitch = false ;
} ,
} ,
fail : res => {
fail : res => {
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
this . btnSwitch = false ;
this . btnSwitch = false ;
}
}
} ) ;
} ) ;
} ) ;
} ) ;
} ,
} ,
closeSkuPopup ( ) {
closeSkuPopup ( ) {
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
if ( this . $refs . skuPopup ) this . $refs . skuPopup . close ( ) ;
} ,
} ,
imageError ( ) {
imageError ( ) {
this . goodsDetail . sku _image = this . $util . getDefaultImage ( ) . goods ;
this . goodsDetail . sku _image = this . $util . getDefaultImage ( ) . goods ;
@@ -532,31 +537,31 @@
return cart ;
return cart ;
}
}
}
}
} ;
} ;
< / script >
< / script >
< style lang = "scss" scoped >
< style lang = "scss" scoped >
. sku - content {
. sku - content {
background : # ffffff ;
background : # ffffff ;
border - radius : 20 rpx ;
border - radius : 20 rpx ;
}
}
. sku - close {
. sku - close {
color : # fff ;
color : # fff ;
width : 50 rpx ;
width : 50 rpx ;
text - align : center ;
text - align : center ;
font - size : 60 rpx ;
font - size : 60 rpx ;
border - radius : 50 % ;
border - radius : 50 % ;
margin : 40 rpx auto 0 ;
margin : 40 rpx auto 0 ;
}
}
. sku - layer . sku - info {
. sku - layer . sku - info {
width : 600 rpx ;
width : 600 rpx ;
height : 60 vh ! important ;
height : 60 vh ! important ;
position : relative ;
position : relative ;
z - index : 999 ;
z - index : 999 ;
}
}
. sku - layer . sku - info . header {
. sku - layer . sku - info . header {
// padding: 30rpx 0 30rpx 300rpx;
// padding: 30rpx 0 30rpx 300rpx;
/* #ifdef MP-ALIPAY */
/* #ifdef MP-ALIPAY */
// padding: 50rpx 0 50rpx 300rpx;
// padding: 50rpx 0 50rpx 300rpx;
@@ -566,9 +571,9 @@
position : relative ;
position : relative ;
border - bottom : 2 rpx solid rgba ( 0 , 0 , 0 , 0.1 ) ;
border - bottom : 2 rpx solid rgba ( 0 , 0 , 0 , 0.1 ) ;
z - index : 2 ;
z - index : 2 ;
}
}
. sku - layer . sku - info . header . img - wrap {
. sku - layer . sku - info . header . img - wrap {
width : 114 rpx ;
width : 114 rpx ;
height : 114 rpx ;
height : 114 rpx ;
margin - right : 20 rpx ;
margin - right : 20 rpx ;
@@ -584,21 +589,21 @@
padding : 2 rpx ;
padding : 2 rpx ;
background - color : # fff ;
background - color : # fff ;
line - height : 208 rpx ;
line - height : 208 rpx ;
}
}
. sku - layer . sku - info . header . img - wrap image {
. sku - layer . sku - info . header . img - wrap image {
width : 100 % ;
width : 100 % ;
height : 100 % ;
height : 100 % ;
}
}
. sku - layer . sku - info . main {
. sku - layer . sku - info . main {
font - size : 24 rpx ;
font - size : 24 rpx ;
line - height : 40 rpx ;
line - height : 40 rpx ;
flex : 1 ;
flex : 1 ;
width : 0 ;
width : 0 ;
}
}
. sku - layer . sku - info . main . goodname {
. sku - layer . sku - info . main . goodname {
word - wrap : break - word ;
word - wrap : break - word ;
overflow : hidden ;
overflow : hidden ;
text - overflow : ellipsis ;
text - overflow : ellipsis ;
@@ -606,78 +611,78 @@
- webkit - box - orient : vertical ;
- webkit - box - orient : vertical ;
- webkit - line - clamp : 2 ;
- webkit - line - clamp : 2 ;
line - height : 1.3 ;
line - height : 1.3 ;
}
}
. sku - layer . sku - info . main . other - info {
. sku - layer . sku - info . main . other - info {
margin - top : 20 rpx ;
margin - top : 20 rpx ;
display : flex ;
display : flex ;
align - items : center ;
align - items : center ;
justify - content : space - between ;
justify - content : space - between ;
}
}
. sku - layer . sku - info . main . starting - num {
. sku - layer . sku - info . main . starting - num {
color : $color - tip ;
color : $color - tip ;
font - size : $font - size - tag ;
font - size : $font - size - tag ;
}
}
. footer - left . price {
. footer - left . price {
word - wrap : break - word ;
word - wrap : break - word ;
font - size : $font - size - toolbar ;
font - size : $font - size - toolbar ;
color : var ( -- price - color ) ;
color : var ( -- price - color ) ;
}
}
. sku - layer . sku - info . main . stock {
. sku - layer . sku - info . main . stock {
line - height : 1 ;
line - height : 1 ;
font - size : $font - size - tag ;
font - size : $font - size - tag ;
}
}
. sku - layer . sku - info . main . sku - name {
. sku - layer . sku - info . main . sku - name {
display : - webkit - box ;
display : - webkit - box ;
- webkit - line - clamp : 2 ;
- webkit - line - clamp : 2 ;
- webkit - box - orient : vertical ;
- webkit - box - orient : vertical ;
height : 90 rpx ;
height : 90 rpx ;
overflow : hidden ;
overflow : hidden ;
}
}
. sku - layer . sku - info . main . sku - name text {
. sku - layer . sku - info . main . sku - name text {
margin - right : 10 rpx ;
margin - right : 10 rpx ;
}
}
. sku - layer . sku - info . sku - close {
. sku - layer . sku - info . sku - close {
position : absolute ;
position : absolute ;
top : 20 rpx ;
top : 20 rpx ;
right : 20 rpx ;
right : 20 rpx ;
width : 40 rpx ;
width : 40 rpx ;
height : 80 rpx ;
height : 80 rpx ;
font - size : 50 rpx ;
font - size : 50 rpx ;
}
}
. sku - layer . body - item {
. sku - layer . body - item {
padding : 0 30 rpx 30 rpx 30 rpx ;
padding : 0 30 rpx 30 rpx 30 rpx ;
height : calc ( 100 % - 282 rpx ) ;
height : calc ( 100 % - 282 rpx ) ;
box - sizing : border - box ;
box - sizing : border - box ;
overflow : scroll ;
overflow : scroll ;
}
}
. sku - layer . body - item . wrap {
. sku - layer . body - item . wrap {
height : calc ( 100 % - 116 rpx ) ;
height : calc ( 100 % - 116 rpx ) ;
}
}
. sku - layer . body - item . sku - list - wrap { }
. sku - layer . body - item . sku - list - wrap { }
. sku - layer . body - item . sku - list - wrap . title {
. sku - layer . body - item . sku - list - wrap . title {
font - weight : 400 ;
font - weight : 400 ;
padding : 20 rpx 0 ;
padding : 20 rpx 0 ;
margin : 0 ;
margin : 0 ;
display : block ;
display : block ;
}
}
. sku - layer . body - item . sku - list - wrap . sku - list _item {
. sku - layer . body - item . sku - list - wrap . sku - list _item {
display : flex ;
display : flex ;
flex - wrap : wrap ;
flex - wrap : wrap ;
}
}
. sku - layer . body - item . sku - list - wrap . items {
. sku - layer . body - item . sku - list - wrap . items {
text - align : center ;
text - align : center ;
position : relative ;
position : relative ;
display : inline - block ;
display : inline - block ;
@@ -686,39 +691,39 @@
border - radius : 8 rpx ;
border - radius : 8 rpx ;
margin : 0 20 rpx 20 rpx 0 ;
margin : 0 20 rpx 20 rpx 0 ;
background - color : # fff ! important ;
background - color : # fff ! important ;
}
}
. sku - layer . body - item . sku - list - wrap . items . disabled {
. sku - layer . body - item . sku - list - wrap . items . disabled {
border : 2 rpx dashed ;
border : 2 rpx dashed ;
}
}
. sku - layer . body - item . sku - list - wrap . items image {
. sku - layer . body - item . sku - list - wrap . items image {
height : 48 rpx ;
height : 48 rpx ;
width : 48 rpx ;
width : 48 rpx ;
border - radius : 4 rpx ;
border - radius : 4 rpx ;
margin - right : 10 rpx ;
margin - right : 10 rpx ;
display : inline - block ;
display : inline - block ;
vertical - align : middle ;
vertical - align : middle ;
}
}
. sku - layer . body - item . number - wrap . number - line {
. sku - layer . body - item . number - wrap . number - line {
padding : 20 rpx 0 ;
padding : 20 rpx 0 ;
line - height : 72 rpx ;
line - height : 72 rpx ;
}
}
. sku - layer . body - item . number - wrap . title {
. sku - layer . body - item . number - wrap . title {
font - weight : 400 ;
font - weight : 400 ;
}
}
. sku - layer . body - item . number - wrap . limit - txt { }
. sku - layer . body - item . number - wrap . limit - txt { }
. sku - layer . body - item . number - wrap . number {
. sku - layer . body - item . number - wrap . number {
height : 72 rpx ;
height : 72 rpx ;
border - radius : 6 rpx ;
border - radius : 6 rpx ;
float : right ;
float : right ;
}
}
. sku - layer . body - item . number - wrap . number button {
. sku - layer . body - item . number - wrap . number button {
display : inline - block ;
display : inline - block ;
line - height : 64 rpx ;
line - height : 64 rpx ;
height : 68 rpx ;
height : 68 rpx ;
@@ -729,22 +734,22 @@
padding : 0 ;
padding : 0 ;
margin : 0 ;
margin : 0 ;
border - radius : 0 ;
border - radius : 0 ;
}
}
. sku - layer . body - item . number - wrap . number button . decrease {
. sku - layer . body - item . number - wrap . number button . decrease {
border - right : 2 rpx solid # fff ! important ;
border - right : 2 rpx solid # fff ! important ;
}
}
. sku - layer . body - item . number - wrap . number button . increase {
. sku - layer . body - item . number - wrap . number button . increase {
border - left : 2 rpx solid # fff ! important ;
border - left : 2 rpx solid # fff ! important ;
}
}
. sku - layer . body - item . number - wrap . number button : after {
. sku - layer . body - item . number - wrap . number button : after {
border - radius : 0 ;
border - radius : 0 ;
border : none ;
border : none ;
}
}
. sku - layer . body - item . number - wrap . number input {
. sku - layer . body - item . number - wrap . number input {
display : inline - block ;
display : inline - block ;
line - height : 64 rpx ;
line - height : 64 rpx ;
height : 68 rpx ;
height : 68 rpx ;
@@ -755,9 +760,9 @@
margin : 0 ;
margin : 0 ;
padding : 0 ;
padding : 0 ;
vertical - align : top ;
vertical - align : top ;
}
}
. sku - layer . footer {
. sku - layer . footer {
width : calc ( 100 % - 60 rpx ) ;
width : calc ( 100 % - 60 rpx ) ;
position : absolute ;
position : absolute ;
bottom : 26 rpx ;
bottom : 26 rpx ;
@@ -775,9 +780,9 @@
margin - right : 10 rpx ;
margin - right : 10 rpx ;
}
}
}
}
}
}
. sku - layer . footer . footer - bottom {
. sku - layer . footer . footer - bottom {
margin - top : 24 rpx ;
margin - top : 24 rpx ;
display : flex ;
display : flex ;
justify - content : be ;
justify - content : be ;
@@ -799,36 +804,36 @@
line - height : 60 rpx ;
line - height : 60 rpx ;
font - size : 30 rpx ;
font - size : 30 rpx ;
}
}
}
}
. position - bottom {
. position - bottom {
bottom : 98 rpx ! important ;
bottom : 98 rpx ! important ;
}
}
// 数量加减样式
// 数量加减样式
. change _num {
. change _num {
display : flex ;
display : flex ;
align - items : center ;
align - items : center ;
justify - content : flex - end ;
justify - content : flex - end ;
}
}
. change _num > text ,
. change _num > text ,
. change _num . iconfont {
. change _num . iconfont {
font - size : 48 rpx ;
font - size : 48 rpx ;
}
}
. change _num input {
. change _num input {
width : 70 rpx ;
width : 70 rpx ;
height : 36 rpx ;
height : 36 rpx ;
line - height : 36 rpx ;
line - height : 36 rpx ;
text - align : center ;
text - align : center ;
}
}
. change _num . num - action {
. change _num . num - action {
position : relative ;
position : relative ;
}
}
. change _num . num - action . click - event {
. change _num . num - action . click - event {
position : absolute ;
position : absolute ;
width : 2 rpx ;
width : 2 rpx ;
height : 2 rpx ;
height : 2 rpx ;
@@ -836,17 +841,17 @@
top : 0 ;
top : 0 ;
transform : translate ( - 50 % , - 50 % ) ;
transform : translate ( - 50 % , - 50 % ) ;
z - index : 5 ;
z - index : 5 ;
}
}
/ deep / . uni - popup _ _wrapper {
/ deep/ . uni - popup _ _wrapper {
background : transparent ! important ;
background : transparent ! important ;
}
}
/ deep / . sku - layer . uni - popup _ _wrapper . uni - custom . uni - popup _ _wrapper - box {
/ deep/ . sku - layer . uni - popup _ _wrapper . uni - custom . uni - popup _ _wrapper - box {
background : transparent ! important ;
background : transparent ! important ;
}
}
/ deep / . uni - popup _ _wrapper . uni - custom . uni - popup _ _wrapper - box {
/ deep/ . uni - popup _ _wrapper . uni - custom . uni - popup _ _wrapper - box {
background : transparent ! important ;
background : transparent ! important ;
}
}
< / style >
< / style >