3 changed files with 953 additions and 33 deletions
-
2pages/tabbar/cart/index.vue
-
216pages_category_page1/goodsModule/components/GoodSkuSelect.vue
-
768pages_category_page1/goodsModule/components/GoodSkuSelect2.vue
@ -0,0 +1,768 @@ |
|||||
|
<!-- |
||||
|
* @FileDescription: sku选择器(花呗、拼团下单) |
||||
|
* @Author: kahu |
||||
|
* @Date: 2022/11/7 |
||||
|
* @LastEditors: kahu |
||||
|
* @LastEditTime: 2022/11/7 |
||||
|
--> |
||||
|
<template> |
||||
|
<div class="content"> |
||||
|
<u-popup |
||||
|
v-model="goodsDetailShowFlag" |
||||
|
mode="bottom" |
||||
|
border-radius="14" |
||||
|
> |
||||
|
<view class="goosDetailshow-box"> |
||||
|
<view class="detailImg-box flex-row-plus"> |
||||
|
<image |
||||
|
class="detailImg" |
||||
|
:src="selectedSku.image" |
||||
|
></image> |
||||
|
<view class="flex-column-plus mar-left-40"> |
||||
|
<view class="font-color-F54639"> |
||||
|
<label class="fs32 fs-bold">¥</label> |
||||
|
<label |
||||
|
class="fs32 fs-bold mar-left-5" |
||||
|
v-text="selectedSku.activityType === 1 && btnType === 4 ? selectedSku['salePrice'] : selectedSku.price" |
||||
|
></label> |
||||
|
</view> |
||||
|
<label class="fs24 font-color-595B6B mar-top-10">{{$t('common.stocknum', {number:selectedSku.stockNumber})}}</label> |
||||
|
<label class="fs24 font-color-595B6B mar-top-10">已选</label> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="color-box flex-column-plus"> |
||||
|
<view |
||||
|
v-for="(skuRowItem,skuRowIndex) in productData['names']" |
||||
|
:key="skuRowIndex" |
||||
|
> |
||||
|
<label |
||||
|
class="fs26 font-color-333" |
||||
|
v-if="skuRowItem['nameCode']" |
||||
|
>{{ skuRowItem.skuName }}</label> |
||||
|
<view class="colorName-box"> |
||||
|
<view |
||||
|
class="pad-bot-30" |
||||
|
v-for="(skuColItem, skuColIndex) in skuRowItem.values" |
||||
|
:key="skuColIndex" |
||||
|
> |
||||
|
<view |
||||
|
class="colorName" |
||||
|
:class="{'colorName-on' : selectedAttr[skuRowItem['nameCode']] === skuColItem.valueCode}" |
||||
|
@click="handleClickSkuItem(skuRowItem['nameCode'], skuColItem.valueCode)" |
||||
|
> |
||||
|
{{ skuColItem.skuValue }} |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="goodsNumCent"> |
||||
|
<view |
||||
|
class="goodsNum-box flex-row-plus flex-sp-between" |
||||
|
:class="{'bottom-line' :aliAgingObj.supportHanaUta}" |
||||
|
> |
||||
|
<label class="font-color-333 fs26">数量</label> |
||||
|
<view class="goodsNum"> |
||||
|
<view |
||||
|
class="item subtract" |
||||
|
@click="handleNumSub" |
||||
|
>- |
||||
|
</view> |
||||
|
<view |
||||
|
class="item goodsNumber" |
||||
|
v-model="buyNum" |
||||
|
>{{ buyNum }} |
||||
|
</view> |
||||
|
<view |
||||
|
class="item add" |
||||
|
@click="handleNumAdd" |
||||
|
>+ |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<!-- 花呗分期 --> |
||||
|
<view |
||||
|
class="huabei-box flex-column-plus" |
||||
|
v-if="aliAgingObj.supportHanaUta" |
||||
|
> |
||||
|
<label class="font-color-999 fs24">花呗分期</label> |
||||
|
<scroll-view |
||||
|
class="fenqi-box" |
||||
|
scroll-x="true" |
||||
|
> |
||||
|
<view |
||||
|
class="huabei-item" |
||||
|
:class="[{'fenqi-on' :aliAgingObj.selectIndex === 0},{'disabled' :aliAgingObj.disableSelectList[0]}]" |
||||
|
@click="handleSelectAliAging(0)" |
||||
|
> |
||||
|
<label class="huabei-period">分3期(含手续费)</label> |
||||
|
<label class="huabei-money">¥{{ aliAgingObj.agingMoneyList[0] }}/期</label> |
||||
|
</view> |
||||
|
<view |
||||
|
class="huabei-item" |
||||
|
:class="[{'fenqi-on' :aliAgingObj.selectIndex === 1},{'disabled' :aliAgingObj.disableSelectList[1]}]" |
||||
|
@click="handleSelectAliAging(1)" |
||||
|
> |
||||
|
<label class="huabei-period">分6期(含手续费)</label> |
||||
|
<label class="huabei-money">¥{{ aliAgingObj.agingMoneyList[1] }}/期</label> |
||||
|
</view> |
||||
|
<view |
||||
|
class="huabei-item" |
||||
|
:class="[{'fenqi-on' :aliAgingObj.selectIndex === 2},{'disabled' :aliAgingObj.disableSelectList[2]}]" |
||||
|
@click="handleSelectAliAging(2)" |
||||
|
> |
||||
|
<label class="huabei-period">分12期(含手续费)</label> |
||||
|
<label class="huabei-money">¥{{ aliAgingObj.agingMoneyList[2] }}/期</label> |
||||
|
</view> |
||||
|
</scroll-view> |
||||
|
</view> |
||||
|
|
||||
|
<view |
||||
|
v-if="btnType===6" |
||||
|
class="skuSelectBtn" |
||||
|
> |
||||
|
<view |
||||
|
class="flex-row-plus offShelf" |
||||
|
v-if="productData.shelveState === 0" |
||||
|
> |
||||
|
商品已下架 |
||||
|
</view> |
||||
|
<view |
||||
|
class="flex-row-plus flex-items flex-sp-around" |
||||
|
v-else-if="selectedSku.activityType === 1" |
||||
|
> |
||||
|
<view |
||||
|
class="selectJoinShop selectBtn font-color-333" |
||||
|
@click="handleBuyNow" |
||||
|
>单独购买 |
||||
|
</view> |
||||
|
<view |
||||
|
class="selectBuyNow selectBtn font-color-FFEBC4" |
||||
|
@click="handleBuyWithGroup(1)" |
||||
|
>我要开团 |
||||
|
</view> |
||||
|
</view> |
||||
|
<view |
||||
|
class="flex-row-plus flex-items flex-sp-around" |
||||
|
v-else |
||||
|
> |
||||
|
<view |
||||
|
class="selectJoinShop selectBtn font-color-333" |
||||
|
@click="handleAddCart" |
||||
|
>{{$t('common.addtocart')}} |
||||
|
</view> |
||||
|
<view |
||||
|
class="selectBuyNow selectBtn font-color-FFEBC4" |
||||
|
@click="handleBuyNow" |
||||
|
>{{$t('common.buynow')}} |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view v-else> |
||||
|
<view |
||||
|
v-if="selectedSku.activityType === 1 && collageId !== 0" |
||||
|
class="goosDetailbut-box flex-items-plus" |
||||
|
:style="{'padding-bottom':(isIphone === true? 60:20)+'rpx'}" |
||||
|
> |
||||
|
<view |
||||
|
class="joinbuyBut" |
||||
|
@click="handleBuyWithGroup(2)" |
||||
|
>{{$t('common.sure')}} |
||||
|
</view> |
||||
|
</view> |
||||
|
<view |
||||
|
v-else-if="selectedSku.activityType === 1 && btnType === 3" |
||||
|
class="goosDetailbut-box flex-row-plus" |
||||
|
:style="{'padding-bottom':(isIphone === true? 60:20)+'rpx'}" |
||||
|
> |
||||
|
<view |
||||
|
class="buyNowBut" |
||||
|
@click="handleBuyWithGroup(1)" |
||||
|
>去拼团 |
||||
|
</view> |
||||
|
</view> |
||||
|
<view |
||||
|
v-else |
||||
|
class="goosDetailbut-box flex-row-plus" |
||||
|
:style="{'padding-bottom':(isIphone === true? 60:20)+'rpx'}" |
||||
|
> |
||||
|
<view |
||||
|
v-if="btnType === 1" |
||||
|
class="buyNowBut" |
||||
|
@click="handleAddCart" |
||||
|
>{{$t('common.sure')}} |
||||
|
</view> |
||||
|
<view |
||||
|
v-else |
||||
|
class="buyNowBut" |
||||
|
@click="handleBuyNow(2)" |
||||
|
>{{$t('common.sure')}} |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</u-popup> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import NET from "../../../utils/request"; |
||||
|
import API from "../../../config/api"; |
||||
|
|
||||
|
export default { |
||||
|
name: "GoodSkuSelect", |
||||
|
data() { |
||||
|
return { |
||||
|
// 是否展示SKU弹窗 |
||||
|
goodsDetailShowFlag: false, |
||||
|
// 已经选中的valueCode key => value names.nameCode=>values.valueCode 处理选中渲染 |
||||
|
selectedAttr: {}, |
||||
|
// 当前选中的skuMap对象(服务端数据) |
||||
|
selectedSku: {}, |
||||
|
// 1加入购物车 2立即购买 3开团 4单独购买 6SKU选择 |
||||
|
btnType: 0, |
||||
|
buyNum: 1, |
||||
|
// 花呗对象 |
||||
|
aliAgingObj: { |
||||
|
supportHanaUta: false, |
||||
|
selectIndex: -1, |
||||
|
disableSelectList: [true, true, true], |
||||
|
agingMoneyList: ["0.00", "0.00", "0.00"] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
props: { |
||||
|
productData: { |
||||
|
type: Object, |
||||
|
default: () => ({}) |
||||
|
}, |
||||
|
isIphone: { |
||||
|
type: Boolean, |
||||
|
default: () => false |
||||
|
}, |
||||
|
collageId: { |
||||
|
type: Number, |
||||
|
default: () => 0 |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
/** |
||||
|
* 当前SKU数量减少 |
||||
|
*/ |
||||
|
handleNumSub() { |
||||
|
if (this.buyNum > 1) { |
||||
|
this.buyNum = this.buyNum - 1 |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: '亲!至少一件哦!', |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 当前SKU数量加 |
||||
|
*/ |
||||
|
handleNumAdd() { |
||||
|
if (this.buyNum < this.selectedSku.stockNumber) { |
||||
|
this.buyNum = this.buyNum + 1 |
||||
|
} else { |
||||
|
uni.showToast({ |
||||
|
title: this.$t('common.understock'), |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 根据skuId选择SKU |
||||
|
* @param skuId SkuId |
||||
|
*/ |
||||
|
handleSelectBySkuId(skuId) { |
||||
|
if (!skuId) return |
||||
|
// 当前商品后端返回的所有sku的排列组合 |
||||
|
const allSkuValueGroupMap = this.productData.map |
||||
|
for (const allSkuValueGroupMapKey in allSkuValueGroupMap) { |
||||
|
if (parseInt(allSkuValueGroupMap[allSkuValueGroupMapKey].skuId) !== parseInt(skuId)) continue; |
||||
|
this.selectedSku = allSkuValueGroupMap[allSkuValueGroupMapKey] |
||||
|
this.echoFatherRowText(this.productData, this.selectedSku, this.buyNum) |
||||
|
// 控制组件选中渲染 |
||||
|
const selectValueCodes = this.selectedSku['valueCodes'].split(',') |
||||
|
for (const skuRow of this.productData.names) { |
||||
|
for (const skuCol of skuRow.values) { |
||||
|
if (!selectValueCodes.includes(skuCol['valueCode'])) continue; |
||||
|
this.$set(this.selectedAttr, skuRow['nameCode'], skuCol['valueCode']) |
||||
|
break; // 一行的sku只会有一个value |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 点击sku的一项 |
||||
|
* @param nameCode SKU行的nameCode |
||||
|
* @param valueCode SKU列的valueCode |
||||
|
* nameCodeValueCodeClick |
||||
|
*/ |
||||
|
handleClickSkuItem(nameCode, valueCode) { |
||||
|
// 当前选中 |
||||
|
this.$set(this.selectedAttr, nameCode, valueCode) |
||||
|
// 获取到所有的sku的values.valueCode |
||||
|
let values = [] |
||||
|
for (const key in this.selectedAttr) { |
||||
|
values.push(this.selectedAttr[key]) |
||||
|
} |
||||
|
// 当前选中的sku的key组合 |
||||
|
// 后端返回的productData.map中,排列组合了所有values[].valueCode的情况,使用逗号分隔 |
||||
|
const nowSelectSkuValueGroupKey = values.join(',') // 相较于allSkuValueGroupMap的key |
||||
|
// 后端返回的所有sku组合(values.valueCode) |
||||
|
const allSkuValueGroupMap = this.productData.map |
||||
|
// 遍历后端数据 |
||||
|
for (const allSkuValueGroupMapKey in allSkuValueGroupMap) { |
||||
|
// 当和当前选中的sku一致 |
||||
|
if (nowSelectSkuValueGroupKey === allSkuValueGroupMapKey) { |
||||
|
this.selectedSku = allSkuValueGroupMap[allSkuValueGroupMapKey] |
||||
|
this.echoFatherRowText(this.productData, this.selectedSku, this.buyNum) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 回显父组件(通讯) |
||||
|
* @param productData 当前商品对象 |
||||
|
* @param skuItem 当前选中的sku的后端数据 |
||||
|
* @param buyNum 当前sku购买数量 |
||||
|
*/ |
||||
|
echoFatherRowText(productData, skuItem, buyNum) { |
||||
|
// 获取到当前选中的sku的valueCode |
||||
|
const currentSku = [] |
||||
|
// 取出所有的valueCode |
||||
|
const nowSelectValueCodeList = skuItem['valueCodes'].split(',') |
||||
|
const skuRows = productData.names |
||||
|
for (const skuRow of skuRows) { |
||||
|
const skuValues = skuRow.values |
||||
|
for (const skuValue of skuValues) { |
||||
|
if (!nowSelectValueCodeList.includes(skuValue.valueCode)) continue; |
||||
|
const currentSkuItem = {skuText: ''} |
||||
|
if (skuValue.valueCode === '单款项') { |
||||
|
currentSkuItem['skuText'] = skuValue['skuValue'] |
||||
|
} else { |
||||
|
currentSkuItem['skuText'] = `${ skuValue.skuName }:${ skuValue.skuValue }` |
||||
|
} |
||||
|
currentSku.push(currentSkuItem) |
||||
|
break; // 只会对应一个value数据,找到就break减少循环 |
||||
|
} |
||||
|
} |
||||
|
this.$emit('getCurrentSku', { |
||||
|
skuItem, |
||||
|
currentSku, |
||||
|
buyNum |
||||
|
}) |
||||
|
// 选中sku之后,做一些相应的操作 |
||||
|
// postSelectSku依赖于getCurrentSku的数据 |
||||
|
this.$emit('postSelectSku') |
||||
|
}, |
||||
|
|
||||
|
//加入购物车 |
||||
|
async handleAddCart() { |
||||
|
this.handleCheckIsLogin() |
||||
|
if (this.selectedSku.stockNumber < 1) { |
||||
|
return uni.showToast({ |
||||
|
title: this.$t('common.understock'), |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
// uni.showLoading({ |
||||
|
// mask: true, |
||||
|
// title: '添加中...', |
||||
|
// }) |
||||
|
try { |
||||
|
const postData = { |
||||
|
skuId: this.selectedSku.skuId, |
||||
|
number: this.buyNum, |
||||
|
} |
||||
|
await NET.request(API.ShoppingaddCart, postData, 'POST') |
||||
|
// 埋点 |
||||
|
this.$store.dispatch('doPointer', { |
||||
|
eventType: 2, |
||||
|
productIds: this.productId |
||||
|
}) |
||||
|
// 给购物车小图标赋值数量 |
||||
|
let newAllCartNum = uni.getStorageSync('allCartNum') + this.buyNum |
||||
|
uni.setStorageSync('allCartNum', newAllCartNum) |
||||
|
this.$emit('changeCartNum',newAllCartNum) |
||||
|
uni.showToast({ |
||||
|
title: '添加成功', |
||||
|
icon: 'none' |
||||
|
}) |
||||
|
setTimeout(()=>{ |
||||
|
this.buyNum = 1 |
||||
|
this.goodsDetailShowFlag = false |
||||
|
},2000) |
||||
|
}finally { |
||||
|
uni.hideLoading() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 立即购买(下单) |
||||
|
*/ |
||||
|
handleBuyNow() { |
||||
|
this.handleCheckIsLogin() |
||||
|
if (this.selectedSku.stockNumber < 1) { |
||||
|
return uni.showToast({ |
||||
|
title: this.$t('common.understock'), |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
if (this.buyNum > this.selectedSku.stockNumber && this.selectedSku.stockNumber !== 0) { |
||||
|
return uni.showToast({ |
||||
|
title: '已超出最大数量限制', |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
//组装后端数据 |
||||
|
let list = [{ |
||||
|
ifWork: 0, |
||||
|
shopId: this.productData.shopId, |
||||
|
shopName: this.productData.shopName, |
||||
|
shopDiscountId: this.shopDiscountId > 0 ? this.shopDiscountId : null, |
||||
|
shopSeckillId: this.shopSeckillId > 0 ? this.shopSeckillId : null, |
||||
|
skus: [{ |
||||
|
productId: this.productData.productId, |
||||
|
skuId: this.selectedSku.skuId, |
||||
|
productName: this.productData.productName, |
||||
|
image: this.selectedSku.image, |
||||
|
price: this.selectedSku.price, |
||||
|
weight: 0, |
||||
|
number: this.buyNum, |
||||
|
SKU: "", |
||||
|
total: this.selectedSku.price * this.buyNum, |
||||
|
ifLogistics: 1 |
||||
|
}] |
||||
|
}] |
||||
|
uni.setStorageSync('skuItemDTOList', list) |
||||
|
this.buyNum = 1 |
||||
|
this.goodsDetailShowFlag = false |
||||
|
uni.navigateTo({ |
||||
|
url: '../orderModule/orderConfirm?type=1', |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 拼团下单 |
||||
|
* @param type 1单独开团2拼团 |
||||
|
*/ |
||||
|
handleBuyWithGroup(type) { |
||||
|
this.handleCheckIsLogin() |
||||
|
if (this.selectedSku.stockNumber < 1) { |
||||
|
return uni.showToast({ |
||||
|
title: this.$t('common.understock'), |
||||
|
icon: "none" |
||||
|
}) |
||||
|
} |
||||
|
const data = { |
||||
|
number: this.buyNum, |
||||
|
productId: this.productId, |
||||
|
shopId: this.shopId, |
||||
|
skuId: this.selectedSku.skuId, |
||||
|
shopGroupWorkId: this.selectedSku.shopGroupWorkId, |
||||
|
type: type |
||||
|
} |
||||
|
if (type !== 1) { |
||||
|
data.collageId = this.collageId |
||||
|
} |
||||
|
uni.removeStorageSync("skuItemDTOList") |
||||
|
uni.setStorageSync('skuItemList', data) |
||||
|
this.goodsDetailShowFlag = false |
||||
|
this.buyNum = 1 |
||||
|
uni.navigateTo({ |
||||
|
url: '../orderModule/orderConfirm?type=1', |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 是否登录 |
||||
|
* @return {boolean|void} |
||||
|
*/ |
||||
|
handleCheckIsLogin() { |
||||
|
const userInfo = uni.getStorageSync('storage_key') |
||||
|
if (!userInfo || (userInfo && JSON.stringify(userInfo) === '{}')) { |
||||
|
return uni.navigateTo({ |
||||
|
url: '../../pages_category_page2/userModule/login' |
||||
|
}) |
||||
|
} |
||||
|
return true |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 选择分期 |
||||
|
* @param index 0:3期 1:6期 2:12期 |
||||
|
*/ |
||||
|
handleSelectAliAging(index) { |
||||
|
const aliAgingObj = this.aliAgingObj |
||||
|
if (aliAgingObj.selectIndex !== index && !aliAgingObj.disableSelectList[index]) { |
||||
|
aliAgingObj.selectIndex = index; |
||||
|
} else { |
||||
|
aliAgingObj.selectIndex = -1; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 渲染是否支持花呗 |
||||
|
* @param productData 当前商品 |
||||
|
* @param skuPrice:number 选中SKU的价格 |
||||
|
*/ |
||||
|
handleRenderAliAging(productData, skuPrice) { |
||||
|
if (productData.ifHuabei !== 1) return |
||||
|
const aliAgingObj = this.aliAgingObj |
||||
|
if (skuPrice && skuPrice >= 0.03) { |
||||
|
aliAgingObj.supportHanaUta = true |
||||
|
aliAgingObj.disableSelectList[0] = false; |
||||
|
aliAgingObj.agingMoneyList[0] = (parseInt((skuPrice / 3 * 100) / 100 + '')).toFixed(2) + "" |
||||
|
} |
||||
|
if (skuPrice && skuPrice >= 0.06) { |
||||
|
aliAgingObj.supportHanaUta = false; |
||||
|
aliAgingObj.disableSelectList[1] = false; |
||||
|
aliAgingObj.agingMoneyList[1] = (parseInt((skuPrice / 6 * 100) / 100 + '')).toFixed(2) + "" |
||||
|
} |
||||
|
if (skuPrice && skuPrice >= 0.12) { |
||||
|
aliAgingObj.supportHanaUta = true; |
||||
|
aliAgingObj.disableSelectList[2] = false; |
||||
|
aliAgingObj.agingMoneyList[2] = (parseInt((skuPrice / 12 * 100) / 100 + '')).toFixed(2) + "" |
||||
|
} |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style |
||||
|
lang="scss" |
||||
|
scoped |
||||
|
> |
||||
|
.goosDetailshow-box { |
||||
|
margin-bottom: -5upx; |
||||
|
|
||||
|
.detailImg-box { |
||||
|
margin-top: 30upx; |
||||
|
margin-left: 30upx; |
||||
|
border-bottom: 1upx solid #EDEDED; |
||||
|
padding-bottom: 20upx; |
||||
|
width: 690upx; |
||||
|
|
||||
|
.detailImg { |
||||
|
width: 140upx; |
||||
|
height: 140upx; |
||||
|
border-radius: 20rpx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.color-box { |
||||
|
padding: 30upx 30upx; |
||||
|
width: 690upx; |
||||
|
|
||||
|
.colorName-box { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
flex-direction: row; |
||||
|
justify-content: flex-start; |
||||
|
align-items: center; |
||||
|
margin-top: 30upx; |
||||
|
margin-left: -30upx; |
||||
|
|
||||
|
.colorName { |
||||
|
background-color: #FFFFFF; |
||||
|
margin-left: 30upx; |
||||
|
padding: 10upx 32upx; |
||||
|
font-size: 26upx; |
||||
|
border: 2rpx solid #E4E5E6; |
||||
|
z-index: 2; |
||||
|
color: #333333; |
||||
|
} |
||||
|
|
||||
|
.colorName-on { |
||||
|
box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); |
||||
|
color: #C5AA7B; |
||||
|
margin-left: 30upx; |
||||
|
padding: 10upx 32upx; |
||||
|
font-size: 26upx; |
||||
|
text-align: center; |
||||
|
z-index: 1; |
||||
|
border: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.modelNum-box { |
||||
|
padding: 30upx 30upx; |
||||
|
border-bottom: 1upx solid #EDEDED; |
||||
|
width: 690upx; |
||||
|
|
||||
|
.modelNumName-box { |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
flex-direction: row; |
||||
|
justify-content: flex-start; |
||||
|
align-items: center; |
||||
|
margin-top: 30upx; |
||||
|
margin-left: -30upx; |
||||
|
|
||||
|
.modelNumName-on { |
||||
|
background-color: #FFE4D0; |
||||
|
color: #FF7800; |
||||
|
margin-left: 30upx; |
||||
|
padding: 10upx 32upx; |
||||
|
border-radius: 28upx; |
||||
|
border: 1upx solid #FF7800; |
||||
|
font-size: 26upx; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.modelNumName { |
||||
|
background-color: #F5F5F5; |
||||
|
margin-left: 30upx; |
||||
|
padding: 10upx 32upx; |
||||
|
border-radius: 28upx; |
||||
|
font-size: 26upx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.goodsNumCent { |
||||
|
padding: 0 30upx; |
||||
|
|
||||
|
.goodsNum-box { |
||||
|
width: 100%; |
||||
|
padding: 30rpx 0 180rpx 0; |
||||
|
border-top: 2rpx solid #EDEDED; |
||||
|
|
||||
|
.goodsNum { |
||||
|
height: 50upx; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
|
||||
|
.item { |
||||
|
width: 50upx; |
||||
|
height: 50upx; |
||||
|
line-height: 48rpx; |
||||
|
border: 1upx solid #999999; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.subtract { |
||||
|
border-right: 0upx; |
||||
|
} |
||||
|
|
||||
|
.goodsNumber { |
||||
|
line-height: 50rpx; |
||||
|
} |
||||
|
|
||||
|
.add { |
||||
|
border-left: 0upx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.bottom-line { |
||||
|
border-bottom: 1upx solid #EDEDED; |
||||
|
} |
||||
|
|
||||
|
.huabei-box { |
||||
|
padding: 30upx 30upx; |
||||
|
width: 690upx; |
||||
|
|
||||
|
.fenqi-box { |
||||
|
margin-top: 15upx; |
||||
|
width: 120%; |
||||
|
|
||||
|
.huabei-item { |
||||
|
display: inline-block; |
||||
|
background: #f3f3f3; |
||||
|
padding: 16upx 24upx; |
||||
|
margin: 5upx 10upx; |
||||
|
border-radius: 15upx; |
||||
|
text-align: center; |
||||
|
font-size: 7upx; |
||||
|
|
||||
|
.huabei-period { |
||||
|
display: block; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.fenqi-on { |
||||
|
border: 1px solid #EF7F93; |
||||
|
color: #EF7F93; |
||||
|
} |
||||
|
|
||||
|
.disabled { |
||||
|
color: #cacaca; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.goosDetailbut-box { |
||||
|
justify-content: center; |
||||
|
|
||||
|
.joinShopCartBut { |
||||
|
width: 343upx; |
||||
|
height: 80upx; |
||||
|
border-radius: 40upx 0 0 40upx; |
||||
|
background-color: #FFC300; |
||||
|
color: #FFFEFE; |
||||
|
font-size: 28upx; |
||||
|
line-height: 80upx; |
||||
|
text-align: center; |
||||
|
margin-left: 30upx; |
||||
|
} |
||||
|
|
||||
|
.buyNowBut { |
||||
|
width: 90%; |
||||
|
height: 90upx; |
||||
|
background-color: #333333; |
||||
|
font-size: 28upx; |
||||
|
line-height: 90upx; |
||||
|
text-align: center; |
||||
|
color: #FFEBC4; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.skuSelectBtn { |
||||
|
padding-bottom: 30rpx; |
||||
|
|
||||
|
.selectBtn { |
||||
|
width: 342rpx; |
||||
|
height: 100rpx; |
||||
|
line-height: 100rpx; |
||||
|
text-align: center; |
||||
|
border: 2rpx solid #333333; |
||||
|
font-size: 28rpx; |
||||
|
border-radius: 8rpx; |
||||
|
} |
||||
|
|
||||
|
.selectBuyNow { |
||||
|
background: #333333; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.couponItemimg { |
||||
|
width: 150upx; |
||||
|
height: 60upx; |
||||
|
} |
||||
|
|
||||
|
.joinbuyBut { |
||||
|
width: 190upx; |
||||
|
height: 80upx; |
||||
|
background: #333333; |
||||
|
color: #FFEBC4; |
||||
|
font-size: 28upx; |
||||
|
line-height: 80upx; |
||||
|
text-align: center; |
||||
|
margin-left: 30upx; |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue