lhl hai 1 ano
pai
achega
7d0779fa0b

+ 11 - 2
components/yk-authpup/yk-authpup.vue

@@ -43,7 +43,7 @@
 				authList: {
 					'WRITE_EXTERNAL_STORAGE': {
 						title: "精联惠选对存储空间/照片权限申请说明",
-						content: "便于您使用该功能上传您的照片/图片/视频及用于更换头像、意见反馈、保存相册、下载与客服沟通等场景中读取和写入相册和文件内容。"
+						content: "便于您使用该功能上传您的照片/图片/视频及用于更换头像、意见反馈、保存相册、分享、客服沟通等场景中读取和写入相册和文件内容。"
 					},
 					'ACCESS_FINE_LOCATION': {
 						title: "精联惠选对地理位置权限申请说明",
@@ -51,7 +51,15 @@
 					},
 					'CALL_PHONE': {
 						title: "精联惠选对拨打/管理电话权限申请说明",
-						content: "便于您使用该功能联系买家、骑手或者客服、业务经理与联系等场景下使用"
+						content: "便于您使用该功能联系客服、业务经理与联系等场景下使用"
+					},
+					'CAMERA': {
+					    title: "精联惠选对拍摄照片/录制视频权限申请说明",
+					    content: "便于您使用该功能上传您的照片/图片/视频及用于更换头像、意见反馈、保存相册、分享、客服沟通等场景下使用。"
+					},
+					'RECORD_AUDIO': {
+					    title: "精联惠选申请获取麦克风权限",
+					    content: "在下方弹窗中选择允许后,你可以在精联惠选中发送语音消息的场景使用麦克风进行录音。"
 					}
 				}
 			}
@@ -140,6 +148,7 @@
 		right: 0;
 		z-index: 99999;
 		overflow: hidden;
+		background-color: #fff;
 		&__wrapper {
 			position: absolute;
 			z-index: 999;

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "精联惠选",
     "appid" : "__UNI__991D0D9",
     "description" : "精联惠选",
-    "versionName" : "1.2.0",
-    "versionCode" : 120,
+    "versionName" : "1.2.1",
+    "versionCode" : 121,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */

+ 2 - 4
pages.json

@@ -9,15 +9,13 @@
 		{
 			"path": "pages/index/artDetail",
 			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom"
+				"navigationBarTitleText": ""
 			}
 		},
 		{
 			"path": "pages/index/artList",
 			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom"
+				"navigationBarTitleText": ""
 			}
 		},
 		{

+ 37 - 18
pages/index/gift.vue

@@ -8,7 +8,9 @@
 			</view>
 			<view class="good-cz flex">
 				<view class="price">
-					<text class="xy">¥</text> <text>{{item.price}}</text><text class="old-price">¥{{item.ot_price}}</text>
+					<text class="xy">¥</text> <text>{{item.price}}</text>
+					<!-- <text class="old-price">¥{{item.ot_price}}</text> -->
+					<text class="old-price" v-if="type">赠送:{{(item.price*1*pUser.recharge_resumption*0.01).toFixed(0)}}复投积分</text>
 				</view>
 				<view class="cz-btn">
 					立即抢购
@@ -20,6 +22,7 @@
 </template>
 
 <script>
+	import { passUser } from '@/api/zero.js'
 	import empty from '@/components/empty.vue'
 	import {
 		getBargainList,
@@ -38,11 +41,12 @@
 				page: 1,
 				limit: 10,
 				type: 0,
-				loaded: false
+				loaded: false,
+				pUser: {}
 			}
 		},
 		onLoad(opt) {
-			if(opt.type) {
+			if (opt.type) {
 				this.type = opt.type
 				uni.setNavigationBarTitle({
 					title: opt.tit
@@ -51,15 +55,21 @@
 			this.getGoodList()
 		},
 		onShow() {
-			
+			this.passUser()
 		},
 		onReachBottom() {
+			
 			this.getGoodList()
 		},
 		onPullDownRefresh() {
 			this.getGoodList('down')
 		},
 		methods: {
+			passUser() {
+				passUser().then(res => {
+					this.pUser = res.data
+				})
+			},
 			navto(url) {
 				uni.navigateTo({
 					url,
@@ -69,11 +79,11 @@
 						})
 					}
 				})
-			
+
 			},
 			getGoodList(type) {
 				let obj = this
-				if(type == 'down') {
+				if (type == 'down') {
 					obj.loadingType = 'more'
 					obj.page = 1
 				}
@@ -81,13 +91,13 @@
 					return
 				}
 				obj.loadingType = 'loading'
-				if(obj.type) {
+				if (obj.type) {
 					getProducts({
 						page: obj.page,
-						limit:obj.limit,
+						limit: obj.limit,
 						cid: obj.type
 					}).then(res => {
-						if(type == 'down') {
+						if (type == 'down') {
 							obj.goodList = []
 							uni.stopPullDownRefresh();
 						}
@@ -103,13 +113,13 @@
 						obj.loadingType = 'more'
 						uni.stopPullDownRefresh();
 					})
-				}else {
+				} else {
 					getProducts({
 						is_pack: 1,
 						page: obj.page,
-						limit:obj.limit,
+						limit: obj.limit,
 					}).then(res => {
-						if(type == 'down') {
+						if (type == 'down') {
 							obj.goodList = []
 							uni.stopPullDownRefresh();
 						}
@@ -121,13 +131,13 @@
 							obj.loadingType = 'noMore'
 						}
 						obj.loaded = true
-						
+
 					}).catch(err => {
 						obj.loadingType = 'more'
 						uni.stopPullDownRefresh();
 					})
 				}
-				
+
 			},
 		}
 	}
@@ -137,40 +147,49 @@
 	.hot-list {
 		// margin-top: -70rpx;
 		padding-top: 20rpx;
+
 		.good {
 			width: 704rpx;
 			background: #FFFFFF;
 			border-radius: 20rpx;
-			margin:0 auto 30rpx;
+			margin: 0 auto 30rpx;
+
 			.good-img {
 				width: 704rpx;
 				height: 330rpx;
 				background: #D4D4E1;
 				border-radius: 20rpx 20rpx 0rpx 0rpx;
 			}
+
 			.good-tit {
-				padding:10rpx 20rpx;
+				padding: 10rpx 20rpx;
 				font-size: 30rpx;
 				font-weight: bold;
 				color: #000000;
 			}
+
 			.good-cz {
 				padding: 0 20rpx 23rpx 23rpx;
+
 				.price {
 					font-size: 42rpx;
 					font-weight: bold;
 					color: $base-color;
+
 					.xy {
 						font-size: 24rpx;
 					}
+
 					.old-price {
 						font-size: 26rpx;
 						font-weight: 500;
-						text-decoration: line-through;
-						color: #999999;
+						// text-decoration: line-through;
+						// color: #999999;
+						color: $base-color;
 						margin-left: 18rpx;
 					}
 				}
+
 				.cz-btn {
 					width: 172rpx;
 					line-height: 60rpx;

+ 8 - 8
pages/index/life.vue

@@ -20,9 +20,9 @@
 						<!-- 官方¥{{itemt.num}} -->
 						赠送:{{(itemt.num*1*pUser.recharge_resumption*0.01).toFixed(0)}}复投积分
 					</view>
-					<view class="price">
+					<!-- <view class="price">
 						实付{{(itemt.num * 1 * pUser.recharge_discount*1*0.01).toFixed(2)}}
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -37,7 +37,7 @@
 		<uni-popup ref="popup" type="bottom">
 			<view class="cz-model">
 				<view class="price">
-					{{(choose.num* 1 * pUser.recharge_discount*1*0.01).toFixed(2)}}
+					{{choose.num}}
 				</view>
 				<view class="">
 					{{choose.goods_name}}
@@ -59,14 +59,14 @@
 						<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 2"></radio></label>
 					</view>
 					<!-- #endif -->
-					<view class="type-item" @click="changePayType(3)">
+					<!-- <view class="type-item" @click="changePayType(3)">
 						<text class="icon iconfont iconyue"></text>
 						<view class="con">
 							<text class="tit">消费积分支付</text>
 							<text>可用消费积分 ¥{{ userInfo.now_money }}</text>
 						</view>
 						<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 3"></radio></label>
-					</view>
+					</view> -->
 				</view>
 				<view class="btn" @click="goNew">
 					立即充值
@@ -95,7 +95,7 @@
 					goods_id: 0
 				},
 				payType: 3,
-				payName: 'yue'
+				payName: 'ali'
 			}
 		},
 		computed: {
@@ -195,14 +195,14 @@
 
 			goNew() {
 				let that = this
-				if(this.payName == 'yue' && this.userInfo.now_money*1 < (this.choose.num * 1 * this.pUser.recharge_discount*1*0.01).toFixed(2)) {
+				if(this.payName == 'yue' && this.userInfo.now_money*1 < this.choose.num) {
 					return this.$api.msg('当前消费积分不足,请选择其他方式支付!')
 				}
 				createCz({
 					rechargeno: this.phone,
 					pay_type: this.payName,
 					goods_id: this.choose.goods_id,
-					pay_price: (this.choose.num * 1 * this.pUser.recharge_discount*1*0.01).toFixed(2),
+					pay_price: this.choose.num,
 					price: this.choose.num
 				}).then(res => {
 					if(res.data.status == 'PAY_DEFICIENCY' ||res.data.status ==  'PAY_ERROR') {

+ 68 - 24
pages/index/zero.vue

@@ -26,7 +26,7 @@
 		</view>
 		<view class="flex banne">
 			<image src="../../static/img/zjf.png" mode="" @click="navto('/pages/zero/task')"></image>
-			<image src="../../static/img/yj.png" mode="" @click="navto('/pages/zero/chou')"></image>
+			<image src="../../static/img/yj.png" mode="" @click="navto('/pages/index/dkf')"></image>
 		</view>
 		<view class="flex nav">
 			<view class="nav-item" v-for="(item,index) in navList" :class="{'action': current == index}"
@@ -37,28 +37,41 @@
 		<swiper disable-touch :current="current" class="list-wrap" :style="{'height': maxHeight}">
 			<swiper-item :style="{'height': maxHeight}" v-for="item in navList">
 				<scroll-view scroll-y="true" class="" :style="{'height': maxHeight}" :class="{'p2':current == 1}" @scrolltolower="getMore(item.status)">
-					<view class="card-wrap flex" v-for="cardItem in item.list" v-if="item.status == 1">
+					<view class="card-wrap flex" v-for="cardItem in item.list" >
 						<image :src="cardItem.image" mode="" class="card-img"></image>
 						<view class="flex card-info">
 							<view class="name ">
 									{{cardItem.name}}
 							</view>
-							<view class="" style="padding-right: 10rpx;">
-								周期{{cardItem.end_day || 0}}天,每日产出数量{{cardItem.day_pass || 0}},共富值+{{cardItem.holding_value || 0}}.最多可持有{{cardItem.max_count}}个
-							</view>
-							<view class="price">
-								<image src="../../static/icon/ydjf.png" mode=""></image>
-								<text class="show">{{cardItem.pay_points}}</text> 阅读积分 <text > (有效期{{cardItem.max_send ||0}})</text>
-							</view>
+							<template v-if="current == 0">
+								<view class="" style="padding-right: 10rpx;">
+									周期{{cardItem.end_day || 0}}天,每日产出数量{{cardItem.day_pass || 0}},共富值+{{cardItem.holding_value || 0}}.最多可持有{{cardItem.max_count}}个
+								</view>
+								<view class="price" >
+									<image src="../../static/icon/ydjf.png" mode="" ></image>
+									<text class="show">{{cardItem.pay_points}}</text> 阅读积分 <text > (有效期{{cardItem.max_send ||0}})</text>
+								</view>
+							</template>
+							<template v-if="current == 1">
+								<view class="" style="padding-right: 10rpx;">
+									每日产出数量{{cardItem.day_pass || 0}},共富值+{{cardItem.holding_value || 0}}
+								</view>
+								<view class="" style="padding-right: 10rpx;">
+									已发放次数:{{cardItem.use_pass_send}},总发放次数:{{cardItem.pass_send}}
+								</view>
+								<view class="">
+									到期时间: {{cardItem.end_time}}
+								</view>
+							</template>
 						</view>
-						<view class="card-btn" :class="{'buyless': cardItem.activate == 0}" @click="open(cardItem)">
+						<view v-if="current == 0" class="card-btn" :class="{'buyless': cardItem.activate == 0}" @click="open(cardItem)">
 							立即兑换
 						</view>
 						<view class="card-nun" v-if="cardItem.total">
 							进行中:{{cardItem.progress}}/{{cardItem.total}}
 						</view>
 					</view>
-					<view class="px-wrap flex" v-if="item.status == 2">
+					<!-- <view class="px-wrap flex" v-if="item.status == 2">
 						<view class="nav-item" :class="{ current: filterIndex === 0 }" @click="tabClick(0)">默认</view>
 						
 						<view class="nav-item" :class="{ current: filterIndex === 2 }" @click="tabClick(2)">
@@ -75,8 +88,8 @@
 								<text :class="{ active: numberOrder === 2 && filterIndex === 1 }" class="iconfont iconfold xia"></text>
 							</view>
 						</view>
-					</view>
-					<view class="order-wrap " v-for="orderItem in item.list" v-if="item.status == 2">
+					</view> -->
+					<!-- <view class="order-wrap " v-for="orderItem in item.list" v-if="item.status == 2">
 						<view class="flex m-info">
 							<image src="../../static/icon/gs-av.png" mode="" class="card-img"></image>
 							<text style=" display: inline-block;line-height: 55rpx;">{{orderItem.user.nickname}}</text>
@@ -93,7 +106,7 @@
 						<view class="order-btn" @click="gobuy(orderItem)">
 							立即购买
 						</view>
-					</view>
+					</view> -->
 					<uni-load-more :status="item.loadingType"></uni-load-more>
 				</scroll-view>
 			</swiper-item>
@@ -137,7 +150,7 @@
 		userPool,
 		goft
 	} from '@/api/user.js';
-	import { getCardList,createPass, getGsList,passUser,buyGs } from '@/api/zero.js'
+	import { getCardList,createPass, getGsList,passUser,buyGs,passLst } from '@/api/zero.js'
 	
 	export default {
 		components: {
@@ -167,7 +180,7 @@
 					},
 					{
 						status: 2,
-						tit: '阅读积分交易',
+						tit: '我的消费包',
 						list: [],
 						loadingType: 'more',
 						loaded: false,
@@ -356,7 +369,8 @@
 			getList(type) {
 				if(this.current == 1) {
 					console.log('ddddddddddddddddddd')
-					this.getGsList('re');
+					// this.getGsList('re');
+					this.passLst('re')
 				}else {
 					
 				}
@@ -390,7 +404,40 @@
 				this.$refs.popup.open()
 			},
 			getGsList(type) {
-				console.log('jinriu')
+				this.passLst(type)
+				// console.log('jinriu')
+				// let that = this
+				// let item = that.navList[1]
+				// if(type == 're') {
+				// 	item.list = []
+				// 	item.loadingType = 'more'
+				// 	item.page = 1
+				// 	item.loaded = false
+				// }
+				// if(item.loadingType == 'loading' || item.loadingType == 'noMore') {
+				// 	return
+				// }
+				// item.loadingType = 'loading'
+				// getGsList({
+				// 	// uid: this.userI.uid
+				// 	page: item.page,
+				// 	limit: item.limit,
+				// 	order: that.order,
+				// 	status: 0
+				// }).then(res => {
+				// 	uni.hideLoading()
+				// 	let arr = res.data.result.list
+				// 	item.list =  item.list.concat(arr)
+				// 	if(arr.length == item.limit) {
+				// 		item.loadingType = 'more'
+				// 	}else {
+				// 		item.loadingType = 'noMore'
+				// 	}
+				// 	item.page++
+				// 	item.loaded = true
+				// })
+			},
+			passLst(type) {
 				let that = this
 				let item = that.navList[1]
 				if(type == 're') {
@@ -403,14 +450,11 @@
 					return
 				}
 				item.loadingType = 'loading'
-				getGsList({
-					// uid: this.userI.uid
+				passLst({
 					page: item.page,
 					limit: item.limit,
-					order: that.order,
-					status: 0
+					uid: that.userInfo.uid
 				}).then(res => {
-					uni.hideLoading()
 					let arr = res.data.result.list
 					item.list =  item.list.concat(arr)
 					if(arr.length == item.limit) {
@@ -776,6 +820,6 @@
 		}
 	}
 	.p2 {
-		padding-top: 80rpx;
+		// padding-top: 80rpx;
 	}
 </style>

+ 1092 - 953
pages/product/product.vue

@@ -3,7 +3,9 @@
 		<view class="carousel">
 			<swiper indicator-dots :circular="true" duration="400">
 				<swiper-item class="swiper-item" v-for="(item, index) in imgList" :key="index">
-					<view class="image-wrapper"><image :src="item" class="loaded" mode="scaleToFill"></image></view>
+					<view class="image-wrapper">
+						<image :src="item" class="loaded" mode="scaleToFill"></image>
+					</view>
 				</swiper-item>
 			</swiper>
 		</view>
@@ -12,23 +14,20 @@
 			<view class="title flex">
 				<view class="title-box">
 					<text class="price-tip">¥</text>
-					<text class="price" v-if="userInfo && userInfo.level == 1">{{ goodsObjact.vip_repurchase*1 || ''}}</text>
-					<text class="price" v-if="userInfo && userInfo.level == 2">{{ goodsObjact.agent_repurchase*1 || ''}}</text>
+					<text class="price"
+						v-if="userInfo && userInfo.level == 1">{{ goodsObjact.vip_repurchase*1 || ''}}</text>
+					<text class="price"
+						v-if="userInfo && userInfo.level == 2">{{ goodsObjact.agent_repurchase*1 || ''}}</text>
 					<text class="price" v-if="(!hasLogin || userInfo.level == 0)">{{ goodsObjact.price*1 }}</text>
-					<text class="m-price" v-if="goodsObjact.ot_price > goodsObjact.price">¥{{ goodsObjact.ot_price }}</text>
+					<text class="m-price"
+						v-if="goodsObjact.ot_price > goodsObjact.price">¥{{ goodsObjact.ot_price }}</text>
 					<!-- <text class="coupon-tip">7折</text> -->
 				</view>
 				<view class="flex timeStop">
 					<view>距离结束</view>
-					<uni-countdown
-						color="#ffffff"
-						background-color="#D65B3F"
-						splitor-color="#FFFFFF"
-						:show-day="false"
-						:hour="seckillObj.stopTimeH"
-						:minute="seckillObj.stopTimeM"
-						:second="seckillObj.stopTimeS"
-					></uni-countdown>
+					<uni-countdown color="#ffffff" background-color="#D65B3F" splitor-color="#FFFFFF" :show-day="false"
+						:hour="seckillObj.stopTimeH" :minute="seckillObj.stopTimeM"
+						:second="seckillObj.stopTimeS"></uni-countdown>
 				</view>
 			</view>
 		</view>
@@ -37,7 +36,8 @@
 			<view class="price-box" v-if="goodsType == 0">
 				<text class="price-tip">¥</text>
 				<text class="price">{{ goodsObjact.price}}</text>
-				<text class="m-price" v-if="goodsObjact.ot_price > goodsObjact.price">¥{{ goodsObjact.ot_price }}</text>
+				<!-- <text class="m-price" v-if="goodsObjact.ot_price > goodsObjact.price">¥{{ goodsObjact.ot_price }}</text> -->
+				<text class="m-price" v-if="goodsObjact && goodsObjact.is_pack != 1 &&  pUser && pUser.recharge_resumption">赠送:{{(goodsObjact.price*1*pUser.recharge_resumption*0.01).toFixed(0)}}复投积分</text>
 			</view>
 			<text class="title" v-if="goodsType == 0">{{ goodsObjact.store_name }}</text>
 		</view>
@@ -65,16 +65,18 @@
 		<view class="detail-desc">
 			<view class="d-header"><text>商品详情</text></view>
 			<rich-text class="detail-centent" :nodes="goodsObjact.description"></rich-text>
-			<view :class="{ contentBottomHeight: goodsType == 1 || goodsType == 2, goodsBottom: goodsType == 0 }"></view>
+			<view :class="{ contentBottomHeight: goodsType == 1 || goodsType == 2, goodsBottom: goodsType == 0 }">
+			</view>
 		</view>
 		<!-- 底部操作菜单 -->
 		<view class="page-bottom" v-if="goodsType == 0">
 			<view class="action-btn-group">
 				<view class="buy-now">
 					<!-- <button type="primary" class=" action-btn no-border buy-now-btn" @click.stop="toggleSpec(2)" v-if="goodsObjact.is_pack == 0">加入购物车</button> -->
-					<button type="primary" class=" action-btn no-border  add-cart-btn" @click.stop="toggleSpec(1)">立即购买</button>
+					<button type="primary" class=" action-btn no-border  add-cart-btn"
+						@click.stop="toggleSpec(1)">立即购买</button>
 				</view>
-				
+
 			</view>
 		</view>
 		<!-- 规格-模态层弹窗 -->
@@ -98,13 +100,8 @@
 				<view v-for="(item, index) in specList" :key="index" class="attr-list">
 					<text>{{ item.attr_name }}</text>
 					<view class="item-list">
-						<text
-							v-for="(childItem, childIndex) in item.attr_value"
-							:key="childIndex"
-							class="tit"
-							:class="{ selected: childItem.check }"
-							@click="selectSpec(childItem, item, index)"
-						>
+						<text v-for="(childItem, childIndex) in item.attr_value" :key="childIndex" class="tit"
+							:class="{ selected: childItem.check }" @click="selectSpec(childItem, item, index)">
 							{{ childItem.attr }}
 						</text>
 					</view>
@@ -112,7 +109,8 @@
 				<view class="attr-list" style="padding-bottom: 120rpx;">
 					<text>购买数量</text>
 					<view class="item-list">
-						<uni-number-box class="step" :isMin="true" :value="goodsNumber" :min="1" :max="goodsNumberMax" @eventChange="numberChange"></uni-number-box>
+						<uni-number-box class="step" :isMin="true" :value="goodsNumber" :min="1" :max="goodsNumberMax"
+							@eventChange="numberChange"></uni-number-box>
 					</view>
 				</view>
 				<button class="btn" @click.stop="buy">确定</button>
@@ -125,1044 +123,1185 @@
 </template>
 
 <script>
-// import share from '@/components/share';
-import uniNumberBox from '@/components/uni-number-box.vue';
-import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
-import { goodsDetail, cartAdd, collectAdd, collectDel, seckillGoods, groupGoods } from '@/api/product.js';
-// #ifdef H5
-import { weixindata,shareLoad } from '@/utils/wxAuthorized';
-import weixinObj from "@/plugin/jweixin-module/index.js";
-import { userInfo } from 'os';
-// #endif
+	// import share from '@/components/share';
+	import { passUser } from '@/api/zero.js'
+	import uniNumberBox from '@/components/uni-number-box.vue';
+	import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
+	import {
+		goodsDetail,
+		cartAdd,
+		collectAdd,
+		collectDel,
+		seckillGoods,
+		groupGoods
+	} from '@/api/product.js';
+	// #ifdef H5
+	import {
+		weixindata,
+		shareLoad
+	} from '@/utils/wxAuthorized';
+	import weixinObj from "@/plugin/jweixin-module/index.js";
+	import {
+		userInfo
+	} from 'os';
+	// #endif
 	import {
 		mapState,
 		mapMutations
 	} from 'vuex';
-export default {
-	components: {
-		uniNumberBox,
-		uniCountdown
-	},
-	filters: {
-		address(val) {
-			let str = '';
-			if (val) {
-				str = val[0] + ' ' + val[1];
-			}
-			return str;
-		}
-	},
-	data() {
-		return {
-			isfg: 0,
-			details: '',
-			reply: '', //评论
-			type: 1, //默认支付方式add为
-			goodsNumber: 1, //购买数量
-			goodsid: '', //商品id
-			specClass: 'none', //显示隐藏弹窗
-			shareList: [], //分享列表
-			goodsObjact: {}, //保存商品数据
-			storeObjact: {}, //保存店铺数据
-			//图片循环
-			imgList: [],
-			specList: [],
-			// 对比对象
-			productValue: [],
-			actionPrice: 0, //默认选中商品价格
-			actionImage: '', //默认选中图片
-			uniqueId: '', //选中的商品分类
-			specSelected: [], //选中的分类
-			specSelectedName: '', //选中分类名称
-			goodsNumberMax: 0, //最大可购买数量
-			shopId: '', //商店id
-			//商店信息
-			shopInfo: {
-				logo: '',
-				title: ''
-			}, //商店信息
-			goodsType: 0, //商品类型1秒杀商品0为普通商品2为拼团商品
-			// 秒杀数据保存
-			seckillObj: {
-				stopTime: 0, //结束时间
-				stop: false, //是否结束
-				stopTimeH: 0, //小时
-				stopTimeM: 0, //分钟
-				stopTimeS: 0 //秒钟
-			},
-			// 拼团数据保存
-			pink: {
-				id: '', //拼团编号
-				uid: '', //用户编号
-				people: '', //拼团人数
-				price: '', //拼团价格
-				stop_time: '', //拼团结束时间
-				nickname: '', //团长昵称
-				avatar: '', //团长头像
-				count: '', //拼团剩余人数
-				h: '', //时
-				i: '', //分
-				s: '' //秒
-			},
-			is_bk: 0,
-			is_xf: 0,
-			goodIntegral: 0,//需要使用的积分
-		};
-	},
-	async onLoad(options) {
-		let obj = this;
-		if(options.isfg) {
-			this.isfg = options.isfg
-		}
-		if(options.is_bk) {
-			obj.is_bk = options.is_bk
-		}
-		if(options.is_xf) {
-			obj.is_xf = options.is_xf
-		}
-		//保存商品id
-		this.goodsid = options.id;
-		// 判断有无人邀请
-		if (options.spread) {
-			// 存储邀请人
-			uni.setStorageSync('spread', options.spread);
-		}
-		// 判断是否为秒杀商品
-		if (options.type == 1) {
-			// 保存商品类型
-			this.goodsType = 1;
-			// 保存结束时间
-			this.seckillObj.stopTime = options.stoptime;
-			// 获取当前时间毫秒数
-			let stoptime = options.stoptime * 1000;
-			// 获取当前时间
-			let acitonTime = new Date();
-			// 判断当前时间是否大于结束时间
-			if (acitonTime.getTime() > stoptime) {
-				// 当前秒杀时间已经结束
-				this.seckillObj.stop = true;
-			} else {
-				// 计算倒计时
-				this.timeComputed(stoptime, this.seckillObj);
-			}
-			this.seckillGoods();
-			return;
-		}
-		if (options.type == 2) {
-			// 保存当前拼团商品类型
-			this.goodsType = 2;
-			// 家在数据
-			this.groupGoods();
-			return;
-		}
-		if (this.goodsType == 0) {
-			// 加载普通商品详情
-			this.goodsDetail();
-		}
-	},
-	computed: {
-		// #ifdef H5
-		...mapState(['weichatObj', 'baseURL', 'urlFile']),
-		
-		// #endif
-		...mapState('user', ['userInfo','hasLogin'])
-	},
-	methods: {
-		navTo(url) {
-			uni.navigateTo({
-				url
-			});
-		},
-		// 转换字符串为数字
-		moneyNum: function(value) {
-			return +value;
+	export default {
+		components: {
+			uniNumberBox,
+			uniCountdown
 		},
-		navToProductGoods() {
-			uni.redirectTo({
-				url: '/pages/product/product?id=' + this.goodsObjact.product_id
-			});
-		},
-		// 获取商品信息
-		goodsDetail() {
-			let obj = this;
-			goodsDetail({}, this.goodsid).then(function({ data }) {
-				obj.details = data;
-				let goods = data.storeInfo;
-				let store_info = data.system_store; // 保存店铺信息
-				console.log(store_info);
-				obj.storeObjact = store_info;
-				obj.goodsObjact = goods;
-				if (obj.goodsObjact.description != null) {
-					obj.goodsObjact.description = obj.goodsObjact.description.replace(/\<img/gi, '<img class="rich-img"');
-				} //小程序商品详情图超出屏幕问题
-				// console.log()
-				obj.reply = data.reply; //保存评论列表
-				obj.imgList = goods.slider_image; //保存轮播图
-				obj.specList = data.productAttr; //保存分类列表
-				console.log(data.productAttr);
-				obj.productValue = data.productValue; //保存分类查询数据
-				 //保存默认选中商品价格
-				obj.actionPrice = goods.price;
-				obj.actionImage = goods.image_base; //保存默认选中商品价格
-				obj.goodsNumberMax = goods.stock; //保存默认选中最大可购买商品数量
-				obj.shopId = data.mer_id; //保存商店id
-				console.log(obj.goodsObjact.is_pack,'v');
-				if(obj.goodsObjact.is_pack == 1) {
-					obj.goodsNumberMax = 1
+		filters: {
+			address(val) {
+				let str = '';
+				if (val) {
+					str = val[0] + ' ' + val[1];
 				}
-				// 保存默认选中的对象
-				obj.specSelected = []; //初始化默认选择对象
-				for (let i = 0; i < obj.specList.length; i++) {
-					// 设置默认数据
-					let attrValue = obj.specList[i].attr_value[0];
-					attrValue.check = true;
-					obj.specSelected.push(attrValue.attr);
-				}
-
-				//保存默认选中的对象字符串名称
-				let str = obj.specSelected.join(',');
-				// 设置默认值
-				obj.actionImage = obj.productValue[str].image;
-				obj.uniqueId = obj.productValue[str].unique;
-				obj.goodIntegral = obj.productValue[str].integral
-				
-				// #ifdef H5
-				obj.shareDate();
-				// #endif
-			});
-		},
-		// #ifdef H5
-		// 加载微信html5页面分享方法
-		shareDate() {
-			let obj = this;
-			// 保存分享人id链接
-			let url = window.location.href + '&spread=' + this.userInfo.uid;
-			// 判断是否微信浏览器
-			let bool = uni.getStorageSync('weichatBrowser') || '';
-			if (bool) {
-				// 过滤微信强制添加的链接地址
-				url = url.replace(/[\?,&]from=singlemessage/g, '');
-				let data = {
-					link: url, // 分享链接
-					imgUrl: obj.goodsObjact.image, // 分享图标
-					desc: obj.goodsObjact.store_info,
-					title: obj.goodsObjact.store_name,
-					success: function(e) {
-						console.log(e);
-					}
-				};
-				shareLoad(data);
+				return str;
 			}
 		},
-		// #endif
-		// 购买数量变化
-		numberChange(e) {
-			this.goodsNumber = e.number;
+		data() {
+			return {
+				pUser: {},
+				isfg: 0,
+				details: '',
+				reply: '', //评论
+				type: 1, //默认支付方式add为
+				goodsNumber: 1, //购买数量
+				goodsid: '', //商品id
+				specClass: 'none', //显示隐藏弹窗
+				shareList: [], //分享列表
+				goodsObjact: {}, //保存商品数据
+				storeObjact: {}, //保存店铺数据
+				//图片循环
+				imgList: [],
+				specList: [],
+				// 对比对象
+				productValue: [],
+				actionPrice: 0, //默认选中商品价格
+				actionImage: '', //默认选中图片
+				uniqueId: '', //选中的商品分类
+				specSelected: [], //选中的分类
+				specSelectedName: '', //选中分类名称
+				goodsNumberMax: 0, //最大可购买数量
+				shopId: '', //商店id
+				//商店信息
+				shopInfo: {
+					logo: '',
+					title: ''
+				}, //商店信息
+				goodsType: 0, //商品类型1秒杀商品0为普通商品2为拼团商品
+				// 秒杀数据保存
+				seckillObj: {
+					stopTime: 0, //结束时间
+					stop: false, //是否结束
+					stopTimeH: 0, //小时
+					stopTimeM: 0, //分钟
+					stopTimeS: 0 //秒钟
+				},
+				// 拼团数据保存
+				pink: {
+					id: '', //拼团编号
+					uid: '', //用户编号
+					people: '', //拼团人数
+					price: '', //拼团价格
+					stop_time: '', //拼团结束时间
+					nickname: '', //团长昵称
+					avatar: '', //团长头像
+					count: '', //拼团剩余人数
+					h: '', //时
+					i: '', //分
+					s: '' //秒
+				},
+				is_bk: 0,
+				is_xf: 0,
+				goodIntegral: 0, //需要使用的积分
+			};
 		},
-		//规格弹窗开关
-		toggleSpec(str) {
-			if (this.specClass === 'show') {
-				this.specClass = 'hide';
-				setTimeout(() => {
-					this.specClass = 'none';
-				}, 250);
-			} else if (this.specClass === 'none') {
-				this.specClass = 'show';
+		async onLoad(options) {
+			let obj = this;
+			if (options.isfg) {
+				this.isfg = options.isfg
 			}
-			// 保存当前购买类型
-			this.type = str;
-		},
-		//选择规格
-		selectSpec(item, arr, ind) {
-			let obj = this
-			arr.attr_value.forEach(function(e) {
-				e.check = false;
-			});
-			item.check = true;
-			this.specSelected[ind] = item.attr;
-			let str = this.specSelected.join(',');
-			this.specSelectedName = this.specSelected.join(' ');
-			if (this.productValue[str]) {
-				let data = this.productValue[str];
-				this.actionPrice = data.price;
-				if(obj.goodsObjact.is_pack == 1) {
-					this.goodsNumberMax =1;
-				}else {
-					this.goodsNumberMax = data.stock;
+			if (options.is_bk) {
+				obj.is_bk = options.is_bk
+			}
+			if (options.is_xf) {
+				obj.is_xf = options.is_xf
+			}
+			//保存商品id
+			this.goodsid = options.id;
+			// 判断有无人邀请
+			if (options.spread) {
+				// 存储邀请人
+				uni.setStorageSync('spread', options.spread);
+			}
+			// 判断是否为秒杀商品
+			if (options.type == 1) {
+				// 保存商品类型
+				this.goodsType = 1;
+				// 保存结束时间
+				this.seckillObj.stopTime = options.stoptime;
+				// 获取当前时间毫秒数
+				let stoptime = options.stoptime * 1000;
+				// 获取当前时间
+				let acitonTime = new Date();
+				// 判断当前时间是否大于结束时间
+				if (acitonTime.getTime() > stoptime) {
+					// 当前秒杀时间已经结束
+					this.seckillObj.stop = true;
+				} else {
+					// 计算倒计时
+					this.timeComputed(stoptime, this.seckillObj);
 				}
-				
-				this.actionImage = data.image;
-				this.uniqueId = data.unique;
-				this.goodIntegral = data.integral
-				console.log(this.goodIntegral,'xuanz')
+				this.seckillGoods();
+				return;
+			}
+			if (options.type == 2) {
+				// 保存当前拼团商品类型
+				this.goodsType = 2;
+				// 家在数据
+				this.groupGoods();
+				return;
 			}
-			if(obj.goodsObjact.is_pack == 1) {
-				console.log('dddddddddddddddddddddd');
-				this.goodsNumberMax = 1;
+			if (this.goodsType == 0) {
+				// 加载普通商品详情
+				
+				this.goodsDetail();
 			}
+			this.passUser()
 		},
-		//分享
-		share() {
-			this.$refs.share.toggleMask();
+		computed: {
+			// #ifdef H5
+			...mapState(['weichatObj', 'baseURL', 'urlFile']),
+
+			// #endif
+			...mapState('user', ['userInfo', 'hasLogin'])
 		},
-		//收藏
-		toFavorite(item) {
-			let obj = this;
-			item.userCollect = !item.userCollect;
-			if (!item.userCollect) {
-				collectDel({ id: obj.goodsid, category: 'product' }).then(function(e) {
-					uni.showToast({
-						title: '成功取消收藏',
-						type: 'top',
-						duration: 1500
-					});
+		methods: {
+			passUser() {
+				passUser().then(res => {
+					this.pUser = res.data
+				})
+			},
+			navTo(url) {
+				uni.navigateTo({
+					url
 				});
-			} else {
-				collectAdd({ id: obj.goodsid, category: 'product' }).then(function(e) {
-					uni.showToast({
-						title: '成功加入收藏',
-						type: 'top',
-						duration: 1500
-					});
+			},
+			// 转换字符串为数字
+			moneyNum: function(value) {
+				return +value;
+			},
+			navToProductGoods() {
+				uni.redirectTo({
+					url: '/pages/product/product?id=' + this.goodsObjact.product_id
 				});
-			}
-		},
-		// 立即购买
-		buy() {
-			let obj = this;
-			let data = {
-				cartNum: obj.goodsNumber, //商品数量
-				uniqueId: obj.uniqueId, //商品标签
-				new: '1', //商品是否新增加到购物车1为不加入0为加入
-				mer_id: obj.shopId,
-				is_pack: obj.goodsObjact.is_pack
-				// type: 0,//0为余额支付  1为消费券支付 2为积分支付
-			};
-			if (obj.type == 2) {
-				data.new = 0;
-			}
-			if (obj.goodsType == 0) {
-				data.productId = obj.goodsid; //商品编号
-			}
-			// 判断是否为秒杀商品
-			if (obj.goodsType == 1) {
-				data.secKillId = obj.goodsid; //秒杀商品编号
-				data.productId = obj.goodsObjact.product_id; //商品编号
-				// 判断是否秒杀已经结束
-				if (obj.seckillObj.stop) {
-					uni.showModal({
-						title: '提示',
-						content: '当前活动已经结束',
-						showCancel: false
-					});
-					return;
+			},
+			// 获取商品信息
+			goodsDetail() {
+				let obj = this;
+				goodsDetail({}, this.goodsid).then(function({
+					data
+				}) {
+					obj.details = data;
+					let goods = data.storeInfo;
+					let store_info = data.system_store; // 保存店铺信息
+					console.log(store_info);
+					obj.storeObjact = store_info;
+					obj.goodsObjact = goods;
+					if (obj.goodsObjact.description != null) {
+						obj.goodsObjact.description = obj.goodsObjact.description.replace(/\<img/gi,
+							'<img class="rich-img"');
+					} //小程序商品详情图超出屏幕问题
+					// console.log()
+					obj.reply = data.reply; //保存评论列表
+					obj.imgList = goods.slider_image; //保存轮播图
+					obj.specList = data.productAttr; //保存分类列表
+					console.log(data.productAttr);
+					obj.productValue = data.productValue; //保存分类查询数据
+					//保存默认选中商品价格
+					obj.actionPrice = goods.price;
+					obj.actionImage = goods.image_base; //保存默认选中商品价格
+					obj.goodsNumberMax = goods.stock; //保存默认选中最大可购买商品数量
+					obj.shopId = data.mer_id; //保存商店id
+					console.log(obj.goodsObjact.is_pack, 'v');
+					if (obj.goodsObjact.is_pack == 1) {
+						obj.goodsNumberMax = 1
+					}
+					// 保存默认选中的对象
+					obj.specSelected = []; //初始化默认选择对象
+					for (let i = 0; i < obj.specList.length; i++) {
+						// 设置默认数据
+						let attrValue = obj.specList[i].attr_value[0];
+						attrValue.check = true;
+						obj.specSelected.push(attrValue.attr);
+					}
+
+					//保存默认选中的对象字符串名称
+					let str = obj.specSelected.join(',');
+					// 设置默认值
+					obj.actionImage = obj.productValue[str].image;
+					obj.uniqueId = obj.productValue[str].unique;
+					obj.goodIntegral = obj.productValue[str].integral
+
+					// #ifdef H5
+					obj.shareDate();
+					// #endif
+				});
+			},
+			// #ifdef H5
+			// 加载微信html5页面分享方法
+			shareDate() {
+				let obj = this;
+				// 保存分享人id链接
+				let url = window.location.href + '&spread=' + this.userInfo.uid;
+				// 判断是否微信浏览器
+				let bool = uni.getStorageSync('weichatBrowser') || '';
+				if (bool) {
+					// 过滤微信强制添加的链接地址
+					url = url.replace(/[\?,&]from=singlemessage/g, '');
+					let data = {
+						link: url, // 分享链接
+						imgUrl: obj.goodsObjact.image, // 分享图标
+						desc: obj.goodsObjact.store_info,
+						title: obj.goodsObjact.store_name,
+						success: function(e) {
+							console.log(e);
+						}
+					};
+					shareLoad(data);
 				}
-			}
-			// 判断是否为拼团商品
-			if (obj.goodsType == 2) {
-				data.combinationId = obj.goodsid; //拼团编号
-				data.productId = obj.goodsObjact.product_id; //商品编号
-			}
-			cartAdd(data)
-				.then(function({ data }) {
-					if (obj.type == 1) {
-						// 跳转到支付页
-						uni.navigateTo({
-							url: '/pages/order/createOrder?id=' + data.cartId + '&goodsType=' + obj.goodsType + '&is_pack=' + obj.goodsObjact.is_pack + '&affiliation_uid=' + obj.goodsObjact.affiliation_uid
-						});
+			},
+			// #endif
+			// 购买数量变化
+			numberChange(e) {
+				this.goodsNumber = e.number;
+			},
+			//规格弹窗开关
+			toggleSpec(str) {
+				if (this.specClass === 'show') {
+					this.specClass = 'hide';
+					setTimeout(() => {
+						this.specClass = 'none';
+					}, 250);
+				} else if (this.specClass === 'none') {
+					this.specClass = 'show';
+				}
+				// 保存当前购买类型
+				this.type = str;
+			},
+			//选择规格
+			selectSpec(item, arr, ind) {
+				let obj = this
+				arr.attr_value.forEach(function(e) {
+					e.check = false;
+				});
+				item.check = true;
+				this.specSelected[ind] = item.attr;
+				let str = this.specSelected.join(',');
+				this.specSelectedName = this.specSelected.join(' ');
+				if (this.productValue[str]) {
+					let data = this.productValue[str];
+					this.actionPrice = data.price;
+					if (obj.goodsObjact.is_pack == 1) {
+						this.goodsNumberMax = 1;
+					} else {
+						this.goodsNumberMax = data.stock;
 					}
-					if (obj.type == 2) {
+
+					this.actionImage = data.image;
+					this.uniqueId = data.unique;
+					this.goodIntegral = data.integral
+					console.log(this.goodIntegral, 'xuanz')
+				}
+				if (obj.goodsObjact.is_pack == 1) {
+					console.log('dddddddddddddddddddddd');
+					this.goodsNumberMax = 1;
+				}
+			},
+			//分享
+			share() {
+				this.$refs.share.toggleMask();
+			},
+			//收藏
+			toFavorite(item) {
+				let obj = this;
+				item.userCollect = !item.userCollect;
+				if (!item.userCollect) {
+					collectDel({
+						id: obj.goodsid,
+						category: 'product'
+					}).then(function(e) {
+						uni.showToast({
+							title: '成功取消收藏',
+							type: 'top',
+							duration: 1500
+						});
+					});
+				} else {
+					collectAdd({
+						id: obj.goodsid,
+						category: 'product'
+					}).then(function(e) {
 						uni.showToast({
-							title: '成功加入购物车',
+							title: '成功加入收藏',
 							type: 'top',
-							duration: 2000
+							duration: 1500
+						});
+					});
+				}
+			},
+			// 立即购买
+			buy() {
+				let obj = this;
+				let data = {
+					cartNum: obj.goodsNumber, //商品数量
+					uniqueId: obj.uniqueId, //商品标签
+					new: '1', //商品是否新增加到购物车1为不加入0为加入
+					mer_id: obj.shopId,
+					is_pack: obj.goodsObjact.is_pack
+					// type: 0,//0为余额支付  1为消费券支付 2为积分支付
+				};
+				if (obj.type == 2) {
+					data.new = 0;
+				}
+				if (obj.goodsType == 0) {
+					data.productId = obj.goodsid; //商品编号
+				}
+				// 判断是否为秒杀商品
+				if (obj.goodsType == 1) {
+					data.secKillId = obj.goodsid; //秒杀商品编号
+					data.productId = obj.goodsObjact.product_id; //商品编号
+					// 判断是否秒杀已经结束
+					if (obj.seckillObj.stop) {
+						uni.showModal({
+							title: '提示',
+							content: '当前活动已经结束',
+							showCancel: false
 						});
-						obj.toggleSpec();
+						return;
 					}
-				})
-				.catch(e => {
-					console.log(e);
-				});
-		},
-		stopPrevent() {}
-	}
-};
+				}
+				// 判断是否为拼团商品
+				if (obj.goodsType == 2) {
+					data.combinationId = obj.goodsid; //拼团编号
+					data.productId = obj.goodsObjact.product_id; //商品编号
+				}
+				cartAdd(data)
+					.then(function({
+						data
+					}) {
+						if (obj.type == 1) {
+							// 跳转到支付页
+							uni.navigateTo({
+								url: '/pages/order/createOrder?id=' + data.cartId + '&goodsType=' + obj
+									.goodsType + '&is_pack=' + obj.goodsObjact.is_pack + '&affiliation_uid=' +
+									obj.goodsObjact.affiliation_uid
+							});
+						}
+						if (obj.type == 2) {
+							uni.showToast({
+								title: '成功加入购物车',
+								type: 'top',
+								duration: 2000
+							});
+							obj.toggleSpec();
+						}
+					})
+					.catch(e => {
+						console.log(e);
+					});
+			},
+			stopPrevent() {}
+		}
+	};
 </script>
 
 <style lang="scss">
-page {
-	background: $page-color-base;
-}
-//秒杀底部高度
-.seckillBottom {
-	height: 110rpx;
-}
-// 文章页底部高度撑开
-.contentBottomHeight {
-	height: 110rpx;
-}
-//默认商品底部高度
-.goodsBottom {
-	height: 100rpx;
-}
-.iconenter {
-	font-size: $font-base + 2rpx;
-	color: #888;
-}
-.carousel {
-	/* #ifdef APP-PLUS */
-	padding-top: var(--status-bar-height);
-	/* #endif */
-	height: 722rpx;
-	position: relative;
-	swiper {
-		height: 100%;
-	}
-	.image-wrapper {
-		width: 100%;
-		height: 100%;
-	}
-	.swiper-item {
-		display: flex;
-		justify-content: center;
-		align-content: center;
-		// height: 750rpx;
-		height: 710rpx;
-		overflow: hidden;
-		image {
-			width: 100%;
-			height: 100%;
-		}
+	page {
+		background: $page-color-base;
 	}
-}
-// 秒杀
-.seckill-box-title {
-	background: linear-gradient(90deg, rgba(239, 78, 81, 1) 0%, rgba(244, 113, 59, 1) 100%) !important;
-	.price,
-	.price-tip,
-	.timeStop,
-	.m-price {
-		color: #ffffff !important;
-	}
-	.price-tip {
-		font-size: $font-base;
+
+	//秒杀底部高度
+	.seckillBottom {
+		height: 110rpx;
 	}
-	.price {
-		font-size: 45rpx !important;
-		font-weight: bold;
+
+	// 文章页底部高度撑开
+	.contentBottomHeight {
+		height: 110rpx;
 	}
-	.timeStop {
+
+	//默认商品底部高度
+	.goodsBottom {
+		height: 100rpx;
 	}
-}
-// 底部拼团、秒杀支付按钮
-.goods-pay-box {
-	position: fixed;
-	left: 0;
-	bottom: 0;
-	z-index: 95;
-	width: 750rpx;
-	height: 100rpx;
-	line-height: 1;
-	color: #ffffff;
-	text-align: center;
-	font-size: $font-lg;
-	.bgLine {
-		background: linear-gradient(90deg, rgba(239, 78, 81, 1) 0%, rgba(244, 113, 59, 1) 100%);
+
+	.iconenter {
+		font-size: $font-base + 2rpx;
+		color: #888;
 	}
-	// 拼团支付按钮
-	.goods-pay {
-		display: flex;
-		align-content: center;
-		flex-wrap: wrap;
-		justify-content: center;
-		.goods-buttom,
-		.goods-buttom-money {
+
+	.carousel {
+		/* #ifdef APP-PLUS */
+		padding-top: var(--status-bar-height);
+		/* #endif */
+		height: 722rpx;
+		position: relative;
+
+		swiper {
+			height: 100%;
+		}
+
+		.image-wrapper {
 			width: 100%;
+			height: 100%;
 		}
-		.goods-buttom-money {
-			font-size: $font-base;
+
+		.swiper-item {
+			display: flex;
+			justify-content: center;
+			align-content: center;
+			// height: 750rpx;
+			height: 710rpx;
+			overflow: hidden;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
 		}
 	}
-	.goods-pay-stop,
-	.goods-pay {
-		padding: 15rpx 0;
-		height: 100%;
-		width: 100%;
-	}
-	.goods-pay-stop {
-		background: $color-gray;
-		line-height: 70rpx;
-	}
-}
-/* 标题简介 */
-.introduce-section {
-	background: #fff;
-	padding: 20rpx 30rpx;
-	.title {
-		font-size: 32rpx;
-		color: $font-color-dark;
-		height: 50rpx;
-		line-height: 50rpx;
-	}
-	.price-box {
-		display: flex;
-		align-items: baseline;
-		height: 64rpx;
-		padding: 10rpx 0;
-		font-size: 26rpx;
-		color: #FD3B39;
-	}
-	.price {
-		font-size: $font-lg + 2rpx;
-	}
-	.m-price {
-		margin: 0 12rpx;
-		color: $font-color-light;
-		text-decoration: line-through;
-	}
-	.pt {
-		text-decoration:none;
-	}
-	.coupon-tip {
-		align-items: center;
-		padding: 4rpx 10rpx;
-		background: $uni-color-primary;
-		font-size: $font-sm;
-		color: #fff;
-		border-radius: 6rpx;
-		line-height: 1;
-		transform: translateY(-4rpx);
-	}
-	.bot-row {
-		display: flex;
-		align-items: center;
-		height: 50rpx;
-		font-size: $font-sm;
-		color: $font-color-light;
-		text {
-			flex: 1;
+
+	// 秒杀
+	.seckill-box-title {
+		background: linear-gradient(90deg, rgba(239, 78, 81, 1) 0%, rgba(244, 113, 59, 1) 100%) !important;
+
+		.price,
+		.price-tip,
+		.timeStop,
+		.m-price {
+			color: #ffffff !important;
 		}
-	}
-}
-/* 分享 */
-.share-section {
-	display: flex;
-	align-items: center;
-	color: $font-color-base;
-	background: linear-gradient(left, #fdf5f6, #fbebf6);
-	padding: 12rpx 30rpx;
-	.share-icon {
-		display: flex;
-		align-items: center;
-		width: 70rpx;
-		height: 30rpx;
-		line-height: 1;
-		border: 1px solid $uni-color-primary;
-		border-radius: 4rpx;
-		position: relative;
-		overflow: hidden;
-		font-size: 22rpx;
-		color: $uni-color-primary;
-		&:after {
-			content: '';
-			width: 50rpx;
-			height: 50rpx;
-			border-radius: 50%;
-			left: -20rpx;
-			top: -12rpx;
-			position: absolute;
-			background: $uni-color-primary;
+
+		.price-tip {
+			font-size: $font-base;
 		}
-	}
-	.iconfavorfill {
-		position: relative;
-		z-index: 1;
-		font-size: 24rpx;
-		margin-left: 2rpx;
-		margin-right: 10rpx;
-		color: #fff;
-		line-height: 1;
-	}
-	.tit {
-		font-size: $font-base;
-		margin-left: 10rpx;
-	}
-	.iconprompt {
-		padding: 10rpx;
-		font-size: 30rpx;
-		line-height: 1;
-	}
-	.share-btn {
-		flex: 1;
-		text-align: right;
-		font-size: $font-sm;
-		color: $uni-color-primary;
-	}
-	.iconenter {
-		font-size: $font-sm;
-		margin-left: 4rpx;
-		color: $uni-color-primary;
-	}
-}
-
-.c-list {
-	margin-top: 20rpx;
-	font-size: $font-sm + 2rpx;
-	color: $font-color-base;
-	background: #fff;
-	.c-row {
-		display: flex;
-		align-items: center;
-		padding: 20rpx 30rpx;
-		position: relative;
-	}
-	.tit {
-		width: 140rpx;
-	}
-	.con {
-		flex: 1;
-		color: $font-color-dark;
-		.selected-text {
-			margin-right: 10rpx;
-			.num {
-				color: #FD3B39;
-			}
+
+		.price {
+			font-size: 45rpx !important;
+			font-weight: bold;
 		}
+
+		.timeStop {}
 	}
-	.bz-list {
-		height: 40rpx;
-		font-size: $font-sm + 2rpx;
-		color: $font-color-dark;
-		text {
-			display: inline-block;
-			margin-right: 30rpx;
+
+	// 底部拼团、秒杀支付按钮
+	.goods-pay-box {
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		z-index: 95;
+		width: 750rpx;
+		height: 100rpx;
+		line-height: 1;
+		color: #ffffff;
+		text-align: center;
+		font-size: $font-lg;
+
+		.bgLine {
+			background: linear-gradient(90deg, rgba(239, 78, 81, 1) 0%, rgba(244, 113, 59, 1) 100%);
 		}
-	}
-	.con-list {
-		flex: 1;
-		display: flex;
-		flex-direction: column;
-		color: $font-color-dark;
-		line-height: 40rpx;
-	}
-	.red {
-		color: $uni-color-primary;
-	}
-}
-
-/* 评价 */
-.eva-section {
-	display: flex;
-	flex-direction: column;
-	padding: 20rpx 30rpx;
-	background: #fff;
-	margin-top: 16rpx;
-	.e-header {
-		display: flex;
-		align-items: center;
-		height: 70rpx;
-		font-size: $font-sm + 2rpx;
-		color: $font-color-light;
-		.tit {
-			font-size: $font-base + 2rpx;
-			color: $font-color-dark;
-			margin-right: 4rpx;
+
+		// 拼团支付按钮
+		.goods-pay {
+			display: flex;
+			align-content: center;
+			flex-wrap: wrap;
+			justify-content: center;
+
+			.goods-buttom,
+			.goods-buttom-money {
+				width: 100%;
+			}
+
+			.goods-buttom-money {
+				font-size: $font-base;
+			}
 		}
-		.tip {
-			flex: 1;
-			text-align: right;
+
+		.goods-pay-stop,
+		.goods-pay {
+			padding: 15rpx 0;
+			height: 100%;
+			width: 100%;
 		}
-		.iconenter {
-			margin-left: 10rpx;
+
+		.goods-pay-stop {
+			background: $color-gray;
+			line-height: 70rpx;
 		}
 	}
-}
-.eva-box {
-	display: flex;
-	padding: 20rpx 0;
-	.portrait {
-		flex-shrink: 0;
-		width: 80rpx;
-		height: 80rpx;
-		border-radius: 100px;
-	}
-	.right {
-		flex: 1;
-		display: flex;
-		flex-direction: column;
-		font-size: $font-base;
-		color: $font-color-base;
-		padding-left: 26rpx;
-		.con {
-			font-size: $font-base;
+
+	/* 标题简介 */
+	.introduce-section {
+		background: #fff;
+		padding: 20rpx 30rpx;
+
+		.title {
+			font-size: 32rpx;
 			color: $font-color-dark;
-			padding: 20rpx 0;
+			height: 50rpx;
+			line-height: 50rpx;
 		}
-		.bot {
+
+		.price-box {
 			display: flex;
-			justify-content: space-between;
-			font-size: $font-sm;
+			align-items: baseline;
+			height: 64rpx;
+			padding: 10rpx 0;
+			font-size: 26rpx;
+			color: #FD3B39;
+		}
+
+		.price {
+			font-size: $font-lg + 2rpx;
+		}
+
+		.m-price {
+			margin: 0 12rpx;
 			color: $font-color-light;
+			// text-decoration: line-through;
 		}
-	}
-}
-
-.eva-boxs {
-	width: 100%;
-	overflow: hidden;
-	padding: 10px 28rpx;
-	background: #f4f4f4;
-	border-radius: 12rpx;
-	font-size: $font-sm + 2rpx;
-	color: #333;
-	.portrait {
-		flex-shrink: 0;
-		width: 80rpx;
-		height: 80rpx;
-		border-radius: 100px;
-	}
-	.right {
-		flex: 1;
-		display: flex;
-		flex-direction: column;
-		font-size: $font-base;
-		color: $font-color-base;
-		.con {
-			font-size: $font-base;
-			color: $font-color-dark;
+
+		.pt {
+			text-decoration: none;
+		}
+
+		.coupon-tip {
+			align-items: center;
+			padding: 4rpx 10rpx;
+			background: $uni-color-primary;
+			font-size: $font-sm;
+			color: #fff;
+			border-radius: 6rpx;
+			line-height: 1;
+			transform: translateY(-4rpx);
 		}
-		.bot {
+
+		.bot-row {
 			display: flex;
-			justify-content: space-between;
+			align-items: center;
+			height: 50rpx;
 			font-size: $font-sm;
 			color: $font-color-light;
+
+			text {
+				flex: 1;
+			}
 		}
 	}
-}
-/*  详情 */
-.detail-desc {
-	background: #fff;
-	margin-top: 16rpx;
-	/deep/ img {
-		max-width: 100% !important;
-		display: inline !important;
-	}
-	/deep/ div {
-		max-width: 100% !important;
-	}
-	.d-header {
+
+	/* 分享 */
+	.share-section {
 		display: flex;
-		justify-content: center;
 		align-items: center;
-		height: 80rpx;
-		font-size: $font-base + 2rpx;
-		color: $font-color-dark;
-		position: relative;
+		color: $font-color-base;
+		background: linear-gradient(left, #fdf5f6, #fbebf6);
+		padding: 12rpx 30rpx;
 
-		text {
-			padding: 0 20rpx;
-			background: #fff;
+		.share-icon {
+			display: flex;
+			align-items: center;
+			width: 70rpx;
+			height: 30rpx;
+			line-height: 1;
+			border: 1px solid $uni-color-primary;
+			border-radius: 4rpx;
+			position: relative;
+			overflow: hidden;
+			font-size: 22rpx;
+			color: $uni-color-primary;
+
+			&:after {
+				content: '';
+				width: 50rpx;
+				height: 50rpx;
+				border-radius: 50%;
+				left: -20rpx;
+				top: -12rpx;
+				position: absolute;
+				background: $uni-color-primary;
+			}
+		}
+
+		.iconfavorfill {
 			position: relative;
 			z-index: 1;
+			font-size: 24rpx;
+			margin-left: 2rpx;
+			margin-right: 10rpx;
+			color: #fff;
+			line-height: 1;
 		}
-		&:after {
-			position: absolute;
-			left: 50%;
-			top: 50%;
-			transform: translateX(-50%);
-			width: 300rpx;
-			height: 0;
-			content: '';
-			border-bottom: 1px solid #ccc;
+
+		.tit {
+			font-size: $font-base;
+			margin-left: 10rpx;
 		}
-	}
-}
 
-/* 规格选择弹窗 */
-.attr-content {
-	padding: 10rpx 0 0;
-	.a-t {
-		padding: 0 30rpx;
-		display: flex;
-		image {
-			width: 170rpx;
-			height: 170rpx;
-			flex-shrink: 0;
-			border-radius: 8rpx;
+		.iconprompt {
+			padding: 10rpx;
+			font-size: 30rpx;
+			line-height: 1;
 		}
-		.right {
+
+		.share-btn {
+			flex: 1;
+			text-align: right;
+			font-size: $font-sm;
+			color: $uni-color-primary;
+		}
+
+		.iconenter {
+			font-size: $font-sm;
+			margin-left: 4rpx;
+			color: $uni-color-primary;
+		}
+	}
+
+	.c-list {
+		margin-top: 20rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-base;
+		background: #fff;
+
+		.c-row {
 			display: flex;
-			flex-direction: column;
-			padding-left: 24rpx;
-			font-size: $font-sm + 2rpx;
-			color: $font-color-base;
-			line-height: 42rpx;
-			.good-name {
-				padding-top: 20rpx;
-				max-width: 320rpx;
-				font-size: 30rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #1d2023;
-				line-height: 42rpx;
-				margin-bottom: 15rpx;
-			}
-			.price {
-				font-size: 60rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #ff6f0f;
-				// font-size: $font-lg;
-				// color: $uni-color-primary;
-				// margin-bottom: 10rpx;
-			}
+			align-items: center;
+			padding: 20rpx 30rpx;
+			position: relative;
+		}
+
+		.tit {
+			width: 140rpx;
+		}
+
+		.con {
+			flex: 1;
+			color: $font-color-dark;
+
 			.selected-text {
 				margin-right: 10rpx;
+
+				.num {
+					color: #FD3B39;
+				}
 			}
 		}
+
+		.bz-list {
+			height: 40rpx;
+			font-size: $font-sm + 2rpx;
+			color: $font-color-dark;
+
+			text {
+				display: inline-block;
+				margin-right: 30rpx;
+			}
+		}
+
+		.con-list {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			color: $font-color-dark;
+			line-height: 40rpx;
+		}
+
+		.red {
+			color: $uni-color-primary;
+		}
 	}
-	.attr-list {
+
+	/* 评价 */
+	.eva-section {
 		display: flex;
 		flex-direction: column;
-		font-size: $font-base + 2rpx;
-		color: $font-color-base;
-		padding-top: 30rpx;
-		padding-left: 40rpx;
-		padding-right: 30rpx;
+		padding: 20rpx 30rpx;
+		background: #fff;
+		margin-top: 16rpx;
+
+		.e-header {
+			display: flex;
+			align-items: center;
+			height: 70rpx;
+			font-size: $font-sm + 2rpx;
+			color: $font-color-light;
+
+			.tit {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				margin-right: 4rpx;
+			}
+
+			.tip {
+				flex: 1;
+				text-align: right;
+			}
+
+			.iconenter {
+				margin-left: 10rpx;
+			}
+		}
 	}
-	.item-list {
-		padding: 20rpx 0 0;
+
+	.eva-box {
 		display: flex;
-		flex-wrap: wrap;
-		.tit {
+		padding: 20rpx 0;
+
+		.portrait {
+			flex-shrink: 0;
+			width: 80rpx;
+			height: 80rpx;
+			border-radius: 100px;
+		}
+
+		.right {
+			flex: 1;
 			display: flex;
-			align-items: center;
-			justify-content: center;
-			background: #eee;
-			// margin-left: 10rpx;
-			margin-right: 20rpx;
-			margin-bottom: 20rpx;
-			border-radius: 100rpx;
-			min-width: 60rpx;
-			height: 60rpx;
-			padding: 0 20rpx;
+			flex-direction: column;
 			font-size: $font-base;
-			color: $font-color-dark;
-		}
-		.selected {
-			background: #fbebee;
-			color: $uni-color-primary;
+			color: $font-color-base;
+			padding-left: 26rpx;
+
+			.con {
+				font-size: $font-base;
+				color: $font-color-dark;
+				padding: 20rpx 0;
+			}
+
+			.bot {
+				display: flex;
+				justify-content: space-between;
+				font-size: $font-sm;
+				color: $font-color-light;
+			}
 		}
 	}
-}
-
-/*  弹出层 */
-.popup {
-	position: fixed;
-	left: 0;
-	top: 0;
-	right: 0;
-	bottom: 0;
-	z-index: 99;
-
-	&.show {
-		display: block;
-		.mask {
-			animation: showPopup 0.2s linear both;
+
+	.eva-boxs {
+		width: 100%;
+		overflow: hidden;
+		padding: 10px 28rpx;
+		background: #f4f4f4;
+		border-radius: 12rpx;
+		font-size: $font-sm + 2rpx;
+		color: #333;
+
+		.portrait {
+			flex-shrink: 0;
+			width: 80rpx;
+			height: 80rpx;
+			border-radius: 100px;
 		}
-		.layer {
-			animation: showLayer 0.2s linear both;
+
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			font-size: $font-base;
+			color: $font-color-base;
+
+			.con {
+				font-size: $font-base;
+				color: $font-color-dark;
+			}
+
+			.bot {
+				display: flex;
+				justify-content: space-between;
+				font-size: $font-sm;
+				color: $font-color-light;
+			}
 		}
 	}
-	&.hide {
-		.mask {
-			animation: hidePopup 0.2s linear both;
+
+	/*  详情 */
+	.detail-desc {
+		background: #fff;
+		margin-top: 16rpx;
+
+		/deep/ img {
+			max-width: 100% !important;
+			display: inline !important;
 		}
-		.layer {
-			animation: hideLayer 0.2s linear both;
+
+		/deep/ div {
+			max-width: 100% !important;
 		}
-	}
-	&.none {
-		display: none;
-	}
-	.mask {
-		position: fixed;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 1;
-		background-color: rgba(0, 0, 0, 0.4);
-	}
-	.layer {
-		position: fixed;
-		z-index: 99;
-		bottom: 0;
-		width: 100%;
-		min-height: 30vh;
-		border-radius: 10rpx 10rpx 0 0;
-		background-color: #fff;
-		.btn {
-			position: absolute;
-			bottom: 0;
-			width: 750rpx;
-			height: 98rpx;
-			background: #FE5B38;
-			line-height: 98rpx;
-			// background: $uni-color-primary;
+
+		.d-header {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 80rpx;
 			font-size: $font-base + 2rpx;
-			color: #fff;
+			color: $font-color-dark;
+			position: relative;
+
+			text {
+				padding: 0 20rpx;
+				background: #fff;
+				position: relative;
+				z-index: 1;
+			}
+
+			&:after {
+				position: absolute;
+				left: 50%;
+				top: 50%;
+				transform: translateX(-50%);
+				width: 300rpx;
+				height: 0;
+				content: '';
+				border-bottom: 1px solid #ccc;
+			}
 		}
 	}
-	@keyframes showPopup {
-		0% {
-			opacity: 0;
-		}
-		100% {
-			opacity: 1;
+
+	/* 规格选择弹窗 */
+	.attr-content {
+		padding: 10rpx 0 0;
+
+		.a-t {
+			padding: 0 30rpx;
+			display: flex;
+
+			image {
+				width: 170rpx;
+				height: 170rpx;
+				flex-shrink: 0;
+				border-radius: 8rpx;
+			}
+
+			.right {
+				display: flex;
+				flex-direction: column;
+				padding-left: 24rpx;
+				font-size: $font-sm + 2rpx;
+				color: $font-color-base;
+				line-height: 42rpx;
+
+				.good-name {
+					padding-top: 20rpx;
+					max-width: 320rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #1d2023;
+					line-height: 42rpx;
+					margin-bottom: 15rpx;
+				}
+
+				.price {
+					font-size: 60rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #ff6f0f;
+					// font-size: $font-lg;
+					// color: $uni-color-primary;
+					// margin-bottom: 10rpx;
+				}
+
+				.selected-text {
+					margin-right: 10rpx;
+				}
+			}
 		}
-	}
-	@keyframes hidePopup {
-		0% {
-			opacity: 1;
+
+		.attr-list {
+			display: flex;
+			flex-direction: column;
+			font-size: $font-base + 2rpx;
+			color: $font-color-base;
+			padding-top: 30rpx;
+			padding-left: 40rpx;
+			padding-right: 30rpx;
 		}
-		100% {
-			opacity: 0;
+
+		.item-list {
+			padding: 20rpx 0 0;
+			display: flex;
+			flex-wrap: wrap;
+
+			.tit {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				background: #eee;
+				// margin-left: 10rpx;
+				margin-right: 20rpx;
+				margin-bottom: 20rpx;
+				border-radius: 100rpx;
+				min-width: 60rpx;
+				height: 60rpx;
+				padding: 0 20rpx;
+				font-size: $font-base;
+				color: $font-color-dark;
+			}
+
+			.selected {
+				background: #fbebee;
+				color: $uni-color-primary;
+			}
 		}
 	}
-	@keyframes showLayer {
-		0% {
-			transform: translateY(120%);
+
+	/*  弹出层 */
+	.popup {
+		position: fixed;
+		left: 0;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		z-index: 99;
+
+		&.show {
+			display: block;
+
+			.mask {
+				animation: showPopup 0.2s linear both;
+			}
+
+			.layer {
+				animation: showLayer 0.2s linear both;
+			}
 		}
-		100% {
-			transform: translateY(0%);
+
+		&.hide {
+			.mask {
+				animation: hidePopup 0.2s linear both;
+			}
+
+			.layer {
+				animation: hideLayer 0.2s linear both;
+			}
 		}
-	}
-	@keyframes hideLayer {
-		0% {
-			transform: translateY(0);
+
+		&.none {
+			display: none;
 		}
-		100% {
-			transform: translateY(120%);
+
+		.mask {
+			position: fixed;
+			top: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 1;
+			background-color: rgba(0, 0, 0, 0.4);
 		}
-	}
-}
-
-/* 底部操作菜单 */
-.page-bottom {
-	position: fixed;
-	left: 0rpx;
-	bottom: 0rpx;
-	z-index: 95;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	width: 750rpx;
-	height: 98rpx;
-	background: rgba(255, 255, 255, 0.9);
-	box-shadow: 0 0 20rpx 0 rgba(0, 0, 0, 0.5);
-	// border-radius: 16rpx;
-	.p-b-btn {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		font-size: $font-sm;
-		color: $font-color-base;
-		width: 100rpx;
-		height: 98rpx;
-		.iconfont {
-			font-size: 40rpx;
-			line-height: 48rpx;
-			color: $font-color-light;
+
+		.layer {
+			position: fixed;
+			z-index: 99;
+			bottom: 0;
+			width: 100%;
+			min-height: 30vh;
+			border-radius: 10rpx 10rpx 0 0;
+			background-color: #fff;
+
+			.btn {
+				position: absolute;
+				bottom: 0;
+				width: 750rpx;
+				height: 98rpx;
+				background: #FE5B38;
+				line-height: 98rpx;
+				// background: $uni-color-primary;
+				font-size: $font-base + 2rpx;
+				color: #fff;
+			}
 		}
-		&.active,
-		&.active .iconfont {
-			color: $uni-color-primary;
+
+		@keyframes showPopup {
+			0% {
+				opacity: 0;
+			}
+
+			100% {
+				opacity: 1;
+			}
+		}
+
+		@keyframes hidePopup {
+			0% {
+				opacity: 1;
+			}
+
+			100% {
+				opacity: 0;
+			}
 		}
-		.icon-fenxiang2 {
-			font-size: 42rpx;
-			transform: translateY(-2rpx);
+
+		@keyframes showLayer {
+			0% {
+				transform: translateY(120%);
+			}
+
+			100% {
+				transform: translateY(0%);
+			}
 		}
-		.iconlikefill {
-			font-size: 46rpx;
+
+		@keyframes hideLayer {
+			0% {
+				transform: translateY(0);
+			}
+
+			100% {
+				transform: translateY(120%);
+			}
 		}
 	}
-	.action-btn-group {
+
+	/* 底部操作菜单 */
+	.page-bottom {
+		position: fixed;
+		left: 0rpx;
+		bottom: 0rpx;
+		z-index: 95;
 		display: flex;
+		justify-content: center;
+		align-items: center;
+		width: 750rpx;
 		height: 98rpx;
-		overflow: hidden;
-		position: relative;
-		.shoucang {
-			width: 100rpx;
-			height: 100rpx;
-			background: #FFFFFF;
+		background: rgba(255, 255, 255, 0.9);
+		box-shadow: 0 0 20rpx 0 rgba(0, 0, 0, 0.5);
+
+		// border-radius: 16rpx;
+		.p-b-btn {
+			display: flex;
 			flex-direction: column;
+			align-items: center;
 			justify-content: center;
-			font-size: 20rpx;
-			image {
-				width: 36rpx;
-				height: 35rpx;
-				margin-bottom: 10rpx;
+			font-size: $font-sm;
+			color: $font-color-base;
+			width: 100rpx;
+			height: 98rpx;
+
+			.iconfont {
+				font-size: 40rpx;
+				line-height: 48rpx;
+				color: $font-color-light;
+			}
+
+			&.active,
+			&.active .iconfont {
+				color: $uni-color-primary;
+			}
+
+			.icon-fenxiang2 {
+				font-size: 42rpx;
+				transform: translateY(-2rpx);
+			}
+
+			.iconlikefill {
+				font-size: 46rpx;
 			}
 		}
-		.buy-now {
-			flex-grow: 1;
-			// width: 650rpx;
-			width: 750rpx;
-			display: flex;
-		}
-		.action-btn {
-			flex-shrink: 0;
-			flex-grow: 1;
+
+		.action-btn-group {
 			display: flex;
-			align-items: center;
-			justify-content: center;
-			// width: 580rpx;
-			flex-grow: 1;
-			height: 100%;
-			font-size: 34rpx;
-			padding: 0;
-			border-radius: 0;
-			// background: transparent;
-			background: #ffb238;
-			&.buy-now-btn {
-				background-color: #ffb238;
+			height: 98rpx;
+			overflow: hidden;
+			position: relative;
+
+			.shoucang {
+				width: 100rpx;
+				height: 100rpx;
+				background: #FFFFFF;
+				flex-direction: column;
+				justify-content: center;
+				font-size: 20rpx;
+
+				image {
+					width: 36rpx;
+					height: 35rpx;
+					margin-bottom: 10rpx;
+				}
 			}
-			&.add-cart-btn {
-				background: #FD3B39;
+
+			.buy-now {
+				flex-grow: 1;
+				// width: 650rpx;
+				width: 750rpx;
+				display: flex;
+			}
+
+			.action-btn {
+				flex-shrink: 0;
+				flex-grow: 1;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				// width: 580rpx;
+				flex-grow: 1;
+				height: 100%;
+				font-size: 34rpx;
+				padding: 0;
+				border-radius: 0;
+				// background: transparent;
+				background: #ffb238;
+
+				&.buy-now-btn {
+					background-color: #ffb238;
+				}
+
+				&.add-cart-btn {
+					background: #FD3B39;
+				}
 			}
 		}
 	}
-}
-// 商店头
-.shop-box {
-	background-color: #ffffff;
-	margin-top: 20rpx;
-	margin-bottom: 10rpx;
-	padding: 20rpx;
-	.shop-img {
-		border-radius: 300rpx;
-		height: 80rpx;
-		width: 80rpx;
-		margin-right: 20rpx;
+
+	// 商店头
+	.shop-box {
+		background-color: #ffffff;
+		margin-top: 20rpx;
+		margin-bottom: 10rpx;
+		padding: 20rpx;
+
+		.shop-img {
+			border-radius: 300rpx;
+			height: 80rpx;
+			width: 80rpx;
+			margin-right: 20rpx;
+		}
+
+		.shop-button {
+			border-radius: 100rpx;
+			padding: 10rpx 20rpx;
+			color: $color-red;
+			border: 1px solid $color-red;
+			font-size: $font-lg;
+			line-height: 1;
+		}
 	}
-	.shop-button {
-		border-radius: 100rpx;
-		padding: 10rpx 20rpx;
-		color: $color-red;
-		border: 1px solid $color-red;
-		font-size: $font-lg;
-		line-height: 1;
+
+	.detail-centent {
+		img {
+			vertical-align: top;
+		}
 	}
-}
-.detail-centent {
-	img {
-		vertical-align: top;
+
+	/* 商品详情中限制图片大小 */
+	/deep/ .rich-img {
+		width: 100% !important;
+		height: auto;
 	}
-}
-/* 商品详情中限制图片大小 */
-/deep/ .rich-img {
-	width: 100% !important;
-	height: auto;
-}
-</style>
+</style>

+ 23 - 0
pages/set/userinfo.vue

@@ -2,10 +2,18 @@
 	<view class="content">
 		<view class="row1">
 			<text class="tit">头像</text>
+			<!-- #ifdef APP -->
+			<view class="background-img" @click="openAuth">
+				<image class="background-img" v-model="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill">
+				</image>
+			</view>
+			<!-- #endif -->
+			<!-- #ifndef APP -->
 			<view class="background-img" @click="imgsub">
 				<image class="background-img" v-model="userInfo.avatar" :src="userInfo.avatar" mode="aspectFill">
 				</image>
 			</view>
+			<!-- #endif -->
 		</view>
 		<view class="row">
 			<text class="tit">昵称</text>
@@ -31,10 +39,16 @@
 				</view>
 			</view>
 		</uni-popup> -->
+		<!-- #ifdef APP -->
+		<yk-authpup ref="WRITE_EXTERNAL_STORAGE" type="top" @changeAuth="changeAuth"
+		    permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>  
+		<!-- #endif -->
+		
 	</view>
 </template>
 
 <script>
+	 import ykAuthpup from "@/components/yk-authpup/yk-authpup";
 	import {
 		mapState,
 		mapMutations
@@ -47,6 +61,9 @@
 		logout
 	} from '@/api/set.js';
 	export default {
+		components: {
+			ykAuthpup
+		},
 		data() {
 			return {
 				show: false,
@@ -61,6 +78,12 @@
 		},
 		methods: {
 			...mapMutations('user', ['logout']),
+			openAuth() {
+				this.$refs['WRITE_EXTERNAL_STORAGE'].open()
+			},
+			changeAuth() {
+				this.imgsub()
+			},
 			imgsub() {
 				console.log('上传头像')
 				upload({

+ 46 - 20
pages/user/shareQrCode.vue

@@ -2,8 +2,8 @@
 	<view class="main">
 		<view class="qrimg">
 			<tki-qrcode :cid="cid" ref="qrcode" :val="val" :size="size" :unit="unit" :background="background"
-				:foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconSize" :lv="lv" :onval="onval" :showLoading="showLoading"
-				:loadMake="loadMake" :usingComponents="usingComponents" @result="qrR" />
+				:foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconSize" :lv="lv" :onval="onval"
+				:showLoading="showLoading" :loadMake="loadMake" :usingComponents="usingComponents" @result="qrR" />
 		</view>
 		<canvas :style="{ width:  '600rpx', height: '1066rpx',}" canvas-id="myCanvas" id="myCanvas" class="hb"></canvas>
 		<view class="btm-btn" v-if="fina">
@@ -13,17 +13,30 @@
 					复制邀请链接
 				</view>
 			</view>
+			<!-- #ifdef APP -->
+			<view class="btn" @click="openAuth">
+				<image src="../../static/icon/fxhb.png" mode=""></image>
+				<view class="">
+					保存分享海报
+				</view>
+			</view>
+			<!-- #endif -->
+			<!-- #ifndef APP -->
 			<view class="btn" @click="saveShareQrcode">
 				<image src="../../static/icon/fxhb.png" mode=""></image>
 				<view class="">
 					保存分享海报
 				</view>
 			</view>
+			<!-- #endif -->
 		</view>
+		<yk-authpup ref="WRITE_EXTERNAL_STORAGE" type="top" @changeAuth="changeAuth"
+			permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>
 	</view>
 </template>
 
 <script>
+	import ykAuthpup from "@/components/yk-authpup/yk-authpup";
 	import {
 		mapState,
 		mapMutations
@@ -31,13 +44,16 @@
 	import {
 		getUserInfo
 	} from '@/api/user.js';
-
+	
 	var that
 	export default {
+		components: {
+				ykAuthpup
+			},
 		data() {
 			return {
 				cid: 'tki-qrcode-canvas', //canvasId,页面存在多个二维码组件时需设置不同的ID
-				size:300, //生成的二维码大小
+				size: 300, //生成的二维码大小
 				unit: 'upx', //大小单位尺寸
 				// show: true,//默认使用组件中的image标签显示二维码
 				val: '', //要生成的内容
@@ -99,7 +115,7 @@
 					}
 				});
 				//#endif
-			
+
 				/**
 				 * H5端的复制逻辑
 				 */
@@ -173,27 +189,29 @@
 						// 填充背景色,白色
 						ctx.setFillStyle('#fff'); // 默认白色
 						ctx.fillRect(0, 0, this.canvasW, this.canvasH) // fillRect(x,y,宽度,高度)
-						
+
 						// 绘制商品主图,二维码
 						ctx.drawImage(this.goodsImg.path, 0, 0, this.canvasW, this
 							.canvasH) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度)
-							// #ifdef APP-PLUS
-							ctx.drawImage(this.ewmImg.path, (this.canvasW / 2 - this.ewmW / 2),this.canvasH - 85*this.ratio - this.ewmW,
-								this.ewmW, this.ewmW) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度,二维码的宽,高)
-							
-							// #endif
-							// #ifdef H5
-							ctx.drawImage(this.ewmImg.path, (this.canvasW / 2 - this.ewmW / 2),this.canvasH - 170*this.ratio - this.ewmW,
-								this.ewmW, this.ewmW) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度,二维码的宽,高)
-							// #endif
-						
+						// #ifdef APP-PLUS
+						ctx.drawImage(this.ewmImg.path, (this.canvasW / 2 - this.ewmW / 2), this.canvasH - 85 *
+							this.ratio - this.ewmW,
+							this.ewmW, this.ewmW) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度,二维码的宽,高)
+
+						// #endif
+						// #ifdef H5
+						ctx.drawImage(this.ewmImg.path, (this.canvasW / 2 - this.ewmW / 2), this.canvasH -
+							170 * this.ratio - this.ewmW,
+							this.ewmW, this.ewmW) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度,二维码的宽,高)
+						// #endif
+
 
 						// 3、绘制商品标题,多余文字自动换行
 						ctx.setFontSize(24); // setFontSize() 设置字体字号
 						ctx.setFillStyle('#fff'); // setFillStyle() 设置字体颜色
 						ctx.textAlign = "center";
 						// 邀请码
-						ctx.fillText('邀请码:' + this.userInfo.uid,this.canvasW/2,this.canvasH -10)
+						ctx.fillText('邀请码:' + this.userInfo.uid, this.canvasW / 2, this.canvasH - 10)
 						ctx.draw(false, (ret) => { // draw方法 把以上内容画到 canvas 中。
 							console.log(ret)
 							uni.showToast({
@@ -246,6 +264,12 @@
 				})
 			},
 			//保存图片
+			openAuth() {
+				this.$refs['WRITE_EXTERNAL_STORAGE'].open()
+			},
+			changeAuth() {
+				this.saveShareQrcode()
+			},
 			saveShareQrcode() {
 				console.log(this.shareQrcodeUrl)
 				uni.saveImageToPhotosAlbum({
@@ -299,6 +323,7 @@
 	.hb {
 		margin: auto;
 	}
+
 	.qrimg {
 		position: absolute;
 		left: -9999rpx;
@@ -316,7 +341,7 @@
 		margin: 0 auto;
 		margin-top: 30upx;
 	}
-	
+
 	.btm-btn {
 		position: fixed;
 		bottom: 0;
@@ -325,6 +350,7 @@
 		display: flex;
 		background-color: #fff;
 		border-radius: 20rpx 20rpx 0 0;
+
 		.btn {
 			width: 50%;
 			display: flex;
@@ -332,7 +358,7 @@
 			justify-content: center;
 			align-items: center;
 			font-size: 26rpx;
-			
+
 			image {
 				width: 66rpx;
 				height: 66rpx;
@@ -340,4 +366,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 23 - 2
pages/user/sqdl.vue

@@ -82,8 +82,14 @@
 						收款码:
 					</view>
 					<view class="bg-val">
+						<!-- #ifdef APP -->
+						<image v-if="!aliInfo.qr" src="../../static/img/add.png" mode="" @click="openAuth(1)"></image>
+						<image v-else :src="aliInfo.qr" mode="" @click="openAuth(1)"></image>
+						<!-- #endif -->
+						<!-- #ifndef APP -->
 						<image v-if="!aliInfo.qr" src="../../static/img/add.png" mode="" @click="upimg(1)"></image>
 						<image v-else :src="aliInfo.qr" mode="" @click="upimg(1)"></image>
+						<!-- #endif -->
 					</view>
 				</view>
 				<view class="bd-wrap flex">
@@ -120,8 +126,14 @@
 						收款码:
 					</view>
 					<view class="bg-val">
+						<!-- #ifdef APP -->
+						<image v-if="!wxInfo.qr" src="../../static/img/add.png" mode="" @click="openAuth()(2)"></image>
+						<image v-else :src="wxInfo.qr" mode="" @click="openAuth(2)"></image>
+						<!-- #endif -->
+						<!-- #ifndef APP -->
 						<image v-if="!wxInfo.qr" src="../../static/img/add.png" mode="" @click="upimg(2)"></image>
 						<image v-else :src="wxInfo.qr" mode="" @click="upimg(2)"></image>
+						<!-- #endif -->
 					</view>
 				</view>
 				<view class="bd-wrap flex">
@@ -148,10 +160,12 @@
 		<view class="btm-btn" @click="bank">
 			{{current == 0? '保存银行卡信息': (current == 1? '保存支付宝信息': '保存微信信息')}}
 		</view>
+		<yk-authpup ref="WRITE_EXTERNAL_STORAGE" type="top" @changeAuth="changeAuth"
+		    permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>
 	</view>
 </template>
 <script>
-	import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
+	import ykAuthpup from "@/components/yk-authpup/yk-authpup";
 	import { register, verify } from '@/api/login.js';
 	import {
 		enroll
@@ -172,7 +186,7 @@
 	import { upload } from '@/api/order.js';
 	export default {
 		components: {
-			pickerAddress
+			ykAuthpup
 		},
 		data() {
 			return {
@@ -271,6 +285,13 @@
 						});
 				}
 			},
+			openAuth(type) {
+				this.typename = type
+				this.$refs['WRITE_EXTERNAL_STORAGE'].open()
+			},
+			changeAuth() {
+				this.upimg(this.typename)
+			},
 			upimg(type) {
 				let that = this
 				upload({

+ 18 - 0
pages/zero/pay.vue

@@ -69,24 +69,36 @@
 		<view class="upload">
 			<view class="upload-title">上传支付截图</view>
 			<view class="upload-main">
+				<!-- #ifdef APP -->
+				<image v-if="!pz" class="upload-image" src="../../static/img/add.png" mode="" @click="openAuth"></image>
+				<image v-else :src="pz" mode="" class="upload-image" @click="openAuth"></image>
+				<!-- #endif -->
+				<!-- #ifndef APP -->
 				<image v-if="!pz" class="upload-image" src="../../static/img/add.png" mode="" @click="upimg"></image>
 				<image v-else :src="pz" mode="" class="upload-image" @click="upimg"></image>
+				<!-- #endif -->
 				<view class="upload-font">点击上传支付截图</view>
 			</view>
 		</view>
 		<view class="bottom flex">
 			<view class="btn" @click="goUp()">立即上传</view>
 		</view>
+		<yk-authpup ref="WRITE_EXTERNAL_STORAGE" type="top" @changeAuth="changeAuth"
+		    permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>
 	</view>
 </template>
 
 <script>
+	import ykAuthpup from "@/components/yk-authpup/yk-authpup";
 	import { upload } from '@/api/order.js';
 	import {
 		getCardInfo,
 		upEvaluation
 	} from '@/api/zero.js'
 	export default {
+		components: {
+			ykAuthpup
+		},
 		data() {
 			return {
 				tabCurrentIndex: 1,
@@ -136,6 +148,12 @@
 					this.pzing = false
 				})
 			},
+			openAuth() {
+				this.$refs['WRITE_EXTERNAL_STORAGE'].open()
+			},
+			changeAuth() {
+				this.upimg()
+			},
 			upimg() {
 				upload({
 					file: ''

+ 1 - 0
utils/newRequest.js

@@ -117,6 +117,7 @@ let service = {
 				choose(num) {
 					return new Promise((resolve, reject) => {
 						uni.chooseImage({
+							sourceType: ['album'],
 							count: num,
 							success(res) {
 								// console.log(res);