zhengjinyi 2 years ago
parent
commit
cc35ee74dd

+ 235 - 0
pages/user/order/components/details/activipopu.vue

@@ -0,0 +1,235 @@
+<template name="cm-price">
+	<!--促销活动弹窗提示-->
+	<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+		<view class="tui-popup-box clearfix">
+			<view class="tui-scrollview-box">
+				<view class="box-text">
+					<text>促销时间:</text>
+					<text class="txt" v-if="Promotion.status == 1">不限时</text>
+					<text class="txt" v-else>{{ Promotion.beginTime }} ~ {{ Promotion.endTime }}</text>
+				</view>
+				<view class="box-title" v-show="Promotion.mode ==2">
+					<text>此商品参与{{Promotion.name}},满</text>
+					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.touchPrice | NumFormat}}</text>减
+					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.reducedPrice | NumFormat}}</text>
+				</view>
+				<view class="box-title" v-show="Promotion.mode==3">
+					<text>此商品参与{{Promotion.name}},满</text>
+					<text class="txt">¥{{Promotion.touchPrice}}</text>赠送商品(赠品见订单详情)
+				</view>
+			</view>
+			<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
+				<view class="tui-flex-1">
+					<view class="tui-button" @click="hidePopup()">了解</view>
+				</view>
+			</view>
+		</view>	
+	</tui-bottom-popup>
+</template>
+
+<script>
+	import { mapState,mapMutations } from 'vuex'
+	export default{
+		name:'cm-price',
+		props:{
+			Promotion:{
+				type:Object,
+			},
+			popupShow:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data() {
+			return{
+				isIphoneX:this.$store.state.isIphoneX,
+			}
+		},
+		filters: {
+			NumFormat:function(text) {//处理金额
+				return Number(text).toFixed(2);
+			},
+		},
+		created() {
+			
+		},
+		computed: {
+			...mapState(['hasLogin','isWxAuthorize'])
+		},
+		methods:{
+			hidePopup(){
+				this.$parent.popupShow = false
+			},
+			goGoodActiveFn(id){
+				this.$parent.popupShow = false
+				this.$api.navigateTo('/pages/goods/goods-active?id='+id)
+			}
+		},
+		
+	}
+</script>
+
+<style lang="scss">	
+	.tui-flex-1 {
+		flex: 1;
+	}
+	.tui-popup-box {
+		position: relative;
+		box-sizing: border-box;
+		min-height: 220rpx;
+		padding:24rpx 24rpx 0 24rpx;
+	}
+	.tui-scrollview-box{
+		width: 100%;
+		height: auto;
+		float: left;
+		box-sizing: border-box;
+		.ladder-main{
+			width: 100%;
+			height: 320rpx;
+			border: 1px solid rgba(225,86,22,0.3);
+			border-radius: 10rpx;
+			.ladder-item{
+				width: 100%;
+				height: 80rpx;
+				float: left;
+				border-bottom: 1px solid rgba(225,86,22,0.3);
+				&:nth-child(1){
+					.ladder-item-td{
+						color: #333333;
+					}
+				}
+				&:last-child{
+					border-bottom: none;
+				}
+				.ladder-item-td{
+					width:50%;
+					text-align: center;
+					line-height: 80rpx;
+					font-size: $font-size-24;
+					color: $color-system;
+					box-sizing: border-box;
+					float: left;
+					&:nth-child(1){
+						border-right: 1px solid rgba(225,86,22,0.3);
+					}
+				}
+			}
+		}
+		.box-title{
+			font-size: $font-size-26;
+			color: $text-color;
+			text-align: left;
+			line-height: 56rpx;
+			.txt{
+				color: $color-system;
+				margin: 0 8rpx;
+			}
+		}
+		.box-text{
+			font-size: $font-size-26;
+			color: $text-color;
+			text-align: left;
+			line-height: 56rpx;
+			.txt{
+				color: $color-system;
+			}
+		}
+		.box-product{
+			width: 100%;
+			height: auto;
+			margin-top: 20rpx;
+			.title{
+				font-size: $font-size-24;
+				color: $text-color;
+				text-align: left;
+				line-height: 54rpx;
+			}
+			.box-product-main{
+				width: 100%;
+				height: 136rpx;
+				.image{
+					width: 134rpx;
+					height: 134rpx;
+					border: 1px solid #EBEBEB;
+					float: left;
+					image{
+						width: 100%;
+						height: 100%;
+						display: block;
+					}
+				}
+				.info{
+					width: 540rpx;
+					height: 134rpx;
+					float: left;
+					margin-left: 16rpx;
+					position: relative;
+					.name{
+						width: 100%;
+						float: left;
+						line-height: 40rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						-o-text-overflow: ellipsis;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						overflow: hidden;
+					}
+					.num{
+						width: 100%;
+						height: 44rpx;
+						font-size: $font-size-24;
+						color: $text-color;
+						text-align: left;
+						line-height: 44rpx;
+						position: absolute;
+						bottom: 0;
+						left: 0;
+					}
+				}
+			}
+		}
+	}
+	
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button{
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #FFFFFF;
+			font-size: $font-size-28;
+			border-radius: 14rpx;
+		}
+	}
+</style>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 479 - 0
pages/user/order/components/details/goodsList.vue

@@ -0,0 +1,479 @@
+<template name="goods">
+	<view class="goods-template">
+		<!-- 商品列表 -->
+		<view class="goods-list">
+			<view v-for="(item, index) in list" :key="index" class="goods-item clearfix">
+				<view class="shoptitle">
+					<view class="title-text" v-if="information.secondHandOrderFlag == 1"
+						>{{ item.shopName }}
+					</view>
+					<view class="title-text" v-else @click="goShophome(item)">
+						{{ item.shopName }} <label class="iconfont icon-jinrudianpu"></label>
+					</view>
+				</view>
+				<view class="productlist" v-for="(pros, idx) in item.orderProductList" :key="idx">
+					<view class="goods-pros-t " @click="details(pros)">
+						<view class="pros-left">
+							<view class="pros-img">
+								<image :src="pros.image" alt="" />
+							</view>
+						</view>
+						<view class="pros-product">
+							<view class="producttitle">{{ pros.name }}</view>
+							<view class="productspec product-view" v-if="pros.productCategory != 2"
+								>规格:{{ pros.productUnit ? pros.productUnit : '' }}</view
+							>
+							<view class="product-view">
+								<view class="view-num red">¥{{ pros.price | NumFormat }}</view>
+								<view class="view-num right">x {{ pros.num }}</view>
+							</view>
+						</view>
+					</view>
+					<!-- <view class=" product-info clearfix"> 
+						<view class="product-view" v-if="pros.returnedNum > 0 || pros.actualCancelNum > 0">
+							<view class="view-num">已退货/已取消:<text class="text">{{ pros.returnedNum }}/{{ pros.actualCancelNum }}</text></view>
+						</view>
+						<view class="product-view" v-if="pros.svipPriceType != 1">
+							<view class="view-num">折扣:<text class="text">{{ pros.discount == null ? '0' : pros.discount }}%</text></view>
+						</view>
+						<view class="product-view">
+							<view class="view-num">税率:<text class="text">{{ pros.taxRate }}%</text></view>
+						</view>
+						<view class="product-view">
+							<view class="view-num">折后单价:<text class="text">¥{{ pros.discountPrice | NumFormat }}</text></view>
+						</view>
+						<view class="product-view allPrice">
+							<view class="view-num">合计:<text class="text">¥{{ pros.totalFee | NumFormat }}</text></view>
+						</view>
+					</view> -->
+				</view>
+				<view class="goods-pros-m" v-if="item.note">
+					<view class="m-text">留言:</view>
+					<view class="m-input">
+						<view class="text">{{ item.note ? item.note : '' }}</view>
+					</view>
+				</view>
+				<view class="goods-pros-b clearfix" v-if="information.onlinePayFlag == 0">
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">商品总额:</view>
+						<view class="price-view-ri">¥{{ item.totalAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">优惠:</view>
+						<view class="price-view-ri">¥{{ item.eachDiscount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">应付金额:</view>
+						<view class="price-view-ri">¥{{ item.realPay | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view" v-if="item.isHandelShow">
+						<view class="price-view-le">已付金额:</view>
+						<view class="price-view-ri">¥{{ item.receiptAmount | NumFormat }}</view>
+					</view>
+					<view class="pros-price-view">
+						<view class="price-view-le">待付金额:</view>
+						<view class="price-view-ri red">¥{{ item.obligation | NumFormat }}</view>
+					</view>
+					<view class="pros-price-btn">
+						<view class="btn" @click="handelShowDetails(item)">
+							{{ item.isHandelShow ? '收起' : '查看更多' }}
+							<text class="iconfont" :class="item.isHandelShow ? 'icon-xiangshangjiantou' : 'icon-xiangxiajiantou'"></text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'goods',
+	props: {
+		shopOrderData: {
+			type: Array
+		},
+		information: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			list: [],
+			vipFlag: 0,
+		}
+	},
+	created() {
+		this.initGetStotage(this.shopOrderData)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		},
+		formatIncludedTax(value) {
+			if (value === '1') {
+				return '不含税 '
+			} else if (value === '2') {
+				return '含税'
+			} else {
+				return ''
+			}
+		}
+	},
+	computed: {},
+	methods: {
+		async initGetStotage(data) {
+			const userInfo = await this.$api.getStorage()
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.list = data.map((el,index)=>{
+				el.isHandelShow = false
+				return el
+			})
+		},
+		handelShowDetails(item){
+			item.isHandelShow = !item.isHandelShow
+		},
+		goShophome(shop) {
+			if(shop.shopType === 2){
+				return
+			}
+			this.$api.navigateTo(`/pages/supplier/user/my-shop?shopId=${shop.shopId}`)
+		},
+		details(pros) {
+			if (pros.validFlag == 9) {
+				return
+			} else {
+				this.$api.navigateTo(`/pages/goods/product?id=${pros.productId}`)
+			}
+		},
+		clickPopupShow(pros) {
+			console.log(pros)
+			this.$emit('popupClick', pros)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.goods-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.goods-list {
+		width: 100%;
+		height: auto;
+		background: #f7f7f7;
+		.goods-item {
+			width: 702rpx;
+			padding: 24rpx;
+			height: auto;
+			background: #ffffff;
+			margin-bottom: 24rpx;
+			&:last-child {
+				margin-bottom: 0;
+			}
+		}
+		.shoptitle {
+			width: 100%;
+			float: left;
+			height: 56rpx;
+			line-height: 56rpx;
+			margin-bottom: 12rpx;
+            .floor-item-act{
+                height: 56rpx;
+                text-align: center;
+                box-sizing: border-box;
+                float: left;
+                padding: 10rpx 0;
+                margin-right: 12rpx;
+                .floor-tags{
+                    height: 28rpx;
+                    border-radius: 6rpx;
+                    background-color: #FFFFFF;
+                    line-height: 28rpx;
+                    color: $color-system;
+                    text-align: center;
+                    display: inline-block;
+                    padding:0 6rpx;
+                    font-size: $font-size-20;
+                    border: 1px solid #FF5B00;
+                    float: left;
+                }
+            }
+			.title-text {
+				width: 400rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				float: left;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 56rpx;
+				font-weight: bold;
+				.iconfont {
+					color: #999999;
+					font-size: 28rpx;
+					margin-left: 10rpx;
+				}
+				.paymenttext {
+					color: #f9a94b;
+					font-size: $font-size-22;
+					margin-left: 20rpx;
+				}
+			}
+		}
+		.productlist {
+			width: 100%;
+			height: auto;
+			padding: 0;
+			box-sizing: border-box;
+		}
+		.goods-pros-t {
+			display: flex;
+			width: 100%;
+			height: auto;
+			margin: 20rpx 0;
+			.pros-left {
+				width: 210rpx;
+				height: 100%;
+				margin: 0 26rpx 0 0;
+			}
+			.pros-img {
+				width: 210rpx;
+				height: 210rpx;
+				border-radius: 10rpx;
+				border: 1px solid #f3f3f3;
+				position: relative;
+				.tips {
+					display: inline-block;
+					width: 80rpx;
+					height: 40rpx;
+					background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+					line-height: 40rpx;
+					text-align: center;
+					font-size: $font-size-24;
+					color: #ffffff;
+					border-radius: 10rpx 0 10rpx 0;
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				image {
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+				}
+			}
+		}
+		.product-info {
+			padding: 10rpx 0;
+			.product-view {
+				font-size: $font-size-24;
+				color: #999999;
+				overflow: hidden;
+				height: 44rpx;
+				line-height: 44rpx;
+				float: left;
+				width: 50%;
+				.view-num {
+					float: left;
+					.text{
+						color: #333333;
+					}
+				}
+			}
+		}
+		.pros-product {
+			width: 468rpx;
+			height: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-26;
+			position: relative;
+			.product-view {
+				&.allPrice {
+					width: 100%;
+				}
+				.view-num {
+					flex: 1;
+					text-align: left;
+					font-size: $font-size-26;
+					color: #999999;
+					line-height: 44rpx;
+					float: left;
+					&.right {
+						float: right;
+					}
+					&.red {
+						color: #ff2000;
+						font-weight: bold;
+						&.none {
+							text-decoration: line-through;
+							color: #999999;
+						}
+					}
+				}
+			}
+			.producttitle {
+				width: 100%;
+				display: inline-block;
+				height: auto;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				margin-bottom: 8rpx;
+			}
+			.productspec {
+				height: 44rpx;
+				color: #999999;
+				line-height: 44rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 1;
+				overflow: hidden;
+			}
+			.productprice {
+				height: 48rpx;
+				position: absolute;
+				width: 100%;
+				bottom: 0;
+				.price {
+					line-height: 48rpx;
+					font-size: $font-size-28;
+					width: 48%;
+					color: #ff2a2a;
+					float: left;
+					.price {
+						line-height: 48rpx;
+						font-size: $font-size-28;
+						width: 48%;
+						color: #ff2a2a;
+						float: left;
+						font-weight: bold;
+					}
+				}
+				.count {
+					height: 100%;
+					float: right;
+					position: relative;
+					.small {
+						color: #666666;
+					}
+				}
+			}
+			.floor-item-act {
+				width: 100%;
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 10rpx 0 0 0;
+			}
+			.floor-item-act {
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding: 10rpx 0;
+				margin-right: 12rpx;
+			}
+		}
+		.goods-pros-m {
+			width: 100%;
+			height: auto;
+			line-height: 76rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			float: left;
+			.m-text {
+				width: 62rpx;
+				float: left;
+				padding-right: 20rpx;
+				font-weight: bold;
+			}
+			.m-input {
+				display: -webkit-box;
+				display: -webkit-flex;
+				display: flex;
+				-webkit-box-align: center;
+				-webkit-align-items: center;
+				align-items: center;
+				position: relative;
+				width: 620rpx;
+				height: auto;
+				padding: 20rpx 0 10rpx 0;
+				background: #ffffff;
+				.text {
+					width: 100%;
+					height: 100%;
+					font-size: $font-size-26;
+					line-height: 36rpx;
+					color: #333333;
+				}
+			}
+		}
+		.goods-pros-b {
+			width: 100%;
+			padding-top: 12rpx;
+			float: left;
+			.pros-price-view{
+				width: 100%;
+				height: 44rpx;
+				font-size: 24rpx;
+				line-height: 44rpx;
+				.price-view-le{
+					float: left;
+					color: #999999;
+					text-align: left;
+				}
+				.price-view-ri{
+					float: right;
+					color: #333333;
+					text-align: right;
+					&.red{
+						color: #F94B4B;
+					}
+				}
+			}
+			.pros-price-btn{
+				width: 100%;
+				height: 48rpx;
+				.btn{
+					width: 168rpx;
+					height: 48rpx;
+					line-height: 46rpx;
+					box-sizing: border-box;
+					border: 2rpx solid #e1e1e1;
+					border-radius: 8rpx;
+					text-align: center;
+					color: #b2b2b2;
+					margin: 0 auto;
+					font-size: $font-size-24;
+					.iconfont {
+						
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 197 - 0
pages/user/order/components/details/invoiceTent.vue

@@ -0,0 +1,197 @@
+<template name="invoice">
+	<view class="invoice-template">
+		 <!-- 发票信息 -->
+		 <view class="invoice-content">
+		 	<view class="invoice-title">发票信息</view>
+			<view class="invoice-empty" v-if="isEmpty">
+			 	<text>不要发票</text></text>
+			</view>
+			<view class="invoice-text" v-else>
+				<view class="invoice-top" @click="showInvoice">
+					<view class="name">{{orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : ''}}</view>
+					<text class="iconfont icon-web_xiangxiazhankai" :class="{'icon-web_xiangxiazhankai-active':isOpen}"></text>
+				</view>
+				<view :class="{'invoice-warp--hide':!isOpen}" class="invoice-warp">
+					<view  class="invoice-warp__wrapper invoice-animation" 
+						   :style="{'transform':isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpen?'translateY(0)':'translateY(-50%)'}">
+						<view class="table">
+							<text class="label-name">单位名称:</text>
+							<text>{{orderInvoice.invoiceTitle ? orderInvoice.invoiceTitle : ''}}</text>
+						</view>
+						<view class="table long">
+							<text class="label-name">纳锐人识别号:</text>
+							<text>{{orderInvoice.corporationTaxNum ? orderInvoice.corporationTaxNum :''}}</text> 
+						</view>
+						<view class="table">
+							<text class="label-name">注册地址:</text>
+							<text>{{orderInvoice.registeredAddress ? orderInvoice.registeredAddress : ''}}</text> 
+						</view>
+						<view class="table">
+							<text class="label-name">注册电话:</text>
+							<text>{{orderInvoice.registeredPhone ? orderInvoice.registeredPhone : ''}}</text>
+						</view>
+						<view class="table">
+							<text class="label-name">开户银行:</text>
+							<text>{{orderInvoice.openBank ? orderInvoice.openBank : ''}}</text>
+						</view>
+						<view class="table">
+							<text class="label-name">银行账号:</text>
+							<text>{{bankAccountNo ? bankAccountNo : ''}}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		 </view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"invoice",
+		props:{
+			orderInvoice:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				isEmpty:false,
+				title:'发票信息',
+				isOpen:false,
+				bankAccountNo:''
+			}
+		},
+		created(){
+			this.initData(this.orderInvoice)
+		},
+		computed: {
+
+		},
+		methods:{
+			initData(res) {
+				if(res == null || res.type == 0){
+					this.isEmpty = true
+				}else{
+					this.isEmpty = false
+					this.bankAccountNo = this.$reg.bankRegex(res.bankAccountNo)
+				}
+			},
+			onMessage(pros){
+			},
+			showInvoice(){
+				this.isOpen = !this.isOpen
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.invoice-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		.invoice-content{
+			width: 702rpx;
+			padding: 20rpx 24rpx;
+		}
+		.invoice-title{
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			line-height: 40rpx;
+			font-weight: bold;
+			margin-bottom: 30rpx;
+		}
+		.invoice-empty{
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			line-height: 40rpx;
+			.txt{
+				font-size: $font-size-24;
+				color: #999999;
+			}
+		}
+		.invoice-animation {
+			/* transition: transform 0.3s ease;*/
+			transition-property: transform;
+			transition-duration: 0.3s;
+			transition-timing-function: ease;
+		}
+		.invoice-text{
+			width: 100%;
+			height: auto;
+			.invoice-top{
+				width: 100%;
+				height: 40rpx;
+				line-height: 40rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				.name{
+					width: 400rpx;
+					float: left;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 1;
+					overflow: hidden;
+				}
+				.icon-web_xiangxiazhankai{
+					transform: rotate(0deg);
+					transform-origin: center center;
+					float: right;
+					font-size: $font-size-32;
+					color: #000000;
+					/* transition: transform 0.3s ease;*/
+					transition-property: transform;
+					transition-duration: 0.3s;
+					transition-timing-function: ease;
+				}
+				.icon-web_xiangxiazhankai-active{
+					transform: rotate(180deg);
+				}
+			}
+			.invoice-warp{
+				width: 100%;
+				padding: 24rpx 0 0 0;
+				overflow: hidden;
+				.table{
+					padding-left: 130rpx;
+					height: auto;
+					line-height: 64rpx;
+					font-size: $font-size-26;
+					color: $text-color;
+					text-align: left;
+					position: relative;
+					.label-name{
+						display: inline-block;
+						line-height: 64rpx;
+						position: absolute;
+						left: 0;
+						top: 0;
+					}
+					&.long{
+						padding-left: 180rpx;
+					}
+				}
+			}	
+			.invoice-warp__wrapper{
+				/* #ifndef APP-NVUE */
+				display: flex;
+				/* #endif */
+				flex-direction: column;
+				padding-top: 20rpx;
+			}
+			.invoice-warp--hide {
+				padding: 0 0;
+				height: 0px;
+				line-height: 0px;
+			}		
+		}
+	}
+</style>

+ 198 - 0
pages/user/order/components/details/logisticsRecord.vue

@@ -0,0 +1,198 @@
+<template name="logistics">
+	<view class="logistics-template">
+		<!-- 物流信息 -->
+		<view
+			class="logistics-content"
+			v-if="logisticsData.length > 0"
+			v-for="(item, index) in logisticsData"
+			:key="index"
+		>
+			<view class="logistics-top"> <text class="name">物流信息</text> </view>
+			<view class="logistics-warp">
+				<view class="logistics-warp__wrapper">
+					<view class="logistics-main">
+						<view class="logistics-main-top">
+							<view class="main-top" @click="showlogistics(index)">
+								{{ item.expressname }}:{{ item.expressNumber }}
+								<text class="clipboard" @click="clipboard(item.expressNumber)">复制</text>
+								<text
+									class="arrow-showMore iconfont icon-web_xiangxiazhankai"
+									:style="{ transform: item.isOpen ? 'rotate(180deg)' : 'rotate(0)' }"
+								></text>
+							</view>
+							<view class="main-bot"> 发货时间:{{ item.expressNewtime }} </view>
+						</view>
+						<view
+							v-if="item.expressRecord.length > 0"
+							v-for="(infoItem, infoIndex) in item.expressRecord"
+							:key="infoIndex"
+							:class="{ 'logistics-warp--hide': !item.isOpen }"
+							class="logistics-main-bot logistics-animation"
+							:style="{
+								transform: item.isOpen ? 'translateY(0)' : 'translateY(-50%)',
+								'-webkit-transform': item.isOpen ? 'translateY(0)' : 'translateY(-50%)'
+							}"
+						>
+							{{ infoItem.time }} {{ infoItem.desc }}
+						</view>
+						<view
+							v-if="item.expressRecord"
+							:class="{ 'logistics-warp--hide': !item.isOpen }"
+							class="logistics-main-bot logistics-animation"
+							:style="{
+								transform: item.isOpen ? 'translateY(0)' : 'translateY(-50%)',
+								'-webkit-transform': item.isOpen ? 'translateY(0)' : 'translateY(-50%)'
+							}"
+						>
+							暂无物流信息
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="logistics-content" v-else> 暂无物流信息 </view>
+	</view>
+</template>
+
+<script>
+const thorui = require('@/components/clipboard/clipboard.thorui.js')
+export default {
+	name: 'logistics',
+	data() {
+		return {
+			title: '发票信息',
+			logisticsData: ''
+		}
+	},
+	created() {},
+	computed: {},
+	methods: {
+		initData(res) {
+			this.logisticsData = res
+		},
+		showlogistics(index) {
+			let isOpen = this.logisticsData[index]['isOpen']
+			this.logisticsData[index]['isOpen'] = !isOpen
+		},
+		clipboard(data) {
+			thorui.getClipboardData(data, res => {
+				if (res) {
+					this.$util.msg('复制成功', 2000, true, 'success')
+				} else {
+					this.$util.msg('复制失败', 2000, true, 'none')
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.logistics-template {
+	width: 100%;
+	height: 100%;
+	background: #ffffff;
+	float: left;
+	.logistics-content {
+		width: 702rpx;
+		padding: 20rpx 24rpx;
+		height: auto;
+		.arrow-showMore {
+			position: absolute;
+			right: 24rpx;
+			z-index: 99;
+		}
+		.logistics-top {
+			width: 100%;
+			height: 40rpx;
+			line-height: 40rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			padding-bottom: 24rpx;
+			border-bottom: 1px solid #f8f8f8;
+			.name {
+				float: left;
+				font-weight: bold;
+			}
+			.icon-web_xiangxiazhankai {
+				transform: rotate(0deg);
+				transform-origin: center center;
+				float: right;
+				font-size: $font-size-32;
+				color: #000000;
+				/* transition: transform 0.3s ease;*/
+				transition-property: transform;
+				transition-duration: 0.3s;
+				transition-timing-function: ease;
+			}
+			.icon-web_xiangxiazhankai-active {
+				transform: rotate(180deg);
+			}
+		}
+		.logistics-warp {
+			width: 100%;
+			overflow: hidden;
+			.table {
+				height: 76rpx;
+				line-height: 76rpx;
+				font-size: $font-size-26;
+				color: $text-color;
+				text-align: left;
+			}
+		}
+		.logistics-main-top {
+			width: 100%;
+			height: auto;
+			float: left;
+			padding-top: 24rpx;
+			margin-bottom: 14rpx;
+			.main-top,
+			.main-bot {
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 40rpx;
+				margin: 4rpx 0;
+			}
+		}
+		.logistics-main-bot {
+			width: 100%;
+			height: auto;
+			font-size: $font-size-24;
+			color: $text-color;
+			line-height: 56rpx;
+			text-align: justify;
+		}
+		.logistics-animation {
+			/* transition: transform 0.3s ease;*/
+			transition-property: transform;
+			transition-duration: 0.3s;
+			transition-timing-function: ease;
+		}
+		.logistics-warp__wrapper {
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: column;
+		}
+		.logistics-warp--hide {
+			// padding: 0 0;
+			// height: 0px;
+			// line-height: 0px;
+			display: none;
+		}
+		.clipboard {
+			width: 84rpx;
+			height: 36rpx;
+			background: linear-gradient(34deg, rgba(255, 41, 41, 1) 0%, rgba(255, 109, 27, 1) 100%);
+			text-align: center;
+			font-size: $font-size-24;
+			color: #ffffff;
+			border-radius: 6rpx;
+			line-height: 36rpx;
+			display: inline-block;
+			margin-left: 42rpx;
+		}
+	}
+}
+</style>

+ 174 - 0
pages/user/order/components/details/orderAddress.vue

@@ -0,0 +1,174 @@
+<template name="address">
+	<view class="address-template">
+		 <!-- 地址信息 -->
+		 <view class="address-section">
+		 	<view class="address-content">
+				<view class="address-cen">
+					<view class="top">
+						<view class="name">{{addressData.receiver ? addressData.receiver : ''}}</view>
+						<view class="mobile">{{addressData.mobile ? addressData.mobile : ''}}</view>
+					</view>
+					<view class="address">
+						<view class="address-icon">
+							<text class="iconfont icon-shouhuodizhi"></text>
+						</view>
+						<view class="address-text">
+							{{addressData.province ? addressData.province : ''}}
+							{{addressData.city ? addressData.city : ''}}
+							{{addressData.town ? addressData.town : ''}}
+							{{addressData.address ? addressData.address : ''}}
+						</view>
+					</view>
+				</view>
+		 	</view>
+		 </view>
+		 <image  src="../../../static/temp/line@3x.png" mode=""></image>
+	</view>
+</template>
+
+<script>
+	import { mapState, mapMutations } from 'vuex'	
+	export default{
+		name:'address',
+		props:{
+			addressData:{
+				type:Object
+			}
+		},
+		data() {
+			return{
+				initData:''
+			}
+		},
+		created(){
+			this.initData = this.addressData
+		},
+		computed: {
+			...mapState(['isManage'])
+		},
+		methods:{
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	.address-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+        
+        &::after{
+            content: "";
+            display: block;
+            clear: both;
+        }
+		// border-top: 1px solid #F8F8F8;
+		image{
+			float: left;
+			width: 100%;
+			height: 6rpx;
+		}
+	}
+	.address-section {
+		width: 100%;
+		height: auto;
+		float: left;
+		position: relative;
+		
+		.address-empty{
+			width: 100%;
+			height: 84rpx;
+			line-height: 84rpx;
+			color: $color-system;
+			text-align: center;
+			font-size: $font-size-26;
+			font-weight: bold;
+			background: #fff;
+			float: left;
+			.icon-tianjiadizhi{
+				font-size: 30rpx;
+				margin: 0 8rpx;
+			}
+		}
+		.address-content {
+			display: flex;
+			align-items: center;
+			padding:20rpx 24rpx;
+			background: #fff;
+		}
+		
+		.icon-shouhuodizhi {
+			flex-shrink: 0;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 40rpx;
+			color: $color-system;
+			font-size: 46rpx;
+			margin-right: 10rpx;
+		}	
+		.address-cen {
+			width: 100%;
+			height: auto;
+			position: relative;
+			.top{
+				padding-left: 50rpx;
+				height: 42rpx;
+				line-height: 42rpx;
+				text-align: left;
+				font-size: $font-size-30;
+				color: $text-color;
+				padding-bottom: 8rpx;
+				display: flex;
+				float: left;
+				.name{
+					margin-right: 48rpx;
+				}
+				.mobile{
+					margin-right: 40rpx;
+				}
+			}
+			.address {
+				width: 100%;
+				height: auto;
+				float: left;
+				.address-icon{
+					width: 40rpx;
+					height: auto;
+					float: left;
+					line-height: 40rpx;
+				}
+				.address-text{
+					width: 650rpx;
+					padding-left: 10rpx;
+					float: left;
+					line-height: 40rpx;
+					font-size: $font-size-28;
+					color: #666666;
+					text-align: left;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+				}
+			}
+		}
+		.icon-xiangyou {
+			font-size: 32rpx;
+			color: $text-color;
+			margin-right: 30rpx;
+		}
+		.a-bg {
+			position: absolute;
+			left: 0;
+			bottom: 0;
+			display: block;
+			width: 100%;
+			height: 5rpx;
+		}
+	}
+</style>

+ 237 - 0
pages/user/order/components/details/orderButton.vue

@@ -0,0 +1,237 @@
+<template name="button">
+	<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<!-- <view class="btn btn-payment" v-if="order.affirmPaymentFlag == 10" @click.stop="btnConfirm('payment',order)">确认打款<text>供应商</text></view> -->
+			<!-- <view class="btn btn-confirm" v-if="btnState.isConfirmation" @click.stop="btnConfirm('confirmation',order)">确认订单</view> -->
+			<view class="btn btn-pay" v-if="btnState.isPay" @click.stop="btnConfirm('pay',order)">付款</view>
+			<view class="btn btn-cancel" v-if="btnState.isUpload" @click.stop="btnConfirm('upload',order)">上传凭证</view>
+			<view class="btn btn-share" @click.stop="onShareCode">
+				<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
+				分享订单
+			</view>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel',order)">取消订单</view>
+			<!-- <view class="btn btn-delete" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',order)">删除订单</view> -->
+			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',order)">查看物流</view>
+			<view class="btn btn-firm" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',order)">
+				确认收货
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:'button',
+		props:{
+			status:{
+				type:Number
+			},
+			order: {
+				type:Object
+			},
+			shareCode:{
+				type:String
+			},
+		},
+		watch:{
+			status:{
+				handler:function(val){
+					this.initData(val)
+				},
+				deep:true//对象内部的属性监听,也叫深度监听
+			}
+		},
+		data() {
+			return{
+				btnState:this.initStatus(),
+				isIphoneX:this.$store.state.isIphoneX,
+				mapStateArr:[
+					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
+					{label:'isDelete',val:[6],status: true},
+					{label:'isCancel',val:[0,111,333],status: true},
+					{label:'isConfirm',val:[33],status: true},
+					{label:'isConfirmation',val:[0],status: true},
+					{label:'isPay',val:[11,12,13,21,22,23,111,333],status: true},
+					{label:'isUpload',val:[11,12,13,21,22,23,111,333],status: true},
+				]
+			}
+		},
+		created(){
+			this.initData(this.status)
+		},
+		computed: {
+
+		},
+		methods:{
+			initData(resVal) {
+				/**
+				 * @分享按钮统一显示
+				 * @按钮根据状态显示
+				 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
+				 * @(6)显示[删除订单],其他隐藏
+				 * @(0、111)显示[取消订单],其他隐藏
+				 * @(21,31)只显示分享
+				 * @(13,33)显示[确认收货]和[查看物流]
+				 */
+				this.btnState = this.initStatus()
+				this.mapStateArr.forEach(el => {
+					el.val.forEach(value => {
+						if(resVal === value){
+							this.btnState[el.label] = el.status
+						}
+					})
+				})
+			},
+			initStatus(){
+				let btnState= {
+						isQuery: false,
+						isDelete: false,
+						isCancel: false,
+						isConfirm: false,
+						isConfirmation:false,
+					}
+				return 	btnState
+			},
+			getShareCode(code){
+				this.shareCode = code
+			},
+			onShareCode(){
+				this.$parent.isShareModal = true
+				this.$emit('shareConfirm')
+			},
+			btnConfirm(type,order){
+				let data = {
+						type:type,
+						orderId:order.orderId,
+						order:order
+					}
+				this.$emit('buttonConfirm',data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.button-template{
+		width: 100%;
+		height: auto;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		background: #FFFFFF;
+		z-index: 99999;
+		.button-content{
+			padding:0 24rpx;
+			height: auto;
+			float: right;
+			position: relative;
+			.share-code{
+				width: 200rpx;
+				height:  64rpx;
+				line-height: 64rpx;
+				color: #2A45FF;
+				text-align: left;
+				position: absolute;
+				font-size: $font-size-28;
+				font-weight: bold;
+				left: 24rpx;
+				top: 24rpx;
+			}
+			.btn{
+				width: 150rpx;
+				height:  64rpx;
+				margin:22rpx 22rpx 22rpx 0;
+				line-height: 64rpx;
+				font-size:$font-size-26;
+				color: #666666;
+				text-align: center;
+				float: right;
+				border: 2rpx solid #999999;
+				border-radius: 34rpx;
+				&.btn-payment{
+					line-height: 38rpx;
+					font-size: 24rpx;
+					background: #f9a94b;
+					color: #fff;
+					border: 2rpx solid #f9a94b;
+					text{
+						display: block;
+						line-height: 15rpx;
+					}
+				}
+				&.btn-share{
+					position: relative;
+				}
+			}
+			.btn-confirm{
+				background:#ff7a51;
+				border-color:#ff7a51;
+				color: #FFFFFF;
+			}
+			.btn-pay{
+				background:$btn-confirm;
+				margin-right: 0;
+				border: 2rpx solid $btn-confirm;
+				color: #fff;
+			}
+			.btn-firm{
+				position:relative;
+				.tips{
+					width: 74rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					padding: 0 7rpx;
+					border-radius: 16rpx;
+					background-color: #ffe6dc;
+					color: $color-system;
+					text-align: center;
+					font-size: $font-size-20;
+					position:absolute;
+					right: 0;
+					top: -40rpx;
+					z-index: 90;
+					.line{
+						display: block;
+						width: 20rpx;
+						height: 20rpx;
+						background-color: #ffe6dc;
+						position: relative;
+						bottom: 18rpx;
+						left: 15rpx;
+						z-index: -1;
+						transform:rotate(45deg);
+					}
+				}
+			}
+			.btn-share{
+				.tips{
+					width: 160rpx;
+					height: 34rpx;
+					padding: 10rpx 10rpx;
+					background:#F3B574;
+					border-radius: 8rpx;
+					position: absolute;
+					color: #FFFFFF;
+					line-height: 34rpx;
+					font-size: $font-size-24;
+					text-align: left;
+					right: 0;
+					top: -65rpx;
+					&:before{
+						content: "";
+						width: 25rpx;
+						height: 25rpx;
+						background:#F3B574;
+						position: absolute;
+						bottom: -8rpx;
+						left: 30rpx;
+						z-index: -1;
+						transform:rotate(45deg);
+					}
+				}
+			}
+		}
+	}
+</style>

+ 328 - 0
pages/user/order/components/details/orderInformation.vue

@@ -0,0 +1,328 @@
+<template name="information">
+	<view class="information-template">
+		<!-- 订单信息 -->
+		<view class="information-content">
+			<view class="information-view title">
+				<view class="view-num">
+					<view class="bage-text">
+						订单编号:<label class="label">{{ orderData.orderNo ? orderData.orderNo : '' }}</label>
+					</view>
+				</view>
+			</view>
+			<view class="information-view same">
+				<view class="view-num">
+					订单总额:<label class="label">¥{{ orderData.payTotalFee | NumFormat }}</label>
+				</view>
+			</view>
+			<view class="information-view">
+				<view class="view-num bold">
+					订单标识:<label class="label">{{ orderData.orderMark ? orderData.orderMark : '' }}</label>
+				</view>
+			</view>
+			<view class="information-view same">
+				<view class="view-num">
+					待付金额:<text class="red">¥{{ orderData.pendingPayments | NumFormat }}</text>
+				</view>
+				<view class="view-man"></view>
+			</view>
+			<template v-if="openShowflag">
+				<view class="information-view">
+					<view class="view-num time">
+						下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</label>
+					</view>
+					<!-- <view class="view-type">{{ orderData.status | TextFormat }}</view> -->
+				</view>
+				<!-- <view class="information-view same">
+					<view class="view-num">
+						余额抵扣:<label class="label">¥{{ orderData.balancePayFee | NumFormat }}</label>
+					</view>
+				</view> -->
+				<view class="information-view same">
+					<view class="view-num" v-if="orderData.postageFlag == 0">
+						运费:<label class="label">包邮</label>
+					</view>
+					<view class="view-num" v-if="orderData.postageFlag == -1">
+						运费:<label class="label">到付</label>
+					</view>
+					<view class="view-num" v-if="orderData.postageFlag == 1">
+						运费:<label class="label">¥{{ orderData.postage | NumFormat }}</label>
+					</view>
+				</view>
+				<!-- <view class="information-view same" v-if="orderData.svipFullReduction > 0">
+					<view class="view-man">
+						超级会员优惠:<label class="label">¥{{ orderData.svipFullReduction | NumFormat }}</label>
+					</view>
+				</view>
+				<view class="information-view" v-if="orderData.userBeans > 0">
+					<view class="view-man">
+						采美豆抵用运费:<label class="label">{{ orderData.userBeans }}</label>
+					</view>
+				</view>
+				<view class="information-view same" v-if="orderData.discountFee && orderData.discountFee > 0">
+					<view class="view-num">
+						经理折扣:<label class="label">¥{{ orderData.discountFee | NumFormat }}</label>
+					</view>
+				</view>
+				<view
+					class="information-view"
+					v-if="orderData.promotionFullReduction && orderData.promotionFullReduction > 0"
+				>
+					<view class="view-man">
+						促销满减:<label class="label">¥{{ orderData.promotionFullReduction | NumFormat }}</label>
+					</view>
+				</view>
+				<view class="information-view same">
+					<view class="view-man">
+						优惠券:<label class="label">¥{{ orderData.couponAmount | NumFormat }}</label>
+					</view>
+				</view>
+				<view class="information-view">
+					<view class="view-man">
+						赠品总数:<label class="label">{{
+							orderData.presentCount + orderData.promotionalGiftsCount
+						}}</label>
+					</view>
+				</view> -->
+				<view class="information-view">
+					<view class="view-man">
+						应付总额:<label class="red">¥{{ orderData.payableAmount | NumFormat }}</label>
+					</view>
+				</view>
+				<view class="information-view same">
+					<view class="view-num">
+						已支付:<label class="red">¥{{ orderData.receiptAmount | NumFormat }}</label>
+					</view>
+					<view class="view-man"></view>
+				</view>
+			</template>
+		</view>
+		<view class="openinfo" v-if="infoflag">
+			<view class="btnInfo" @click="openShow">
+				查看更多
+				<text class="iconfont icon-xiangxiajiantou"></text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+const thorui = require('@/components/clipboard/clipboard.thorui.js')
+export default {
+	name: 'information',
+	props: {
+		information: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			orderData: '',
+			openShowflag: false,
+			infoflag: true
+		}
+	},
+	created() {
+		this.initData(this.information)
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value)
+			return number.toFixed(2)
+		},
+		TextFormat(status) {
+			//处理金额
+			let HtmlText,
+				typeTextObject = {
+					0: '待确认',
+					4: '交易完成',
+					5: '订单完成',
+					6: '已关闭',
+					7: '交易全退',
+					77: '交易全退',
+					11: '待付款待发货',
+					12: '待付款部分发货',
+					13: '待付款已发货',
+					21: '部分付款待发货',
+					22: '部分付款部分发货',
+					23: '部分付款已发货',
+					31: '已付款待发货',
+					32: '已付款部分发货',
+					33: '已付款已发货',
+					111: '待付款待发货'
+				}
+
+			Object.keys(typeTextObject).forEach(key => {
+				if (key == status) {
+					HtmlText = typeTextObject[key]
+				}
+			})
+			return HtmlText
+		}
+	},
+	computed: {},
+	watch: {
+		information: {
+			handler: function(val) {
+				this.initData(val)
+			},
+			deep: true //对象内部的属性监听,也叫深度监听
+		}
+	},
+	methods: {
+		openShow() {
+			this.openShowflag = true
+			this.infoflag = false
+		},
+		initData(res) {
+			this.orderData = res
+		},
+		clipboard(data) {
+			thorui.getClipboardData(data, res => {
+				if (res) {
+					this.$util.msg('复制成功', 2000, true, 'success')
+				} else {
+					this.$util.msg('复制失败', 2000, true, 'none')
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.information-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	margin-top: 24rpx;
+	.information-content {
+		width: 702rpx;
+		padding: 15rpx 24rpx 20rpx 24rpx;
+		.information-view {
+			height: 50rpx;
+			line-height: 50rpx;
+			font-size: $font-size-24;
+			margin: 4rpx 0;
+			// display: flex;
+			width: 55%;
+			display: inline-block;
+			&.same {
+				width: 45%;
+				text-align: right;
+			}
+			// &.title{
+			// 	height: 68rpx;
+			// 	line-height: 68rpx;
+			// 	margin-bottom: 5rpx;
+			// }
+			view {
+				// flex: 1;
+				color: $text-color;
+				color: #999999;
+				.label {
+					color: #666666;
+				}
+			}
+			.view-num.title {
+				height: 68rpx;
+				line-height: 68rpx;
+				position: relative;
+				.bage-icon {
+					width: 50rpx;
+					height: 50rpx;
+					display: block;
+					position: absolute;
+					right: 0;
+					top: 9rpx;
+				}
+				.bage-buss {
+					display: inline-block;
+					width: 72rpx;
+					height: 30rpx;
+					background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+					border-radius: 4rpx;
+					line-height: 30rpx;
+					font-size: $font-size-24;
+					text-align: center;
+					color: #ffffff;
+					margin-top: 10rpx;
+				}
+				.bage-auto {
+					display: inline-block;
+					width: 72rpx;
+					height: 30rpx;
+					background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+					border-radius: 4rpx;
+					line-height: 30rpx;
+					font-size: $font-size-24;
+					text-align: center;
+					color: #ffffff;
+					margin-top: 10rpx;
+				}
+				.bage-text {
+					display: inline-block;
+					font-size: $font-size-28;
+					line-height: 68rpx;
+					text-align: left;
+					color: $color-system;
+					// margin-left: 10rpx;
+				}
+			}
+			.view-num.ord {
+				color: $color-system;
+				text-align: left;
+				flex: 3;
+				font-weight: bold;
+			}
+			.view-num.time {
+				color: #999999;
+				flex: 6;
+			}
+			// .bold{
+			// 	font-weight: bold;
+			// }
+			.red {
+				color: #ff2a2a;
+			}
+			.view-type {
+				float: right;
+				text-align: right;
+				color: #ff2a2a;
+				flex: 4;
+			}
+			.clipboard {
+				width: 84rpx;
+				height: 36rpx;
+				background: linear-gradient(34deg, rgba(255, 41, 41, 1) 0%, rgba(255, 109, 27, 1) 100%);
+				text-align: center;
+				font-size: $font-size-24;
+				color: #ffffff;
+				border-radius: 6rpx;
+				line-height: 36rpx;
+				display: inline-block;
+				margin-left: 42rpx;
+			}
+		}
+	}
+}
+.openinfo {
+	width: 100%;
+	height: 48rpx;
+	margin-bottom: 30rpx;
+	.btnInfo{
+		width: 168rpx;
+		height: 48rpx;
+		line-height: 46rpx;
+		box-sizing: border-box;
+		border: 2rpx solid #e1e1e1;
+		border-radius: 8rpx;
+		text-align: center;
+		color: #b2b2b2;
+		margin: 0 auto;
+		font-size: $font-size-24;
+	}
+}
+</style>

+ 245 - 0
pages/user/order/components/details/orderListButton.vue

@@ -0,0 +1,245 @@
+<template name="button">
+	<view class="button-template">
+		<!-- 底部按钮 -->
+		<view class="button-content">
+			<view class="btn btn-pay" v-if="btnState.isPay" @click.stop="btnConfirm('pay',order)">付款</view>
+			<view class="btn btn-cancel" v-if="btnState.isUpload" @click.stop="btnConfirm('upload',order)">上传凭证</view>
+			<!-- <view class="btn btn-confirm" v-if="btnState.isConfirmation" @click.stop="btnConfirm('confirmation',order)">确认订单</view> -->
+			<view class="btn btn-share"  @click.stop="onShareCode(order.orderId)">分享订单</view>
+			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel',order)">取消订单</view>
+			<!-- <view class="btn btn-delete" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',order)">删除订单</view> -->
+			<view class="btn btn-query" v-if="btnState.isQuery && order.secondHandOrderFlag!=1" @click.stop="btnConfirm('query',order)">查看物流</view>
+			<view class="btn btn-firm" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',order)">
+				确认收货
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"button",
+		props:{
+			status: {
+				type:Number
+			},
+			order: {
+				type:Object
+			},
+		},
+		data() {
+			return{
+				isShare:true,
+				shareCode:'',
+				btnState:this.initStatus(),
+				mapStateArr:[
+					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
+					{label:'isDelete',val:[6],status: true},
+					{label:'isCancel',val:[0,111,333],status: true},
+					{label:'isConfirm',val:[33],status: true},
+					{label:'isConfirmation',val:[0],status: true},
+					{label:'isPay',val:[11,12,13,21,22,23,111,333],status: true},
+					{label:'isUpload',val:[11,12,13,21,22,23,111,333],status: true},
+				]
+			}
+		},
+		created(){
+			this.initData(this.status)
+		},
+		computed: {
+
+		},
+		watch:{
+			status:{
+				handler:function(val){
+					this.initData(val)
+				},
+				deep:true//对象内部的属性监听,也叫深度监听
+			}
+		},
+		methods:{
+			initData(resVal) {
+				/**
+				 * @分享按钮统一显示
+				 * @按钮根据状态显示
+				 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
+				 * @(6)显示[删除订单],其他隐藏
+				 * @(0、111)显示[取消订单],其他隐藏
+				 * @(21,31)只显示分享
+				 * @(13,33)显示[确认收货]和[查看物流]
+				 */
+				this.btnState = this.initStatus()
+				this.mapStateArr.forEach(el => {
+					el.val.forEach(value => {
+						if(resVal === value){
+							this.btnState[el.label] = el.status
+						}
+					})
+				})
+			},
+			initStatus(){
+				let btnState= {
+						isQuery: false,
+						isDelete: false,
+						isCancel: false,
+						isConfirm: false,
+						isShare: true,
+						isConfirmation:false,
+					}
+				return 	btnState
+			},
+			getShareCode(code){
+				this.shareCode = code
+			},
+			onShareCode(orderId){
+				this.$parent.isShareModal = true
+				this.$parent.handleOrderId = orderId
+				this.$emit('shareConfirm')
+			},
+			btnConfirm(type,order){
+				let data = {
+						type:type,
+						orderId:order.orderId,
+						order:order
+					}
+				this.$emit('buttonConfirm',data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.button-template{
+		width: 100%;
+		height: auto;
+		float: left;
+		background: #FFFFFF;
+		.button-content{
+			height: auto;
+			float: right;
+			position: relative;
+			.share-code{
+				width: 200rpx;
+				height:  64rpx;
+				line-height: 64rpx;
+				color: #2A45FF;
+				text-align: left;
+				position: absolute;
+				font-size: $font-size-28;
+				font-weight: bold;
+				left: 24rpx;
+				top: 24rpx;
+			}
+			.btn{
+				width: 150rpx;
+				height:  64rpx;
+				margin: 22rpx 0 20rpx 20rpx;
+				line-height: 64rpx;
+				font-size:$font-size-26;
+				color: #999999;
+				text-align: center;
+				float: right;
+				border-radius: 34rpx;
+				border: 2rpx solid #999999;
+				&.btn-payment{
+					line-height: 38rpx;
+					font-size: 24rpx;
+					background: #f9a94b;
+					color: #fff;
+					border: 2rpx solid #f9a94b;
+					text{
+						display: block;
+						line-height: 15rpx;
+					}
+				}
+			}
+			.btn-color{
+				background: $btn-confirm;
+				// margin: 22rpx 0 22rpx 22rpx;
+			}
+			.btn-cancel{
+				// background:#FFFFFF;
+				// color: #999999;
+				// float: left;
+				// margin: 22rpx 0;
+				text-align: center;
+			}
+			// .btn-delete{
+			// 	background:linear-gradient(315deg,rgba(255,163,3,1) 0%,rgba(255,53,1,1) 100%);
+			// }
+			// .btn-query{
+			// 	background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
+			// }
+			.btn-confirm{
+				background:#ff7a51;
+				border-color:#ff7a51;
+				color: #FFFFFF;
+			}
+			.btn-pay{
+				background:$btn-confirm;
+				margin-right: 0;
+				border: 2rpx solid $btn-confirm;
+				color: #fff;
+			}
+			.btn-firm{
+				position:relative;
+				.tips{
+					width: 74rpx;
+					height: 32rpx;
+					line-height: 32rpx;
+					padding: 0 7rpx;
+					border-radius: 16rpx;
+					background-color: #ffe6dc;
+					color: $color-system;
+					text-align: center;
+					font-size: $font-size-20;
+					position:absolute;
+					right: 0;
+					top: -40rpx;
+					z-index: 90;
+					.line{
+						display: block;
+						width: 20rpx;
+						height: 20rpx;
+						background-color: #ffe6dc;
+						position: relative;
+						bottom: 18rpx;
+						left: 15rpx;
+						z-index: -1;
+						transform:rotate(45deg);
+					}
+				}
+			}
+			.btn-share{
+				// background:linear-gradient(315deg,rgba(0,212,150,1) 0%,rgba(126,243,174,1) 100%);
+				position: relative;
+				.tips{
+					width: 160rpx;
+					height: 34rpx;
+					padding: 10rpx 10rpx;
+					background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+					box-shadow:0px 2px 4px 0px rgba(0,0,0,0.2);
+					border-radius: 8rpx;
+					position: absolute;
+					color: #FFFFFF;
+					line-height: 34rpx;
+					font-size: $font-size-24;
+					text-align: left;
+					right: 0;
+					top: -65rpx;
+					&:before{
+						content: "";
+						width: 25rpx;
+						height: 25rpx;
+						background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+						position: absolute;
+						bottom: -8rpx;
+						right: 30rpx;
+						z-index: -1;
+						transform:rotate(45deg);
+					}
+				}
+			}
+		}
+	}
+</style>

+ 159 - 0
pages/user/order/components/details/paymentRecord.vue

@@ -0,0 +1,159 @@
+<template name="record">
+	<view class="record-template">
+		<!-- 支付记录 -->
+		<view class="record-content">
+			<view class="record-title">
+				<view class="record-title-l">支付记录</view>
+				<view class="record-title-r" v-if="!isEmpty">
+					已支付:<text class="red">¥{{ receiptAmount != null ? receiptAmount.toFixed(2): '0.00'}}</text>
+				</view>
+			</view>
+			<view class="record-empty" v-if="isEmpty">
+			 	<text>暂无支付记录</text>
+			</view>
+			<view class="record-list" v-else>
+				<view class="record-item" v-for="(record,index) in discernReceiptList" :key="index">
+					<view class="record-item-t">
+						<view class="item-time mm">¥{{record.associateAmount.toFixed(2)}}</view>
+					</view>
+					<view class="record-item-t">
+						<view class="item-time tt">{{ record.receiptDate }}</view>
+						<view class="item-time pp">{{ payTypeText(record) }}</view>
+					</view>	
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:'record',
+		props:{
+			discernReceiptList:{
+				type:Array
+			},
+			receiptAmount:{
+				type:Number
+			}
+		},
+		data() {
+			return{
+				isEmpty:false,
+				paymentData:'',
+				typeText:'',
+				isOpen:false,
+			}
+		},
+		created(){
+			this.initData(this.discernReceiptList)
+		},
+		computed: {
+
+		},
+		methods:{
+			initData(res) {
+				if(res!=''){
+					this.isEmpty = false
+					this.paymentData = res
+				}else{
+					this.isEmpty = true
+				}
+			},
+			payTypeText(record) {
+				//处理支付记录文字
+				const map = {
+					12: '企业网银',
+					13: '微信支付',
+					14: '支付宝',
+					15: '微信支付',
+					16: '余额抵扣',
+				}
+				if(record.payType === 28 || record.payType === 29 ){
+					return record.quickPayStr
+				}else{
+					return map[record.payType]
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.record-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		.record-content{
+			width: 702rpx;
+			padding: 20rpx 24rpx;
+			height: auto;
+			.record-title{
+				width: 100%;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+				margin-bottom: 12rpx;
+				float: left;
+				.record-title-l{
+					font-weight: bold;
+					float: left;
+				}
+				.record-title-r{
+					float: right;
+					.red{
+						color: #FF2A2A;
+						font-weight: bold;
+					}
+				}
+			}
+			.record-empty{
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+			}
+			.record-list{
+				width: 100%;
+				height: auto;
+				float: left;
+				margin-top: 12rpx;
+				.record-item{
+					height: auto;
+					width: 100%;
+					padding: 12rpx 0;
+					font-size: $font-size-28;
+					float: left;
+					.record-item-t{
+						width: 100%;
+						height: 40rpx;
+						display: flex;
+						justify-content: center;
+						flex-direction: row;
+						.item-time{
+							line-height: 48rpx;
+							&.mm{
+								flex: 1;
+								color: $text-color;
+								text-align: left;
+							}
+							&.pp{
+								flex: 5;
+								color: #999999;
+								text-align: right;
+							}
+							&.tt{
+								flex: 5;
+								color: #999999;
+								text-align: left;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 120 - 0
pages/user/order/components/details/refundRecord.vue

@@ -0,0 +1,120 @@
+<template name="refund">
+	<view class="record-template" v-if="isEmpty">
+		<!-- 支付记录 -->
+		<view class="record-content">
+			<view class="record-title">
+				<view class="record-title-l">退款记录</view>
+				<view class="record-title-r">
+					已退款:<text class="red">¥{{ returnedPurchaseFee != null ? returnedPurchaseFee.toFixed(2) : '0.00'}}</text>
+				</view>
+			</view>
+			<view class="record-list">
+				<view class="record-item" v-for="(item,index) in returnedPurchaseList" :key="index">
+					<view class="item-nums">{{item.returnedWay =='4' ? '无支付无退款' : '¥'+item.refundFee.toFixed(2)}}</view>
+					<view class="item-time">{{item.confirmReturnTime}}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"refund",
+		props:{
+			returnedPurchaseList:{
+				type:Array
+			},
+			returnedPurchaseFee:{
+				type:Number
+			}
+		},
+		data() {
+			return{
+				isEmpty:false,
+				isOpen:false,
+			}
+		},
+		created(){
+			this.initData(this.returnedPurchaseList)
+		},
+		computed: {
+		
+		},
+		methods:{
+			initData(res) {
+				if(res!=''){
+					this.isEmpty = true
+				}else{
+					this.isEmpty = false
+					this.refundData = res;
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.record-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		padding-bottom: 40rpx;
+		.record-content{
+			width: 702rpx;
+			padding: 20rpx 24rpx;
+			height: auto;
+			.record-title{
+				width: 100%;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+				margin-bottom: 12rpx;
+				float: left;
+				.record-title-l{
+					font-weight: bold;
+					float: left;
+				}
+				.record-title-r{
+					float: right;
+					.red{
+						color: #FF2A2A;
+						font-weight: bold;
+					}
+				}
+			}
+			.record-empty{
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+			}
+			.record-list{
+				width: 100%;
+				height: auto;
+				float: left;
+				margin-top: 12rpx;
+				.record-item{
+					height: 40rpx;
+					width: 100%;
+					padding: 12rpx 0;
+					font-size: $font-size-28;
+					line-height: 40rpx;
+					float: left;
+					.item-time{
+						float: right;
+						color: #999999;
+					}
+					.item-nums{
+						font-weight: bold;
+						float: left;
+						color: $text-color;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 177 - 0
pages/user/order/components/details/voucherRecord.vue

@@ -0,0 +1,177 @@
+<template name="refund">
+	<view class="record-template" v-if="isEmpty">
+		<!-- 支付凭证 -->
+		<view class="record-content">
+			<view class="record-title">线下支付凭证</view>
+			<view class="record-list" v-for="(item,index) in list">
+				<view class="record-list-time">{{ item.addtime }}</view>
+				<scroll-view scroll-x>
+					<view class="tui-goods__list">
+						<view class="tui-goods__item" @click.stop="previewImg(image.img)" v-for="image in item.imgs">
+							<view class="tui-goods__imgbox">
+								<image :src="image.img" mode="" class="tui-goods__img"></image>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="record-list-tmk">
+					备注:{{ item.remarks }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"refund",
+		props:{
+			list:{
+				type:Array
+			},
+		},
+		data() {
+			return{
+				isEmpty:true,
+				list:[
+					{
+						time:'2023-05-15 16:13:34',
+						imgs:[
+							{
+								img:'https://img0.baidu.com/it/u=1944692716,1047751661&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
+							},
+							{
+								img:'https://img0.baidu.com/it/u=1944692716,1047751661&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
+							},
+							{
+								img:'https://img0.baidu.com/it/u=1944692716,1047751661&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
+							},
+							{
+								img:'https://img0.baidu.com/it/u=1944692716,1047751661&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
+							},
+							{
+								img:'https://img0.baidu.com/it/u=1944692716,1047751661&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
+							}
+						],
+						content:'备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注备注'
+					}
+				]
+			}
+		},
+		created(){
+			// this.initData(this.returnedPurchaseList)
+		},
+		computed: {
+		
+		},
+		methods:{
+			initData(res) {
+				if(res!=''){
+					this.isEmpty = true
+				}else{
+					this.isEmpty = false
+					this.refundData = res;
+				}
+			},
+			previewImg (image) {//顶部商品图片预览
+				this.isPreviewImage = true
+				let urls = []
+				urls.push(image)
+				uni.previewImage({
+					urls: urls,
+					current: 0
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.record-template{
+		width: 100%;
+		height: auto;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		padding-bottom: 40rpx;
+		.record-content{
+			width: 100%;
+			padding: 24rpx 0;
+			box-sizing: border-box;
+			height: auto;
+			.record-title{
+				width: 100%;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				line-height: 40rpx;
+				margin-bottom: 12rpx;
+				float: left;
+				font-weight: bold;
+				padding: 24rpx 0;
+				box-sizing: border-box;
+			}
+			.record-list{
+				width: 100%;
+				padding: 0 24rpx 24rpx;
+				box-sizing: border-box;
+				overflow: hidden;
+				.record-list-time{
+					width: 100%;
+					line-height: 37rpx;
+					text-align: left;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					color: #666666;
+					font-size: $font-size-26;
+					margin-bottom: 20rpx;
+				}
+				.record-list-tmk{
+					width: 100%;
+					line-height: 37rpx;
+					text-align: justify;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					color: #999999;
+					font-size: $font-size-26;
+					margin-top: 20rpx;
+				}
+			}
+		}
+	}
+	.tui-goods__list {
+		display: flex;
+		align-items: center;
+	}
+	.tui-goods__item {
+		background-color: #fff;
+		width: 210rpx;
+		height: 210rpx;
+		border-radius: 6rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		flex-shrink: 0;
+		margin-right: 18rpx;
+		border:1px solid #B8BFCA;
+	}
+	.tui-goods__imgbox {
+		width: 210rpx;
+		height: 210rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		box-sizing: border-box;
+		border-radius: 8rpx;
+	}
+	
+	.tui-goods__img {
+		width: 210rpx;
+		height: 210rpx;
+		display: block;
+	}
+</style>

+ 1020 - 0
pages/user/order/search-order.vue

@@ -0,0 +1,1020 @@
+<template>
+	<view class="search-container">
+		<!-- <or-search :theme="themeClass" @getSearchText="getSearchText"></or-search> -->
+		<view class="search-main">
+			<view class="search">
+				<view class="search-input">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input
+						maxlength="20"
+						focus
+						type="text"
+						value=""
+						confirm-type="search"
+						@focus="onFocus"
+						@input="onShowClose"
+						@confirm="subMitSearch()"
+						placeholder="请输入商品关键词"
+						v-model.trim="listQuery.searchWord"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+				</view>
+				<view class="search-btn" @click="subMitSearch()">搜索</view>
+			</view>
+		</view>
+		<view class="search-container-history" v-if="!isShowWrapper">
+			<view :class="'s-' + themeClass" v-if="serachRecordList.length > 0">
+				<view class="header">
+					搜索历史 <text class="iconfont icon-shanchu" @click="confirmDetele"></text>
+				</view>
+				<view class="list">
+					<view
+						v-for="(item, index) in serachRecordList"
+						:key="index"
+						@click="keywordsClick(item.searchWord)"
+						>{{ item.searchWord }}</view
+					>
+				</view>
+			</view>
+		</view>
+		<view
+			class=" order-container"
+			v-if="isShowWrapper"
+			:style="{ overflow: 'auto', height: showSkeleton ? windowHeight + 'px' : 'auto' }"
+		>
+			<scroll-view
+				class="tui-skeleton"
+				:style="{ height: scrollHeight + 'px' }"
+				@scrolltolower="scrolltolower"
+				scroll-y
+			>
+				<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="tui-skeleton clearfix">
+					<!-- 空白页 -->
+					<empty v-if="isShowEmpty" :navbarHeight="navbarHeight"></empty>
+					<!-- 列表 -->
+					<view v-else class="tui-order-content">
+						<view
+							class="tui-order-item"
+							v-for="(order, orderIndex) in orderList"
+							:key="orderIndex"
+							@click.stop="detail(order.orderId)"
+						>
+							<view class="order-title">
+								<view class="order-title-t">
+									<text
+										class="bage-buss tui-skeleton-fillet"
+										v-if="order.orderSubmitType == 3 || order.orderSubmitType == 4"
+										>协销</text
+									>
+									<text
+										class="bage-auto tui-skeleton-fillet"
+										v-if="
+											order.orderSubmitType == 0 ||
+												order.orderSubmitType == 1 ||
+												order.orderSubmitType == 2
+										"
+										>自主</text
+									>
+									<text class="bage-text tui-skeleton-fillet">订单编号:{{ order.orderNo }}</text>
+									<image
+										class="bage-icon"
+										src="https://static.caimei365.com/app/img/icon/icon-type@3x.png"
+										mode="widthFix"
+										v-if="order.secondHandOrderFlag == 1"
+									></image>
+								</view>
+								<view class="order-title-b">
+									<view class="order-title-btxt tui-skeleton-fillet"
+										>下单时间:{{ order.orderTime }}</view
+									>
+									<view class="order-title-tip tui-skeleton-fillet">{{
+										StateExpFormat(order.status)
+									}}</view>
+								</view>
+							</view>
+							<block v-for="(shop, index) in order.shopOrderList" :key="index">
+								<view class="goods-title">
+									<view v-if="shop.shopPromotion" class="floor-item-act">
+										<view class="floor-tags">{{ shop.shopPromotion.name }}</view>
+									</view>
+									<view class="title-text tui-skeleton-fillet">{{ shop.shopName }}</view>
+								</view>
+								<view
+									class="goods-item"
+									v-for="(pros, prosIndex) in shop.orderProductList"
+									:key="prosIndex"
+								>
+									<view class="goods-pros-t">
+										<view class="pros-img tui-skeleton-fillet">
+											<image :src="pros.image" alt="" />
+											<text class="tips" v-if="pros.productType == 2 || pros.productType == 1"
+												>赠品</text
+											>
+										</view>
+										<view class="pros-product">
+											<view class="producttitle tui-skeleton-fillet">{{ pros.name }}</view>
+											<view
+												class="productspec tui-skeleton-fillet"
+												v-if="pros.productCategory != 2"
+												>规格:{{ pros.productUnit }}</view
+											>
+											<view class="productprice">
+												<view
+													class="price tui-skeleton-fillet"
+													:class="
+														pros.svipPriceFlag == 1 ||
+														PromotionsFormat(pros.productPromotion)
+															? 'none'
+															: ''
+													"
+												>
+													<text>¥{{ pros.price | NumFormat }}</text>
+												</view>
+												<view class="count tui-skeleton-fillet">
+													<text class="small">x</text>{{ pros.num }}
+												</view>
+											</view>
+											<view class="floor-item-act">
+												<template v-if="pros.productPromotion">
+													<view
+														v-if="PromotionsFormat(pros.productPromotion)"
+														class="floor-tags"
+														@click.stop="clickPopupShow(pros.productPromotion)"
+													>
+														{{ pros.productPromotion.name }}
+														<text
+															v-if="
+																pros.productPromotion != null &&
+																	pros.productPromotion.type != 3
+															"
+														>
+															:¥{{
+																pros.productPromotion == null
+																	? '0.00'
+																	: pros.productPromotion.touchPrice | NumFormat
+															}}
+														</text>
+													</view>
+													<view
+														v-else-if="pros.productPromotion.type != 3"
+														class="floor-tags"
+														@click.stop="clickPopupShow(pros.productPromotion)"
+														>{{ pros.productPromotion.name }}</view
+													>
+												</template>
+												<template v-if="pros.svipPriceFlag == 1">
+													<view class="svip-tags">
+														<view class="tags">SVIP</view>
+														<view class="price">{{ pros.svipPriceTag }}</view>
+													</view>
+												</template>
+											</view>
+										</view>
+									</view>
+								</view>
+							</block>
+							<view class="order-footer">
+								<view class="order-footer-top" v-if="order.discountFee != 0"
+									>经理折扣:¥{{ order.discountFee | NumFormat }}</view
+								>
+								<view class="order-footer-bot">
+									<view class="count tui-skeleton-fillet">共{{ order.productCount }}件商品</view>
+									<view
+										class="money tui-skeleton-fillet"
+										v-if="order.status == 31 || order.status == 32 || order.status == 33"
+									>
+										已支付:<label style="color:#f94b4b ;"
+											>¥{{ order.receiptAmount | NumFormat }}</label
+										>
+									</view>
+									<view class="money tui-skeleton-fillet" v-else>
+										待付总额:<label style="color:#f94b4b ;"
+											>¥{{ order.pendingPayments | NumFormat }}</label
+										>
+									</view>
+								</view>
+							</view>
+							<!-- 底部button -->
+							<order-button
+								ref="orderButton"
+								:status="order.status"
+								:order="order"
+								:onlinePayFlag="order.onlinePayFlag"
+								@buttonConfirm="handButtonConfirm"
+							>
+							</order-button>
+						</view>
+						<!--加载loadding-->
+						<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+						<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"></tui-nomore>
+						<!--加载loadding-->
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 分享弹窗 -->
+		<share-alert v-if="isShareModal" :orderId="btnoRderID" @shareConfirm="onShareAppMessage"> </share-alert>
+		<!-- 透明模态层 -->
+		<modal-layer v-if="isModalLayer"></modal-layer>
+	</view>
+</template>
+
+<script>
+import orSearch from '@/components/uni-search/or-search.vue'
+import orderButton from './components/details/orderListButton' //按钮
+import modalLayer from '@/components/modal-layer'
+import empty from './components/empty'
+import shareAlert from '@/components/cm-module/modelAlert/shareAlert' //分享弹窗
+import authorize from '@/common/config/authorize.js'
+const defaultListQuery = {
+	pageNum: 1, // 页码
+	pageSize: 10, // 每页条数
+	userId: 0, // 用户Id
+	searchWord: '' // 搜索关键词
+}
+export default {
+	components: {
+		orSearch,
+		orderButton,
+		empty,
+		shareAlert,
+	},
+	data() {
+		return {
+			listQuery: Object.assign({}, defaultListQuery),
+			themeClass: 'block',
+			isShowClose: false, // 是否显示清空输入框图标
+			isSearchHistory: false, // 是都显示搜索历史
+			serachRecordList: [],
+			isShowWrapper: false,
+			isModallayer: false,
+			isShowEmpty: false,
+			windowHeight: '',
+			showSkeleton: true,
+			orderList: [],
+			btnoRderID: 0, // 点击按钮传入的的订单ID
+			scrollTop: 0,
+			skeletonShow: true,
+			isShareModal: false, // 控制分享弹窗
+			isCenceModal: false, // 控制取消订单弹窗
+			isShowDelModal: false, // 控制删除订单弹窗
+			isModalLayer: false,
+			loadding: false,
+			pullUpOn: true,
+			hasNextPage: false,
+			pullFlag: true,
+			navbarHeight: '',
+			nomoreText: '上拉显示更多',
+			scrollHeight: '',
+			beansType: 1,
+			beanNumber: 0,
+			isActivityBean: false
+		}
+	},
+	onLoad() {
+		this.initGetSerachRecord()
+	},
+	filters: {
+		NumFormat(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	methods: {
+		subMitSearch() {
+			if (this.listQuery.searchWord == '') {
+				this.$util.msg('请输入商品关键词', 2000)
+			} else {
+				this.commodityList = []
+				this.getOrderDatainit()
+			}
+		},
+		async initGetSerachRecord() {
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.userId = userInfo.userId ? userInfo.userId : 0
+			this.OrderService.SearchOrderHistory({ userId: this.listQuery.userId })
+				.then(response => {
+					this.serachRecordList = response.data
+					if (this.serachRecordList.length > 0) {
+						this.isSearchHistory = true
+					} else {
+						this.isSearchHistory = false
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			this.inputEmpty(this.listQuery.searchWord)
+		},
+		onFocus() {
+			//输入框获取焦点时触发
+			this.inputEmpty(this.listQuery.searchWord)
+			this.initGetSerachRecord()
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.searchWord = ''
+			this.isShowClose = false
+			this.isShowWrapper = false
+			this.inputEmpty(this.listQuery.searchWord)
+			this.initGetSerachRecord()
+		},
+		keywordsClick(item) {
+			//关键词搜索与历史搜索
+			this.listQuery.searchWord = item
+			this.isShowClose = true
+			this.subMitSearch()
+		},
+		confirmDetele() {
+			//清空历史记录
+			this.$util.modal('提示', '确定删除历史记录?', '确定', '取消', true, () => {
+				this.OrderService.ClearOrderHistory({ userId: this.listQuery.userId })
+					.then(response => {
+						this.$util.msg('删除记录成功', 2000, true, 'success')
+						this.serachRecordList = []
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		inputEmpty(val) {
+			this.isShowWrapper = false
+			if (val != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+			}
+		},
+		getOrderDatainit(index, source) {
+			this.OrderService.SearchOrderInfo(this.listQuery)
+				.then(response => {
+					this.isShowWrapper = true
+					this.showSkeleton = true
+					let data = response.data
+					if (data && data.list.length > 0) {
+						let filrerData = data.list.filter(item => {
+							//添加不同状态下订单的表现形式
+							item = Object.assign(item, this.StateExpFormat(item.status))
+							return item
+						})
+						this.orderList = []
+						filrerData.forEach(item => {
+							this.orderList.push(item)
+						})
+						this.hasNextPage = data
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							if (this.orderList.length < 2) {
+								this.pullUpOn = true
+							} else {
+								this.pullUpOn = false
+								this.nomoreText = '已至底部'
+							}
+						}
+						this.isShowEmpty = false
+					} else {
+						this.isShowEmpty = true
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		getOnReachBottomData() {
+			//上拉加载
+			this.listQuery.pageNum += 1
+			this.OrderService.SearchOrderInfo(this.listQuery)
+				.then(response => {
+					let data = response.data
+					this.hasNextPage = data.hasNextPage
+					this.orderList = this.orderList.concat(data.list)
+					this.pullFlag = false // 防上拉暴滑
+					setTimeout(() => {
+						this.pullFlag = true
+					}, 500)
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					} else {
+						this.loadding = false
+						this.pullUpOn = false
+						this.nomoreText = '已至底部'
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		scrolltolower() {
+			if (this.hasNextPage) {
+				this.loadding = true
+				this.pullUpOn = true
+				this.showSkeleton = false
+				this.getOnReachBottomData()
+			}
+		},
+		detail(orderId) {
+			//订单详情跳转
+			this.isModalLayer = true
+			this.$api.navigateTo(`/pages/user/order/order-details?type=search&orderId=${orderId}`)
+		},
+		handButtonConfirm(data) {
+			//获取点击
+			this.handShowAlert(data)
+			this.btnoRderID = data.orderId
+		},
+		handShowAlert(data) {
+			//执行
+			switch (data.type) {
+				case 'delete':
+					this.handOrderDetele(data.orderId)
+					break
+				case 'cancel':
+					this.handCenceConfirm(data.orderId)
+					break
+				case 'query':
+					this.isModalLayer = true
+					this.$api.navigateTo('/pages/user/order/order-logistics?orderId=' + data.orderId)
+					break
+				case 'confirm':
+					this.handOrderConfirm(data.orderId)
+					break
+				case 'confirmation':
+					this.handOrderConfirmation(data.orderId)
+					break
+			}
+		},
+		handOrderConfirm(orderId) {
+			//确认收货
+			this.$util.modal('提示', '是否确认收货', '确定', '取消', true, () => {
+				this.OrderService.ConfirmReceipt({ orderId: orderId })
+					.then(response => {
+						this.beansType = 7
+						this.beanNumber = 100
+						this.isActivityBean = true
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		handOrderConfirmation(orderId) {
+			//确认订单
+			this.$util.modal('提示', '确认此订单?', '确定', '取消', true, () => {
+				this.OrderService.AffirmOrder({ orderId: orderId })
+					.then(response => {
+						this.$util.msg(response.msg, 2000, true, 'success')
+						setTimeout(() => {
+							this.getOrderDatainit()
+						}, 2000)
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		handOrderDetele(orderId) {
+			//删除订单
+			this.$util.modal('提示', '确认删除该订单吗?', '确定', '取消', true, () => {
+				this.OrderService.DeleteOrder({ orderId: orderId })
+					.then(response => {
+						this.$util.msg(response.msg, 2000, true, 'success')
+						setTimeout(() => {
+							this.getOrderDatainit()
+						}, 2000)
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		handCenceConfirm(orderId) {
+			//取消订单
+			this.$util.modal('提示', '确认取消该订单吗?', '确定', '取消', true, () => {
+				this.OrderService.CancelOrder({ orderId: orderId , userIdentity : 0})
+					.then(response => {
+						this.$util.msg(response.msg, 2000, true, 'success')
+						setTimeout(() => {
+							this.getOrderDatainit()
+						}, 2000)
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		onShareAppMessage(res) {
+			//分享转发
+			this.isShareModal = false
+			if (res.from === 'button') {
+				// 来自页面内转发按钮
+			}
+			return {
+				title: '您有新的分享订单,快来查看吧~',
+				path: `/pages/user/order/order-sharelogin?orderID=${this.btnoRderID}&userId=${this.listQuery.userId}`,
+				imageUrl: 'https://static.caimei365.com/app/img/bg/min-banner.jpg'
+			}
+		},
+		setScrollHeight() {
+			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			this.windowHeight = windowHeight - 1
+			this.scrollHeight = windowHeight - 1
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		StateExpFormat(state) {
+			//订单状态文字和颜色
+			var HtmlStateText = '',
+				stateTextObject = {
+					0: '待确认',
+					4: '交易完成',
+					5: '订单完成',
+					6: '已关闭',
+					7: '交易全退',
+					77: '交易全退',
+					11: '待付款待发货',
+					12: '待付款部分发货',
+					13: '待付款已发货',
+					21: '部分付款待发货',
+					22: '部分付款部分发货',
+					23: '部分付款已发货',
+					31: '已付款待发货',
+					32: '已付款部分发货',
+					33: '已付款已发货',
+					111: '待付款待发货'
+				}
+			Object.keys(stateTextObject).forEach(function(key) {
+				if (key == state) {
+					HtmlStateText = stateTextObject[key]
+				}
+			})
+			return HtmlStateText
+		},
+		handleBeanlClick() {
+			//关闭采美豆弹窗
+			this.isActivityBean = false
+			this.getOrderDatainit()
+		}
+	},
+	onPageScroll(e) {
+		this.scrollTop = e.scrollTop
+	},
+	onShow() {
+		this.setScrollHeight()
+	}
+}
+</script>
+
+<style lang="scss">
+@import '@/uni.scss';
+page {
+	background-color: #f7f7f7 !important;
+}
+.search {
+	width: 702rpx;
+	height: 70rpx;
+	padding: 12rpx 24rpx;
+	border-bottom: 1px solid #f0f0f0;
+	position: fixed;
+	top: 0;
+	left: 0;
+	background: #ffffff;
+	z-index: 1001;
+	.search-input {
+		width: 448rpx;
+		height: 70rpx;
+		padding: 0 68rpx;
+		line-height: 70rpx;
+		border-radius: 40rpx;
+		position: relative;
+		background: #f0f0f0;
+		float: left;
+		.icon-iconfonticonfontsousuo1 {
+			font-size: 36rpx;
+			color: #8a8a8a;
+			position: absolute;
+			left: 24rpx;
+			z-index: 10;
+		}
+		.icon-shanchu1 {
+			font-size: 36rpx;
+			color: #8a8a8a;
+			position: absolute;
+			right: 24rpx;
+			top: 0;
+			padding: 0 10rpx;
+			z-index: 10;
+		}
+		input {
+			width: 448rpx;
+			height: 70rpx;
+			background-color: #f0f0f0;
+			font-size: 26rpx;
+		}
+	}
+	.search-btn {
+		width: 118rpx;
+		height: 70rpx;
+		line-height: 70rpx;
+		color: $color-system;
+		font-size: 30rpx;
+		text-align: center;
+		float: left;
+	}
+	.voice-icon {
+		width: 36rpx;
+		height: 36rpx;
+		padding: 16rpx 20rpx 16rpx 0;
+		position: absolute;
+		left: 16rpx;
+		top: 4rpx;
+		z-index: 10;
+	}
+}
+.search-container {
+	padding-top: 106rpx;
+}
+.s-block {
+	background: #ffffff;
+	.header {
+		font-size: 32rpx;
+		padding: 40rpx 24rpx 22rpx 24rpx;
+		line-height: 42rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		position: relative;
+		.icon-shanchu {
+			font-size: 36rpx;
+			color: #333333;
+			float: right;
+			padding: 0 10rpx;
+			z-index: 10;
+			font-weight: normal;
+		}
+	}
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		padding-bottom: 40rpx;
+		view {
+			color: #8a8a8a;
+			font-size: 24rpx;
+			box-sizing: border-box;
+			text-align: center;
+			height: 48rpx;
+			line-height: 48rpx;
+			border-radius: 24rpx;
+			margin: 12rpx;
+			padding: 0 30rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			background-color: #f3f3f3;
+		}
+	}
+}
+.s-circle {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+		border-bottom: 2rpx solid #f9f9f9;
+		position: relative;
+		image {
+			width: 36rpx;
+			height: 36rpx;
+			padding: 10rpx;
+			position: absolute;
+			right: 40rpx;
+			top: 24rpx;
+		}
+	}
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 30rpx 20rpx;
+		view {
+			padding: 8rpx 30rpx;
+			margin: 20rpx 30rpx 0 0;
+			font-size: 28rpx;
+			color: #8a8a8a;
+			background-color: #f7f7f7;
+			box-sizing: border-box;
+			text-align: center;
+			border-radius: 20rpx;
+		}
+	}
+}
+.wanted-block {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+	}
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		view {
+			width: 50%;
+			color: #8a8a8a;
+			font-size: 28rpx;
+			box-sizing: border-box;
+			text-align: center;
+			padding: 20rpx 0;
+			border-top: 2rpx solid #fff;
+			border-left: 2rpx solid #fff;
+			background-color: #f7f7f7;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+		}
+	}
+}
+.wanted-circle {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+	}
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 30rpx 20rpx;
+		view {
+			padding: 8rpx 30rpx;
+			margin: 20rpx 30rpx 0 0;
+			font-size: 28rpx;
+			color: #8a8a8a;
+			background-color: #f7f7f7;
+			box-sizing: border-box;
+			text-align: center;
+			border-radius: 20rpx;
+		}
+	}
+}
+.order-container {
+	scroll-view {
+		height: 100%;
+		overflow: scroll;
+	}
+}
+.container {
+	padding-bottom: env(safe-area-inset-bottom);
+	height: auto;
+	position: relative;
+}
+.tui-order-content {
+	width: 100%;
+	height: auto;
+}
+.tui-order-list {
+	width: 100%;
+	position: relative;
+}
+.tui-order-item {
+	display: flex;
+	flex-direction: column;
+	width: 702rpx;
+	padding: 20rpx 24rpx 0 24rpx;
+	background: #fff;
+	border-bottom: 20rpx solid #f7f7f7;
+}
+.order-title {
+	width: 100%;
+	height: auto;
+	.order-title-t {
+		width: 100%;
+		height: 68rpx;
+		float: left;
+		line-height: 68rpx;
+		position: relative;
+		.bage-icon {
+			width: 50rpx;
+			height: 50rpx;
+			display: block;
+			position: absolute;
+			right: 0;
+			top: 9rpx;
+		}
+		.bage-buss {
+			display: inline-block;
+			width: 72rpx;
+			height: 30rpx;
+			background: radial-gradient(circle, rgba(255, 39, 180, 1) 0%, rgba(193, 77, 245, 1) 100%);
+			border-radius: 4rpx;
+			line-height: 30rpx;
+			font-size: $font-size-22;
+			text-align: center;
+			color: #ffffff;
+		}
+		.bage-auto {
+			display: inline-block;
+			width: 72rpx;
+			height: 30rpx;
+			background: radial-gradient(circle, rgba(255, 180, 39, 1) 0%, rgba(245, 142, 77, 1) 100%);
+			border-radius: 4rpx;
+			line-height: 30rpx;
+			font-size: $font-size-22;
+			text-align: center;
+			color: #ffffff;
+		}
+		.bage-text {
+			display: inline-block;
+			font-size: $font-size-28;
+			line-height: 68rpx;
+			text-align: left;
+			color: $color-system;
+			margin-left: 10rpx;
+		}
+	}
+	.order-title-b {
+		width: 100%;
+		height: 40rpx;
+		float: left;
+		margin-top: 8rpx;
+		.order-title-btxt {
+			float: left;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #999999;
+			text-align: lef;
+		}
+		.order-title-tip {
+			float: right;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			text-align: right;
+			color: #ff2a2a;
+		}
+	}
+}
+.goods-title {
+	width: 100%;
+	height: 56rpx;
+	float: left;
+	margin-top: 10rpx;
+	.floor-item-act {
+		height: 56rpx;
+		text-align: center;
+		box-sizing: border-box;
+		float: left;
+		padding: 10rpx 0;
+		margin-right: 12rpx;
+	}
+	.title-text {
+		width: 400rpx;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		float: left;
+		font-size: $font-size-28;
+		color: $text-color;
+		text-align: left;
+		line-height: 56rpx;
+		font-weight: bold;
+	}
+}
+.goods-item {
+	width: 100%;
+	height: auto;
+}
+.goods-pros-t {
+	display: flex;
+	align-items: center;
+	width: 100%;
+	height: 217rpx;
+	padding: 24rpx 0;
+	.pros-img {
+		float: left;
+		width: 210rpx;
+		height: 100%;
+		border-radius: 10rpx;
+		margin: 0 26rpx 0 0;
+		position: relative;
+		.tips {
+			display: inline-block;
+			width: 80rpx;
+			height: 40rpx;
+			background-image: linear-gradient(214deg, #ff4500 0%, #ff5800 53%, #ff4367 100%);
+			line-height: 40rpx;
+			text-align: center;
+			font-size: $font-size-24;
+			color: #ffffff;
+			border-radius: 10rpx 0 10rpx 0;
+			position: absolute;
+			top: 0;
+			left: 0;
+		}
+		image {
+			width: 210rpx;
+			height: 210rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f3f3f3;
+		}
+	}
+}
+.pros-product {
+	width: 468rpx;
+	height: 100%;
+	line-height: 36rpx;
+	font-size: $font-size-26;
+	position: relative;
+	.producttitle {
+		width: 100%;
+		display: inline-block;
+		height: auto;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		word-break: break-all;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 2;
+		overflow: hidden;
+		margin-bottom: 8rpx;
+	}
+	.productspec {
+		height: 36rpx;
+		color: #999999;
+	}
+	.productprice {
+		height: 48rpx;
+		position: absolute;
+		width: 100%;
+		bottom: 0;
+		.price {
+			line-height: 48rpx;
+			font-size: $font-size-28;
+			width: 48%;
+			color: #ff2a2a;
+			float: left;
+			font-weight: bold;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+		}
+		.count {
+			height: 100%;
+			float: right;
+			position: relative;
+			.small {
+				color: #666666;
+			}
+		}
+	}
+	.floor-item-act {
+		width: 100%;
+		height: 56rpx;
+		text-align: center;
+		box-sizing: border-box;
+		float: left;
+		padding: 0 0 10rpx 0;
+	}
+}
+.order-footer {
+	width: 100%;
+	height: 78rpx;
+	float: left;
+	.order-footer-top {
+		width: 100%;
+		height: 34rpx;
+		line-height: 34rpx;
+		font-size: $font-size-24;
+		color: #999999;
+		text-align: right;
+	}
+	.order-footer-bot {
+		width: 100%;
+		float: left;
+		height: 48rpx;
+		line-height: 48rpx;
+		font-size: $font-size-28;
+		font-weight: bold;
+		color: $text-color;
+		.count {
+			width: 50%;
+			float: left;
+			text-align: left;
+		}
+		.money {
+			width: 50%;
+			float: right;
+			text-align: right;
+		}
+	}
+}
+</style>