|
|
|
<template>
|
|
|
|
<view class="shoppingCart">
|
|
|
|
<view class="header" :style="'height: ' + CustomBar + 'px'">
|
|
|
|
<view class="top-nav-box acea-row row-between-wrapper" :style="'width:' + CustomBarLeft + 'px;padding-top:' + StatusBar + 'px;height:' + CustomBar + 'px'">
|
|
|
|
<image v-if="hasReturnPath" class="backImg" src="@/static/images/back-btn.png" mode="" @click="returnPath"></image>
|
|
|
|
<view v-else class=""></view>
|
|
|
|
<view class="tab-title" v-if="$store.getters.token||userInfo.uid">购物车</view>
|
|
|
|
<view v-if="cartList.length > 0" :class="'manage-text ' + (footerswitch?'inManage':'')" @click="manage">{{ footerswitch ? '退出' : '管理' }}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view :style="[{height:CustomBar + 'px'}]"></view>
|
|
|
|
|
|
|
|
<!-- <view> -->
|
|
|
|
<view v-if="$store.getters.token||userInfo.uid">
|
|
|
|
<!-- <view class="labelNav acea-row row-around row-middle">
|
|
|
|
<view class="item">
|
|
|
|
<text class="iconfont icon-xuanzhong"></text>100%正品保证
|
|
|
|
</view>
|
|
|
|
<view class="item">
|
|
|
|
<text class="iconfont icon-xuanzhong"></text>所有商品精挑细选
|
|
|
|
</view>
|
|
|
|
<view class="item">
|
|
|
|
<text class="iconfont icon-xuanzhong"></text>售后无忧
|
|
|
|
</view>
|
|
|
|
</view> -->
|
|
|
|
<!-- <view class="nav acea-row row-between-wrapper">
|
|
|
|
<view>
|
|
|
|
购物数量
|
|
|
|
<text class="num font-color-red">{{ count }}</text>
|
|
|
|
</view>
|
|
|
|
<view v-if="cartList.valid.length > 0" class="administrate acea-row row-center-wrapper" @click="manage">
|
|
|
|
{{ footerswitch ? '取消' : '管理' }}</view>
|
|
|
|
</view> -->
|
|
|
|
<view v-if="dataList.length > 0">
|
|
|
|
<!-- <view v-if="validList.length > 0 || cartList.invalid.length > 0"> -->
|
|
|
|
<view class="list">
|
|
|
|
<view class="item" v-for="(item, brandIndex) in dataList" :key="brandIndex">
|
|
|
|
<!-- <view class="item acea-row row-between-wrapper" v-for="(item, cartListValidIndex) in validList" :key="cartListValidIndex"> -->
|
|
|
|
<view class="top acea-row row-middle">
|
|
|
|
<view>
|
|
|
|
<!-- <checkbox-group> -->
|
|
|
|
<checkbox-group @change="itemAllchecked(brandIndex)">
|
|
|
|
<label class="well-check">
|
|
|
|
<checkbox :checked="item.checked"></checkbox>
|
|
|
|
</label>
|
|
|
|
</checkbox-group>
|
|
|
|
</view>
|
|
|
|
<view class="logo-box">
|
|
|
|
<image :src="item.brand.pic" mode=""></image>
|
|
|
|
</view>
|
|
|
|
<view class="brand">{{item.brand.brandName}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="goodsItem acea-row row-between-wrapper" v-for="(goodsItem, goodsIndex) in item.validProductList" :key="goodsIndex">
|
|
|
|
<view class="select-btn">
|
|
|
|
<view class="checkbox-wrapper">
|
|
|
|
<checkbox-group @change="switchSelect(brandIndex, goodsIndex)">
|
|
|
|
<label class="well-check">
|
|
|
|
<checkbox value :checked="goodsItem.checked"></checkbox>
|
|
|
|
</label>
|
|
|
|
</checkbox-group>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="picTxt acea-row row-between-wrapper">
|
|
|
|
<view class="pictrue" @click="goGoodsCon(goodsItem)">
|
|
|
|
<image :src="goodsItem.productInfo.attrInfo.image" v-if="goodsItem.productInfo.attrInfo" />
|
|
|
|
<image :src="goodsItem.productInfo.image" v-else />
|
|
|
|
</view>
|
|
|
|
<view class="text">
|
|
|
|
<view class="line1">{{ goodsItem.productInfo.storeName }}</view>
|
|
|
|
<view class="acea-row">
|
|
|
|
<view class="infor" v-if="goodsItem.productInfo.attrInfo">{{ goodsItem.productInfo.attrInfo.sku }}</view>
|
|
|
|
</view>
|
|
|
|
<view class="money">¥{{ goodsItem.truePrice }}</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="carnum acea-row row-center-wrapper">
|
|
|
|
<view class="reduce" :class="goodsItem.cartNum <= 1 ? 'on' : ''"
|
|
|
|
@click.prevent="reduce(brandIndex, goodsIndex)">-</view>
|
|
|
|
<view class="num">{{ goodsItem.cartNum }}</view>
|
|
|
|
<view class="plus" v-if="goodsItem.attrInfo"
|
|
|
|
:class="goodsItem.cartNum >= goodsItem.attrInfo.stock ? 'on' : ''"
|
|
|
|
@click.prevent="plus(brandIndex, goodsIndex)">+</view>
|
|
|
|
<view class="plus" v-else
|
|
|
|
:class="goodsItem.cartNum >= goodsItem.stock ? 'on' : ''"
|
|
|
|
@click.prevent="plus(brandIndex, goodsIndex)">+</view>
|
|
|
|
<!-- <view class="reduce" :class="validList[cartListValidIndex].cartNum <= 1 ? 'on' : ''"
|
|
|
|
@click.prevent="reduce(cartListValidIndex)">-</view>
|
|
|
|
<view class="num">{{ goodsItem.cartNum }}</view>
|
|
|
|
<view class="plus" v-if="validList[cartListValidIndex].attrInfo"
|
|
|
|
:class="validList[cartListValidIndex].cartNum >= validList[cartListValidIndex].attrInfo.stock ? 'on' : ''"
|
|
|
|
@click.prevent="plus(cartListValidIndex)">+</view>
|
|
|
|
<view class="plus" v-else
|
|
|
|
:class="validList[cartListValidIndex].cartNum >= validList[cartListValidIndex].stock ? 'on' : ''"
|
|
|
|
@click.prevent="plus(cartListValidIndex)">+</view> -->
|
|
|
|
</view>
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- <view class="add-on-item">
|
|
|
|
<view class="title">商品凑单</view>
|
|
|
|
<scroll-view scroll-x="true" class="scroll-box">
|
|
|
|
<view class="scroll">
|
|
|
|
<view v-for="(item,index) in 4" :key="index">
|
|
|
|
<view class="item">
|
|
|
|
<image class="add-img" src="../../../static/images/add-btn.png" mode=""></image>
|
|
|
|
<image class="img" src="" mode=""></image>
|
|
|
|
<view class="goodsName more-t">LA PRAIRIE莱珀妮鱼子眼部紧颜液眼精华 20ml参天眼药水Beauteye
|
|
|
|
玫瑰滴眼液 12ml</view>
|
|
|
|
<view class="price">¥104.00</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
</view> -->
|
|
|
|
|
|
|
|
</view>
|
|
|
|
<!--购物车暂无商品-->
|
|
|
|
<view class="noCart" v-if="cartList.length === 0 && invalidProductList.length === 0">
|
|
|
|
<!-- <view class="noCart" v-if="cartList.valid.length === 0 && cartList.invalid.length === 0"> -->
|
|
|
|
<view class="">购物车竟然是空的</view>
|
|
|
|
<view class="tip">去挑选满意的商品吧</view>
|
|
|
|
<view class="btn-box acea-row row-center">
|
|
|
|
<view class="btn" @click="$yrouter.reLaunch('/pages/home/index')">前往首页</view>
|
|
|
|
<view class="btn" @click="$yrouter.push('/pages/shop/GoodSearch/index')">去搜索</view>
|
|
|
|
</view>
|
|
|
|
<!-- <view class="pictrue">
|
|
|
|
<image :src="`${$VUE_APP_RESOURCES_URL}/images/noCart.png`" />
|
|
|
|
</view> -->
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="invalidGoods" v-if="invalidProductList.length > 0">
|
|
|
|
<!-- <view class="invalidGoods" v-if="cartList.invalid.length > 0"> -->
|
|
|
|
<view class="goodsNav acea-row row-between-wrapper">
|
|
|
|
<view @click="goodsOpen">
|
|
|
|
<text class="iconfont" :class="goodsHidden === true ? 'icon-xiangyou' : 'icon-xiangxia'"></text>失效商品
|
|
|
|
</view>
|
|
|
|
<view class="del" @click="delInvalidGoods">
|
|
|
|
<text class="iconfont icon-shanchu1"></text>清空
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="goodsList" :hidden="goodsHidden">
|
|
|
|
<view v-for="(item, cartListinvalidIndex) in invalidProductList" :key="cartListinvalidIndex">
|
|
|
|
<view @click="goGoodsCon(item)" class="item acea-row row-between-wrapper" v-if="item.productInfo">
|
|
|
|
<view class="invalid acea-row row-center-wrapper">失效</view>
|
|
|
|
<view class="pictrue">
|
|
|
|
<image :src="item.productInfo.attrInfo.image" v-if="item.productInfo.attrInfo" />
|
|
|
|
<image :src="item.productInfo.image" v-else />
|
|
|
|
</view>
|
|
|
|
<view class="text acea-row row-column-between">
|
|
|
|
<view class="line1">{{ item.productInfo.storeName }}</view>
|
|
|
|
<view class="infor line1" v-if="item.productInfo.attrInfo">属性:{{ item.productInfo.attrInfo.sku }}
|
|
|
|
</view>
|
|
|
|
<view class="acea-row row-between-wrapper">
|
|
|
|
<view class="end">该商品已下架</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<Recommend></Recommend>
|
|
|
|
|
|
|
|
<view style="height:112rpx" v-if="cartList.length > 0"></view>
|
|
|
|
<!-- <view :class="{'footer acea-row row-between-wrapper':true,'footer-h5':isH5}" v-if="cartList.valid.length > 0"> -->
|
|
|
|
<view class="footer acea-row row-between-wrapper" v-if="cartList.length > 0" :style="addBottom?'':'bottom: 98rpx;'">
|
|
|
|
<!-- <view> -->
|
|
|
|
<!-- <view class="select-btn">
|
|
|
|
<view class="checkbox-wrapper"> -->
|
|
|
|
<checkbox-group @change="allChecked">
|
|
|
|
<label class="well-check">
|
|
|
|
<checkbox value="allSelect" :checked="isAllSelect && cartCount > 0"></checkbox>
|
|
|
|
<text class="checkAll">全选</text>
|
|
|
|
</label>
|
|
|
|
</checkbox-group>
|
|
|
|
<!-- </view>
|
|
|
|
</view> -->
|
|
|
|
<!-- </view> -->
|
|
|
|
<view class="money acea-row row-middle" v-if="footerswitch === false">
|
|
|
|
<text>合计</text>
|
|
|
|
<view class="price">
|
|
|
|
<text class="font-color-red">¥{{ countmoney }}</text>
|
|
|
|
<view class="count acea-row">
|
|
|
|
<view class="">共{{ cartCount }}件</view>
|
|
|
|
<!-- <view class="font-color-red">已优惠{{'39.90'}}元</view> -->
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view v-if="!footerswitch" class="placeOrder bg-color-red" @click="placeOrder">下单结算</view>
|
|
|
|
<view class="button acea-row row-middle" v-else>
|
|
|
|
<view class="bnt cart-color" @click="collectAll">收藏</view>
|
|
|
|
<view class="bnt" @click="delgoods">删除</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="no-token" v-else>
|
|
|
|
<image class="no-cart" src="../../../static/images/no-cart.png" mode=""></image>
|
|
|
|
<view class="text">请登录后查看</view>
|
|
|
|
<button class="cu-btn author-btn phone-btn" open-type="getPhoneNumber" @getphonenumber="phoneLogin">使用手机号登录</button>
|
|
|
|
<button class="cu-btn author-btn acea-row row-center-wrapper" v-if="canIUseGetUserProfile" @tap="getUserInfoProfile">
|
|
|
|
<image src="../../../static/images/wx-logo.png" mode=""></image>
|
|
|
|
<text>使用微信登录</text>
|
|
|
|
</button>
|
|
|
|
<button class="cu-btn author-btn acea-row row-center-wrapper" v-else @getuserinfo="getUserInfoBtn" open-type="getUserInfo">
|
|
|
|
<image src="../../../static/images/wx-logo.png" mode=""></image>
|
|
|
|
<text>使用微信登录</text>
|
|
|
|
</button>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- <Authorization v-else /> -->
|
|
|
|
<Tabbar :pagePath="pagePath" bgcolor="#F1F1F1"></Tabbar>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import Recommend from "@/components/Recommend";
|
|
|
|
import Tabbar from '@/components/Tabbar';
|
|
|
|
import Authorization from "@/pages/authorization/index";
|
|
|
|
import {
|
|
|
|
mapGetters
|
|
|
|
} from "vuex";
|
|
|
|
|
|
|
|
import {
|
|
|
|
getCartList,
|
|
|
|
postCartDel,
|
|
|
|
changeCartNum,
|
|
|
|
getCartCount
|
|
|
|
} from "@/api/store";
|
|
|
|
import {
|
|
|
|
postCollectAll,
|
|
|
|
wxappAuth,
|
|
|
|
getUserInfo
|
|
|
|
} from "@/api/user";
|
|
|
|
import { login, getProvider } from '@/utils'
|
|
|
|
import {
|
|
|
|
mul,
|
|
|
|
add
|
|
|
|
} from "@/utils/bc";
|
|
|
|
import dayjs from 'dayjs';
|
|
|
|
import cookie from "@/utils/store/cookie";
|
|
|
|
import store from '@/store';
|
|
|
|
|
|
|
|
const CHECKED_IDS = "cart_checked";
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: "ShoppingCart",
|
|
|
|
components: {
|
|
|
|
Recommend,
|
|
|
|
Authorization,
|
|
|
|
Tabbar
|
|
|
|
},
|
|
|
|
props: {},
|
|
|
|
data: function () {
|
|
|
|
return {
|
|
|
|
StatusBar: this.StatusBar,
|
|
|
|
CustomBar: this.CustomBar,
|
|
|
|
CustomBarLeft: this.CustomBarLeft,
|
|
|
|
addBottom: this.addBottom,
|
|
|
|
pagePath: '',
|
|
|
|
canIUseGetUserProfile: false,
|
|
|
|
hasReturnPath: false,
|
|
|
|
cartList: [],
|
|
|
|
invalidProductList: [],
|
|
|
|
// cartList: {
|
|
|
|
// invalid: [],
|
|
|
|
// valid: []
|
|
|
|
// },
|
|
|
|
dataList: [],
|
|
|
|
isH5: false,
|
|
|
|
validList: [],
|
|
|
|
isAllSelect: false,
|
|
|
|
cartCount: 0,
|
|
|
|
countmoney: 0,
|
|
|
|
goodsHidden: true,
|
|
|
|
footerswitch: false,
|
|
|
|
count: 0,
|
|
|
|
checkedIds: [],
|
|
|
|
loaded: false
|
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: mapGetters(["userInfo", "token"]),
|
|
|
|
// watch: {
|
|
|
|
// $yroute(n) {
|
|
|
|
// if (n.name === "ShoppingCart") {
|
|
|
|
// this.carnum();
|
|
|
|
// this.countMoney();
|
|
|
|
// this.getCartList();
|
|
|
|
// this.gainCount();
|
|
|
|
// this.goodsHidden = true;
|
|
|
|
// this.footerswitch = false;
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// cartList(list) {
|
|
|
|
// this.validList = list.valid;
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
watch: {
|
|
|
|
// userInfo(user) {
|
|
|
|
// if (user.uid) {
|
|
|
|
// this.carnum();
|
|
|
|
// this.countMoney();
|
|
|
|
// this.getCartList();
|
|
|
|
// this.gainCount();
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
// token(token) {
|
|
|
|
// if (this.userInfo.uid) {
|
|
|
|
// this.carnum();
|
|
|
|
// this.countMoney();
|
|
|
|
// this.getCartList();
|
|
|
|
// this.gainCount();
|
|
|
|
// }
|
|
|
|
// },
|
|
|
|
cartList(list) {
|
|
|
|
// this.validList = list.valid;
|
|
|
|
this.dataList = list;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onLoad() {
|
|
|
|
uni.hideTabBar();
|
|
|
|
let pages = getCurrentPages();
|
|
|
|
this.pagePath = '/' + pages[pages.length - 1].route;
|
|
|
|
if (wx.getUserProfile) {
|
|
|
|
this.canIUseGetUserProfile = true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onShow: function () {
|
|
|
|
// #ifdef H5
|
|
|
|
this.isH5 = true
|
|
|
|
// #endif
|
|
|
|
console.log(this.userInfo)
|
|
|
|
if (this.userInfo.uid) {
|
|
|
|
this.carnum();
|
|
|
|
this.countMoney();
|
|
|
|
this.getCartList();
|
|
|
|
this.gainCount();
|
|
|
|
}
|
|
|
|
this.hasReturnPath = uni.getStorageSync('pathToCart')?true:false;
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
goPage() {
|
|
|
|
this.$yrouter.push('/pages/shop/GoodSearch/index');
|
|
|
|
this.$yrouter.reLaunch({path: "/pages/home/index"});
|
|
|
|
},
|
|
|
|
goGoodsCon(item) {
|
|
|
|
this.$yrouter.push({
|
|
|
|
path: "/pages/shop/GoodsCon/index",
|
|
|
|
query: {
|
|
|
|
id: item.productId
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
returnPath() {
|
|
|
|
let url = uni.getStorageSync('pathToCart');
|
|
|
|
uni.removeStorageSync('pathToCart')
|
|
|
|
uni.redirectTo({
|
|
|
|
url
|
|
|
|
})
|
|
|
|
},
|
|
|
|
getCartList: function () {
|
|
|
|
let that = this;
|
|
|
|
getCartList().then(res => {
|
|
|
|
that.cartList = res.data.cartList;
|
|
|
|
that.invalidProductList = res.data.invalidProductList;
|
|
|
|
let checkedIds = cookie.get(CHECKED_IDS) || [];
|
|
|
|
if (!Array.isArray(checkedIds)) checkedIds = [];
|
|
|
|
// this.cartList.valid.forEach(cart => {
|
|
|
|
// if (checkedIds.indexOf(cart.id) !== -1) cart.checked = true;
|
|
|
|
// });
|
|
|
|
let allLength = 0;
|
|
|
|
this.cartList.forEach(brand => {
|
|
|
|
brand.validProductList.forEach(val => {
|
|
|
|
if (checkedIds.indexOf(val.id) !== -1) val.checked = true;
|
|
|
|
})
|
|
|
|
brand.checked = brand.validProductList.every(res => {
|
|
|
|
return res.checked === true
|
|
|
|
})
|
|
|
|
allLength += brand.validProductList.length;
|
|
|
|
})
|
|
|
|
if (checkedIds.length) {
|
|
|
|
that.checkedIds = checkedIds;
|
|
|
|
that.isAllSelect = checkedIds.length === allLength;
|
|
|
|
// that.isAllSelect = checkedIds.length === this.cartList.valid.length;
|
|
|
|
that.carnum();
|
|
|
|
that.countMoney();
|
|
|
|
}
|
|
|
|
this.loaded = true;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//删除商品;
|
|
|
|
delgoods: function () {
|
|
|
|
let that = this,
|
|
|
|
id = [],
|
|
|
|
valid = [],
|
|
|
|
list = that.cartList;
|
|
|
|
list.forEach(item => {
|
|
|
|
item.validProductList.forEach(val => {
|
|
|
|
if (val.checked === true) {
|
|
|
|
id.push(val.id);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
// list.forEach(function (val) {
|
|
|
|
// if (val.checked === true) {
|
|
|
|
// id.push(val.id);
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
if (id.length === 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: "请选择产品",
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
postCartDel(id).then(function () {
|
|
|
|
list.forEach(function (val, i) {
|
|
|
|
if (val.checked === false || val.checked === undefined)
|
|
|
|
valid.push(list[i]);
|
|
|
|
});
|
|
|
|
that.$set(that.cartList, "valid", valid);
|
|
|
|
that.carnum();
|
|
|
|
that.countMoney();
|
|
|
|
that.gainCount();
|
|
|
|
that.getCartList();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
// //获取数量
|
|
|
|
gainCount: function () {
|
|
|
|
let that = this;
|
|
|
|
getCartCount().then(res => {
|
|
|
|
that.count = res.data.count;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//清除失效产品;
|
|
|
|
delInvalidGoods: function () {
|
|
|
|
let that = this,
|
|
|
|
id = [],
|
|
|
|
list = that.invalidProductList;
|
|
|
|
list.forEach(function (val) {
|
|
|
|
id.push(val.id);
|
|
|
|
});
|
|
|
|
postCartDel(id).then(function () {
|
|
|
|
list.splice(0, list.length);
|
|
|
|
that.gainCount();
|
|
|
|
that.getCartList();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//批量收藏;
|
|
|
|
collectAll: function () {
|
|
|
|
let that = this,
|
|
|
|
data = {
|
|
|
|
id: [],
|
|
|
|
category: ""
|
|
|
|
},
|
|
|
|
list = that.cartList.valid;
|
|
|
|
list.forEach(function (val) {
|
|
|
|
if (val.checked === true) {
|
|
|
|
data.id.push(val.product_id);
|
|
|
|
data.category = val.type;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if (data.id.length === 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: "请选择产品",
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
postCollectAll(data).then(function () {
|
|
|
|
uni.showToast({
|
|
|
|
title: "收藏成功!",
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//立即下单;
|
|
|
|
placeOrder: function () {
|
|
|
|
let that = this,
|
|
|
|
list = that.cartList,
|
|
|
|
id = [];
|
|
|
|
list.forEach(item => {
|
|
|
|
item.validProductList.forEach(val => {
|
|
|
|
if (val.checked === true) {
|
|
|
|
id.push(val.id);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
// list.forEach(function (val) {
|
|
|
|
// if (val.checked === true) {
|
|
|
|
// id.push(val.id);
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
if (id.length === 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: "请选择产品",
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this.$yrouter.push({
|
|
|
|
path: "/pages/order/OrderSubmission/index",
|
|
|
|
query: {
|
|
|
|
id: id.join(",")
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
manage: function () {
|
|
|
|
console.log('safsafsaf')
|
|
|
|
let that = this;
|
|
|
|
that.footerswitch = !that.footerswitch;
|
|
|
|
},
|
|
|
|
goodsOpen: function () {
|
|
|
|
let that = this;
|
|
|
|
that.goodsHidden = !that.goodsHidden;
|
|
|
|
},
|
|
|
|
//加
|
|
|
|
plus(brandIndex, index) {
|
|
|
|
let that = this;
|
|
|
|
let list = that.cartList[brandIndex].validProductList[index];
|
|
|
|
list.cartNum++;
|
|
|
|
if (list.attrInfo) {
|
|
|
|
if (list.cartNum >= list.attrInfo.stock) {
|
|
|
|
that.$set(list, "cart_num", list.attrInfo.stock);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (list.cartNum >= list.stock) {
|
|
|
|
that.$set(list, "cart_num", list.stock);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
that.carnum();
|
|
|
|
that.countMoney();
|
|
|
|
that.syncCartNum(list);
|
|
|
|
},
|
|
|
|
//减
|
|
|
|
reduce(brandIndex, index) {
|
|
|
|
let that = this;
|
|
|
|
let list = that.cartList[brandIndex].validProductList[index];
|
|
|
|
if (list.cartNum <= 1) {
|
|
|
|
uni.showToast({
|
|
|
|
title: "已经是底线啦!",
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
list.cartNum--;
|
|
|
|
if (list.cartNum < 1) {
|
|
|
|
that.$set(list, "cart_num", 1);
|
|
|
|
}
|
|
|
|
that.carnum();
|
|
|
|
that.countMoney();
|
|
|
|
that.syncCartNum(list);
|
|
|
|
},
|
|
|
|
syncCartNum(cart) {
|
|
|
|
if (!cart.sync) {
|
|
|
|
changeCartNum(cart.id, Math.max(cart.cartNum, 1) || 1)
|
|
|
|
.then(res => {
|
|
|
|
this.getCartList();
|
|
|
|
this.gainCount();
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
this.gainCount();
|
|
|
|
uni.showToast({
|
|
|
|
title: error.response.data.msg,
|
|
|
|
icon: "none",
|
|
|
|
duration: 2000
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
},
|
|
|
|
itemAllchecked(index) {
|
|
|
|
let cart = this.cartList[index];
|
|
|
|
cart.checked = !cart.checked;
|
|
|
|
// cart.isShowPinkagePrice = cart.checked;
|
|
|
|
this.cartList[index].validProductList.forEach(val => {
|
|
|
|
val.checked = cart.checked;
|
|
|
|
// this.cartList.valid.forEach(con => {
|
|
|
|
// if(con.id == val.id) {
|
|
|
|
// con.checked = val.checked
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
let i = this.checkedIds.indexOf(val.id);
|
|
|
|
if (i !== -1) this.checkedIds.splice(i, 1);
|
|
|
|
if (val.checked) {
|
|
|
|
this.checkedIds.push(val.id);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
this.isAllSelect = this.cartList.every(item => {
|
|
|
|
return item.validProductList.every(val => {
|
|
|
|
return val.checked === true
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// this.isAllSelect = this.cartList.valid.every(val => {
|
|
|
|
// return val.checked === true
|
|
|
|
// })
|
|
|
|
if(cart.reservePrice) {
|
|
|
|
let num = this.getItemPinkagePrice(cart);
|
|
|
|
// cart.pinkagePrice = sub(cart.reservePrice,num);
|
|
|
|
}
|
|
|
|
this.$set(this, "cartList", this.cartList);
|
|
|
|
this.$set(this, "isAllSelect", this.isAllSelect);
|
|
|
|
cookie.set(CHECKED_IDS, this.checkedIds);
|
|
|
|
this.carnum();
|
|
|
|
this.countMoney();
|
|
|
|
},
|
|
|
|
//单选
|
|
|
|
switchSelect(brandIndex, index) {
|
|
|
|
let that = this,
|
|
|
|
cart = that.cartList[brandIndex].validProductList[index],
|
|
|
|
i = this.checkedIds.indexOf(cart.id);
|
|
|
|
cart.checked = !cart.checked;
|
|
|
|
|
|
|
|
if (i !== -1) this.checkedIds.splice(i, 1);
|
|
|
|
if (cart.checked) {
|
|
|
|
this.checkedIds.push(cart.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
this.cartList[brandIndex].checked = this.cartList[brandIndex].validProductList.every(val => {
|
|
|
|
return val.checked === true
|
|
|
|
})
|
|
|
|
this.isAllSelect = this.cartList.every(item => {
|
|
|
|
return item.checked === true
|
|
|
|
// item.validProductList.every(val => {
|
|
|
|
// return val.checked === true
|
|
|
|
// })
|
|
|
|
})
|
|
|
|
|
|
|
|
// let len = that.cartList.valid.length;
|
|
|
|
// let selectnum = [];
|
|
|
|
// for (let i = 0; i < len; i++) {
|
|
|
|
// if (that.cartList.valid[i].checked === true) {
|
|
|
|
// selectnum.push(true);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// that.isAllSelect = selectnum.length === len;
|
|
|
|
|
|
|
|
that.$set(that, "cartList", that.cartList);
|
|
|
|
that.$set(that, "isAllSelect", that.isAllSelect);
|
|
|
|
cookie.set(CHECKED_IDS, that.checkedIds);
|
|
|
|
that.carnum();
|
|
|
|
that.gainCount();
|
|
|
|
that.countMoney();
|
|
|
|
},
|
|
|
|
//全选
|
|
|
|
allChecked(e) {
|
|
|
|
console.log(e);
|
|
|
|
let that = this;
|
|
|
|
let selectAllStatus = e.mp.detail.value[0] == "allSelect" ? true : false;
|
|
|
|
console.log(selectAllStatus);
|
|
|
|
// let selectAllStatus = that.isAllSelect;
|
|
|
|
let checkedIds = [];
|
|
|
|
// for (let i = 0; i < array.length; i++) {
|
|
|
|
// array[i].checked = selectAllStatus;
|
|
|
|
// checked.push()
|
|
|
|
// }
|
|
|
|
|
|
|
|
this.cartList.forEach(cart => {
|
|
|
|
cart.checked = selectAllStatus;
|
|
|
|
cart.validProductList.forEach(val => {
|
|
|
|
val.checked = selectAllStatus;
|
|
|
|
if (selectAllStatus) {
|
|
|
|
checkedIds.push(val.id);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
|
|
|
|
// that.cartList.valid.forEach(cart => {
|
|
|
|
// cart.checked = selectAllStatus;
|
|
|
|
// if (selectAllStatus) {
|
|
|
|
// checkedIds.push(cart.id);
|
|
|
|
// }
|
|
|
|
// });
|
|
|
|
|
|
|
|
// let cartList = {
|
|
|
|
// ...that.cartList
|
|
|
|
// };
|
|
|
|
// that.cartList = [];
|
|
|
|
// that.cartList = cartList;
|
|
|
|
console.log(this.cartList);
|
|
|
|
// this.$set(this, "cartList", this.cartList);
|
|
|
|
|
|
|
|
this.$set(this, "isAllSelect", selectAllStatus);
|
|
|
|
this.checkedIds = checkedIds;
|
|
|
|
cookie.set(CHECKED_IDS, checkedIds);
|
|
|
|
that.carnum();
|
|
|
|
that.countMoney();
|
|
|
|
this.$forceUpdate();
|
|
|
|
},
|
|
|
|
//数量
|
|
|
|
carnum: function () {
|
|
|
|
let that = this;
|
|
|
|
var carnum = 0;
|
|
|
|
// var array = that.cartList.valid;
|
|
|
|
// console.log('thiscartList', this.cartList);
|
|
|
|
this.cartList.forEach(item => {
|
|
|
|
item.validProductList.forEach(val => {
|
|
|
|
if(val.checked === true) {
|
|
|
|
carnum += parseInt(val.cartNum);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// for (let i = 0; i < array.length; i++) {
|
|
|
|
// if (array[i].checked === true) {
|
|
|
|
// carnum += parseInt(array[i].cartNum);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
that.$set(that, "cartCount", carnum);
|
|
|
|
},
|
|
|
|
//总共价钱;
|
|
|
|
countMoney: function () {
|
|
|
|
let that = this;
|
|
|
|
let carmoney = 0;
|
|
|
|
// let array = that.cartList.valid;
|
|
|
|
this.cartList.forEach(item => {
|
|
|
|
item.validProductList.forEach(val => {
|
|
|
|
if(val.checked === true) {
|
|
|
|
carmoney = add(carmoney, mul(val.cartNum, val.truePrice));
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// for (let i = 0; i < array.length; i++) {
|
|
|
|
// if (array[i].checked === true) {
|
|
|
|
// carmoney = add(carmoney, mul(array[i].cartNum, array[i].truePrice));
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
that.countmoney = carmoney;
|
|
|
|
},
|
|
|
|
// 登录
|
|
|
|
getUserInfoBtn(data) {
|
|
|
|
console.log(data)
|
|
|
|
console.log('getUserInfoBtn')
|
|
|
|
if (data.detail.errMsg == 'getUserInfo:fail auth deny') {
|
|
|
|
uni.showToast({
|
|
|
|
title: '取消授权',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
uni.showLoading({
|
|
|
|
title: '登录中',
|
|
|
|
})
|
|
|
|
login()
|
|
|
|
.then(e => {
|
|
|
|
uni.hideLoading()
|
|
|
|
this.carnum();
|
|
|
|
this.countMoney();
|
|
|
|
this.getCartList();
|
|
|
|
this.gainCount();
|
|
|
|
// console.log('重定向')
|
|
|
|
// this.$yrouter.reLaunch({
|
|
|
|
// path: cookie.get('redirect').replace(/\ /g, ''),
|
|
|
|
// })
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
uni.hideLoading()
|
|
|
|
console.log(error)
|
|
|
|
uni.showToast({
|
|
|
|
title: error,
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 申请获取用户信息
|
|
|
|
getUserInfoProfile(data) {
|
|
|
|
console.log('getUserInfoProfile')
|
|
|
|
wx.getUserProfile({
|
|
|
|
lang: 'zh_CN',
|
|
|
|
desc: '需要获取您的信息用来展示',
|
|
|
|
success: res => {
|
|
|
|
console.log('用户信息',res)
|
|
|
|
uni.showLoading({
|
|
|
|
title: '登录中',
|
|
|
|
})
|
|
|
|
login(res)
|
|
|
|
.then(e => {
|
|
|
|
this.carnum();
|
|
|
|
this.countMoney();
|
|
|
|
this.getCartList();
|
|
|
|
this.gainCount();
|
|
|
|
// console.log('重定向')
|
|
|
|
// this.$yrouter.reLaunch({
|
|
|
|
// path: cookie.get('redirect').replace(/\ /g, ''),
|
|
|
|
// })
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.log(error)
|
|
|
|
uni.showToast({
|
|
|
|
title: error,
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
})
|
|
|
|
},
|
|
|
|
// 微信用户手机号登录
|
|
|
|
phoneLogin(e) {
|
|
|
|
console.log('用户微信手机号登录')
|
|
|
|
if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
|
|
|
|
console.log(e.mp.detail)
|
|
|
|
getProvider()
|
|
|
|
.then(provider => {
|
|
|
|
console.log('当前的环境商',provider)
|
|
|
|
if (!provider) {
|
|
|
|
reject()
|
|
|
|
}
|
|
|
|
// uni登录
|
|
|
|
uni.login({
|
|
|
|
provider: provider,
|
|
|
|
success: async loginRes => {
|
|
|
|
console.log(loginRes)
|
|
|
|
let code = loginRes.code // 获取开发code
|
|
|
|
cookie.set('wxLoginCode', loginRes.code)
|
|
|
|
wxappAuth({
|
|
|
|
encryptedData: e.mp.detail.encryptedData,
|
|
|
|
iv: e.mp.detail.iv,
|
|
|
|
code: code,
|
|
|
|
spread: cookie.get('spread'),
|
|
|
|
})
|
|
|
|
.then( res => {
|
|
|
|
console.log('登录成功,开始处理登录信息保存,并获取用户详情')
|
|
|
|
uni.hideLoading()
|
|
|
|
store.commit('login', res.data.token, dayjs(res.data.expires_time))
|
|
|
|
store.dispatch('userInfo', true)
|
|
|
|
getUserInfo()
|
|
|
|
.then(user => {
|
|
|
|
console.log('获取用户信息成功')
|
|
|
|
uni.setStorageSync('uid', user.data.uid)
|
|
|
|
store.dispatch('setUserInfo', user.data)
|
|
|
|
this.$emit('success', this.$store.getters.token,"this.$store.getters.token")
|
|
|
|
this.carnum();
|
|
|
|
this.countMoney();
|
|
|
|
this.getCartList();
|
|
|
|
this.gainCount();
|
|
|
|
// this.$yrouter.reLaunch({
|
|
|
|
// path: cookie.get('redirect').replace(/\ /g, ''),
|
|
|
|
// })
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.log('获取用户信息失败')
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.log(error)
|
|
|
|
console.log('登录接口调用失败')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch(err => {})
|
|
|
|
} else {
|
|
|
|
uni.showToast({
|
|
|
|
title: '已拒绝授权',
|
|
|
|
icon: 'none',
|
|
|
|
duration: 2000,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
.shoppingCart .header {
|
|
|
|
position: fixed;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
z-index: 100;
|
|
|
|
background: #F1F1F1;
|
|
|
|
width: 750rpx;
|
|
|
|
.backImg {
|
|
|
|
height: 62rpx;
|
|
|
|
width: 62rpx;
|
|
|
|
margin-left: 26rpx;
|
|
|
|
}
|
|
|
|
.tab-title {
|
|
|
|
font-size: 32rpx;
|
|
|
|
font-family: PingFang SC;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #2DB5AE;
|
|
|
|
line-height: 42rpx;
|
|
|
|
position: absolute;
|
|
|
|
left: 50%;
|
|
|
|
transform: translateX(-50%);
|
|
|
|
}
|
|
|
|
.manage-text {
|
|
|
|
font-size: 26rpx;
|
|
|
|
font-family: PingFang SC;
|
|
|
|
font-weight: 500;
|
|
|
|
color: #2DB5AE;
|
|
|
|
line-height: 42rpx;
|
|
|
|
padding-right: 14rpx;
|
|
|
|
}
|
|
|
|
.inManage {
|
|
|
|
color: #EC3A5B;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.no-token {
|
|
|
|
padding-top: 200rpx;
|
|
|
|
font-size: 34rpx;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 48rpx;
|
|
|
|
text-align: center;
|
|
|
|
.no-cart {
|
|
|
|
width: 446rpx;
|
|
|
|
height: 422rpx;
|
|
|
|
margin: 0rpx auto 24rpx;
|
|
|
|
}
|
|
|
|
.text {
|
|
|
|
padding-bottom: 40rpx;
|
|
|
|
}
|
|
|
|
.author-btn {
|
|
|
|
width: 520rpx;
|
|
|
|
height: 70rpx;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 16rpx;
|
|
|
|
border: 2rpx solid #2EB5AE;
|
|
|
|
font-size: 26rpx;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #2DB5AE;
|
|
|
|
line-height: 66rpx;
|
|
|
|
text-align: center;
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
image {
|
|
|
|
width: 38rpx;
|
|
|
|
height: 38rpx;
|
|
|
|
margin-right: 16rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.phone-btn {
|
|
|
|
background: #2DB5AE;
|
|
|
|
color: #F5F6F8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.noCart {
|
|
|
|
.tip {
|
|
|
|
font-size: 26rpx;
|
|
|
|
font-weight: 500;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 38rpx;
|
|
|
|
}
|
|
|
|
.btn-box {
|
|
|
|
padding: 20rpx 0rpx;
|
|
|
|
.btn {
|
|
|
|
width: 254rpx;
|
|
|
|
height: 70rpx;
|
|
|
|
background: #2DB5AE;
|
|
|
|
border-radius: 16rpx;
|
|
|
|
font-size: 26rpx;
|
|
|
|
color: #F5F6F8;
|
|
|
|
line-height: 70rpx;
|
|
|
|
margin: 0rpx 10rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.list {
|
|
|
|
.item {
|
|
|
|
.top {
|
|
|
|
padding-bottom: 20rpx;
|
|
|
|
.logo-box {
|
|
|
|
margin-left: 8rpx;
|
|
|
|
width: 46rpx;
|
|
|
|
height: 46rpx;
|
|
|
|
box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(0,0,0,0.15);
|
|
|
|
border-radius: 50%;
|
|
|
|
padding: 2rpx;
|
|
|
|
background: linear-gradient(135deg, rgba(57, 211, 150, 1), rgba(27, 141, 204, 1));
|
|
|
|
image {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background-color: #F1F1F1;
|
|
|
|
border-radius: 50%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.brand {
|
|
|
|
font-size: 26rpx;
|
|
|
|
font-family: PingFang SC;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 38rpx;
|
|
|
|
padding-left: 16rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.goodsItem {
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
}
|
|
|
|
.goodsItem:last-child {
|
|
|
|
margin-bottom: 0rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.add-on-item {
|
|
|
|
.title {
|
|
|
|
padding: 18rpx 0rpx 20rpx;
|
|
|
|
font-size: 30rpx;
|
|
|
|
font-family: PingFang SC;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 42rpx;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.scroll-box {
|
|
|
|
width: 100%;
|
|
|
|
overflow:hidden;
|
|
|
|
white-space:nowrap;
|
|
|
|
.scroll {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
padding-left: 32rpx;
|
|
|
|
.item {
|
|
|
|
width: 208rpx;
|
|
|
|
height: 318rpx;
|
|
|
|
background: #F5F6F8;
|
|
|
|
box-shadow: 0rpx 10rpx 16rpx 0rpx rgba(0, 0, 0, 0.06);
|
|
|
|
border-radius: 16rpx;
|
|
|
|
margin-right: 14rpx;
|
|
|
|
margin-bottom: 20rpx;
|
|
|
|
position: relative;
|
|
|
|
.add-img {
|
|
|
|
width: 40rpx;
|
|
|
|
height: 40rpx;
|
|
|
|
position: absolute;
|
|
|
|
top: 12rpx;
|
|
|
|
right: 12rpx;
|
|
|
|
}
|
|
|
|
.img {
|
|
|
|
width: 208rpx;
|
|
|
|
height: 200rpx;
|
|
|
|
border-radius: 16rpx 16rpx 0rpx 0rpx;
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
}
|
|
|
|
.goodsName {
|
|
|
|
margin: 12rpx 10rpx 6rpx;
|
|
|
|
height: 54rpx;
|
|
|
|
font-size: 20rpx;
|
|
|
|
font-family: PingFang SC;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 26rpx;
|
|
|
|
white-space: normal;
|
|
|
|
}
|
|
|
|
.price {
|
|
|
|
font-size: 26rpx;
|
|
|
|
font-family: Futura;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #3A3A3C;
|
|
|
|
line-height: 36rpx;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.shoppingCart .footer {
|
|
|
|
.money {
|
|
|
|
.price {
|
|
|
|
padding-left: 16rpx;
|
|
|
|
font-size: 34rpx;
|
|
|
|
font-family: Futura;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #2DB5AE;
|
|
|
|
line-height: 42rpx;
|
|
|
|
.count {
|
|
|
|
font-size: 20rpx;
|
|
|
|
font-family: PingFangTC;
|
|
|
|
font-weight: 600;
|
|
|
|
color: #999999;
|
|
|
|
line-height: 24rpx;
|
|
|
|
view:first-child {
|
|
|
|
padding-right: 16rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.button {
|
|
|
|
.bnt:first-child {
|
|
|
|
background: #FFFFFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// .footer-h5 {
|
|
|
|
// bottom: 50px
|
|
|
|
// }
|
|
|
|
|
|
|
|
// .shoppingCart{
|
|
|
|
// position: relative;
|
|
|
|
// .list{
|
|
|
|
// margin-top: 150rpx;
|
|
|
|
// padding-top: 15rpx;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
</style>
|