| 
					
				 | 
			
			
				@@ -0,0 +1,709 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	<view class="app-container" :class="isNoticebar ? 'hasNoticebar' : ''">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view class="noticebar" v-if="isNoticebar">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<uni-notice-bar v-if="noticeContent" scrollable="true" single="true" showClose="true" :text="noticeContent"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				background-color="#f6e6e7" color="#de3749" @close="closeNoticebar"></uni-notice-bar>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view class="top" :class="isNoticebar ? 'hasNoticebar' : ''">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="total">共{{ totalNum }}件商品</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view v-if="!isEditor" @tap="isEditor = !isEditor">编辑</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view v-else @tap="isEditor = !isEditor">完成</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view class="list">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<block v-for="(item, index) in goodsList" :key="index">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="item">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view class="check" v-if="item.selected" @tap="selectList(index)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<image src="@/static/icon/select_1.png" mode=""></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view class="check" v-else @tap="selectList(index)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<image src="@/static/icon/select_0.png" mode="" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<image :src="item.goodsImg" mode="aspectFill" class="img"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view class="right">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="title ellipsis-2">{{ item.goodsName }}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="des ellipsis">{{ item.specValue }}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="last">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="price">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-1">¥{{ item.price | numToFixed }}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-2">¥{{ item.orgPrice | numToFixed }}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<u-number-box @tap.stop v-model="item.num" :min="1" :buttonSize="26"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								iconStyle="font-size: 12px;" @change="changeCount($event, index)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</u-number-box>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</block>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<no-data v-if="!goodsList.length" :showText="'购物车暂无商品'"></no-data>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			style="width: 100%;display: flex;justify-content: space-between;align-items: center;margin-bottom: 20rpx;margin-top: 20rpx;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view style="width: 30%;height: 2rpx;background: #a8a8a8;"></view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view style="font-size: 24rpx;color: #8a8a8a;">猜你想要</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view style="width: 30%;height: 2rpx;background: #a8a8a8;"></view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view class="goods-waterfall-list">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="left">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<block v-for="(item, index) in goodsList2" :key='index'>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view class="item" v-if="index%2==0" @tap="toGoodsDetail(item.goodsId)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="image">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<image :src="item.imgUrl" mode="aspectFill" class="img"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<image :src="item.logo" mode="aspectFill" class="water" v-if="item.isShowWater"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="content">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="title ellipsis-2">{{item.goodsName}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="tags" v-if="item.tags1 && item.tags1.length > 0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="it" v-for="(it, idx) in item.tags1" :key="idx">{{it}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="price">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-1">¥{{item.goodsPrice | numToFixed}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-2">¥{{item.orgGoodsPrice | numToFixed}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="tags2" v-if="item.tags2 && item.tags2.length > 0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="it" v-for="(it, idx) in item.tags2" :key="idx">{{it}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="text">销量:{{item.soldNum}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</block>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="right">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<block v-for="(item, index) in goodsList2" :key='index'>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view class="item" v-if="index%2==1" @tap="toGoodsDetail(item.goodsId)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="image">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<image :src="item.imgUrl" mode="aspectFill" class="img"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<image :src="item.logo" mode="aspectFill" class="water" v-if="item.isShowWater"></image>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						<view class="content">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="title ellipsis-2">{{item.goodsName}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="tags" v-if="item.tags1 && item.tags1.length > 0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="it" v-for="(it, idx) in item.tags1" :key="idx">{{it}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="price">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-1">¥{{item.goodsPrice | numToFixed}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="price-2">¥{{item.orgGoodsPrice | numToFixed}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="tags2" v-if="item.tags2 && item.tags2.length > 0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								<view class="it" v-for="(it, idx) in item.tags2" :key="idx">{{it}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							<view class="text">销量:{{item.soldNum}}</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</block>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<view class="bottom">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="check" @tap="selectAll">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<image src="@/static/icon/select_1.png" mode="" v-if="selectAllStatus" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<image src="@/static/icon/select_0.png" mode="" v-else />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<text class="text">全选</text>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="right" v-if="!isEditor">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="price">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					合计:<text>¥{{ totalPrice }}</text>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="button"><button @tap="toOrder">去结算</button></view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="right" v-else>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<button class="delete" @tap="clickDelete">删除</button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<u-popup :round="10" :show="isShowPhoneDialog">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			<view class="phone-dialog">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="content">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<view>申请获取以下权限</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<text>获得你的公开信息(手机号码)</text>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				<view class="btn">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<button @tap="isShowPhoneDialog = false">取消</button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					<button type="primary" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						确定授权
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					</button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		</u-popup>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		<modal-dialog showText="确定要删除选中的商品吗?" :isShowDialog="isDialog" @cancel="isDialog = false"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			@confirm="confirmDelete"></modal-dialog>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	</view>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	import {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapState
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} from 'vuex';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	import modalDialog from '@/components/modalDialog.vue';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	export default {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		components: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			modalDialog,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		data() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				goodsList: [],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				totalPrice: 0, // 总价,初始为0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				totalNum: 0,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				selectAllStatus: true, // 全选状态,默认全选
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				isEditor: false, // 是否编辑
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				isDialog: false, // 是否显示删除弹窗
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				isNoticebar: false, // 是否显示通告栏
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				noticeContent: '', // 公告内容
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				isShowPhoneDialog: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				goodsList2: [],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pageNum: 1,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pageSize: 8,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				noMore: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		computed: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			...mapState(['userInfo', 'isLogin', 'userId']),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onShow() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getGoodsList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.goodsList2 = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getGoodsList22();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onLoad() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getNoticebar();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 下拉刷新
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onPullDownRefresh() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.pageNum = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getGoodsList22();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 上拉加载
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		onReachBottom() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.getGoodsList22(1);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		methods: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 获取商品列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getGoodsList22(loadMore) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (this.noMore && loadMore) return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.noMore = false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!loadMore) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.pageNum = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/goods/list/sort/page',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					method: 'get',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pageNum: this.pageNum,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pageSize: this.pageSize,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						categoryId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						sort: 5,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					isLoading: !loadMore
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}).then(res => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					res.data.records.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (item.logo && item.logoStartTime) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							item.isShowWater = this.$compareTime(item.logoStartTime, item.logoEndTime);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							item.isShowWater = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					let _list = res.data.records;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					let pageTotal = res.data.pages;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (this.pageNum >= pageTotal) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.noMore = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (_list.length) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.pageNum += 1
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (loadMore) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.goodsList2 = this.goodsList.concat(_list);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.goodsList2 = _list;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 进入商品详情
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			toGoodsDetail(id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!id) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						url: '/goods/detail',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						method: 'get',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							goodsId: id,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						uni.navigateTo({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							url: '/packageGoods/pages/detail?id=' + id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.catch((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						uni.switchTab({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							url: '/pages/goods/all'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.finally((res) => {});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 获取手机号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getPhoneNumber(e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (e?.detail?.iv && e?.detail?.encryptedData) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						url: '/user/mobile/grant',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							iv: e.detail.iv,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							encryptedData: e.detail.encryptedData,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}).then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						uni.setStorageSync('token', res.data.token);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						uni.setStorageSync('isActiveLogout', false);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.isShowPhoneDialog = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						this.$getUserInfo();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 获取公告栏
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getNoticebar() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/shpping/cart/notice',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					method: 'get',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}).then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.noticeContent = res.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.isNoticebar = res.data ? true : false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 获取商品列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getGoodsList() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/shpping/cart/list',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					method: 'get',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}).then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.goodsList = res.data.shoppingCartLists;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.totalNum = res.data.totalNum;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.goodsList.forEach((item, index) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						item.selected = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.selectAllStatus = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.getTotalPrice();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 统计总价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			getTotalPrice() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 获取购物车列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let goodsList = this.goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let total = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 循环列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (let i = 0; i < goodsList.length; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 判断选中才会计算价格
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (goodsList[i].selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 所有价格加起来
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						total += goodsList[i].num * goodsList[i].price;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 赋值到data中渲染到页面
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList = goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.totalPrice = total.toFixed(2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 选择事件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			selectList(index) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 获取购物车列表
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let goodsList = this.goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 获取当前商品的选中状态
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let selected = goodsList[index].selected;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 改变状态
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				goodsList[index].selected = !selected;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList = goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 改变全选状态
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (var i = 0; i < this.goodsList.length; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 当状态为全选时,每个元素其中有一个为false,则取消全选
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 当状态为非全选时,每个元素都为true,则全选
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (this.selectAllStatus) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (!this.goodsList[i].selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.selectAllStatus = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (this.goodsList[i].selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.selectAllStatus = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							this.selectAllStatus = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							break;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 重新获取总价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.getTotalPrice();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 全选事件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			selectAll(e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 是否全选状态
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let selectAllStatus = this.selectAllStatus;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				selectAllStatus = !selectAllStatus;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let goodsList = this.goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (let i = 0; i < goodsList.length; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 改变所有商品状态
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					goodsList[i].selected = selectAllStatus;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.selectAllStatus = selectAllStatus;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList = goodsList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 重新获取总价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.getTotalPrice();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 更改数量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			changeCount(e, index) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList[index].num = e.value;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.initCart();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 修改数量后更新购物车数据
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			initCart() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let buyGoods = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList.forEach((item, index) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					let goodsItem = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						goodsId: item.goodsId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						goodsSpecId: item.goodsSpecId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						num: item.num,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						shoppingCartId: item.shoppingCartId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						secKillId: item.secKillId || '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						promotionGroupId: item.promotionGroupId || '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					buyGoods.push(goodsItem);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/shpping/cart/add',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					type: 'application/json',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						buyGoods: buyGoods,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}).then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.totalNum = res.data.totalNum;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.getTotalPrice();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 点击删除
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			clickDelete() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let delIds = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (let i = 0; i < this.goodsList.length; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (this.goodsList[i].selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						delIds.push(this.goodsList[i].shoppingCartId);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (delIds.length < 1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$toast('至少选择一件商品');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.isDialog = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 确认删除
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			confirmDelete() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let delIds = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (let i = 0; i < this.goodsList.length; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (this.goodsList[i].selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						delIds.push(this.goodsList[i].shoppingCartId);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.$axios({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/shpping/cart/remove',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					params: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						shoppingCartIds: delIds,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						userId: this.userId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}).then((res) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.isDialog = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.isEditor = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.$successToast('删除成功');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.getGoodsList();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 去结算
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			toOrder() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				let buyList = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.goodsList.forEach((item, index) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (item.selected) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						let goodsItem = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							goodsId: item.goodsId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							goodsSpecId: item.goodsSpecId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							num: item.num,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							shoppingCartId: item.shoppingCartId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							secKillId: item.secKillId || '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							promotionGroupId: item.promotionGroupId || '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						buyList.push(goodsItem);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (buyList.length < 1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return this.$toast('至少选择一件商品');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (!this.userInfo.mobile) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					this.isShowPhoneDialog = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 跳转结算页面
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				uni.navigateTo({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					url: '/packageGoods/pages/order?buyList=' + JSON.stringify(buyList),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 关闭通告栏
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			closeNoticebar() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this.isNoticebar = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.app-container {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		background: #f4f2f2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.app-container {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		height: auto;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		padding: 110rpx 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		&.hasNoticebar {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding-top: 174rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.noticebar {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			position: fixed;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			top: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			z-index: 100;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.top {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			position: fixed;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			top: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			z-index: 99;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 0 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background: #ffffff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 88rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			justify-content: space-between;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-bottom: 1px solid #f4f2f2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			&.hasNoticebar {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				top: 64rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.total {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-size: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.list {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 0 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.item {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin-bottom: 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border-radius: 10rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				padding: 20rpx 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				background: #ffffff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.check {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					image {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						width: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						height: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						display: block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.img {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 180rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 180rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin: 0 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex-shrink: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.right {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 420rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 190rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					justify-content: space-between;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					flex-direction: column;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.title {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-size: 28rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: #333333;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						line-height: 36rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.des {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-size: 24rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: #999999;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						line-height: 36rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.last {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						justify-content: space-between;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.price {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							flex-direction: column;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.price-1 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							font-size: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							color: #ff3f42;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							line-height: 36rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						.price-2 {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							font-size: 26rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							color: #666666;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							line-height: 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							text-decoration: line-through;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.bottom {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			position: fixed;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			bottom: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			z-index: 99;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			background: #ffffff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			height: 100rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			justify-content: space-between;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			padding: 0 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			border-top: 1px solid #f4f2f2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.check {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				image {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 32rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					display: block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-right: 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			.right {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.price {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-size: 28rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					line-height: 36rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					text {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: #ff3f42;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					margin-right: 20rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.button {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					button {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						height: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						line-height: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						padding: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						border-radius: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						font-size: 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						color: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						background: linear-gradient(-90deg, #ff3f42 0%, #fe781f 100%);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						padding: 0 40rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				.delete {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					width: 170rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					height: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					line-height: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					padding: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					border-radius: 80rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					font-size: 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					color: #ff3f42;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					border: 1px solid #ff3f42;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	.phone-dialog {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		padding: 40rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.content {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-top: 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-bottom: 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			line-height: 50rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			text {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				color: #9d9d9d;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.btn {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			justify-content: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			margin-top: 60rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			button::after {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				border: none;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			button {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				width: 180rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				height: 70rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				line-height: 70rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				font-size: 28rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				margin: 0 30rpx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				&:first-child {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					background: #f5f5f5;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					color: #00ba5c;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |