ZZ 2 ماه پیش
والد
کامیت
ec92d700b8

+ 23 - 0
mer_uniapp/api/merchant.js

@@ -176,3 +176,26 @@ export function getMerAddressApi(id) {
 export function getMerDiyInfoApi(merId,id) {
   return request.get(`merchant/page/diy/info/${merId}/${id}`, {}, {noAuth:true});
 }
+
+
+/**
+ * 商家页面-点菜分类
+ */
+export function getCategoryCacheTree(merId) {
+  return request.get(`merchant/product/category/cache/tree/${merId} `, {}, {noAuth:true});
+}
+
+/**
+ * 商家页面-商家信息
+ */
+export function getMerchantInfo(id) {
+  return request.get(`merchant/index/info/${id}`, {}, {noAuth:true});
+}
+
+/**
+ * 商家页面-商品分页列表
+ */
+export function getMerchantProList(cid, merId, page, limit) {
+  return request.get(`product/merchant/pro/list?cids=${cid}&merId=${merId}&page=${page}&limit=${limit}`, {}, {noAuth:true});
+}
+

+ 1372 - 0
mer_uniapp/pages/goods/order_confirm/index-bak.vue

@@ -0,0 +1,1372 @@
+<template>
+	<view :data-theme="theme">
+		<!-- #ifndef APP-PLUS -->
+		<view class='cart_nav'>
+			<nav-bar :navTitle='navTitle' iconColor='#fff' :isBackgroundColor="true" ref="navBarRef"></nav-bar>
+		</view>
+
+		<!-- #endif -->
+		<view class='order-submission' @touchstart="touchStart">
+			<!-- 拼团切换样式 -->
+			<view class="allAddress"
+				v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type==2">
+				<view class="h-96 relative"
+					v-if="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length==2">
+					<view class="w-full abs-lb rd-t-24rpx flex bg--w111-fff">
+						<view class="flex-center w-50p h-76 fs-28 rd-lt-24rpx z-2"
+							:class="shippingType == 1 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
+							@tap="addressType(1)">商家配送</view>
+						<view class="flex-center w-50p h-76 fs-28 rd-rt-24rpx z-2"
+							:class="shippingType == 2 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
+							@tap="addressType(2)">到店自提</view>
+					</view>
+					<view class="w-50p rd-t-24rpx bg--w111-fff h-96" :class="shippingType == 1 ? 'abs-lt' : 'abs-rt'">
+						<view class="w-full h-full relative active-card"></view>
+					</view>
+				</view>
+				<view class='address   group acea-row row-between-wrapper' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':''  "   @tap='onAddress'
+					v-if='shippingType == 1'>
+					<view class='addressCon' v-if="addressInfo.realName">
+						<view class='name acea-row'>
+							<view class="line1 select-name">{{addressInfo.realName}}</view>
+							<view class='phone'>{{addressInfo.phone}}</view>
+						</view>
+						<view class="acea-row">
+							<view class="line1"><text class='default  font_color' v-if="addressInfo.isDefault">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</view>
+						</view>
+					</view>
+					<view class='addressCon' v-else>
+						<view class='setaddress'>设置收货地址</view>
+					</view>
+					<view class='iconfont icon-jiantou mt30'></view>
+				</view>
+				<view class='address group acea-row row-between-wrapper' v-if='shippingType == 2' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':''  ">
+					<view class='addressCon' v-for="(item, index) in merchantOrderVoList" :key="index"
+						@click="goMap(item)">
+						<view class='name acea-row'>
+							<view class="line1 select-name">{{item.merName}}</view>
+							<view class='phone'>{{item.phone}}</view>
+						</view>
+						<view class="acea-row">
+							<view class="line1">{{item.addressDetail}}</view>
+						</view>
+					</view>
+					<view class='iconfont icon-jiantou mt30'></view>
+				</view>
+				<view class='line'>
+					<image src='../static/images/line.png'></image>
+				</view>
+			</view>
+			<view v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type!=2"
+				class="allAddress">
+				<view class='address acea-row row-between-wrapper' @tap='onAddress'>
+					<view class='addressCon' v-if="addressInfo.realName">
+						<view class='name'>{{addressInfo.realName}}
+							<text class='phone'>{{addressInfo.phone}}</text>
+						</view>
+						<view class="acea-row line2">
+							<text class='default font_color' v-if="addressInfo.isDefault">[默认]</text>
+							<text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</text>
+						</view>
+					</view>
+					<view class='addressCon' v-else>
+						<view class='setaddress'>设置收货地址</view>
+					</view>
+					<view class='iconfont icon-jiantou'></view>
+				</view>
+				<view class='line'>
+					<image src='../static/images/line.png'></image>
+				</view>
+			</view>
+			<view class="borderPad">
+				<view v-for="(item, index) in merchantOrderVoList" :key="index" class='wrapper borRadius14'>
+					<orderGoods :cartInfo="item.orderInfoList" :orderInfo="item" :secondType="secondType"
+						:orderProNum="orderProNum" :isShowBtn="false">
+					</orderGoods>
+					<view v-show="Number(orderInfoVo.secondType)===0&&orderInfoVo.type!=2" class="boxs">
+						<view class='item acea-row row-between-wrapper'>
+							<view>配送方式</view>
+							<view v-if="item.deliveryMethodMer.length===3 && item.takeTheirSwitch"
+								class='discount acea-row row-middle'>
+								<text
+									@tap="openShowBox(item,index)">{{item.shippingType === 1 ? '商家配送' : '到店自提'}}</text>
+
+								<text @tap="openShowBox(item,index)" class='iconfont icon-jiantou'></text>
+							</view>
+							<view v-else class='discount'>
+								{{item.shippingType === 1 ? '商家配送' : '到店自提'}}
+							</view>
+						</view>
+						<view v-if="item.shippingType == 2 && item.takeTheirSwitch" class="store-address acea-row">
+							<view>
+								<view class="name phone">{{item.phone}}</view>
+								<view class="name w-480px">{{item.addressDetail}}</view>
+							</view>
+							<view class="map" @click="goMap(item)">
+								<text class="iconfont icon-chakanditu"></text>
+								<view class="map_text">查看地图</view>
+							</view>
+						</view>
+					</view>
+					<view v-show="item.shippingType === 1 && Number(orderInfoVo.secondType)===0"
+						class='item acea-row row-between-wrapper'>
+						<view>快递费用</view>
+						<view v-if='!item.freightFee || item.freightFee == 0' class="noCoupon">免运费</view>
+						<view v-else class='money'>¥{{item.freightFee}}</view>
+					</view>
+					<view v-show="item.svipDiscountPrice != 0&&orderInfoVo.type!=2"
+						class='item acea-row row-between-wrapper'>
+						<view>会员优惠</view>
+						<view class='money'>-¥{{item.svipDiscountPrice}}</view>
+					</view>
+					<view v-if="isProductType" class='item acea-row row-between-wrapper'>
+						<view>店铺优惠</view>
+						<view v-if="item.merCouponUserList && item.merCouponUserList.length"
+							@tap='couponTap(item.merCouponUserList,item.merId, index)'>
+							<view class='discount acea-row row-between-wrapper'>
+								<text
+									class="couponTitle line1">{{item.couponFee==0?`有${item.merCouponUserList.length}张优惠券可选`:`-¥${item.couponFee}`}}</text>
+								<text class='iconfont icon-jiantou'></text>
+							</view>
+						</view>
+						<view v-else class="noCoupon">暂无优惠券</view>
+					</view>
+					<view class='item acea-row row-between-wrapper' v-if="textareaStatus" style="height: auto;">
+						<view>买家留言</view>
+						<input placeholder-class='placeholder' value="" name="mark" placeholder='选填买家留言'
+							v-model="item.remark" @input='bindHideKeyboard(item.remark,index)'
+							style="width: 484rpx;text-align: right;"></input>
+					</view>
+				</view>
+				<!--商品关联系统表单-->
+				<view v-if="orderInfoVo.systemFormValue && orderInfoVo.systemFormValue.length"
+					class='wrapper borRadius14'>
+					<systemFrom v-model="orderInfoVo.systemFormValue"></systemFrom>
+					<!--					<systemFrom :orderForm="orderInfoVo.systemFormValue" ></systemFrom>-->
+				</view>
+				<view class='moneyList borRadius14'>
+					<view v-show="secondType !== ProductTypeEnum.Integral" class='item acea-row row-between-wrapper'>
+						<view>商品总价</view>
+						<view class='money'>¥{{orderInfoVo.proTotalFee || 0}}</view>
+					</view>
+					<view class='item acea-row row-between-wrapper' v-if="parseInt(orderInfoVo.freightFee) > 0">
+						<view>运费:</view>
+						<view class='money'>+¥{{orderInfoVo.freightFee}}</view>
+					</view>
+					<view v-show="orderInfoVo.svipDiscountPrice != 0 &&orderInfoVo.type!=2"
+						class='item acea-row row-between-wrapper'>
+						<view>会员优惠</view>
+						<view class='money'>-¥{{orderInfoVo.svipDiscountPrice}}</view>
+					</view>
+					<view class='item acea-row row-between-wrapper' v-if="parseInt(merCouponFee) > 0 && isProductType">
+						<view>店铺优惠</view>
+						<view class='money'>-¥{{merCouponFee}}</view>
+					</view>
+					<view v-if="isProductType" class='item acea-row row-between-wrapper'>
+						<view>平台优惠</view>
+						<view v-if="orderInfoVo.platCouponUserList && orderInfoVo.platCouponUserList.length"
+							class='discount acea-row row-between-wrapper'
+							@tap='couponTap(orderInfoVo.platCouponUserList,0)'>
+							<text
+								class="couponTitle line1">{{platCouponFee==0?`有${orderInfoVo.platCouponUserList.length}张优惠券可选`:`-¥${platCouponFee}`}}</text>
+							<text class='iconfont icon-jiantou'></text>
+						</view>
+						<view v-else class="noCoupon">暂无优惠券</view>
+					</view>
+					<view class='item acea-row row-between-wrapper'
+						v-if="orderInfoVo.integralDeductionSwitch && isProductType">
+						<view>积分抵扣</view>
+						<view class='discount acea-row row-middle'>
+							<view class="mr14"> {{isUseIntegral ? "使用积分":"当前积分"}}
+								<text
+									class='num font_color'>{{ isUseIntegral ? orderInfoVo.surplusIntegral : orderInfoVo.userIntegral}}</text>
+							</view>
+							<checkbox-group @change="ChangeIntegral">
+								<checkbox :checked='isUseIntegral ? true : false'
+									:disabled="orderInfoVo.userIntegral==0 && !isUseIntegral" />
+							</checkbox-group>
+						</view>
+					</view>
+
+					<view class='item acea-row row-between-wrapper' v-if="Number(orderInfoVo.deductionPrice) > 0">
+						<view>抵扣金额</view>
+						<view class='money'>-¥{{orderInfoVo.deductionPrice}}</view>
+					</view>
+
+				</view>
+				<view style='height:120rpx;'></view>
+			</view>
+			<view class='footer acea-row row-between-wrapper'>
+				<view class="acea-row row-middle">合计:
+					<!-- 积分价格 -->
+					<PointsPrice v-if="orderInfoVo.secondType === ProductTypeEnum.Integral" :pointsPrice="orderInfoVo"
+						:pointsGoodsStyle="hotPointsStyle"></PointsPrice>
+					<!-- 其他价格 -->
+					<text v-else class='price_color'>¥{{orderInfoVo.payFee || 0}}</text>
+				</view>
+				<view class='settlement' style='z-index:100' @tap="SubOrder">
+					{{secondType === ProductTypeEnum.Integral?"确认兑换":"立即下单"}}
+				</view>
+			</view>
+		</view>
+		<couponListWindow :coupon='coupon' @ChangCouponsClone="ChangCouponsClone" :openType='openType'
+			@ChangCoupons="ChangCoupons" :orderShow="orderShow" :surplusFee="surplusFee"></couponListWindow>
+
+		<view v-if="isShowBox">
+			<checkDelivery :isShowBox="isShowBox" :activeObj="activeObj" @close="boxClose"
+				@confirmBtn="getShippingType">
+			</checkDelivery>
+		</view>
+		<!-- 满员提示 -->
+		<uni-popup ref="sh_popup" background-color="#fff" borderRadius="10px">
+			<view class="sh_popup-content">
+				<view class="sh_popup_title">
+					提示
+				</view>
+				<view class="sh_popup_text">
+					该团已拼成,是否自行开团?
+				</view>
+				<view class="sh_popup_btn">
+					<view class="no_btn btn font_color" @click="popupClose">返回首页</view>
+					<view class="yes_btn btn" @click="toAudit">去开团</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import {
+		getCouponsOrderPrice,
+		orderCreate,
+		postOrderComputed,
+		loadPreOrderApi
+	} from '@/api/order.js';
+	import {
+		getAddressDetail,
+		getAddressDefault
+	} from '@/api/user.js';
+	// import {
+	// 	openPaySubscribe
+	// } from '@/utils/SubscribeMessage.js';
+	import {
+		takeTheirApi
+	} from '@/api/merchant.js';
+	import {
+		CACHE_LONGITUDE,
+		CACHE_LATITUDE
+	} from '@/config/cache.js';
+	import dayjs from "@/plugin/dayjs/dayjs.min.js";
+	import couponListWindow from '../components/couponListWindow';
+	import orderGoods from '../components/orderGoods'
+	import navBar from '@/components/navBar';
+	import checkDelivery from '../components/checkDelivery/index.vue';
+	import systemFrom from '../components/systemFrom/index.vue';
+	import PointsPrice from '@/components/PointsPrice.vue';
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		mapGetters
+	} from "vuex";
+	import {
+		Debounce
+	} from '@/utils/validate.js'
+	import {
+		ProductTypeEnum,
+		ProductMarketingTypeEnum
+	} from "../../../enums/productEnums";
+	import orderPay from "@/mixins/OrderPay.js";
+	let app = getApp();
+	/**
+	 * 积分商品推荐样式
+	 */
+	const hotPointsStyle = {
+		iconStyle: {
+			width: '28rpx',
+			height: '28rpx'
+		},
+		priceStyle: {
+			fontSize: '28rpx',
+		},
+		unitStyle: {
+			fontSize: '26rpx',
+		},
+	}
+	export default {
+		mixins: [orderPay],
+		components: {
+			navBar,
+			couponListWindow,
+			orderGoods,
+			checkDelivery,
+			systemFrom,
+			PointsPrice
+		},
+		computed: {
+			// 是否可以使用优惠券、积分抵扣。 基础订单/云盘订单,卡密,虚拟,可以使用优惠券、积分抵扣
+			isProductType() {
+				return this.type === ProductMarketingTypeEnum.Normal && this.secondType !== this.ProductTypeEnum
+					.Integral && this.secondType !== this.ProductTypeEnum.Video
+			},
+			...mapGetters(['productType', 'isLogin'])
+		},
+		data() {
+			return {
+				hotPointsStyle: hotPointsStyle,
+				ProductMarketingTypeEnum: ProductMarketingTypeEnum,
+				ProductTypeEnum: ProductTypeEnum,
+				navTitle: '提交订单',
+				homeTop: 20,
+				orderShow: 'orderShow', //下单页面使用优惠券组件不展示tab切换页
+				textareaStatus: true,
+				openType: 1, //优惠券打开方式 1=使用
+				couponShow: false,
+				coupon: {
+					coupon: false,
+					list: [], //商户优惠券
+					statusTile: '立即使用',
+					couponMoney: 0
+				}, //优惠券组件
+				addressInfo: {}, //地址信息
+				addressId: 0, //地址id
+				orderMerchantRequestList: [], //商户属性集合
+				cartId: '', //购物车id
+				userInfo: {}, //用户信息
+				mark: '', //买家留言
+				couponFee: '请选择', //优惠券
+				coupon_price: 0, //优惠券抵扣金额
+				isUseIntegral: false, //是否使用积分
+				integral_price: 0, //积分抵扣金额
+				integral: 0,
+				ChangePrice: 0, //使用积分抵扣变动后的金额
+				formIds: [], //收集formid
+				status: 0,
+				is_address: false,
+				toPay: false, //修复进入支付时页面隐藏从新刷新页面
+				shippingType: 1,
+				storePostage: 0,
+				contacts: '',
+				contactsTel: '',
+				mydata: {},
+				merchantOrderVoList: [],
+				priceGroup: {},
+				animated: false,
+				totalPrice: 0,
+				integralRatio: "0",
+				orderKey: "",
+				// usableCoupon: {},
+				offlinePostage: "",
+				news: true,
+				again: false,
+				addAgain: false,
+				bargain: false, //是否是砍价
+				combination: false, //是否是拼团
+				secKill: false, //是否是秒杀
+				orderInfoVo: {},
+				addressList: [], //地址列表数据
+				orderProNum: 0,
+				orderNo: '', //预下单订单号
+				theme: app.globalData.theme,
+				addressChangeId: 0,
+				isShowBox: false,
+				activeObj: {},
+				activeIndex: 0, // 选中店铺索引
+				type: 0, // 0-基础订单,1-秒杀订单,2-拼团订单
+				secondType: 0, //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
+				merId: 0, //商户id,用于判断商户优惠券还是平台优惠券,平台优惠券商户id为0
+				platUserCouponObj: {}, //平台优惠券对象,用于缓存数据使用
+				platUserCouponId: 0, //平台优惠券id
+				platCouponFee: '', //平台优惠券金额
+				merCouponFee: '', //店铺优惠券总金额
+				surplusFee: 0, //商品总金额-商户优惠券金额=平台端可使用优惠券的门槛
+				merUserCouponId: 0, //店铺使用优惠券的id
+				tempCouponObj: {}, //临时优惠券数据
+				merchangtInfo: {}, //商户信息
+				orderForm: [], //系统表单配置的数据
+				orderExtend: {}, //提交接口表单的数据
+				productId:'',
+				groupActivityId:''
+			};
+		},
+		watch: {
+			isLogin: {
+				handler: function(newV, oldV) {
+					if (newV) {
+						this.getloadPreOrder();
+					}
+				},
+				deep: true
+			},
+		},
+		onLoad(options) {
+			this.orderNo = options.orderNo || 0;
+			this.addressChangeId = parseInt(options.addressId) || 0;
+			this.is_address = options.is_address ? true : false;
+			if (this.isLogin) {
+				this.getloadPreOrder();
+			} else {
+				toLogin();
+			}
+		},
+		/**
+		 * 生命周期函数--监听页面显示
+		 */
+		onShow: function() {
+			let _this = this
+			this.textareaStatus = true;
+		},
+		methods: {
+      //滚动
+      touchStart() {
+        this.$refs.navBarRef.currentPage = false;
+      },
+			popupClose() {
+				this.$refs.sh_popup.close()
+				uni.switchTab({
+					url: '/pages/index/index'
+				});
+			},
+			//去开团
+			toAudit() {
+				this.$refs.sh_popup.close()
+				uni.navigateTo({
+					url:`/pages/goods/goods_details/index?id=${this.productId}&mt=2&gd=${this.groupActivityId}`
+				})
+			},
+			addressType(type) {
+				this.merchantOrderVoList[0].shippingType = type
+				this.getShippingType(this.merchantOrderVoList[0])
+				if(type==2){
+					setTimeout(()=>{
+						this.shippingType = type
+					},300)
+				}else{
+					this.shippingType = type
+				}
+			},
+			//选择配送方式回调 
+			getShippingType(item) {
+				this.orderMerchantRequestList[this.activeIndex].shippingType = item.shippingType;
+				this.$set(this.merchantOrderVoList[this.activeIndex], 'shippingType', item.shippingType);
+				if (item.shippingType === 2) this.getTakeTheir(item.merId);
+				this.computedPrice();
+				this.isShowBox = false;
+			},
+			getTakeTheir(id) {
+				takeTheirApi(id).then(res => {
+					this.merchangtInfo = res.data; //商户信息
+					this.$set(this.merchantOrderVoList[this.activeIndex], 'addressDetail', res.data.addressDetail);
+					this.$set(this.merchantOrderVoList[this.activeIndex], 'phone', res.data.phone);
+					this.$set(this.merchantOrderVoList[this.activeIndex], 'latitude', res.data.latitude);
+					this.$set(this.merchantOrderVoList[this.activeIndex], 'longitude', res.data.longitude);
+				}).catch(err => {
+					return this.$util.Tips({
+						title: err
+					});
+				})
+			},
+			//查看内置地图
+			goMap(item) {
+				let that = this;
+				//#ifdef H5
+				if (that.$wechat.isWeixin() === true) {
+					that.$wechat.seeLocation({
+						latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
+						longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
+						name: item.merName,
+						address: item.addressDetail ? item.addressDetail : '',
+					}).then(res => {
+						console.log('success');
+					})
+				} else {
+					//#endif
+					uni.openLocation({
+						latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
+						longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
+						scale: 8,
+						name: item.merName,
+						address: item.addressDetail ? item.addressDetail : '',
+						success: function(res) {
+							that.go_map = true
+						},
+					});
+					// #ifdef H5
+				}
+				//#endif
+			},
+			// 打开配送方式弹窗
+			openShowBox(item, index) {
+				this.activeObj = item
+				this.activeIndex = index
+				this.isShowBox = true
+			},
+			boxClose() {
+				this.isShowBox = false
+			},
+			// 订单详情
+			getloadPreOrder: function() {
+				loadPreOrderApi(this.orderNo).then(res => {
+					let orderInfoVo = res.data;
+					if(orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId){
+						this.groupActivityId=orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId
+						this.productId=orderInfoVo.merchantInfoList[0].orderInfoList[0].productId
+					}
+					if (orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1) {
+						this.shippingType = orderInfoVo.merchantInfoList[0].deliveryMethodMer
+					}
+					this.orderInfoVo = {
+						...orderInfoVo,
+						systemFormValue: orderInfoVo.systemFormValue ? this.$util.objToArr(JSON.parse(
+							orderInfoVo.systemFormValue)) : []
+					};
+
+					this.merchantOrderVoList = orderInfoVo.merchantInfoList; //商户端数据
+					this.platCouponFee = orderInfoVo.platCouponFee; //平台优惠券总金额
+					this.platUserCouponId = orderInfoVo.platUserCouponId;
+					this.merCouponFee = orderInfoVo.merCouponFee; //店铺优惠券总金额
+					orderInfoVo.merchantInfoList.map(item => {
+						this.orderMerchantRequestList.push({
+							shippingType: item.shippingType,
+							merId: item.merId,
+							remark: '',
+							userCouponId: item.userCouponId
+						})
+						if (item.shippingType === 2) this.getTakeTheir(item.merId)
+						item.addressDetail = this.merchangtInfo.addressDetail;
+						item.phone = this.merchangtInfo.phone;
+						item.latitude = this.merchangtInfo.latitude;
+						item.longitude = this.merchangtInfo.longitude;
+					});
+					this.type = orderInfoVo.type; //订单类型
+					this.secondType = orderInfoVo
+						.secondType; //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
+					this.orderProNum = orderInfoVo.orderProNum;
+					if (orderInfoVo.addressId && this.addressChangeId === 0) {
+						this.addressId = orderInfoVo.addressId;
+					} else {
+						this.addressId = this.addressChangeId;
+						if (orderInfoVo.addressId != this.addressChangeId && this.addressChangeId > 0)
+							this.computedPrice();
+					}
+					this.getaddressInfo();
+				}).catch(err => {
+					uni.navigateTo({
+						url: '/pages/goods/order_list/index'
+					});
+				})
+			},
+			// 计算订单价格
+			computedPrice: function() {
+				uni.showLoading({
+					title: '加载中...'
+				});
+				let shippingType = this.shippingType;
+				postOrderComputed({
+					addressId: this.addressId,
+					isUseIntegral: this.isUseIntegral,
+					orderMerchantRequestList: this.orderMerchantRequestList,
+					preOrderNo: this.orderNo,
+					platUserCouponId: this.platUserCouponId
+				}).then(res => {
+					let data = res.data;
+					//usedIntegral 使用的积分,surplusIntegral 剩余积分
+					data.merOrderResponseList.map((item, i) => {
+						this.merchantOrderVoList[i].freightFee = item.freightFee
+						this.merchantOrderVoList[i].couponFee = item.couponFee
+					});
+					this.orderInfoVo.platCouponUserList = data.platCouponUserList; //平台优惠券数据
+					this.merCouponFee = data.merCouponFee; //店铺优惠券总金额
+					this.orderInfoVo.couponFee = data.couponFee; //优惠券优惠金额
+					this.orderInfoVo.userIntegral = data.surplusIntegral; //使用的积分
+					this.orderInfoVo.deductionPrice = data.deductionPrice;
+					this.orderInfoVo.freightFee = data.freightFee;
+					this.orderInfoVo.payFee = data.payFee;
+					this.orderInfoVo.proTotalFee = data.proTotalFee;
+					this.orderInfoVo.surplusIntegral = data.usedIntegral; //剩余积分
+					this.platCouponFee = data.platCouponFee; //平台优惠金额
+					this.orderInfoVo.integralDeductionSwitch = data.integralDeductionSwitch //积分抵扣开关
+					//选中商户优惠券的值
+					this.merchantOrderVoList[this.activeIndex].merCouponUserList = data.merOrderResponseList[
+						this.activeIndex].merCouponUserList; //商户数据
+					this.merUserCouponId = data.merOrderResponseList[this.activeIndex]
+						.userCouponId //店铺使用优惠券的id
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					return this.$util.Tips({
+						title: err
+					});
+				});
+			},
+			bindPickerChange: function(e) {
+				let value = e.detail.value;
+				this.shippingType = value;
+				this.computedPrice();
+			},
+			/**
+			 * 使用积分抵扣
+			 */
+			ChangeIntegral: function() {
+				this.isUseIntegral = !this.isUseIntegral;
+				this.computedPrice();
+			},
+			bindHideKeyboard: function(e, i) {
+				this.orderMerchantRequestList[i].remark = e;
+			},
+			/*
+			 * 获取默认收货地址或者获取某条地址信息
+			 */
+			getaddressInfo: function() {
+				if (this.addressId) {
+					getAddressDetail(this.addressId).then(res => {
+						if (res.data) {
+							res.data.isDefault = res.data.isDefault;
+							this.addressInfo = res.data || {};
+						}
+					})
+				}
+			},
+
+			//关闭优惠券弹窗
+			ChangCouponsClone: function(coupon) {
+				this.coupon.list = [];
+				this.coupon.coupon = false;
+			},
+			//点击优惠券弹窗确定后
+			ChangCoupons: function(item) {
+				this.coupon.list = [];
+				if (item.merId === 0) {
+					this.platUserCouponId = item.isChecked ? item.id : 0;
+				} else {
+					this.$set(this.orderMerchantRequestList[this.activeIndex], 'userCouponId', item.isChecked ? item
+						.id : 0);
+
+				}
+				this.coupon.coupon = false;
+				this.computedPrice();
+			},
+			/**
+			 * 选择优惠券
+			 * @param {Object} item优惠券对象
+			 * @param {Number} merId商户id
+			 * @param {Number} index索引
+			 */
+			couponTap: function(item, merId, index) {
+				this.$set(this.coupon, 'list', item);
+				this.$set(this.coupon, 'couponMoney', item);
+				this.coupon.coupon = true;
+				this.merId = merId; //商户id
+				if (merId !== 0) this.activeIndex = index;
+				this.coupon.loading = false;
+			},
+			/**
+			 * 获取当前金额可用优惠券
+			 *
+			 */
+			getCouponList: function(item, merId) {
+				this.$set(this.coupon, 'list', item);
+				this.openType = 1;
+				uni.hideLoading();
+			},
+			onAddress: function() {
+				uni.navigateTo({
+					url: '/pages/address/user_address_list/index?orderNo=' + this.orderNo
+				});
+			},
+			realName: function(e) {
+				this.contacts = e.detail.value;
+			},
+			phone: function(e) {
+				this.contactsTel = e.detail.value;
+			},
+			payment: function(data) {
+				let that = this;
+				// #ifdef MP
+				uni.checkBeforeAddOrder({
+					success(res) {
+						console.log("下单前置检查 成功:", JSON.stringify(res));
+						const traceId = res.data.traceId;
+						data.traceId = traceId;
+						that.onCreate(data);
+					},
+					fail(res) {
+						console.log("下单前置检查 失败:", JSON.stringify(res));
+					}
+				});
+				// #endif
+				// #ifndef MP
+				that.onCreate(data);
+				// #endif
+			},
+			onCreate(data) {
+				orderCreate(data).then(res => {
+					if(res.data.groupBuyIsFull==1){
+						uni.hideLoading();
+						return this.$refs.sh_popup.open('center')
+					}
+					if (this.secondType === this.ProductTypeEnum.Integral && this.orderInfoVo.payFee == 0) {
+						// 积分商品并且支付金额为0时,直接默认走余额支付的逻辑,订单支付成功跳转到支付结果页
+						this.changeOrderPay(res.data.orderNo, 'yue', 'yue', 'integral', 'integral', '0')
+					} else {
+						// 其他商品走正常流程,去支付收银台页面
+						this.getToPayment(this.secondType, res.data)
+					}
+
+					uni.hideLoading();
+				}).catch(err=>{
+					uni.hideLoading();
+					return this.$util.Tips({
+						title: err
+					});
+				});
+			},
+			//立即下单
+			SubOrder: Debounce(function(e) {
+				let that = this,
+					data = {};
+				let flag = false;
+				that.orderMerchantRequestList.map(function(v) {
+					if (v.shippingType === 1 && !that.addressId && that.orderInfoVo.secondType !== 2) {
+						flag = true;
+					}
+				});
+				if (flag) {
+					that.$util.Tips({
+						title: '请选择收货地址'
+					});
+					return;
+				}
+
+				let systemFormValue = Array.from(this.orderInfoVo.systemFormValue)
+				let systemFormData = []
+				for (var i = 0; i < systemFormValue.length; i++) {
+					let curdata = systemFormValue[i]
+					if (['radios'].indexOf(curdata.name) == -1 && (curdata.titleShow.val || (['uploadPicture',
+							'dateranges'
+						].indexOf(curdata.name) == -1 && curdata.value && curdata.value.trim()))) {
+						if ((curdata.name === 'texts' && curdata.valConfig.tabVal == 0) || ['dates', 'times',
+								'selects', 'citys', 'checkboxs'
+							].indexOf(curdata.name) != -1) {
+							if (!curdata.value || (curdata.value && !curdata.value.trim())) {
+								return that.$util.Tips({
+									title: `请填写${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'timeranges') {
+							if (!curdata.value) {
+								return that.$util.Tips({
+									title: `请选择${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'dateranges') {
+							if (!curdata.value.length) {
+								return that.$util.Tips({
+									title: `请选择${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 4) {
+							if (curdata.value <= 0) {
+								return that.$util.Tips({
+									title: `请填写大于0的${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 3) {
+							if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(curdata.value)) {
+								return that.$util.Tips({
+									title: `请填写正确的${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 1) {
+							if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(curdata.value)) {
+								return that.$util.Tips({
+									title: `请填写正确的${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 2) {
+							if (!
+								/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i
+								.test(curdata.value)) {
+								return that.$util.Tips({
+									title: `请填写正确的${curdata.titleConfig.val}`
+								});
+							}
+						}
+						if (curdata.name === 'uploadPicture') {
+							if (!curdata.value.length) {
+								return that.$util.Tips({
+									title: `请上传${curdata.titleConfig.val}`
+								});
+							}
+						}
+					}
+					this.orderExtend[curdata.key] = curdata.value
+					systemFormData.push({
+						title: curdata.titleConfig.val,
+						value: curdata.value,
+					})
+				}
+				data = {
+					addressId: that.addressId,
+					orderMerchantRequestList: that.orderMerchantRequestList,
+					isUseIntegral: that.isUseIntegral,
+					preOrderNo: that.orderNo,
+					platUserCouponId: this.platUserCouponId,
+					systemFormId: this.orderInfoVo.systemFormId,
+					orderExtend: JSON.stringify(systemFormData)
+
+				};
+				uni.showLoading({
+					title: '订单提交中'
+				});
+				that.payment(data);
+				//// #ifdef MP
+				// openPaySubscribe().then(() => {
+				// 	that.payment(data);
+				// });
+				// // #endif
+				// // #ifndef MP
+				// that.payment(data);
+				// // #endif
+			})
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.w-480px{
+		width: 480rpx;
+	}
+	.noCoupon {
+		color: #999999;
+
+	}
+
+	.icon-jiantou {
+		font-size: 26rpx;
+		color: #515151;
+		margin-left: 14rpx;
+	}
+
+	.mr14 {
+		margin-right: 14rpx;
+	}
+
+	.couponTitle {
+		width: 430rpx;
+		display: inline-block;
+		text-align: right;
+		@include main_color(theme);
+	}
+
+	.store-address {
+		padding: 20rpx;
+		margin: 0 24rpx;
+		background: #F6F6F6;
+		border-radius: 8rpx;
+		font-size: 24rpx;
+		/*垂直居中*/
+		-webkit-box-align: center;
+		/*旧版本*/
+		-moz-box-align: center;
+		/*旧版本*/
+		-ms-flex-align: center;
+		/*混合版本*/
+		-webkit-align-items: center;
+		/*新版本*/
+		align-items: center;
+
+		/*新版本*/
+		.phone {
+			margin-bottom: 10rpx;
+			color: #282828;
+			font-weight: bold;
+		}
+
+		.name {
+			padding-right: 20rpx;
+		}
+
+		.info {
+			flex: 1;
+		}
+
+		.line2 {
+			width: 456rpx !important;
+		}
+
+		.map {
+			text-align: center;
+			padding-left: 36rpx;
+			position: relative;
+			@include main_color(theme);
+
+			&::before {
+				content: '';
+				display: inline-block;
+				width: 2rpx;
+				height: 42rpx;
+				background-color: #DDDDDD;
+				position: absolute;
+				left: 0;
+				top: 18rpx;
+			}
+
+			.iconfont {
+				color: var(--view-theme);
+			}
+
+			.map_text {
+				color: var(--view-theme);
+			}
+		}
+	}
+
+	.font_color {
+		@include main_color(theme);
+	}
+
+	.price_color {
+		@include price_color(theme);
+	}
+
+	.line2 {
+		width: 624rpx;
+	}
+
+	.textR {
+		text-align: right;
+	}
+
+	.order-submission .line {
+		width: 100%;
+		height: 3rpx;
+	}
+
+	.order-submission .line image {
+		width: 100%;
+		height: 100%;
+		display: block;
+	}
+
+	.order-submission .address {
+		padding: 40rpx 24rpx;
+		background-color: #fff;
+		box-sizing: border-box;
+	}
+
+	.order-submission .address .addressCon {
+		width: 596rpx;
+		font-size: 26rpx;
+		color: #666;
+	}
+
+	.order-submission .address .addressCon .name {
+		font-size: 30rpx;
+		color: #282828;
+		font-weight: bold;
+		// margin-bottom: 10rpx;
+	}
+
+	.order-submission .address .addressCon .name .phone {
+		margin-left: 50rpx;
+	}
+
+	.order-submission .address .addressCon .default {
+		margin-right: 12rpx;
+	}
+
+	.order-submission .address .addressCon .setaddress {
+		color: #333;
+		font-size: 28rpx;
+	}
+
+	.order-submission .address .iconfont {
+		color: #707070;
+	}
+
+	.order-submission .allAddress {
+		width: 100%;
+		@include index-gradient(theme);
+		padding: 30rpx 24rpx 0 24rpx;
+	}
+
+	.order-submission .allAddress .address.group {
+		border-radius: 0;
+	}
+
+	.order-submission .allAddress .address {
+		max-height: 180rpx;
+		margin: -2rpx auto 0 auto;
+		border-radius: 14rpx 14rpx 0 0;
+	}
+
+	.order-submission .allAddress .line {
+		width: 100%;
+		margin: 0 auto;
+	}
+
+	.order-submission .wrapper .item .discount .placeholder {
+		color: #ccc;
+	}
+
+	.order-submission .wrapper {
+		background-color: #fff;
+		margin-top: 24rpx;
+	}
+
+	.order-submission .wrapper .item {
+		padding: 28rpx 24rpx;
+		font-size: 30rpx;
+		color: #333333;
+	}
+
+	.order-submission .wrapper .item .discount {
+		font-size: 30rpx;
+		color: #333;
+	}
+
+	.order-submission .wrapper .item .discount .iconfont {
+		color: #515151;
+	}
+
+	.order-submission .wrapper .item .discount .num {
+		font-size: 32rpx;
+		margin-right: 20rpx;
+	}
+
+	.order-submission .wrapper .item .shipping {
+		font-size: 30rpx;
+		color: #999;
+		position: relative;
+		padding-right: 58rpx;
+	}
+
+	.order-submission .wrapper .item .shipping .iconfont {
+		font-size: 35rpx;
+		color: #707070;
+		position: absolute;
+		right: 0;
+		top: 50%;
+		transform: translateY(-50%);
+		margin-left: 30rpx;
+	}
+
+	.order-submission .wrapper .item textarea {
+		background-color: #f9f9f9;
+		width: auto !important;
+		height: 140rpx;
+		border-radius: 14rpx;
+		margin-top: 30rpx;
+		padding: 15rpx;
+		box-sizing: border-box;
+		font-weight: 400;
+	}
+
+	.order-submission .wrapper .item .placeholder {
+		color: #ccc;
+	}
+
+	.order-submission .wrapper .item .list {
+		margin-top: 35rpx;
+	}
+
+	.order-submission .wrapper .item .list .payItem {
+		border: 1px solid #eee;
+		border-radius: 14rpx;
+		height: 86rpx;
+		width: 100%;
+		box-sizing: border-box;
+		margin-top: 20rpx;
+		font-size: 28rpx;
+		color: #282828;
+	}
+
+	.order-submission .wrapper .item .list .payItem.on {
+		// border-color: #fc5445;
+		@include coupons_border_color(theme);
+		color: $theme-color;
+	}
+
+	.order-submission .wrapper .item .list .payItem .name {
+		width: 50%;
+		text-align: center;
+		border-right: 1px solid #eee;
+	}
+
+	.order-submission .wrapper .item .list .payItem .name .iconfont {
+		width: 44rpx;
+		height: 44rpx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 44rpx;
+		background-color: #fe960f;
+		color: #fff;
+		font-size: 30rpx;
+		margin-right: 15rpx;
+	}
+
+	.order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
+		background-color: #41b035;
+	}
+
+	.order-submission .wrapper .item .list .payItem .name .iconfont.icon-zhifubao {
+		background-color: #00AAEA;
+	}
+
+	.order-submission .wrapper .item .list .payItem .tip {
+		width: 49%;
+		text-align: center;
+		font-size: 26rpx;
+		color: #aaa;
+	}
+
+	.order-submission .moneyList {
+		margin-top: 15rpx;
+		background-color: #fff;
+		padding: 0 30rpx;
+		margin-bottom: calc(constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
+		margin-bottom: calc(env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
+	}
+
+	.order-submission .moneyList .item {
+		font-size: 30rpx;
+		color: #282828;
+		height: 96rpx;
+	}
+
+	.order-submission .moneyList .item~.item {
+		// margin-top: 20rpx;
+	}
+
+	.order-submission .moneyList .item .money {
+		color: #666666;
+	}
+
+	.order-submission .footer {
+		width: 100%;
+		height: 100rpx;
+		background-color: #fff;
+		padding: 0 30rpx;
+		font-size: 28rpx;
+		color: #333;
+		box-sizing: border-box;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
+		height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
+		z-index: 999;
+	}
+
+	.order-submission .footer .settlement {
+		background-color: #fff;
+		font-size: 30rpx;
+		color: #fff;
+		width: 240rpx;
+		height: 70rpx;
+		@include main_bg_color(theme);
+		border-radius: 50rpx;
+		text-align: center;
+		line-height: 70rpx;
+	}
+
+	.footer .transparent {
+		opacity: 0
+	}
+
+	/deep/ checkbox .uni-checkbox-input.uni-checkbox-input-checked {
+		@include main_bg_color(theme);
+		border: none !important;
+		color: #fff !important
+	}
+
+	/deep/ checkbox .wx-checkbox-input.wx-checkbox-input-checked {
+		@include main_bg_color(theme);
+		border: none !important;
+		color: #fff !important;
+		margin-right: 0 !important;
+	}
+
+	// 切换
+	/deep/.uni-date-x--border {
+		border: 0;
+	}
+
+	/deep/.uni-icons {
+		font-size: 0 !important;
+	}
+
+	/deep/.uni-date-x {
+		color: #999;
+		font-size: 15px;
+	}
+
+	/deep/.uni-date__x-input {
+		font-size: 15px;
+	}
+
+	/deep/uni-checkbox[disabled] .uni-checkbox-input {
+		background-color: #eee;
+	}
+
+	.abs-lt .active-card {
+		&:after {
+			right: -67rpx;
+		}
+	}
+
+	.abs-rt .active-card {
+		&:after {
+			left: -67rpx;
+			-moz-transform: scaleX(-1);
+			-webkit-transform: scaleX(-1);
+			-o-transform: scaleX(-1);
+			transform: scaleX(-1);
+		}
+	}
+
+	.active-card {
+		&:after {
+			content: "";
+			width: 67rpx;
+			height: 76rpx;
+			background-image: url('../static/images/nav_circle_left.png');
+			background-size: contain;
+			background-repeat: no-repeat;
+			position: absolute;
+			bottom: 0;
+			z-index: 4;
+		}
+	}
+
+	.line {
+		width: 680rpx;
+		margin: auto;
+		height: 3rpx;
+	}
+
+	.line image {
+		width: 100%;
+		height: 100%;
+		display: block;
+	}
+
+	.address {
+		background-color: #fff;
+		box-sizing: border-box;
+	}
+
+	.footer .transparent {
+		opacity: 0
+	}
+
+	.w-322 {
+		width: 322rpx;
+	}
+
+	.w-450 {
+		width: 450rpx;
+	}
+
+	.w-50p {
+		width: 50%;
+	}
+
+	.h-auto {
+		height: auto;
+	}
+
+	.bd-r-14 {
+		border-radius: 14rpx 14rpx 0 0  !important;
+	}
+	.mt30{
+		margin-top: 30rpx;
+	}
+	.bg-primary-light {
+		@include main_rgba_color(theme);
+	}
+
+	.rd-lt-24rpx {
+		border-radius: 24rpx 0 0 0;
+	}
+
+	.rd-rt-24rpx {
+		border-radius: 0 24rpx 0 0;
+	}
+
+	.z-2 {
+		z-index: 2;
+	}
+
+	.gold {
+		color: #DCA658;
+	}
+
+	.select-name {
+		max-width: 300rpx;
+	}
+
+	.font-color {
+		font-weight: 500 !important;
+	}
+	/deep/ .uni-popup__wrapper {
+		background: #FFFFFF;
+		border-radius: 32rpx;
+	}
+	.sh_popup-content {
+		padding: 40rpx;
+		.sh_popup_title {
+			font-weight: 500;
+			font-size: 32rpx;
+			color: #333333;
+			text-align: center;
+		}
+	
+		.sh_popup_text {
+			font-weight: 400;
+			font-size: 30rpx;
+			color: #666666;
+			text-align: center;
+			margin-top: 36rpx;
+		}
+	
+		.sh_popup_btn {
+			display: flex;
+			margin-top: 60rpx;
+			justify-content: space-between;
+			.btn {
+				width: 244rpx;
+				height: 72rpx;
+				border-radius: 50rpx;
+				text-align: center;
+				line-height: 72rpx;
+			}
+	
+			.no_btn {
+				@include coupons_border_color(theme);
+				color: $theme-color;
+				margin-right: 32rpx;
+			}
+	
+			.yes_btn {
+				@include main_bg_color(theme);
+				color: #FFFFFF;
+			}
+		}
+	}
+</style>

+ 280 - 1263
mer_uniapp/pages/goods/order_confirm/index.vue

@@ -1,627 +1,179 @@
 <template>
-	<view :data-theme="theme">
-		<!-- #ifndef APP-PLUS -->
-		<view class='cart_nav'>
-			<nav-bar :navTitle='navTitle' iconColor='#fff' :isBackgroundColor="true" ref="navBarRef"></nav-bar>
+	<view class="container" :style="{ height: winHeight+ 'px' }">
+		<!-- 状态栏高度 -->
+		<view :style="{ height: `${statusBarHeight}px` }"></view>
+		<!-- 进行中/历史订单 -->
+		<view class="status-bar">
+			<view>
+				<text :class="isShow? 'status-true': 'status-false'" @click="statusClick">外卖配送</text>
+				<text :class="!isShow? 'status-true': 'status-false'" @click="statusClick">到店自取(15分钟后取餐)</text>
+			</view>
 		</view>
 
-		<!-- #endif -->
-		<view class='order-submission' @touchstart="touchStart">
-			<!-- 拼团切换样式 -->
-			<view class="allAddress"
-				v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type==2">
-				<view class="h-96 relative"
-					v-if="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length==2">
-					<view class="w-full abs-lb rd-t-24rpx flex bg--w111-fff">
-						<view class="flex-center w-50p h-76 fs-28 rd-lt-24rpx z-2"
-							:class="shippingType == 1 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
-							@tap="addressType(1)">商家配送</view>
-						<view class="flex-center w-50p h-76 fs-28 rd-rt-24rpx z-2"
-							:class="shippingType == 2 ? 'bg--w111-fff font_color' : 'bg-primary-light'"
-							@tap="addressType(2)">到店自提</view>
+		<view style="background-color: white;border-radius: 23rpx;margin-bottom: 10rpx;padding: 19rpx 38rpx 38rpx 38rpx">
+			<view class='address' @tap='onAddress'>
+				<view class='addressCon' v-if="addressInfo.realName">
+					<view class='name acea-row'>
+						<view class="line1 select-name">{{addressInfo.realName}}</view>
+						<view class='phone'>{{addressInfo.phone}}</view>
 					</view>
-					<view class="w-50p rd-t-24rpx bg--w111-fff h-96" :class="shippingType == 1 ? 'abs-lt' : 'abs-rt'">
-						<view class="w-full h-full relative active-card"></view>
+					<view class="acea-row">
+						<view class="line1"><text class='default  font_color' v-if="addressInfo.isDefault">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</view>
 					</view>
 				</view>
-				<view class='address   group acea-row row-between-wrapper' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':''  "   @tap='onAddress'
-					v-if='shippingType == 1'>
-					<view class='addressCon' v-if="addressInfo.realName">
-						<view class='name acea-row'>
-							<view class="line1 select-name">{{addressInfo.realName}}</view>
-							<view class='phone'>{{addressInfo.phone}}</view>
-						</view>
-						<view class="acea-row">
-							<view class="line1"><text class='default  font_color' v-if="addressInfo.isDefault">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</view>
-						</view>
-					</view>
-					<view class='addressCon' v-else>
-						<view class='setaddress'>设置收货地址</view>
-					</view>
-					<view class='iconfont icon-jiantou mt30'></view>
-				</view>
-				<view class='address group acea-row row-between-wrapper' v-if='shippingType == 2' :class="orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1?'bd-r-14':''  ">
-					<view class='addressCon' v-for="(item, index) in merchantOrderVoList" :key="index"
-						@click="goMap(item)">
-						<view class='name acea-row'>
-							<view class="line1 select-name">{{item.merName}}</view>
-							<view class='phone'>{{item.phone}}</view>
-						</view>
-						<view class="acea-row">
-							<view class="line1">{{item.addressDetail}}</view>
-						</view>
-					</view>
-					<view class='iconfont icon-jiantou mt30'></view>
-				</view>
-				<view class='line'>
-					<image src='../static/images/line.png'></image>
+				<view class='addressCon' v-else>
+					<view class='setaddress'>设置收货地址</view>
 				</view>
+				<view class='iconfont icon-jiantou ' style="font-size: 30rpx;"></view>
 			</view>
-			<view v-if="Number(orderInfoVo.secondType)<5 && Number(orderInfoVo.secondType)!==2&&orderInfoVo.type!=2"
-				class="allAddress">
-				<view class='address acea-row row-between-wrapper' @tap='onAddress'>
-					<view class='addressCon' v-if="addressInfo.realName">
-						<view class='name'>{{addressInfo.realName}}
-							<text class='phone'>{{addressInfo.phone}}</text>
-						</view>
-						<view class="acea-row line2">
-							<text class='default font_color' v-if="addressInfo.isDefault">[默认]</text>
-							<text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{ addressInfo.street}}{{addressInfo.detail}}</text>
-						</view>
-					</view>
-					<view class='addressCon' v-else>
-						<view class='setaddress'>设置收货地址</view>
-					</view>
-					<view class='iconfont icon-jiantou'></view>
-				</view>
-				<view class='line'>
-					<image src='../static/images/line.png'></image>
-				</view>
+			<view class="item-go" @tap="goIndex = true" :class="goIndex ? 'item-go-avt' : ''">
+				<text style="font-weight: 600;font-size: 27rpx;">立即配送</text>
+				<text style="font-weight: 500;font-size: 23rpx;margin-left: 76rpx">预计10:12送达</text>
+				<image class="go-img"></image>
 			</view>
-			<view class="borderPad">
-				<view v-for="(item, index) in merchantOrderVoList" :key="index" class='wrapper borRadius14'>
-					<orderGoods :cartInfo="item.orderInfoList" :orderInfo="item" :secondType="secondType"
-						:orderProNum="orderProNum" :isShowBtn="false">
-					</orderGoods>
-					<view v-show="Number(orderInfoVo.secondType)===0&&orderInfoVo.type!=2" class="boxs">
-						<view class='item acea-row row-between-wrapper'>
-							<view>配送方式</view>
-							<view v-if="item.deliveryMethodMer.length===3 && item.takeTheirSwitch"
-								class='discount acea-row row-middle'>
-								<text
-									@tap="openShowBox(item,index)">{{item.shippingType === 1 ? '商家配送' : '到店自提'}}</text>
+			<view style="margin-top: 10rpx;" class="item-go" @tap="goIndex = false" :class="!goIndex ? 'item-go-avt' : ''">
+				<text style="font-weight: 600;font-size: 27rpx;">预约配送</text>
+				<text style="font-weight: 500;font-size: 23rpx;margin-left: 76rpx">选择时间 》</text>
+				<image class="go-img"></image>
+			</view>
+		</view>
 
-								<text @tap="openShowBox(item,index)" class='iconfont icon-jiantou'></text>
-							</view>
-							<view v-else class='discount'>
-								{{item.shippingType === 1 ? '商家配送' : '到店自提'}}
-							</view>
-						</view>
-						<view v-if="item.shippingType == 2 && item.takeTheirSwitch" class="store-address acea-row">
-							<view>
-								<view class="name phone">{{item.phone}}</view>
-								<view class="name w-480px">{{item.addressDetail}}</view>
-							</view>
-							<view class="map" @click="goMap(item)">
-								<text class="iconfont icon-chakanditu"></text>
-								<view class="map_text">查看地图</view>
-							</view>
-						</view>
-					</view>
-					<view v-show="item.shippingType === 1 && Number(orderInfoVo.secondType)===0"
-						class='item acea-row row-between-wrapper'>
-						<view>快递费用</view>
-						<view v-if='!item.freightFee || item.freightFee == 0' class="noCoupon">免运费</view>
-						<view v-else class='money'>¥{{item.freightFee}}</view>
-					</view>
-					<view v-show="item.svipDiscountPrice != 0&&orderInfoVo.type!=2"
-						class='item acea-row row-between-wrapper'>
-						<view>会员优惠</view>
-						<view class='money'>-¥{{item.svipDiscountPrice}}</view>
-					</view>
-					<view v-if="isProductType" class='item acea-row row-between-wrapper'>
-						<view>店铺优惠</view>
-						<view v-if="item.merCouponUserList && item.merCouponUserList.length"
-							@tap='couponTap(item.merCouponUserList,item.merId, index)'>
-							<view class='discount acea-row row-between-wrapper'>
-								<text
-									class="couponTitle line1">{{item.couponFee==0?`有${item.merCouponUserList.length}张优惠券可选`:`-¥${item.couponFee}`}}</text>
-								<text class='iconfont icon-jiantou'></text>
-							</view>
+		<view class="item-goods">
+			<text>吉啊婆麻辣烫</text>
+			<view class="good" v-for="(good, key) in goods_list" :key="key">
+				<image :src="good.images" class="image" @tap="console.log('点击图片')"></image>
+				<view class="right">
+					<text class="name">{{ good.name }}</text>
+					<text class="tips">{{ good.content }}</text>
+					<view class="price_and_action">
+						<text class="price">¥{{ good.price }}</text>
+						<view class="btn-group">
+							<view class="dot"></view>
 						</view>
-						<view v-else class="noCoupon">暂无优惠券</view>
-					</view>
-					<view class='item acea-row row-between-wrapper' v-if="textareaStatus" style="height: auto;">
-						<view>买家留言</view>
-						<input placeholder-class='placeholder' value="" name="mark" placeholder='选填买家留言'
-							v-model="item.remark" @input='bindHideKeyboard(item.remark,index)'
-							style="width: 484rpx;text-align: right;"></input>
 					</view>
 				</view>
-				<!--商品关联系统表单-->
-				<view v-if="orderInfoVo.systemFormValue && orderInfoVo.systemFormValue.length"
-					class='wrapper borRadius14'>
-					<systemFrom v-model="orderInfoVo.systemFormValue"></systemFrom>
-					<!--					<systemFrom :orderForm="orderInfoVo.systemFormValue" ></systemFrom>-->
-				</view>
-				<view class='moneyList borRadius14'>
-					<view v-show="secondType !== ProductTypeEnum.Integral" class='item acea-row row-between-wrapper'>
-						<view>商品总价</view>
-						<view class='money'>¥{{orderInfoVo.proTotalFee || 0}}</view>
-					</view>
-					<view class='item acea-row row-between-wrapper' v-if="parseInt(orderInfoVo.freightFee) > 0">
-						<view>运费:</view>
-						<view class='money'>+¥{{orderInfoVo.freightFee}}</view>
-					</view>
-					<view v-show="orderInfoVo.svipDiscountPrice != 0 &&orderInfoVo.type!=2"
-						class='item acea-row row-between-wrapper'>
-						<view>会员优惠</view>
-						<view class='money'>-¥{{orderInfoVo.svipDiscountPrice}}</view>
-					</view>
-					<view class='item acea-row row-between-wrapper' v-if="parseInt(merCouponFee) > 0 && isProductType">
-						<view>店铺优惠</view>
-						<view class='money'>-¥{{merCouponFee}}</view>
-					</view>
-					<view v-if="isProductType" class='item acea-row row-between-wrapper'>
-						<view>平台优惠</view>
-						<view v-if="orderInfoVo.platCouponUserList && orderInfoVo.platCouponUserList.length"
-							class='discount acea-row row-between-wrapper'
-							@tap='couponTap(orderInfoVo.platCouponUserList,0)'>
-							<text
-								class="couponTitle line1">{{platCouponFee==0?`有${orderInfoVo.platCouponUserList.length}张优惠券可选`:`-¥${platCouponFee}`}}</text>
-							<text class='iconfont icon-jiantou'></text>
-						</view>
-						<view v-else class="noCoupon">暂无优惠券</view>
-					</view>
-					<view class='item acea-row row-between-wrapper'
-						v-if="orderInfoVo.integralDeductionSwitch && isProductType">
-						<view>积分抵扣</view>
-						<view class='discount acea-row row-middle'>
-							<view class="mr14"> {{isUseIntegral ? "使用积分":"当前积分"}}
-								<text
-									class='num font_color'>{{ isUseIntegral ? orderInfoVo.surplusIntegral : orderInfoVo.userIntegral}}</text>
-							</view>
-							<checkbox-group @change="ChangeIntegral">
-								<checkbox :checked='isUseIntegral ? true : false'
-									:disabled="orderInfoVo.userIntegral==0 && !isUseIntegral" />
-							</checkbox-group>
-						</view>
-					</view>
-
-					<view class='item acea-row row-between-wrapper' v-if="Number(orderInfoVo.deductionPrice) > 0">
-						<view>抵扣金额</view>
-						<view class='money'>-¥{{orderInfoVo.deductionPrice}}</view>
-					</view>
-
-				</view>
-				<view style='height:120rpx;'></view>
 			</view>
-			<view class='footer acea-row row-between-wrapper'>
-				<view class="acea-row row-middle">合计:
-					<!-- 积分价格 -->
-					<PointsPrice v-if="orderInfoVo.secondType === ProductTypeEnum.Integral" :pointsPrice="orderInfoVo"
-						:pointsGoodsStyle="hotPointsStyle"></PointsPrice>
-					<!-- 其他价格 -->
-					<text v-else class='price_color'>¥{{orderInfoVo.payFee || 0}}</text>
-				</view>
-				<view class='settlement' style='z-index:100' @tap="SubOrder">
-					{{secondType === ProductTypeEnum.Integral?"确认兑换":"立即下单"}}
-				</view>
+			<view style="width: 100%; height: 2rpx;border: 2rpx dashed #D6D7DC;position: relative;bottom: 20rpx;"></view>
+			<view class='item-con'>
+				<text>打包费</text>
+				<text>¥2</text>
+			</view>
+			<view class='item-con' style="margin: 0;">
+				<text>用户配送费</text>
+				<text style="text-decoration: line-through;">¥2 <text>免费配送</text></text>
+			</view>
+			<view style="font-weight: 400;font-size: 21rpx;color: #999999;margin-bottom: 10rpx;">配送高峰期,可能配送费上调</view>
+			<view class='item-con'>
+				<text @tap="isZhuan = !isZhuan">已享优惠 <text :style="{ transform: isZhuan ? 'rotate(90deg)' : 'rotate(-90deg)'}"
+					 class='iconfont icon-jiantou xuanzhuan' style="font-size: 22rpx;display: inline-block;"></text></text>
+				<text>- ¥2</text>
+			</view>
+			<view v-if="isZhuan" class='item-con' style="background: #F8F9FB;padding: 8rpx 19rpx;font-weight: 500;font-size: 21rpx;color: #FF6702;">
+				<text>活动红包</text>
+				<text>- ¥2</text>
 			</view>
 		</view>
-		<couponListWindow :coupon='coupon' @ChangCouponsClone="ChangCouponsClone" :openType='openType'
-			@ChangCoupons="ChangCoupons" :orderShow="orderShow" :surplusFee="surplusFee"></couponListWindow>
 
-		<view v-if="isShowBox">
-			<checkDelivery :isShowBox="isShowBox" :activeObj="activeObj" @close="boxClose"
-				@confirmBtn="getShippingType">
-			</checkDelivery>
-		</view>
-		<!-- 满员提示 -->
-		<uni-popup ref="sh_popup" background-color="#fff" borderRadius="10px">
-			<view class="sh_popup-content">
-				<view class="sh_popup_title">
-					提示
-				</view>
-				<view class="sh_popup_text">
-					该团已拼成,是否自行开团?
-				</view>
-				<view class="sh_popup_btn">
-					<view class="no_btn btn font_color" @click="popupClose">返回首页</view>
-					<view class="yes_btn btn" @click="toAudit">去开团</view>
-				</view>
+		<!-- 购物车栏 begin -->
+		<view class="cart-box" :style="{top: (winHeight - 100) + 'px'}">
+			<view style="margin-left: 39rpx;">
+				<view style="font-weight: 600;font-size: 27rpx;color: #FFFFFF;" class="price">¥{{ total }}</view>
+				<text style="font-weight: 400;font-size: 23rpx;color: #999999;">已优惠¥2</text>
 			</view>
-		</uni-popup>
+			<button type="primary" class="pay-btn bg-color" @tap="toPay">
+				去支付
+			</button>
+		</view>
+		<!-- 购物车栏 end -->
 	</view>
 </template>
+
 <script>
-	// +----------------------------------------------------------------------
-	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
-	// +----------------------------------------------------------------------
-	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
-	// +----------------------------------------------------------------------
-	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
-	// +----------------------------------------------------------------------
-	// | Author: CRMEB Team <admin@crmeb.com>
-	// +----------------------------------------------------------------------
-	import {
-		getCouponsOrderPrice,
-		orderCreate,
-		postOrderComputed,
-		loadPreOrderApi
-	} from '@/api/order.js';
 	import {
 		getAddressDetail,
 		getAddressDefault
 	} from '@/api/user.js';
-	// import {
-	// 	openPaySubscribe
-	// } from '@/utils/SubscribeMessage.js';
-	import {
-		takeTheirApi
-	} from '@/api/merchant.js';
-	import {
-		CACHE_LONGITUDE,
-		CACHE_LATITUDE
-	} from '@/config/cache.js';
-	import dayjs from "@/plugin/dayjs/dayjs.min.js";
-	import couponListWindow from '../components/couponListWindow';
-	import orderGoods from '../components/orderGoods'
-	import navBar from '@/components/navBar';
-	import checkDelivery from '../components/checkDelivery/index.vue';
-	import systemFrom from '../components/systemFrom/index.vue';
-	import PointsPrice from '@/components/PointsPrice.vue';
-	import {
-		toLogin
-	} from '@/libs/login.js';
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		Debounce
-	} from '@/utils/validate.js'
-	import {
-		ProductTypeEnum,
-		ProductMarketingTypeEnum
-	} from "../../../enums/productEnums";
-	import orderPay from "@/mixins/OrderPay.js";
+	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
 	let app = getApp();
-	/**
-	 * 积分商品推荐样式
-	 */
-	const hotPointsStyle = {
-		iconStyle: {
-			width: '28rpx',
-			height: '28rpx'
-		},
-		priceStyle: {
-			fontSize: '28rpx',
-		},
-		unitStyle: {
-			fontSize: '26rpx',
-		},
-	}
 	export default {
-		mixins: [orderPay],
-		components: {
-			navBar,
-			couponListWindow,
-			orderGoods,
-			checkDelivery,
-			systemFrom,
-			PointsPrice
-		},
-		computed: {
-			// 是否可以使用优惠券、积分抵扣。 基础订单/云盘订单,卡密,虚拟,可以使用优惠券、积分抵扣
-			isProductType() {
-				return this.type === ProductMarketingTypeEnum.Normal && this.secondType !== this.ProductTypeEnum
-					.Integral && this.secondType !== this.ProductTypeEnum.Video
-			},
-			...mapGetters(['productType', 'isLogin'])
-		},
 		data() {
 			return {
-				hotPointsStyle: hotPointsStyle,
-				ProductMarketingTypeEnum: ProductMarketingTypeEnum,
-				ProductTypeEnum: ProductTypeEnum,
-				navTitle: '提交订单',
-				homeTop: 20,
-				orderShow: 'orderShow', //下单页面使用优惠券组件不展示tab切换页
-				textareaStatus: true,
-				openType: 1, //优惠券打开方式 1=使用
-				couponShow: false,
-				coupon: {
-					coupon: false,
-					list: [], //商户优惠券
-					statusTile: '立即使用',
-					couponMoney: 0
-				}, //优惠券组件
+				total: 0,
+				statusBarHeight: app.globalData.statusBarHeight,
+				navigationBarHeight: 0,
+				winHeight: 0,
+				isZhuan: true,
+				isShow: true,
+				goIndex: true,
+				orderNo: '', //预下单订单号
 				addressInfo: {}, //地址信息
 				addressId: 0, //地址id
-				orderMerchantRequestList: [], //商户属性集合
-				cartId: '', //购物车id
-				userInfo: {}, //用户信息
-				mark: '', //买家留言
-				couponFee: '请选择', //优惠券
-				coupon_price: 0, //优惠券抵扣金额
-				isUseIntegral: false, //是否使用积分
-				integral_price: 0, //积分抵扣金额
-				integral: 0,
-				ChangePrice: 0, //使用积分抵扣变动后的金额
-				formIds: [], //收集formid
-				status: 0,
-				is_address: false,
-				toPay: false, //修复进入支付时页面隐藏从新刷新页面
-				shippingType: 1,
-				storePostage: 0,
-				contacts: '',
-				contactsTel: '',
-				mydata: {},
-				merchantOrderVoList: [],
-				priceGroup: {},
-				animated: false,
-				totalPrice: 0,
-				integralRatio: "0",
-				orderKey: "",
-				// usableCoupon: {},
-				offlinePostage: "",
-				news: true,
-				again: false,
-				addAgain: false,
-				bargain: false, //是否是砍价
-				combination: false, //是否是拼团
-				secKill: false, //是否是秒杀
-				orderInfoVo: {},
-				addressList: [], //地址列表数据
-				orderProNum: 0,
-				orderNo: '', //预下单订单号
-				theme: app.globalData.theme,
-				addressChangeId: 0,
-				isShowBox: false,
-				activeObj: {},
-				activeIndex: 0, // 选中店铺索引
-				type: 0, // 0-基础订单,1-秒杀订单,2-拼团订单
-				secondType: 0, //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
-				merId: 0, //商户id,用于判断商户优惠券还是平台优惠券,平台优惠券商户id为0
-				platUserCouponObj: {}, //平台优惠券对象,用于缓存数据使用
-				platUserCouponId: 0, //平台优惠券id
-				platCouponFee: '', //平台优惠券金额
-				merCouponFee: '', //店铺优惠券总金额
-				surplusFee: 0, //商品总金额-商户优惠券金额=平台端可使用优惠券的门槛
-				merUserCouponId: 0, //店铺使用优惠券的id
-				tempCouponObj: {}, //临时优惠券数据
-				merchangtInfo: {}, //商户信息
-				orderForm: [], //系统表单配置的数据
-				orderExtend: {}, //提交接口表单的数据
-				productId:'',
-				groupActivityId:''
-			};
-		},
-		watch: {
-			isLogin: {
-				handler: function(newV, oldV) {
-					if (newV) {
-						this.getloadPreOrder();
+				goods_list: [{
+						id: 11,
+						name: '土豆片',
+						content: '月销371',
+						price: 1,
+						images: '/static/img/img7.png'
+					},
+					{
+						id: 12,
+						name: '娃娃菜',
+						content: '月销371',
+						price: 2,
+						images: '/static/img/img7.png'
+					},
+					{
+						id: 13,
+						name: '方便面',
+						content: '月销371',
+						price: 3,
+						images: '/static/img/img7.png'
 					}
-				},
-				deep: true
-			},
+				],
+				cart: []
+			}
+		},
+		//下拉刷新
+		onPullDownRefresh() {
+
 		},
 		onLoad(options) {
-			this.orderNo = options.orderNo || 0;
-			this.addressChangeId = parseInt(options.addressId) || 0;
-			this.is_address = options.is_address ? true : false;
-			if (this.isLogin) {
-				this.getloadPreOrder();
-			} else {
-				toLogin();
-			}
+			let that = this;
+			uni.getSystemInfo({
+				success: function(res) {
+					that.winHeight = res.windowHeight
+				},
+			});
+			//首页数据加载
+			// this.getIndexConfig();
+			// #ifdef MP-WEIXIN
+			// 获取微信胶囊的位置信息 width,height,top,right,left,bottom
+			const custom = wx.getMenuButtonBoundingClientRect()
+			// 导航栏高度(标题栏高度) = 胶囊高度 + (顶部距离 - 状态栏高度) * 2
+			this.navigationBarHeight = custom.height + (custom.top - this.statusBarHeight) * 2
+			// console.log("导航栏高度:"+this.globalData.navigationBarHeight)
+			// #endif
+			this.cart = uni.getStorageSync('cart')
+			this.total = (this.cart.reduce((acc, cur) => acc + cur.number * cur.price, 0)).toFixed(2)
 		},
-		/**
-		 * 生命周期函数--监听页面显示
-		 */
-		onShow: function() {
-			let _this = this
-			this.textareaStatus = true;
+		onShow() {
+
 		},
 		methods: {
-      //滚动
-      touchStart() {
-        this.$refs.navBarRef.currentPage = false;
-      },
-			popupClose() {
-				this.$refs.sh_popup.close()
-				uni.switchTab({
-					url: '/pages/index/index'
-				});
-			},
-			//去开团
-			toAudit() {
-				this.$refs.sh_popup.close()
-				uni.navigateTo({
-					url:`/pages/goods/goods_details/index?id=${this.productId}&mt=2&gd=${this.groupActivityId}`
-				})
+			statusClick() {
+				this.isShow = !this.isShow;
 			},
-			addressType(type) {
-				this.merchantOrderVoList[0].shippingType = type
-				this.getShippingType(this.merchantOrderVoList[0])
-				if(type==2){
-					setTimeout(()=>{
-						this.shippingType = type
-					},300)
-				}else{
-					this.shippingType = type
-				}
-			},
-			//选择配送方式回调 
-			getShippingType(item) {
-				this.orderMerchantRequestList[this.activeIndex].shippingType = item.shippingType;
-				this.$set(this.merchantOrderVoList[this.activeIndex], 'shippingType', item.shippingType);
-				if (item.shippingType === 2) this.getTakeTheir(item.merId);
-				this.computedPrice();
-				this.isShowBox = false;
-			},
-			getTakeTheir(id) {
-				takeTheirApi(id).then(res => {
-					this.merchangtInfo = res.data; //商户信息
-					this.$set(this.merchantOrderVoList[this.activeIndex], 'addressDetail', res.data.addressDetail);
-					this.$set(this.merchantOrderVoList[this.activeIndex], 'phone', res.data.phone);
-					this.$set(this.merchantOrderVoList[this.activeIndex], 'latitude', res.data.latitude);
-					this.$set(this.merchantOrderVoList[this.activeIndex], 'longitude', res.data.longitude);
-				}).catch(err => {
-					return this.$util.Tips({
-						title: err
-					});
-				})
+			toPay() {
+				// if(!this.isLogin) {
+				// 	uni.navigateTo({url: '/pages/login/login'})
+				// 	return
+				// }
 			},
-			//查看内置地图
-			goMap(item) {
-				let that = this;
-				//#ifdef H5
-				if (that.$wechat.isWeixin() === true) {
-					that.$wechat.seeLocation({
-						latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
-						longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
-						name: item.merName,
-						address: item.addressDetail ? item.addressDetail : '',
-					}).then(res => {
-						console.log('success');
-					})
-				} else {
-					//#endif
-					uni.openLocation({
-						latitude: parseFloat(this.merchantOrderVoList[this.activeIndex].latitude),
-						longitude: parseFloat(this.merchantOrderVoList[this.activeIndex].longitude),
-						scale: 8,
-						name: item.merName,
-						address: item.addressDetail ? item.addressDetail : '',
-						success: function(res) {
-							that.go_map = true
-						},
-					});
-					// #ifdef H5
-				}
-				//#endif
-			},
-			// 打开配送方式弹窗
-			openShowBox(item, index) {
-				this.activeObj = item
-				this.activeIndex = index
-				this.isShowBox = true
-			},
-			boxClose() {
-				this.isShowBox = false
-			},
-			// 订单详情
-			getloadPreOrder: function() {
-				loadPreOrderApi(this.orderNo).then(res => {
-					let orderInfoVo = res.data;
-					if(orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId){
-						this.groupActivityId=orderInfoVo.merchantInfoList[0].orderInfoList[0].groupBuyActivityId
-						this.productId=orderInfoVo.merchantInfoList[0].orderInfoList[0].productId
-					}
-					if (orderInfoVo.merchantInfoList[0].deliveryMethodMer.split(',').length == 1) {
-						this.shippingType = orderInfoVo.merchantInfoList[0].deliveryMethodMer
-					}
-					this.orderInfoVo = {
-						...orderInfoVo,
-						systemFormValue: orderInfoVo.systemFormValue ? this.$util.objToArr(JSON.parse(
-							orderInfoVo.systemFormValue)) : []
-					};
-
-					this.merchantOrderVoList = orderInfoVo.merchantInfoList; //商户端数据
-					this.platCouponFee = orderInfoVo.platCouponFee; //平台优惠券总金额
-					this.platUserCouponId = orderInfoVo.platUserCouponId;
-					this.merCouponFee = orderInfoVo.merCouponFee; //店铺优惠券总金额
-					orderInfoVo.merchantInfoList.map(item => {
-						this.orderMerchantRequestList.push({
-							shippingType: item.shippingType,
-							merId: item.merId,
-							remark: '',
-							userCouponId: item.userCouponId
-						})
-						if (item.shippingType === 2) this.getTakeTheir(item.merId)
-						item.addressDetail = this.merchangtInfo.addressDetail;
-						item.phone = this.merchangtInfo.phone;
-						item.latitude = this.merchangtInfo.latitude;
-						item.longitude = this.merchangtInfo.longitude;
-					});
-					this.type = orderInfoVo.type; //订单类型
-					this.secondType = orderInfoVo
-						.secondType; //订单二级类型:0-普通订单,1-积分订单,2-虚拟订单,4-视频号订单,5-云盘订单,6-卡密订单
-					this.orderProNum = orderInfoVo.orderProNum;
-					if (orderInfoVo.addressId && this.addressChangeId === 0) {
-						this.addressId = orderInfoVo.addressId;
-					} else {
-						this.addressId = this.addressChangeId;
-						if (orderInfoVo.addressId != this.addressChangeId && this.addressChangeId > 0)
-							this.computedPrice();
-					}
-					this.getaddressInfo();
-				}).catch(err => {
-					uni.navigateTo({
-						url: '/pages/goods/order_list/index'
-					});
-				})
-			},
-			// 计算订单价格
-			computedPrice: function() {
-				uni.showLoading({
-					title: '加载中...'
-				});
-				let shippingType = this.shippingType;
-				postOrderComputed({
-					addressId: this.addressId,
-					isUseIntegral: this.isUseIntegral,
-					orderMerchantRequestList: this.orderMerchantRequestList,
-					preOrderNo: this.orderNo,
-					platUserCouponId: this.platUserCouponId
-				}).then(res => {
-					let data = res.data;
-					//usedIntegral 使用的积分,surplusIntegral 剩余积分
-					data.merOrderResponseList.map((item, i) => {
-						this.merchantOrderVoList[i].freightFee = item.freightFee
-						this.merchantOrderVoList[i].couponFee = item.couponFee
-					});
-					this.orderInfoVo.platCouponUserList = data.platCouponUserList; //平台优惠券数据
-					this.merCouponFee = data.merCouponFee; //店铺优惠券总金额
-					this.orderInfoVo.couponFee = data.couponFee; //优惠券优惠金额
-					this.orderInfoVo.userIntegral = data.surplusIntegral; //使用的积分
-					this.orderInfoVo.deductionPrice = data.deductionPrice;
-					this.orderInfoVo.freightFee = data.freightFee;
-					this.orderInfoVo.payFee = data.payFee;
-					this.orderInfoVo.proTotalFee = data.proTotalFee;
-					this.orderInfoVo.surplusIntegral = data.usedIntegral; //剩余积分
-					this.platCouponFee = data.platCouponFee; //平台优惠金额
-					this.orderInfoVo.integralDeductionSwitch = data.integralDeductionSwitch //积分抵扣开关
-					//选中商户优惠券的值
-					this.merchantOrderVoList[this.activeIndex].merCouponUserList = data.merOrderResponseList[
-						this.activeIndex].merCouponUserList; //商户数据
-					this.merUserCouponId = data.merOrderResponseList[this.activeIndex]
-						.userCouponId //店铺使用优惠券的id
-					uni.hideLoading();
-				}).catch(err => {
-					uni.hideLoading();
-					return this.$util.Tips({
-						title: err
-					});
+			onAddress: function() {
+				uni.navigateTo({
+					url: '/pages/address/user_address_list/index?orderNo=' + this.orderNo
 				});
 			},
-			bindPickerChange: function(e) {
-				let value = e.detail.value;
-				this.shippingType = value;
-				this.computedPrice();
-			},
-			/**
-			 * 使用积分抵扣
-			 */
-			ChangeIntegral: function() {
-				this.isUseIntegral = !this.isUseIntegral;
-				this.computedPrice();
-			},
-			bindHideKeyboard: function(e, i) {
-				this.orderMerchantRequestList[i].remark = e;
-			},
 			/*
 			 * 获取默认收货地址或者获取某条地址信息
 			 */
@@ -635,738 +187,203 @@
 					})
 				}
 			},
+		},
+		mounted() {
 
-			//关闭优惠券弹窗
-			ChangCouponsClone: function(coupon) {
-				this.coupon.list = [];
-				this.coupon.coupon = false;
-			},
-			//点击优惠券弹窗确定后
-			ChangCoupons: function(item) {
-				this.coupon.list = [];
-				if (item.merId === 0) {
-					this.platUserCouponId = item.isChecked ? item.id : 0;
-				} else {
-					this.$set(this.orderMerchantRequestList[this.activeIndex], 'userCouponId', item.isChecked ? item
-						.id : 0);
-
-				}
-				this.coupon.coupon = false;
-				this.computedPrice();
-			},
-			/**
-			 * 选择优惠券
-			 * @param {Object} item优惠券对象
-			 * @param {Number} merId商户id
-			 * @param {Number} index索引
-			 */
-			couponTap: function(item, merId, index) {
-				this.$set(this.coupon, 'list', item);
-				this.$set(this.coupon, 'couponMoney', item);
-				this.coupon.coupon = true;
-				this.merId = merId; //商户id
-				if (merId !== 0) this.activeIndex = index;
-				this.coupon.loading = false;
-			},
-			/**
-			 * 获取当前金额可用优惠券
-			 *
-			 */
-			getCouponList: function(item, merId) {
-				this.$set(this.coupon, 'list', item);
-				this.openType = 1;
-				uni.hideLoading();
-			},
-			onAddress: function() {
-				uni.navigateTo({
-					url: '/pages/address/user_address_list/index?orderNo=' + this.orderNo
-				});
-			},
-			realName: function(e) {
-				this.contacts = e.detail.value;
-			},
-			phone: function(e) {
-				this.contactsTel = e.detail.value;
-			},
-			payment: function(data) {
-				let that = this;
-				// #ifdef MP
-				uni.checkBeforeAddOrder({
-					success(res) {
-						console.log("下单前置检查 成功:", JSON.stringify(res));
-						const traceId = res.data.traceId;
-						data.traceId = traceId;
-						that.onCreate(data);
-					},
-					fail(res) {
-						console.log("下单前置检查 失败:", JSON.stringify(res));
-					}
-				});
-				// #endif
-				// #ifndef MP
-				that.onCreate(data);
-				// #endif
-			},
-			onCreate(data) {
-				orderCreate(data).then(res => {
-					if(res.data.groupBuyIsFull==1){
-						uni.hideLoading();
-						return this.$refs.sh_popup.open('center')
-					}
-					if (this.secondType === this.ProductTypeEnum.Integral && this.orderInfoVo.payFee == 0) {
-						// 积分商品并且支付金额为0时,直接默认走余额支付的逻辑,订单支付成功跳转到支付结果页
-						this.changeOrderPay(res.data.orderNo, 'yue', 'yue', 'integral', 'integral', '0')
-					} else {
-						// 其他商品走正常流程,去支付收银台页面
-						this.getToPayment(this.secondType, res.data)
-					}
-
-					uni.hideLoading();
-				}).catch(err=>{
-					uni.hideLoading();
-					return this.$util.Tips({
-						title: err
-					});
-				});
-			},
-			//立即下单
-			SubOrder: Debounce(function(e) {
-				let that = this,
-					data = {};
-				let flag = false;
-				that.orderMerchantRequestList.map(function(v) {
-					if (v.shippingType === 1 && !that.addressId && that.orderInfoVo.secondType !== 2) {
-						flag = true;
-					}
-				});
-				if (flag) {
-					that.$util.Tips({
-						title: '请选择收货地址'
-					});
-					return;
-				}
-
-				let systemFormValue = Array.from(this.orderInfoVo.systemFormValue)
-				let systemFormData = []
-				for (var i = 0; i < systemFormValue.length; i++) {
-					let curdata = systemFormValue[i]
-					if (['radios'].indexOf(curdata.name) == -1 && (curdata.titleShow.val || (['uploadPicture',
-							'dateranges'
-						].indexOf(curdata.name) == -1 && curdata.value && curdata.value.trim()))) {
-						if ((curdata.name === 'texts' && curdata.valConfig.tabVal == 0) || ['dates', 'times',
-								'selects', 'citys', 'checkboxs'
-							].indexOf(curdata.name) != -1) {
-							if (!curdata.value || (curdata.value && !curdata.value.trim())) {
-								return that.$util.Tips({
-									title: `请填写${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'timeranges') {
-							if (!curdata.value) {
-								return that.$util.Tips({
-									title: `请选择${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'dateranges') {
-							if (!curdata.value.length) {
-								return that.$util.Tips({
-									title: `请选择${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 4) {
-							if (curdata.value <= 0) {
-								return that.$util.Tips({
-									title: `请填写大于0的${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 3) {
-							if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(curdata.value)) {
-								return that.$util.Tips({
-									title: `请填写正确的${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 1) {
-							if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(curdata.value)) {
-								return that.$util.Tips({
-									title: `请填写正确的${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'texts' && curdata.valConfig.tabVal == 2) {
-							if (!
-								/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i
-								.test(curdata.value)) {
-								return that.$util.Tips({
-									title: `请填写正确的${curdata.titleConfig.val}`
-								});
-							}
-						}
-						if (curdata.name === 'uploadPicture') {
-							if (!curdata.value.length) {
-								return that.$util.Tips({
-									title: `请上传${curdata.titleConfig.val}`
-								});
-							}
-						}
-					}
-					this.orderExtend[curdata.key] = curdata.value
-					systemFormData.push({
-						title: curdata.titleConfig.val,
-						value: curdata.value,
-					})
-				}
-				data = {
-					addressId: that.addressId,
-					orderMerchantRequestList: that.orderMerchantRequestList,
-					isUseIntegral: that.isUseIntegral,
-					preOrderNo: that.orderNo,
-					platUserCouponId: this.platUserCouponId,
-					systemFormId: this.orderInfoVo.systemFormId,
-					orderExtend: JSON.stringify(systemFormData)
-
-				};
-				uni.showLoading({
-					title: '订单提交中'
-				});
-				that.payment(data);
-				//// #ifdef MP
-				// openPaySubscribe().then(() => {
-				// 	that.payment(data);
-				// });
-				// // #endif
-				// // #ifndef MP
-				// that.payment(data);
-				// // #endif
-			})
-		}
+		},
 	}
 </script>
 
 <style lang="scss" scoped>
-	.w-480px{
-		width: 480rpx;
-	}
-	.noCoupon {
-		color: #999999;
-
+	.bg-color {
+		background-color: $bg-color-primary;
 	}
 
-	.icon-jiantou {
-		font-size: 26rpx;
-		color: #515151;
-		margin-left: 14rpx;
-	}
-
-	.mr14 {
-		margin-right: 14rpx;
-	}
-
-	.couponTitle {
-		width: 430rpx;
-		display: inline-block;
-		text-align: right;
-		@include main_color(theme);
-	}
-
-	.store-address {
-		padding: 20rpx;
-		margin: 0 24rpx;
-		background: #F6F6F6;
-		border-radius: 8rpx;
-		font-size: 24rpx;
-		/*垂直居中*/
-		-webkit-box-align: center;
-		/*旧版本*/
-		-moz-box-align: center;
-		/*旧版本*/
-		-ms-flex-align: center;
-		/*混合版本*/
-		-webkit-align-items: center;
-		/*新版本*/
+	.status-bar {
+		display: flex;
 		align-items: center;
-
-		/*新版本*/
-		.phone {
-			margin-bottom: 10rpx;
-			color: #282828;
-			font-weight: bold;
-		}
-
-		.name {
-			padding-right: 20rpx;
-		}
-
-		.info {
-			flex: 1;
-		}
-
-		.line2 {
-			width: 456rpx !important;
-		}
-
-		.map {
-			text-align: center;
-			padding-left: 36rpx;
-			position: relative;
-			@include main_color(theme);
-
-			&::before {
-				content: '';
-				display: inline-block;
-				width: 2rpx;
-				height: 42rpx;
-				background-color: #DDDDDD;
-				position: absolute;
-				left: 0;
-				top: 18rpx;
-			}
-
-			.iconfont {
-				color: var(--view-theme);
-			}
-
-			.map_text {
-				color: var(--view-theme);
-			}
-		}
-	}
-
-	.font_color {
-		@include main_color(theme);
-	}
-
-	.price_color {
-		@include price_color(theme);
-	}
-
-	.line2 {
-		width: 624rpx;
-	}
-
-	.textR {
-		text-align: right;
+		justify-content: center;
+		height: 125rpx;
+		background-color: #FF6702;
+		text-align: center;
+		padding: 20px 0 16rpx 0;
 	}
 
-	.order-submission .line {
-		width: 100%;
-		height: 3rpx;
+	.status-bar view {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		background: #EB5E00;
+		border-radius: 37rpx;
 	}
 
-	.order-submission .line image {
-		width: 100%;
-		height: 100%;
-		display: block;
+	.status-true {
+		display: inline-block;
+		width: 326rpx;
+		padding: 10rpx 0;
+		background-color: white;
+		color: #FF6600;
+		border-radius: 37rpx;
 	}
 
-	.order-submission .address {
-		padding: 40rpx 24rpx;
-		background-color: #fff;
-		box-sizing: border-box;
+	.status-false {
+		display: inline-block;
+		width: 326rpx;
+		padding: 10rpx 0;
+		color: #FFCBA9;
+		border-radius: 37rpx;
 	}
 
-	.order-submission .address .addressCon {
-		width: 596rpx;
+	.icon-jiantou {
 		font-size: 26rpx;
-		color: #666;
-	}
-
-	.order-submission .address .addressCon .name {
-		font-size: 30rpx;
-		color: #282828;
-		font-weight: bold;
-		// margin-bottom: 10rpx;
-	}
-
-	.order-submission .address .addressCon .name .phone {
-		margin-left: 50rpx;
-	}
-
-	.order-submission .address .addressCon .default {
-		margin-right: 12rpx;
-	}
-
-	.order-submission .address .addressCon .setaddress {
-		color: #333;
-		font-size: 28rpx;
-	}
-
-	.order-submission .address .iconfont {
-		color: #707070;
-	}
-
-	.order-submission .allAddress {
-		width: 100%;
-		@include index-gradient(theme);
-		padding: 30rpx 24rpx 0 24rpx;
-	}
-
-	.order-submission .allAddress .address.group {
-		border-radius: 0;
+		color: #515151;
+		margin-left: 14rpx;
 	}
 
-	.order-submission .allAddress .address {
-		max-height: 180rpx;
-		margin: -2rpx auto 0 auto;
-		border-radius: 14rpx 14rpx 0 0;
+	.address {
+		margin-bottom: 40rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
 	}
 
-	.order-submission .allAddress .line {
+	.item-go {
+		position: relative;
 		width: 100%;
-		margin: 0 auto;
-	}
-
-	.order-submission .wrapper .item .discount .placeholder {
-		color: #ccc;
-	}
-
-	.order-submission .wrapper {
-		background-color: #fff;
-		margin-top: 24rpx;
-	}
-
-	.order-submission .wrapper .item {
-		padding: 28rpx 24rpx;
-		font-size: 30rpx;
-		color: #333333;
-	}
-
-	.order-submission .wrapper .item .discount {
-		font-size: 30rpx;
-		color: #333;
-	}
-
-	.order-submission .wrapper .item .discount .iconfont {
-		color: #515151;
-	}
-
-	.order-submission .wrapper .item .discount .num {
-		font-size: 32rpx;
-		margin-right: 20rpx;
+		padding: 20rpx 0;
+		padding-left: 39rpx;
+		background: #FFFFFF;
+		border-radius: 15rpx;
+		border: 2rpx solid #D6D7DC;
 	}
 
-	.order-submission .wrapper .item .shipping {
-		font-size: 30rpx;
-		color: #999;
+	.item-go-avt {
 		position: relative;
-		padding-right: 58rpx;
+		color: #FF6702;
+		background: #FFECE0;
+		border-radius: 15rpx;
+		border: 2rpx solid #FF6702;
 	}
 
-	.order-submission .wrapper .item .shipping .iconfont {
-		font-size: 35rpx;
-		color: #707070;
+	.go-img {
+		width: 54rpx;
+		height: 54rpx;
 		position: absolute;
 		right: 0;
-		top: 50%;
-		transform: translateY(-50%);
-		margin-left: 30rpx;
+		top: 0;
 	}
 
-	.order-submission .wrapper .item textarea {
-		background-color: #f9f9f9;
-		width: auto !important;
-		height: 140rpx;
-		border-radius: 14rpx;
-		margin-top: 30rpx;
-		padding: 15rpx;
-		box-sizing: border-box;
-		font-weight: 400;
-	}
-
-	.order-submission .wrapper .item .placeholder {
-		color: #ccc;
-	}
-
-	.order-submission .wrapper .item .list {
-		margin-top: 35rpx;
-	}
-
-	.order-submission .wrapper .item .list .payItem {
-		border: 1px solid #eee;
-		border-radius: 14rpx;
-		height: 86rpx;
+	.item-goods {
 		width: 100%;
-		box-sizing: border-box;
-		margin-top: 20rpx;
-		font-size: 28rpx;
-		color: #282828;
+		height: 100%;
+		padding: 19rpx 38rpx;
+		background: #FFFFFF;
+		border-radius: 23rpx 23rpx 0rpx 0rpx;
 	}
 
-	.order-submission .wrapper .item .list .payItem.on {
-		// border-color: #fc5445;
-		@include coupons_border_color(theme);
-		color: $theme-color;
-	}
+	.good {
+		display: flex;
+		align-items: center;
+		margin-bottom: 30rpx;
 
-	.order-submission .wrapper .item .list .payItem .name {
-		width: 50%;
-		text-align: center;
-		border-right: 1px solid #eee;
-	}
+		.image {
+			width: 160rpx;
+			height: 160rpx;
+			margin-right: 20rpx;
+			border-radius: 8rpx;
+		}
 
-	.order-submission .wrapper .item .list .payItem .name .iconfont {
-		width: 44rpx;
-		height: 44rpx;
-		border-radius: 50%;
-		text-align: center;
-		line-height: 44rpx;
-		background-color: #fe960f;
-		color: #fff;
-		font-size: 30rpx;
-		margin-right: 15rpx;
-	}
+		.right {
+			flex: 1;
+			// height: 160rpx;
+			overflow: hidden;
+			display: flex;
+			flex-direction: column;
+			align-items: flex-start;
+			justify-content: space-between;
+			padding-right: 14rpx;
 
-	.order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
-		background-color: #41b035;
-	}
+			.name {
+				font-size: $font-size-base;
+				margin-bottom: 10rpx;
+			}
 
-	.order-submission .wrapper .item .list .payItem .name .iconfont.icon-zhifubao {
-		background-color: #00AAEA;
-	}
+			.tips {
+				width: 100%;
+				height: 40rpx;
+				line-height: 40rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				font-size: $font-size-sm;
+				color: $text-color-assist;
+				margin-bottom: 10rpx;
+			}
 
-	.order-submission .wrapper .item .list .payItem .tip {
-		width: 49%;
-		text-align: center;
-		font-size: 26rpx;
-		color: #aaa;
-	}
+			.price_and_action {
+				width: 100%;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
 
-	.order-submission .moneyList {
-		margin-top: 15rpx;
-		background-color: #fff;
-		padding: 0 30rpx;
-		margin-bottom: calc(constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
-		margin-bottom: calc(env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
+				.price {
+					font-size: $font-size-base;
+					font-weight: 600;
+				}
+			}
+		}
 	}
 
-	.order-submission .moneyList .item {
-		font-size: 30rpx;
-		color: #282828;
+	.cart-box {
+		position: absolute;
+		// bottom: 30rpx;
+		left: 30rpx;
+		right: 30rpx;
 		height: 96rpx;
-	}
-
-	.order-submission .moneyList .item~.item {
-		// margin-top: 20rpx;
-	}
-
-	.order-submission .moneyList .item .money {
-		color: #666666;
-	}
-
-	.order-submission .footer {
-		width: 100%;
-		height: 100rpx;
-		background-color: #fff;
-		padding: 0 30rpx;
-		font-size: 28rpx;
-		color: #333;
-		box-sizing: border-box;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
-		height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
-		z-index: 999;
-	}
-
-	.order-submission .footer .settlement {
-		background-color: #fff;
-		font-size: 30rpx;
-		color: #fff;
-		width: 240rpx;
-		height: 70rpx;
-		@include main_bg_color(theme);
-		border-radius: 50rpx;
-		text-align: center;
-		line-height: 70rpx;
-	}
-
-	.footer .transparent {
-		opacity: 0
-	}
-
-	/deep/ checkbox .uni-checkbox-input.uni-checkbox-input-checked {
-		@include main_bg_color(theme);
-		border: none !important;
-		color: #fff !important
-	}
-
-	/deep/ checkbox .wx-checkbox-input.wx-checkbox-input-checked {
-		@include main_bg_color(theme);
-		border: none !important;
-		color: #fff !important;
-		margin-right: 0 !important;
-	}
-
-	// 切换
-	/deep/.uni-date-x--border {
-		border: 0;
-	}
-
-	/deep/.uni-icons {
-		font-size: 0 !important;
-	}
-
-	/deep/.uni-date-x {
-		color: #999;
-		font-size: 15px;
-	}
-
-	/deep/.uni-date__x-input {
-		font-size: 15px;
-	}
-
-	/deep/uni-checkbox[disabled] .uni-checkbox-input {
-		background-color: #eee;
-	}
+		border-radius: 48rpx;
+		box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
+		background-color: #000;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		z-index: 9999;
 
-	.abs-lt .active-card {
-		&:after {
-			right: -67rpx;
+		.cart-img {
+			width: 50rpx;
+			height: 47rpx;
+			position: relative;
+			// margin-top: -48rpx;
 		}
-	}
 
-	.abs-rt .active-card {
-		&:after {
-			left: -67rpx;
-			-moz-transform: scaleX(-1);
-			-webkit-transform: scaleX(-1);
-			-o-transform: scaleX(-1);
-			transform: scaleX(-1);
+		.pay-btn {
+			height: 100%;
+			padding: 0 30rpx;
+			color: #FFFFFF;
+			border-radius: 0 50rpx 50rpx 0;
+			display: flex;
+			align-items: center;
+			font-size: $font-size-base;
 		}
-	}
 
-	.active-card {
-		&:after {
-			content: "";
-			width: 67rpx;
-			height: 76rpx;
-			background-image: url('../static/images/nav_circle_left.png');
-			background-size: contain;
-			background-repeat: no-repeat;
-			position: absolute;
-			bottom: 0;
-			z-index: 4;
+		.price {
+			flex: 1;
+			color: $text-color-base;
 		}
 	}
 
-	.line {
-		width: 680rpx;
-		margin: auto;
-		height: 3rpx;
-	}
-
-	.line image {
-		width: 100%;
-		height: 100%;
-		display: block;
-	}
-
-	.address {
-		background-color: #fff;
-		box-sizing: border-box;
-	}
 
-	.footer .transparent {
-		opacity: 0
-	}
-
-	.w-322 {
-		width: 322rpx;
-	}
-
-	.w-450 {
-		width: 450rpx;
-	}
-
-	.w-50p {
-		width: 50%;
-	}
-
-	.h-auto {
-		height: auto;
-	}
-
-	.bd-r-14 {
-		border-radius: 14rpx 14rpx 0 0  !important;
-	}
-	.mt30{
-		margin-top: 30rpx;
-	}
-	.bg-primary-light {
-		@include main_rgba_color(theme);
-	}
-
-	.rd-lt-24rpx {
-		border-radius: 24rpx 0 0 0;
-	}
-
-	.rd-rt-24rpx {
-		border-radius: 0 24rpx 0 0;
-	}
-
-	.z-2 {
-		z-index: 2;
-	}
-
-	.gold {
-		color: #DCA658;
-	}
-
-	.select-name {
-		max-width: 300rpx;
+	.item-con {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		font-weight: 500;
+		font-size: 21rpx;
+		color: #141414;
+		margin-bottom: 10rpx;
 	}
 
-	.font-color {
-		font-weight: 500 !important;
-	}
-	/deep/ .uni-popup__wrapper {
-		background: #FFFFFF;
-		border-radius: 32rpx;
-	}
-	.sh_popup-content {
-		padding: 40rpx;
-		.sh_popup_title {
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #333333;
-			text-align: center;
-		}
-	
-		.sh_popup_text {
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #666666;
-			text-align: center;
-			margin-top: 36rpx;
-		}
-	
-		.sh_popup_btn {
-			display: flex;
-			margin-top: 60rpx;
-			justify-content: space-between;
-			.btn {
-				width: 244rpx;
-				height: 72rpx;
-				border-radius: 50rpx;
-				text-align: center;
-				line-height: 72rpx;
-			}
-	
-			.no_btn {
-				@include coupons_border_color(theme);
-				color: $theme-color;
-				margin-right: 32rpx;
-			}
-	
-			.yes_btn {
-				@include main_bg_color(theme);
-				color: #FFFFFF;
-			}
-		}
+	.container {
+		overflow: hidden;
+		position: relative;
 	}
-</style>
+</style>

+ 47 - 21
mer_uniapp/pages/index/index.vue

@@ -44,15 +44,28 @@
 
 				<!-- 右侧文字轮播区域 -->
 				<view class="right-text-container">
-					<view class="text-list" :style="{ transform: `translateY(${offset}px)` }">
+					<swiper :indicator-dots="false" :autoplay="autoplay" interval="2500" :duration="500" vertical="true" circular="true">
+						<block v-for="(item,index) in messageList" :key='index'>
+							<swiper-item catchtouchmove='catchTouchMove'>
+								<view class='text acea-row row-between-wrapper'>
+									<view class='newsTitle'>
+										{{item.title}}
+									</view>
+									<!-- <view class='newsTitle' v-if="messageList.length = 0">
+										暂无
+									</view> -->
+								</view>
+							</swiper-item>
+						</block>
+					</swiper>
+					<!-- <view class="text-list" :style="{ transform: `translateY(${offset}px)` }">
 						<view class="text-item" v-for="(item, index) in messageList" :key="index">
 							{{ item.title }}
 						</view>
-						<!-- 复制第一条数据实现无缝轮播 -->
 						<view class="text-item" v-if="messageList.length > 0">
 							{{ messageList[0].title }}
 						</view>
-					</view>
+					</view> -->
 				</view>
 			</view>
 
@@ -83,23 +96,23 @@
 
 				<view class="tab-list">
 					<view class="tab-item">
-						<image class="tab-image" src="/static/img/img6.png" mode="widthFix"></image>
+						<image class="tab-image imgs" src="/static/img/img6.png" mode="widthFix"></image>
 						<text class="tab-text2">宵夜江湖</text>
 					</view>
 					<view class="tab-item">
-						<image class="tab-image" src="/static/img/img7.png" mode="widthFix"></image>
+						<image class="tab-image imgs" src="/static/img/img7.png" mode="widthFix"></image>
 						<text class="tab-text2">炸鸡汉堡</text>
 					</view>
 					<view class="tab-item">
-						<image class="tab-image" src="/static/img/img8.png" mode="widthFix"></image>
+						<image class="tab-image imgs" src="/static/img/img8.png" mode="widthFix"></image>
 						<text class="tab-text2">奶茶甜点</text>
 					</view>
 					<view class="tab-item">
-						<image class="tab-image" src="/static/img/img9.png" mode="widthFix"></image>
+						<image class="tab-image imgs" src="/static/img/img9.png" mode="widthFix"></image>
 						<text class="tab-text2">超市便利</text>
 					</view>
 					<view class="tab-item">
-						<image class="tab-image" src="/static/img/ic-random.png" mode="widthFix"></image>
+						<image class="tab-image imgs" src="/static/img/ic-random.png" mode="widthFix"></image>
 						<text class="tab-text" style="color: #FF9805;font-weight: 600; font-size: 27rpx;">今日吃啥</text>
 					</view>
 				</view>
@@ -146,8 +159,10 @@
 					@click="item2Click(item)">{{item.label}}</view>
 			</view>
 
-			<view class="content-goods2" v-for="item in merchantList" :key="item.id">
-				<image :src="item.pcLogo" style="width: 230rpx;height: 230rpx;"></image>
+			<view class="content-goods2" v-for="item in merchantList" :key="item.id" @click="merchantTab(item.id)">
+				<view>
+					<image :src="item.pcLogo" style="width: 230rpx;height: 230rpx;"></image>
+				</view>
 
 				<view style="margin-left: 20rpx;flex: 1;">
 					<view class="">
@@ -161,22 +176,21 @@
 						<text class="goods-info" style="margin-left: 25rpx;">人均 ¥ {{item.perCapita}}</text>
 					</view>
 
-					<view style="margin-top: 10rpx;">
-						<text class="goods-info">起送 ¥ {{item.freeDeliverFee}}</text>
-						<text v-if="!item.isfreeDeliverfee" class="goods-info"
-							style="color: #E5AD21;margin-left: 16rpx;">免配送费</text>
-						<text v-if="!item.isfreeDeliverfee" class="goods-info3">¥{{item.freeDeliverFee}}</text>
-						<text v-if="item.isfreeDeliverfee"
-							style="color: #999999;font-size: 21rpx;margin-left: 10rpx;">配送费¥ {{item.distCosts}}</text>
-						<text class="goods-info" style="margin-left: 38rpx;">{{item.deliverTime}}分钟</text>
+					<view style="margin-top: 10rpx;display: flex;align-items: center;">
+						<text class="goods-info">起送 ¥ {{item.perCapita}}</text>
+						<text v-if="!item.isfreeDeliverfee" class="goods-info" style="color: #E5AD21;margin-left: 18rpx;">免配送费</text>
+						<view v-if="!item.isfreeDeliverfee" style="color: #999999;font-size: 21rpx;margin-left: 10rpx;text-decoration: line-through;">¥
+							{{item.freeDeliverFee}}</view>
+						<text v-if="item.isfreeDeliverfee" style="color: #999999;font-size: 21rpx;margin-left: 10rpx;">配送费¥
+							{{item.distCosts}}</text>
+						<text class="goods-info" style="margin-left: 38rpx;">10分钟</text>
 						<text class="goods-info" style="margin-left: 10rpx;">{{item.distance}}</text>
 					</view>
 
-					<view style="margin-top: 24rpx;"><text class="goods-sales">已售卖{{item.salesVolume}}件</text></view>
+					<view style="margin-top: 22rpx;"><text class="goods-sales">已售卖{{item.salesVolume}}件</text></view>
 
 					<view style="margin-top: 14rpx;">
-						<text class="goods-labels" v-for="(item2,index2) in item.discountLabel"
-							:key="index2">{{item2}}</text>
+						<text class="goods-labels" v-for="(item2,index2) in item.discountLabel" :key="index2">{{item2}}</text>
 					</view>
 
 				</view>
@@ -333,6 +347,12 @@
 					return `${mins}分钟`;
 				}
 			},
+			merchantTab(id) {
+				uni.setStorageSync('merId', JSON.parse(JSON.stringify(id)))
+				uni.navigateTo({
+					url: '/pages/merchant/home/index'
+				})
+			}
 		},
 	}
 </script>
@@ -622,4 +642,10 @@
 		overflow: hidden;
 		text-overflow: ellipsis;
 	}
+	
+	.newsTitle {
+		font-size: 23rpx;
+		color: #646464;
+		margin-top: 2rpx;
+	}
 </style>

+ 301 - 0
mer_uniapp/pages/merchant/home/index-bak.vue

@@ -0,0 +1,301 @@
+<template>
+	<view id="home" :data-theme="theme">
+		<home-index v-if="tabActive == 0 && merId" :merId="merId" :diyId="diyId" :isScrolled="isScrolled"></home-index>
+		<coupon-and-classify v-if="tabActive >0 && merId" :tabActive="tabActive" :merId="merId"></coupon-and-classify>
+
+
+		<view class="footer">
+			<view v-for="(item, index) in tabs" :key="index" :class="{ active: tabActive === index }" class="item"
+				@click="handleChangetab(index)">
+				<view :class="['iconfont', item.icon]"></view>
+				<view>{{ item.name }}</view>
+			</view>
+			<view class="item" @click="handleCustomer">
+				<view class="iconfont icon-kefu_o"></view>
+				<view>联系客服</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import {
+		chatConfig
+	} from '@/utils/consumerType.js'
+	import tuiSkeleton from '@/components/base/tui-skeleton.vue';
+	import homeIndex from './components/homeIndex.vue';
+	import couponAndClassify from '../components/couponAndClassify/index.vue';
+	import {
+		getMerIndexInfoApi,
+	} from '@/api/merchant.js';
+	import {
+		getShare
+	} from '@/api/public.js';
+	import {
+		mapGetters
+	} from "vuex";
+	import {
+		silenceBindingSpread,
+	} from '@/utils/index.js';
+
+	const arrTemp = ["beforePay", "afterPay", "createBargain", "pink"];
+	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
+	let app = getApp();
+	export default {
+		computed: mapGetters(['isLogin', 'uid', 'globalData', 'bottomNavigationIsCustom']),
+		components: {
+			tuiSkeleton,
+			homeIndex,
+			couponAndClassify
+		},
+		data() {
+			return {
+				urlDomain: this.$Cache.get("imgHost"),
+				isNoCommodity: false,
+				isScrolled: false, //是否开始滚动
+				showSkeleton: true, //骨架屏显示隐藏
+				isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
+				statusBarHeight: statusBarHeight,
+				navIndex: 0, //判断首页显示内容,1显示分类页和商品,0首页
+				site_name: '', //首页title
+				configApi: {}, //分享类容配置
+				theme: app.globalData.theme,
+				imgHost: '', //图片域名地址
+				wxText: "点击添加到我的小程序,微信首页下拉即可访问商城。",
+				// #ifdef APP-PLUS || MP
+				isFixed: true,
+				// #endif
+				// #ifdef H5
+				isFixed: false,
+				// #endif
+				domOffsetTop: 50,
+				domHeight: 0,
+				styleConfig: [], //DIY数据
+				diyId: 0, //DIYID
+				homeCombData: {}, //组合组件数据
+				showHomeComb: false, //是否显示组合
+				showHeaderSerch: false, //是否显示搜索框
+				headerSerchCombData: {}, //搜索框对象
+				bgPic: '', //背景图片
+				bgTabVal: '', //背景图片样式
+				windowHeight: 0,
+				pageStyle: {},
+				isDefault: 1, //是否首页,1是,0不是
+
+				merchantInfo: {},
+				merId: 0,
+				// 底部菜单
+				tabs: [{
+						icon: 'icon-yizhan_o',
+						name: '首页',
+					},
+					{
+						icon: 'icon-yingyongAPP_o',
+						name: '分类'
+					},
+					{
+						icon: 'icon-huobiliu_o',
+						name: '领券'
+					}
+				],
+				tabActive: 0, // 底部切换
+			}
+		},
+		onLoad(options) {
+			if (options.hasOwnProperty('merId') || options.scene) {
+				if (options.scene) { // 仅仅小程序扫码进入
+					this.merId = this.globalData.merId ? this.globalData.merId : 0;
+				} else {
+					this.merId = options.merId ? parseInt(options.merId) : 0;
+				}
+			}
+			if (options.hasOwnProperty('id') || options.scene) {
+				if (options.scene) { // 仅仅小程序扫码进入
+					this.diyId = this.globalData.id ? this.globalData.id : 0;
+				} else {
+					this.diyId = options.id ? parseInt(options.id) : 0;
+				}
+			}
+			//分销码
+            if(options.sd) this.$store.commit('Change_Spread', options.sd);
+            this.getMerIndexInfo()
+			let that = this;
+			this.$nextTick(function() {
+				uni.getSystemInfo({
+					success: function(res) {
+						that.windowHeight = res.windowHeight;
+					}
+				});
+			})
+		},
+		// #ifdef MP
+		/**
+		 * 用户点击右上角分享到朋友圈
+		 */
+		onShareTimeline() {
+			return {
+				title: this.merchantInfo.name,
+				imageUrl: this.merchantInfo.avatar,
+        query: `merId=${this.merId}&sd=${this.uid}`
+			};
+		},
+		/**
+		 * 用户点击右上角分享
+		 */
+		onShareAppMessage() {
+			return {
+				title: this.merchantInfo.name,
+				imageUrl: this.merchantInfo.avatar,
+				path: `/pages/merchant/home/index?merId=${this.merId}&sd=${this.uid}`
+			};
+		},
+		// #endif
+		// 滚动监听
+		onPageScroll(e) {
+			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
+			uni.$emit('scroll');
+			if (e.scrollTop > this.domOffsetTop) {
+				this.isScrolled = true;
+			}
+			if (e.scrollTop < this.domOffsetTop) {
+				this.$nextTick(() => {
+					this.isScrolled = false;
+				});
+			}
+		},
+		methods: {
+			//客服跳转
+			handleCustomer: function() {
+				chatConfig(this.merchantInfo);
+			},
+			//商户信息
+			getMerIndexInfo() {
+				let that = this;
+				getMerIndexInfoApi(this.merId).then(res => {
+					this.merchantInfo = res.data
+					uni.setNavigationBarTitle({
+						title: res.data.name
+					})
+					this.$store.commit('MERCHANTJINFO', res.data);
+					this.skeletonShow = false;
+				}).catch(err => {
+					that.loading = false;
+					that.loadTitle = '加载更多';
+					this.skeletonShow = false;
+				});
+			},
+			//底部切换
+			handleChangetab(param) {
+				this.tabActive = param;
+			},
+
+			//清除骨架屏
+			reloadData() {
+				this.showSkeleton = false;
+			},
+			shareApi: function() {
+				getShare().then(res => {
+					this.$set(this, 'configApi', res.data);
+					this.$set(this, "site_name", res.data.title);
+					uni.setNavigationBarTitle({
+						title: this.site_name
+					})
+					// #ifdef H5
+					this.setOpenShare(res.data);
+					// #endif
+				})
+			},
+			// 微信分享;
+			setOpenShare: function(data) {
+				let that = this;
+				if (that.$wechat.isWeixin()) {
+					let configAppMessage = {
+						desc: data.synopsis,
+						title: data.title,
+						link: location.href,
+						imgUrl: data.img
+					};
+					that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
+						configAppMessage);
+				}
+			},
+			stopTouchMove() {
+				return true //禁止新闻swiper手动滑动
+			},
+			goDetail(item) {
+				goProductDetail(item.id, 0, '')
+			},
+		},
+		onShow() {
+			//分销绑定
+			silenceBindingSpread(this.isLogin, this.globalData.spread);
+		},
+		mounted() {
+			let query = uni.createSelectorQuery().in(this);
+			query.select("#home").boundingClientRect();
+			query.exec(res => {
+				this.domHeight = res[0].height;
+			})
+		},
+		onReachBottom() {
+			// this.$refs.recommendIndex.get_host_product();
+		}
+	}
+</script>
+<style>
+	page {
+		height: auto;
+		display: flex;
+		flex-direction: column;
+		height: 100%;
+		/* #ifdef H5 */
+		background-color: #fff;
+		/* #endif */
+
+	}
+</style>
+<style lang="scss" scoped>
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		z-index: 999;
+		display: flex;
+		width: 100%;
+		padding-top: 12rpx;
+		padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+
+		padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+
+		background-color: #FFFFFF;
+		opacity: 0.96;
+
+		.item {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			font-weight: 500;
+			font-size: 20rpx;
+			color: #282828;
+
+			.iconfont {
+				font-size: 43rpx !important;
+			}
+		}
+
+		.active {
+			@include main_color(theme);
+		}
+	}
+</style>

+ 1149 - 231
mer_uniapp/pages/merchant/home/index.vue

@@ -1,20 +1,119 @@
 <template>
-	<view id="home" :data-theme="theme">
-		<home-index v-if="tabActive == 0 && merId" :merId="merId" :diyId="diyId" :isScrolled="isScrolled"></home-index>
-		<coupon-and-classify v-if="tabActive >0 && merId" :tabActive="tabActive" :merId="merId"></coupon-and-classify>
-
-
-		<view class="footer">
-			<view v-for="(item, index) in tabs" :key="index" :class="{ active: tabActive === index }" class="item"
-				@click="handleChangetab(index)">
-				<view :class="['iconfont', item.icon]"></view>
-				<view>{{ item.name }}</view>
+	<view class="container" :style="{ height: winHeight+ 'px' }">
+		<!-- 状态栏高度 -->
+		<view :style="{ height: `${statusBarHeight}px` }"></view>
+		<!-- 导航栏 -->
+		<view :style="{ height: `${navigationBarHeight}rpx`,lineHeight: `${navigationBarHeight}rpx`}" class="order-nav">
+			<view class="back-button" @tap="handBack()"></view>
+			<text>吉阿婆麻辣烫</text>
+		</view>
+		<view class="main">
+			<view class="nav">
+				<view class="header">
+					<view class="left">
+						<view class="store-name">
+							<text style="font-weight: 600;font-size: 35rpx;color: #141414;">{{ merchanInfo.name }}</text>
+							<view class="iconfont iconarrow-right"></view>
+						</view>
+						<view class="store-score" style="margin: 7rpx 0;">
+							<text style="font-weight: 600;font-size: 27rpx;color: #FD6716;">{{ merchanInfo.starLevel }}分</text>
+							<text style="font-size: 21rpx;color: #999999;margin-left: 6rpx;">月销 {{ merchanInfo.sales || 0 }}</text>
+						</view>
+						<view class="store-addr">
+							<text style="font-size: 23rpx;color: #141414;">商家地址:{{ merchanInfo.addressDetail }}</text>
+						</view>
+						<view class="store-tip" style="padding: 10rpx 30rpx 10rpx 15px ;height: 48rpx;">
+							<swiper :indicator-dots="false" :autoplay="true" interval="2500" :duration="500" vertical="true" circular="true">
+								<block v-for="(item,index) in merchanInfo.headline" :key='index'>
+									<swiper-item catchtouchmove='catchTouchMove'>
+										<view class='text acea-row row-between-wrapper'>
+											<view class='newsTitle'>
+												<text class='iconfont icon-laba ' style="font-size: 24rpx;margin-right: 10rpx;"></text>
+												<text>{{item.title}}</text>
+											</view>
+										</view>
+									</swiper-item>
+								</block>
+							</swiper>
+						</view>
+					</view>
+				</view>
 			</view>
-			<view class="item" @click="handleCustomer">
-				<view class="iconfont icon-kefu_o"></view>
-				<view>联系客服</view>
+			<view style="width: 100%;height: 10rpx; background-color: #F8F9FD;"></view>
+		</view>
+		<view class="content">
+			<scroll-view style="height: 950rpx" class="menus" scroll-with-animation scroll-y>
+				<view class="wrapper">
+					<view class="menu" :id="`menu-${item.id}`" :class="{'current': item.id === currentCateId}" v-for="(item, index) in goods"
+					 :key="index" @tap="handleMenuTap(item.id)">
+						<text>{{ item.name }}</text>
+						<view class="dot" v-show="menuCartNum(item.id)">{{ menuCartNum(item.id) }}</view>
+					</view>
+				</view>
+			</scroll-view>
+			<!-- goods list begin -->
+			<scroll-view class="goods" scroll-with-animation scroll-y :scroll-top="cateScrollTop" @scroll="handleGoodsScroll"
+			 @scrolltolower="handleFoot" :scroll-into-view="menuScrollIntoView">
+				<view class="wrapper">
+					<view class="list">
+						<!-- category begin -->
+						<view style="font-weight: 400;font-size: 21rpx;color: #999999;text-align: center;margin-bottom: 19rpx;">————温馨提示:湿度选择,避免浪费
+							————</view>
+						<view class="category" v-for="(item, index) in goods" :key="index" :id="`cate-${item.id}`">
+							<view class="items">
+								<!-- 商品 begin -->
+								<!-- <view v-if="!item.goodsList">无商品</view> -->
+								<view class="good" v-for="(good, key) in item.goodsList" :key="key">
+									<image :src="good.image" class="image" @tap="console.log('点击图片')"></image>
+									<view class="right">
+										<text class="name">{{ good.name }}</text>
+										<text class="tips">{{ good.content }}</text>
+										<view class="price_and_action">
+											<text class="price">¥{{ good.otPrice }}</text>
+											<view class="btn-group" v-if="good.use_property">
+												<button type="primary" class="btn property_btn bg-color" hover-class="none" size="mini" @tap="console.log('选规格')">
+													选规格
+												</button>
+												<view class="dot" v-show="goodCartNum(good.id)">{{ goodCartNum(good.id) }}</view>
+											</view>
+											<view class="btn-group" v-else>
+												<button type="default" v-show="goodCartNum(good.id)" plain class="btn reduce_btn" size="mini" hover-class="none"
+												 @tap="handleReduceFromCart(item, good)">
+													<view class="iconfont iconsami-select">-</view>
+												</button>
+												<view class="number" v-show="goodCartNum(good.id)">{{ goodCartNum(good.id) }}</view>
+												<button type="primary" class="btn add_btn bg-color" size="min" hover-class="none" @tap="handleAddToCart(item, good, 1)">
+													<view class="iconfont iconadd-select">+</view>
+												</button>
+											</view>
+										</view>
+									</view>
+								</view>
+								<!-- 商品 end -->
+							</view>
+						</view>
+						<!-- category end -->
+					</view>
+				</view>
+			</scroll-view>
+			<!-- goods list end -->
+		</view>
+		<!-- content end -->
+
+		<!-- 购物车栏 begin -->
+		<view class="cart-box" style="bottom: 77rpx">
+			<view class="mark">
+				<image src="/static/img/ic-security-settings.png" class="cart-img" @tap=""></image>
+				<view class="tag" v-if="cart.length > 0">{{ getCartGoodsNumber }}</view>
 			</view>
+			<view style="font-weight: 500;font-size: 27rpx;color: #999999;" class="price" v-if="cart.length === 0">配送费2元</view>
+			<view style="font-weight: 600;font-size: 27rpx;color: #FFFFFF;" class="price" v-else>¥{{ getCartGoodsPrice || 0 }}</view>
+			<button :style="{backgroundColor: disabledPay ? '#000' : ''}" type="primary" class="pay-btn bg-color" @tap="toPay"
+			 :disabled="disabledPay">
+				{{ disabledPay ? `差${spread}元起送` : '去结算' }}
+			</button>
 		</view>
+		<!-- 购物车栏 end -->
 	</view>
 </template>
 
@@ -29,273 +128,1092 @@
 	// | Author: CRMEB Team <admin@crmeb.com>
 	// +----------------------------------------------------------------------
 	import {
-		chatConfig
-	} from '@/utils/consumerType.js'
-	import tuiSkeleton from '@/components/base/tui-skeleton.vue';
-	import homeIndex from './components/homeIndex.vue';
-	import couponAndClassify from '../components/couponAndClassify/index.vue';
-	import {
-		getMerIndexInfoApi,
+		getCategoryCacheTree,
+		getMerchantInfo,
+		getMerchantProList
 	} from '@/api/merchant.js';
-	import {
-		getShare
-	} from '@/api/public.js';
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		silenceBindingSpread,
-	} from '@/utils/index.js';
-
-	const arrTemp = ["beforePay", "afterPay", "createBargain", "pink"];
-	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
 	let app = getApp();
+	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'rpx';
 	export default {
-		computed: mapGetters(['isLogin', 'uid', 'globalData', 'bottomNavigationIsCustom']),
-		components: {
-			tuiSkeleton,
-			homeIndex,
-			couponAndClassify
-		},
 		data() {
 			return {
-				urlDomain: this.$Cache.get("imgHost"),
-				isNoCommodity: false,
-				isScrolled: false, //是否开始滚动
-				showSkeleton: true, //骨架屏显示隐藏
-				isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
-				statusBarHeight: statusBarHeight,
-				navIndex: 0, //判断首页显示内容,1显示分类页和商品,0首页
-				site_name: '', //首页title
-				configApi: {}, //分享类容配置
-				theme: app.globalData.theme,
-				imgHost: '', //图片域名地址
-				wxText: "点击添加到我的小程序,微信首页下拉即可访问商城。",
-				// #ifdef APP-PLUS || MP
-				isFixed: true,
-				// #endif
-				// #ifdef H5
-				isFixed: false,
-				// #endif
-				domOffsetTop: 50,
-				domHeight: 0,
-				styleConfig: [], //DIY数据
-				diyId: 0, //DIYID
-				homeCombData: {}, //组合组件数据
-				showHomeComb: false, //是否显示组合
-				showHeaderSerch: false, //是否显示搜索框
-				headerSerchCombData: {}, //搜索框对象
-				bgPic: '', //背景图片
-				bgTabVal: '', //背景图片样式
-				windowHeight: 0,
-				pageStyle: {},
-				isDefault: 1, //是否首页,1是,0不是
-
-				merchantInfo: {},
 				merId: 0,
-				// 底部菜单
-				tabs: [{
-						icon: 'icon-yizhan_o',
-						name: '首页',
-					},
-					{
-						icon: 'icon-yingyongAPP_o',
-						name: '分类'
-					},
-					{
-						icon: 'icon-huobiliu_o',
-						name: '领券'
-					}
-				],
-				tabActive: 0, // 底部切换
+				winHeight: 0,
+				merchanInfo: {},
+				statusBarHeight: app.globalData.statusBarHeight,
+				navigationBarHeight: 112,
+				goods: [], //所有商品
+				loading: true,
+				currentCateId: 1, //默认分类
+				cateScrollTop: 0,
+				lastScrollTop: 0,
+				menuScrollIntoView: '',
+				cart: [], //购物车
+				goodDetailModalVisible: false, //是否饮品详情模态框
+				good: {}, //当前饮品
+				category: {}, //当前饮品所在分类
+				cartPopupVisible: false,
+				sizeCalcState: false,
+				orderType: 'takeout',
+				store: {
+					min_price: 8
+				}
 			}
 		},
 		onLoad(options) {
-			if (options.hasOwnProperty('merId') || options.scene) {
-				if (options.scene) { // 仅仅小程序扫码进入
-					this.merId = this.globalData.merId ? this.globalData.merId : 0;
-				} else {
-					this.merId = options.merId ? parseInt(options.merId) : 0;
-				}
-			}
-			if (options.hasOwnProperty('id') || options.scene) {
-				if (options.scene) { // 仅仅小程序扫码进入
-					this.diyId = this.globalData.id ? this.globalData.id : 0;
-				} else {
-					this.diyId = options.id ? parseInt(options.id) : 0;
-				}
-			}
-			//分销码
-            if(options.sd) this.$store.commit('Change_Spread', options.sd);
-            this.getMerIndexInfo()
 			let that = this;
-			this.$nextTick(function() {
-				uni.getSystemInfo({
-					success: function(res) {
-						that.windowHeight = res.windowHeight;
+			uni.getSystemInfo({
+				success: function(res) {
+					that.winHeight = res.windowHeight
+				},
+			});
+			this.merId = uni.getStorageSync('merId')
+			//首页数据加载
+			// 获取商家信息
+			getMerchantInfo(this.merId).then(res => {
+				this.merchanInfo = res.data
+			});
+			// 获取商品列表
+			getCategoryCacheTree(this.merId).then(res => {
+				this.goods = res.data.map(item => {
+					return {
+						id: item.id,
+						name: item.name
 					}
-				});
+				})
+				this.goods.unshift({
+					id: 9999,
+					name: '推荐'
+				})
+				this.currentCateId = this.goods[0].id
 			})
+			// this.getIndexConfig();
+			// #ifdef MP-WEIXIN
+			// 获取微信胶囊的位置信息 width,height,top,right,left,bottom
+			const custom = wx.getMenuButtonBoundingClientRect()
+			// 导航栏高度(标题栏高度) = 胶囊高度 + (顶部距离 - 状态栏高度) * 2
+			// this.navigationBarHeight = custom.height + (custom.top - this.statusBarHeight) * 2
+			// console.log("导航栏高度:"+this.globalData.navigationBarHeight)
+			// #endif
+
 		},
-		// #ifdef MP
-		/**
-		 * 用户点击右上角分享到朋友圈
-		 */
-		onShareTimeline() {
-			return {
-				title: this.merchantInfo.name,
-				imageUrl: this.merchantInfo.avatar,
-        query: `merId=${this.merId}&sd=${this.uid}`
-			};
-		},
-		/**
-		 * 用户点击右上角分享
-		 */
-		onShareAppMessage() {
-			return {
-				title: this.merchantInfo.name,
-				imageUrl: this.merchantInfo.avatar,
-				path: `/pages/merchant/home/index?merId=${this.merId}&sd=${this.uid}`
-			};
-		},
-		// #endif
-		// 滚动监听
-		onPageScroll(e) {
-			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
-			uni.$emit('scroll');
-			if (e.scrollTop > this.domOffsetTop) {
-				this.isScrolled = true;
+		computed: {
+			goodCartNum() { //计算单个饮品添加到购物车的数量
+				return (id) => this.cart.reduce((acc, cur) => {
+					if (cur.id === id) {
+						return acc += cur.number
+					}
+					return acc
+				}, 0)
+			},
+			menuCartNum() {
+				return (id) => this.cart.reduce((acc, cur) => {
+					if (cur.cate_id === id) {
+						return acc += cur.number
+					}
+					return acc
+				}, 0)
+			},
+			getCartGoodsNumber() { //计算购物车总数
+				return this.cart.reduce((acc, cur) => acc + cur.number, 0)
+			},
+			getCartGoodsPrice() { //计算购物车总价
+				return this.cart.reduce((acc, cur) => acc + cur.number * cur.price, 0)
+			},
+			disabledPay() { //是否达到起送价
+				return this.orderType == 'takeout' && (this.getCartGoodsPrice < this.store.min_price) ? true : false
+			},
+			spread() { //差多少元起送
+				if (this.orderType != 'takeout') return
+				return parseFloat((this.store.min_price - this.getCartGoodsPrice).toFixed(2))
 			}
-			if (e.scrollTop < this.domOffsetTop) {
-				this.$nextTick(() => {
-					this.isScrolled = false;
-				});
+		},
+		watch: {
+			currentCateId(newId, oldId) {
+				console.log(11111111111111111111)
+				// 获取商品
+				if (this.goods.length > 0) {
+					getMerchantProList(newId, this.merId, 1, 999).then(res => {
+						this.goods = this.goods.map(item => {
+							if (item.id === newId) {
+								item.goodsList = res.data.list
+							}
+							return {
+								...item
+							}
+						})
+					})
+				}
 			}
 		},
 		methods: {
-			//客服跳转
-			handleCustomer: function() {
-				chatConfig(this.merchantInfo);
+			handBack() {
+				uni.navigateBack({
+					delta: 1
+				})
 			},
-			//商户信息
-			getMerIndexInfo() {
-				let that = this;
-				getMerIndexInfoApi(this.merId).then(res => {
-					this.merchantInfo = res.data
-					uni.setNavigationBarTitle({
-						title: res.data.name
-					})
-					this.$store.commit('MERCHANTJINFO', res.data);
-					this.skeletonShow = false;
-				}).catch(err => {
-					that.loading = false;
-					that.loadTitle = '加载更多';
-					this.skeletonShow = false;
-				});
+			handleMenuTap(id) { //点击菜单项事件
+				this.menuScrollIntoView = `cate-${id}`
+				if (!this.sizeCalcState) {
+					this.calcSize()
+				}
+				this.goods.forEach(item => {
+					if (item.id !== this.currentCateId) {
+						this.currentCateId = item.id    		// 点击左列获取前列表全部数据
+					}
+				})
+
+				this.$nextTick(() => this.cateScrollTop = this.goods.find(item => item.id == id).top)
 			},
-			//底部切换
-			handleChangetab(param) {
-				this.tabActive = param;
+			handleGoodsScroll({
+				detail
+			}) { //商品列表滚动事件
+				if (!this.sizeCalcState) {
+					this.calcSize()
+				}
+				const {
+					scrollTop
+				} = detail
+				let tabs = this.goods.filter(item => item.top <= scrollTop).reverse()
+				if (tabs.length > 0) {
+					this.currentCateId = tabs[0].id
+				}
 			},
+			handleFoot($event) {
+				const nextItems = this.findNextAll(this.goods, item => item.id === this.currentCateId);
+				if (nextItems.id) {
+					this.currentCateId = nextItems.id
+				}
+			},
+			findNextAll(arr, condition) {
+				const index = arr.findIndex(condition);
+				if (index !== -1) {
+					return arr[index + 1] || {}; // 返回符合条件之后的记录
+				}
+				return {}; // 如果没有找到符合条件的记录,返回空对象
+			},
+			calcSize() {
+				let h = 10
 
-			//清除骨架屏
-			reloadData() {
-				this.showSkeleton = false;
+				this.goods.forEach(item => {
+					let view = uni.createSelectorQuery().select(`#cate-${item.id}`)
+					view.fields({
+						size: true
+					}, data => {
+						// if (data.goodsList) {
+							item.top = h
+							h += data.height
+							item.bottom = h
+						// }
+					}).exec()
+				})
+				this.sizeCalcState = true
 			},
-			shareApi: function() {
-				getShare().then(res => {
-					this.$set(this, 'configApi', res.data);
-					this.$set(this, "site_name", res.data.title);
-					uni.setNavigationBarTitle({
-						title: this.site_name
-					})
-					// #ifdef H5
-					this.setOpenShare(res.data);
-					// #endif
+			showGoodDetailModal(item, good) {
+				this.good = JSON.parse(JSON.stringify({ ...good,
+					number: 1
+				}))
+				this.category = JSON.parse(JSON.stringify(item))
+				this.goodDetailModalVisible = true
+			},
+			handlePropertyAdd() {
+				this.good.number += 1
+			},
+			handlePropertyReduce() {
+				if (this.good.number === 1) return
+				this.good.number -= 1
+			},
+			handleAddToCartInModal() {
+				const product = Object.assign({}, this.good, {
+					props_text: this.getGoodSelectedProps(this.good),
+					props: this.getGoodSelectedProps(this.good, 'id')
 				})
+				this.handleAddToCart(this.category, product, this.good.number)
+				this.closeGoodDetailModal()
 			},
-			// 微信分享;
-			setOpenShare: function(data) {
-				let that = this;
-				if (that.$wechat.isWeixin()) {
-					let configAppMessage = {
-						desc: data.synopsis,
-						title: data.title,
-						link: location.href,
-						imgUrl: data.img
-					};
-					that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
-						configAppMessage);
+			getGoodSelectedProps(good, type = 'text') { //计算当前饮品所选属性
+				if (good.use_property) {
+					let props = []
+					good.property.forEach(({
+						values
+					}) => {
+						values.forEach(value => {
+							if (value.is_default) {
+								props.push(type === 'text' ? value.value : value.id)
+							}
+						})
+					})
+					return type === 'text' ? props.join(',') : props
 				}
+				return ''
 			},
-			stopTouchMove() {
-				return true //禁止新闻swiper手动滑动
+			handleReduceFromCart(item, good) {
+				const index = this.cart.findIndex(item => item.id === good.id)
+				this.cart[index].number -= 1
+				if (this.cart[index].number <= 0) {
+					this.cart.splice(index, 1)
+				}
 			},
-			goDetail(item) {
-				goProductDetail(item.id, 0, '')
+			handleAddToCart(cate, good, num) { //添加到购物车
+				const index = this.cart.findIndex(item => {
+					if (good.use_property) {
+						return (item.id === good.id) && (item.props_text === good.props_text)
+					} else {
+						return item.id === good.id
+					}
+				})
+				if (index > -1) {
+					this.cart[index].number += num
+				} else {
+					this.cart.push({
+						id: good.id,
+						cate_id: cate.id,
+						name: good.name,
+						price: good.price,
+						number: num,
+						image: good.images,
+						use_property: good.use_property,
+						props_text: good.props_text,
+						props: good.props
+					})
+				}
 			},
-		},
-		onShow() {
-			//分销绑定
-			silenceBindingSpread(this.isLogin, this.globalData.spread);
-		},
-		mounted() {
-			let query = uni.createSelectorQuery().in(this);
-			query.select("#home").boundingClientRect();
-			query.exec(res => {
-				this.domHeight = res[0].height;
-			})
-		},
-		onReachBottom() {
-			// this.$refs.recommendIndex.get_host_product();
+			toPay() {
+				// if(!this.isLogin) {
+				// 	uni.navigateTo({url: '/pages/login/login'})
+				// 	return
+				// }
+
+				uni.showLoading({
+					title: '加载中'
+				})
+				uni.setStorageSync('cart', JSON.parse(JSON.stringify(this.cart)))
+
+				uni.navigateTo({
+					url: '/pages/goods/order_confirm/index'
+				})
+				uni.hideLoading()
+			}
 		}
 	}
 </script>
-<style>
+<style lang="scss" scoped>
+	/* #ifdef H5 */
 	page {
-		height: auto;
+		min-height: 100%;
+	}
+
+	/* #endif */
+
+	.bg-color {
+		background-color: $bg-color-primary;
+	}
+
+	.order-nav {
+		// height: 111rpx;
+		position: relative;
+		background-color: #FF6702;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+
+		.back-button {
+			position: absolute;
+			left: 20rpx;
+		}
+
+		text {
+			font-weight: 500;
+			font-size: 35rpx;
+			color: #FFFFFF;
+		}
+	}
+
+	.container {
 		display: flex;
 		flex-direction: column;
+		overflow: hidden;
+		position: relative;
+	}
+
+	.loading {
+		width: 100%;
 		height: 100%;
-		/* #ifdef H5 */
-		background-color: #fff;
-		/* #endif */
+		display: flex;
+		align-items: center;
+		justify-content: center;
 
+		image {
+			width: 260rpx;
+			height: 260rpx;
+			position: relative;
+			margin-top: -200rpx;
+			/* #ifdef h5 */
+			margin-top: 0;
+			/* #endif */
+		}
 	}
-</style>
-<style lang="scss" scoped>
-	.footer {
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		z-index: 999;
+
+	.stores {
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+		margin-bottom: -40rpx;
+
+		.store {
+			width: 100%;
+			background-color: $bg-color-grey;
+			padding: 20rpx;
+			display: flex;
+			align-items: center;
+			margin-bottom: 20rpx;
+			border-radius: 6rpx;
+
+			.iconfont {
+				font-size: 50rpx;
+				margin-right: 15rpx;
+
+				&.iconradio-button-off {
+					color: $text-color-assist;
+				}
+
+				&.iconradio-button-on {
+					color: $color-primary;
+				}
+			}
+
+			.infos {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+				color: $text-color-base;
+				overflow: hidden;
+
+				.name_and_distance {
+					width: 100%;
+					display: flex;
+					justify-content: space-between;
+					margin-bottom: 10rpx;
+					overflow: hidden;
+
+					.name {
+						flex: 1;
+						flex-shrink: 0;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+						font-size: $font-size-lg;
+					}
+
+					.distance {
+						flex-shrink: 0;
+						font-size: $font-size-lg;
+						font-weight: bold;
+						margin-left: 20rpx;
+					}
+				}
+
+				.street {
+					color: $text-color-assist;
+					font-size: $font-size-sm;
+				}
+			}
+		}
+	}
+
+	.main {
+		overflow: hidden;
+		width: 100%;
 		display: flex;
+		flex-direction: column;
+	}
+
+	.nav {
 		width: 100%;
-		padding-top: 12rpx;
-		padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+		flex-shrink: 0;
+		display: flex;
+		flex-direction: column;
+		border-radius: 23rpx;
+		padding: 19rpx 57rpx 38rpx 58rpx;
+		background-color: #ffffff;
+
+		.header {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.left {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+
+				.store-name {
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					font-size: $font-size-lg;
+					margin-bottom: 10rpx;
+
+					.iconfont {
+						margin-left: 10rpx;
+						line-height: 100%;
+					}
+				}
+
+				.store-tip {
+					font-weight: 400;
+					font-size: 21rpx;
+					color: #858687;
+					margin-top: 10rpx;
+					background: #F8F9FB;
+					border-radius: 4rpx;
+				}
+			}
+
+			.right {
+				background-color: $bg-color-grey;
+				border-radius: 38rpx;
+				display: flex;
+				align-items: center;
+				font-size: $font-size-sm;
+				padding: 0 38rpx;
+				color: $text-color-assist;
+
+				.dinein,
+				.takeout {
+					position: relative;
+					display: flex;
+					align-items: center;
+
+					&.active {
+						padding: 14rpx 38rpx;
+						color: #ffffff;
+						background-color: $color-primary;
+						border-radius: 38rpx;
+					}
+				}
 
-		padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+				.takeout {
+					margin-left: 20rpx;
+					height: 100%;
+					flex: 1;
+					padding: 14rpx 0;
+				}
 
-		background-color: #FFFFFF;
-		opacity: 0.96;
+				.dinein.active {
+					margin-left: -38rpx;
+				}
 
-		.item {
+				.takeout.active {
+					margin-right: -38rpx;
+				}
+			}
+		}
+
+		.coupon {
 			flex: 1;
+			width: 100%;
+			background-color: $bg-color-primary;
+			font-size: $font-size-base;
+			color: $color-primary;
+			padding: 0 20rpx;
 			display: flex;
-			flex-direction: column;
-			justify-content: center;
 			align-items: center;
-			font-weight: 500;
-			font-size: 20rpx;
-			color: #282828;
+			overflow: hidden;
+
+			.title {
+				flex: 1;
+				margin-left: 10rpx;
+				overflow: hidden;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+			}
 
 			.iconfont {
-				font-size: 43rpx !important;
+				line-height: 100%;
+			}
+		}
+	}
+
+	.content {
+		flex: 1;
+		overflow: hidden;
+		width: 100%;
+		display: flex;
+		border-radius: 23rpx 23rpx 0rpx 0rpx;
+
+		.menus {
+			width: 200rpx;
+			height: 100%;
+			overflow: hidden;
+			background-color: $bg-color-grey;
+
+			.wrapper {
+				width: 100%;
+				height: 100%;
+
+				.menu {
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					padding: 30rpx 20rpx;
+					font-size: 26rpx;
+					color: $text-color-assist;
+					position: relative;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+
+					&:nth-last-child(1) {
+						margin-bottom: 230rpx;
+					}
+
+					&.current {
+						background-color: #ffffff;
+						color: $text-color-base;
+					}
+
+					.dot {
+						position: absolute;
+						width: 34rpx;
+						height: 34rpx;
+						line-height: 34rpx;
+						font-size: 22rpx;
+						background-color: $bg-color-primary;
+						color: #ffffff;
+						top: 16rpx;
+						right: 10rpx;
+						border-radius: 100%;
+						text-align: center;
+					}
+				}
+			}
+		}
+
+		.goods {
+			flex: 1;
+			height: 100%;
+			overflow: hidden;
+			background-color: #ffffff;
+
+			.wrapper {
+				width: 100%;
+				height: 100%;
+				padding: 20rpx;
+
+				.ads {
+					height: calc(300 / 550 * 510rpx);
+
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 8rpx;
+					}
+				}
+
+				.list {
+					width: 100%;
+					font-size: $font-size-base;
+					padding-bottom: 800rpx;
+
+					.category {
+						width: 100%;
+
+						.title {
+							padding: 30rpx 0;
+							display: flex;
+							align-items: center;
+							color: $text-color-base;
+
+							.icon {
+								width: 38rpx;
+								height: 38rpx;
+								margin-left: 10rpx;
+							}
+						}
+					}
+
+					.items {
+						display: flex;
+						flex-direction: column;
+						padding-bottom: -30rpx;
+
+						.good {
+							display: flex;
+							align-items: center;
+							margin-bottom: 30rpx;
+
+							.image {
+								width: 160rpx;
+								height: 160rpx;
+								margin-right: 20rpx;
+								border-radius: 8rpx;
+							}
+
+							.right {
+								flex: 1;
+								// height: 160rpx;
+								overflow: hidden;
+								display: flex;
+								flex-direction: column;
+								align-items: flex-start;
+								justify-content: space-between;
+								padding-right: 14rpx;
+
+								.name {
+									font-size: $font-size-base;
+									margin-bottom: 10rpx;
+								}
+
+								.tips {
+									width: 100%;
+									height: 40rpx;
+									line-height: 40rpx;
+									overflow: hidden;
+									text-overflow: ellipsis;
+									white-space: nowrap;
+									font-size: $font-size-sm;
+									color: $text-color-assist;
+									margin-bottom: 10rpx;
+								}
+
+								.price_and_action {
+									width: 100%;
+									display: flex;
+									justify-content: space-between;
+									align-items: center;
+
+									.price {
+										font-size: $font-size-base;
+										font-weight: 600;
+									}
+
+									.btn-group {
+										display: flex;
+										justify-content: space-between;
+										align-items: center;
+										position: relative;
+
+										.btn {
+											padding: 0 20rpx;
+											box-sizing: border-box;
+											font-size: $font-size-sm;
+											height: 44rpx;
+											line-height: 44rpx;
+
+											&.property_btn {
+												border-radius: 24rpx;
+											}
+
+											&.add_btn,
+											&.reduce_btn {
+												padding: 0;
+												width: 44rpx;
+												border-radius: 44rpx;
+											}
+										}
+
+										.dot {
+											position: absolute;
+											background-color: #ffffff;
+											border: 1px solid $bg-color-primary;
+											color: $bg-color-primary;
+											font-size: $font-size-sm;
+											width: 36rpx;
+											height: 36rpx;
+											line-height: 36rpx;
+											text-align: center;
+											border-radius: 100%;
+											right: -12rpx;
+											top: -10rpx;
+										}
+
+										.number {
+											width: 44rpx;
+											height: 44rpx;
+											line-height: 44rpx;
+											text-align: center;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.modal-box {
+		max-height: 90vh;
+	}
+
+	.good-detail-modal {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+
+		.cover {
+			height: 320rpx;
+			padding: 30rpx 0;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			position: relative;
+
+			.image {
+				width: 260rpx;
+				height: 260rpx;
+			}
+
+			.btn-group {
+				position: absolute;
+				right: 10rpx;
+				top: 30rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-around;
+
+				image {
+					width: 80rpx;
+					height: 80rpx;
+				}
+			}
+		}
+
+		.detail {
+			width: 100%;
+			min-height: 1vh;
+			max-height: calc(90vh - 320rpx - 80rpx - 120rpx);
+
+			.wrapper {
+				width: 100%;
+				height: 100%;
+				overflow: hidden;
+
+				.basic {
+					padding: 0 20rpx 30rpx;
+					display: flex;
+					flex-direction: column;
+
+					.name {
+						font-size: $font-size-base;
+						color: $text-color-base;
+						margin-bottom: 10rpx;
+					}
+
+					.tips {
+						font-size: $font-size-sm;
+						color: $text-color-grey;
+					}
+				}
+
+				.properties {
+					width: 100%;
+					border-top: 2rpx solid $bg-color-grey;
+					padding: 10rpx 30rpx 0;
+					display: flex;
+					flex-direction: column;
+
+					.property {
+						width: 100%;
+						display: flex;
+						flex-direction: column;
+						margin-bottom: 30rpx;
+						padding-bottom: -16rpx;
+
+						.title {
+							width: 100%;
+							display: flex;
+							justify-content: flex-start;
+							align-items: center;
+							margin-bottom: 20rpx;
+
+							.name {
+								font-size: 26rpx;
+								color: $text-color-base;
+								margin-right: 20rpx;
+							}
+
+							.desc {
+								flex: 1;
+								font-size: $font-size-sm;
+								color: $color-primary;
+								overflow: hidden;
+								text-overflow: ellipsis;
+								white-space: nowrap;
+							}
+						}
+
+						.values {
+							width: 100%;
+							display: flex;
+							flex-wrap: wrap;
+
+							.value {
+								border-radius: 8rpx;
+								background-color: $bg-color-grey;
+								padding: 16rpx 30rpx;
+								font-size: 26rpx;
+								color: $text-color-assist;
+								margin-right: 16rpx;
+								margin-bottom: 16rpx;
+
+								&.default {
+									background-color: $color-primary;
+									color: $text-color-white;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.action {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			background-color: $bg-color-grey;
+			height: 120rpx;
+			padding: 0 26rpx;
+
+			.left {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+				justify-content: center;
+				margin-right: 20rpx;
+				overflow: hidden;
+
+				.price {
+					font-size: $font-size-lg;
+					color: $text-color-base;
+				}
+
+				.props {
+					color: $text-color-assist;
+					font-size: 24rpx;
+					width: 100%;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+				}
+			}
+
+			.btn-group {
+				display: flex;
+				align-items: center;
+				justify-content: space-around;
+
+				.number {
+					font-size: $font-size-base;
+					width: 44rpx;
+					height: 44rpx;
+					line-height: 44rpx;
+					text-align: center;
+				}
+
+				.btn {
+					padding: 0;
+					font-size: $font-size-base;
+					width: 44rpx;
+					height: 44rpx;
+					line-height: 44rpx;
+					border-radius: 100%;
+				}
+			}
+		}
+
+		.add-to-cart-btn {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			background-color: $color-primary;
+			color: $text-color-white;
+			font-size: $font-size-base;
+			height: 80rpx;
+			border-radius: 0 0 12rpx 12rpx;
+		}
+	}
+
+	.cart-box {
+		position: absolute;
+		// bottom: 30rpx;
+		left: 30rpx;
+		right: 30rpx;
+		height: 96rpx;
+		border-radius: 48rpx;
+		box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
+		background-color: #000;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		z-index: 9999;
+
+		.cart-img {
+			width: 50rpx;
+			height: 47rpx;
+			position: relative;
+			// margin-top: -48rpx;
+		}
+
+		.pay-btn {
+			height: 100%;
+			padding: 0 30rpx;
+			color: #FFFFFF;
+			border-radius: 0 50rpx 50rpx 0;
+			display: flex;
+			align-items: center;
+			font-size: $font-size-base;
+		}
+
+		.mark {
+			padding-left: 46rpx;
+			margin-right: 30rpx;
+			position: relative;
+
+			.tag {
+				background-color: $color-warning;
+				color: $text-color-white;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				font-size: $font-size-sm;
+				position: absolute;
+				right: -13rpx;
+				top: -20rpx;
+				border-radius: 100%;
+				padding: 4rpx;
+				width: 27rpx;
+				height: 27rpx;
+				opacity: .9;
 			}
 		}
 
-		.active {
-			@include main_color(theme);
+		.price {
+			flex: 1;
+			color: $text-color-base;
+		}
+	}
+
+	.cart-popup {
+		.top {
+			background-color: $bg-color-primary;
+			color: $color-primary;
+			padding: 10rpx 30rpx;
+			font-size: 24rpx;
+			text-align: right;
+		}
+
+		.cart-list {
+			background-color: #FFFFFF;
+			width: 100%;
+			overflow: hidden;
+			min-height: 1vh;
+			max-height: 60vh;
+
+			.wrapper {
+				height: 100%;
+				display: flex;
+				flex-direction: column;
+				padding: 0 30rpx;
+				margin-bottom: 156rpx;
+
+				.item {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					padding: 30rpx 0;
+					position: relative;
+
+					&::after {
+						content: ' ';
+						position: absolute;
+						bottom: 0;
+						left: 0;
+						width: 100%;
+						background-color: $border-color;
+						height: 2rpx;
+						transform: scaleY(.6);
+					}
+
+					.left {
+						flex: 1;
+						display: flex;
+						flex-direction: column;
+						overflow: hidden;
+						margin-right: 30rpx;
+
+						.name {
+							font-size: $font-size-sm;
+							color: $text-color-base;
+						}
+
+						.props {
+							color: $text-color-assist;
+							font-size: 24rpx;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							white-space: nowrap;
+						}
+					}
+
+					.center {
+						margin-right: 120rpx;
+						font-size: $font-size-base;
+					}
+
+					.right {
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+
+						.btn {
+							width: 46rpx;
+							height: 46rpx;
+							border-radius: 100%;
+							padding: 0;
+							text-align: center;
+							line-height: 46rpx;
+						}
+
+						.number {
+							font-size: $font-size-base;
+							width: 46rpx;
+							height: 46rpx;
+							text-align: center;
+							line-height: 46rpx;
+						}
+					}
+				}
+			}
 		}
 	}
-</style>
+
+	.back-button {
+
+		width: 30rpx;
+
+		height: 30rpx;
+
+		border-right: 4rpx solid #fff;
+		border-bottom: 4rpx solid #fff;
+
+		transform: rotate(135deg);
+
+		margin-left: 10rpx;
+
+		display: inline-block;
+
+		position: relative;
+	}
+
+	.newsTitle {
+		display: flex;
+		align-items: center;
+	}
+</style>

+ 24 - 0
mer_uniapp/uni.scss

@@ -22,6 +22,10 @@ $uni-color-primary: #007aff;
 $uni-color-success: #4cd964;
 $uni-color-warning: #f0ad4e;
 $uni-color-error: #dd524d;
+$color-primary: #ADB838;
+$color-success: #4cd964;
+$color-warning: #FAB714;
+$color-error: #D12E32;
 
 /* crmeb颜色变量 */
 $theme-color:#E93323;
@@ -40,9 +44,13 @@ $uni-bg-color:#ffffff;
 $uni-bg-color-grey:#f8f8f8;
 $uni-bg-color-hover:#f1f1f1;//点击状态颜色
 $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+$bg-color: #F1F8FA;
+$bg-color-grey: #F5F5F5;
+$bg-color-primary: #FF6702;
 
 /* 边框颜色 */
 $uni-border-color:#c8c7cc;
+$border-color:#e2e2e2;
 
 /* 尺寸变量 */
 /*字体颜色(少部分其他,不限于字体)*/
@@ -53,10 +61,21 @@ $crmeb-font-color-grey: #bbbbbb; //辅助文字、相对弱性文字
 $crmeb-font-color-disable: #cccccc; //禁用状态文字、弱提示性文字(如搜索框、禁用按钮等)
 $crmeb-font-color-white: #ffffff; //用于彩色或深色背景上
 $crmeb-price-color: #FD502F; 
+
+/* 文字基本颜色 */
+$text-color-base: #5A5B5C; //基本色
+$text-color-assist: #919293; //辅助色
+$text-color-black: #3B3C3E; //黑
+$text-color-grey: #878889; //灰
+$text-color-white: #ffffff; //白
+
 /* 文字尺寸 */
 $uni-font-size-sm:24upx;
 $uni-font-size-base:28upx;
 $uni-font-size-lg:32upx;
+$font-size-sm:24rpx;
+$font-size-base:28rpx;
+$font-size-lg:32rpx;
 
 /* 图片尺寸 */
 $uni-img-size-sm:40upx;
@@ -68,6 +87,11 @@ $uni-border-radius-sm: 4upx;
 $uni-border-radius-base: 6upx;
 $uni-border-radius-lg: 12upx;
 $uni-border-radius-circle: 50%;
+$border-radius-sm: 4rpx;
+$border-radius-base: 6rpx;
+$border-radius-lg: 12rpx;
+$border-radius-circle: 50%;
+
 
 /* 水平间距 */
 $uni-spacing-row-sm: 10px;